From 19ddc18aa788b778f8b7d1a6c644ad6c08a4aff3 Mon Sep 17 00:00:00 2001 From: DizzyEggg Date: Mon, 17 Feb 2025 14:49:03 +0100 Subject: [PATCH 01/40] sub_8066E14 --- asm/code_8066D04.s | 187 --------------------------------------------- src/code_8066D04.c | 62 +++++++++++++++ 2 files changed, 62 insertions(+), 187 deletions(-) diff --git a/asm/code_8066D04.s b/asm/code_8066D04.s index aab7b47d5..665293ab7 100644 --- a/asm/code_8066D04.s +++ b/asm/code_8066D04.s @@ -5,193 +5,6 @@ .text - thumb_func_start sub_8066E14 -sub_8066E14: - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - sub sp, 0xC - mov r9, r0 - ldr r0, [r0, 0x70] - mov r10, r0 - mov r0, r9 - movs r1, 0 - movs r2, 0x5 - bl sub_8044D90 - adds r6, r0, 0 - mov r0, r9 - movs r1, 0x1 - movs r2, 0x6 - bl sub_8044D90 - adds r2, r0, 0 - adds r7, r2, 0 - mov r0, r10 - adds r0, 0x48 - ldrb r0, [r0] - cmp r0, 0x80 - beq _08066E54 - ldr r0, _08066E50 - b _08066F1E - .align 2, 0 -_08066E50: .4byte gUnknown_80F8E2C -_08066E54: - mov r0, r10 - adds r0, 0x50 - ldrb r1, [r0] - str r0, [sp, 0x8] - cmp r1, 0x14 - bhi _08066E80 - ldrb r1, [r2] - movs r0, 0x18 - ands r0, r1 - cmp r0, 0x18 - bne _08066E80 - ldr r0, _08066E78 - adds r1, r2, 0 - bl sub_8045BF8 - ldr r0, _08066E7C - b _08066F1E - .align 2, 0 -_08066E78: .4byte gFormatBuffer_Items -_08066E7C: .4byte gUnknown_80F8BE0 -_08066E80: - ldr r1, [sp, 0x8] - ldrb r0, [r1] - cmp r0, 0x81 - bne _08066EA8 - adds r2, r7, 0 - ldrb r1, [r2] - movs r0, 0x8 - ands r0, r1 - cmp r0, 0 - beq _08066EA8 - ldr r0, _08066EA0 - adds r1, r2, 0 - bl sub_8045BF8 - ldr r0, _08066EA4 - b _08066F1E - .align 2, 0 -_08066EA0: .4byte gFormatBuffer_Items + 0x50 -_08066EA4: .4byte gItemStickyCannotMove3 -_08066EA8: - mov r2, r9 - movs r3, 0x4 - ldrsh r0, [r2, r3] - movs r3, 0x6 - ldrsh r1, [r2, r3] - bl GetTile - ldr r0, [r0, 0x14] - cmp r0, 0 - beq _08066ECC - bl GetEntityType - cmp r0, 0x3 - beq _08066ECC - ldr r0, _08066EC8 - b _08066F1E - .align 2, 0 -_08066EC8: .4byte gNoExchangesHere -_08066ECC: - adds r0, r6, 0 - ldr r5, [r0] - str r5, [sp] - adds r4, r7, 0 - ldr r6, [r4] - mov r8, sp - str r6, [sp, 0x4] - movs r3, 0xEF - mov r0, sp - ldrb r2, [r0] - ands r2, r3 - ldr r1, _08066F28 - adds r0, r1, 0 - ands r0, r5 - orrs r0, r2 - str r0, [sp] - mov r2, r8 - ldrb r0, [r2, 0x4] - ands r0, r3 - ands r1, r6 - orrs r1, r0 - str r1, [sp, 0x4] - mov r5, r10 - adds r5, 0x4C - adds r0, r5, 0 - movs r1, 0x1 - bl sub_80461C8 - movs r0, 0 - strb r0, [r4, 0x2] - strb r0, [r4, 0x1] - strb r0, [r4] - add r1, sp, 0x4 - adds r0, r5, 0 - movs r2, 0x1 - bl sub_80460F8 - lsls r0, 24 - cmp r0, 0 - bne _08066F30 - ldr r0, _08066F2C -_08066F1E: - ldr r1, [r0] - mov r0, r9 - bl LogMessageByIdWithPopupCheckUser - b _08066F7E - .align 2, 0 -_08066F28: .4byte 0xffffff00 -_08066F2C: .4byte gNothingCanBePutDownHere -_08066F30: - ldr r3, [sp, 0x8] - ldrb r0, [r3] - cmp r0, 0x81 - bne _08066F40 - ldr r0, [sp] - mov r1, r10 - str r0, [r1, 0x60] - b _08066F46 -_08066F40: - mov r0, sp - bl AddItemToInventory -_08066F46: - bl FillInventoryGaps - ldr r4, _08066F90 - add r1, sp, 0x4 - adds r0, r4, 0 - bl sub_8045BF8 - adds r4, 0x50 - adds r0, r4, 0 - mov r1, sp - bl sub_8045BF8 - ldr r0, _08066F94 - bl PlaySoundEffect - ldr r0, _08066F98 - ldr r1, [r0] - mov r0, r9 - bl LogMessageByIdWithPopupCheckUser - ldr r0, _08066F9C - ldr r0, [r0] - ldr r2, _08066FA0 - adds r0, r2 - ldrb r1, [r0] - mov r0, r9 - bl sub_807AB38 -_08066F7E: - add sp, 0xC - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_08066F90: .4byte gFormatBuffer_Items -_08066F94: .4byte 0x0000014d -_08066F98: .4byte gSwappedGroundItem -_08066F9C: .4byte gDungeon -_08066FA0: .4byte 0x00003a08 - thumb_func_end sub_8066E14 - thumb_func_start sub_8066FA4 sub_8066FA4: push {r4-r7,lr} diff --git a/src/code_8066D04.c b/src/code_8066D04.c index 9462a3811..105202201 100644 --- a/src/code_8066D04.c +++ b/src/code_8066D04.c @@ -25,6 +25,12 @@ extern u8 *gUnknown_80F8DB4[]; extern u8 *gUnknown_80F8DE0[]; extern u8 *gUnknown_80F8E04[]; extern u8 *gUnknown_80F8E28[]; +extern u8 *gUnknown_80F8BE0[]; +extern u8 *gItemStickyCannotMove3[]; +extern u8 *gNothingCanBePutDownHere[]; +extern u8 *gUnknown_80F8E2C[]; +extern u8 *gNoExchangesHere[]; +extern u8 *gSwappedGroundItem[]; extern Item *sub_8044D90(Entity *, s32, u32); void sub_8045BF8(u8 *, Item *); @@ -34,6 +40,7 @@ extern Entity * sub_8044DA4(Entity *param_1,int param_2); extern void sub_806A6E8(Entity *); extern void sub_8044DF0(Entity *, u32, u32); extern void sub_8045DB4(DungeonPos *, u32); +extern bool8 sub_80461C8(DungeonPos *, u32); void HandlePickUpPlayerAction(Entity *entity) { @@ -322,3 +329,58 @@ void HandlePlaceItemAction(Entity *entity) } } } + +void sub_8066E14(Entity *entity) +{ + Item *item[2]; + EntityInfo *info = GetEntInfo(entity); + item[0] = sub_8044D90(entity,0,5); + item[1] = sub_8044D90(entity,1,6); + + if (info->action.actionParameters[0].actionUseIndex != 0x80) { + LogMessageByIdWithPopupCheckUser(entity,*gUnknown_80F8E2C); + } + else if (info->action.actionParameters[1].actionUseIndex < 0x15 && (item[1]->flags & ITEM_FLAG_SET) && (item[1]->flags & ITEM_FLAG_STICKY)) { + sub_8045BF8(gFormatBuffer_Items[0],item[1]); + LogMessageByIdWithPopupCheckUser(entity,*gUnknown_80F8BE0); + } + else if ((info->action.actionParameters[1].actionUseIndex == 0x81) && ItemSticky(item[1])) { + sub_8045BF8(gFormatBuffer_Items[1],item[1]); + LogMessageByIdWithPopupCheckUser(entity,*gItemStickyCannotMove3); + } + else { + const Tile *tile = GetTile((entity->pos).x,(entity->pos).y); + if ((tile->object != NULL) && (GetEntityType(tile->object) != 3)) { + LogMessageByIdWithPopupCheckUser(entity,*gNoExchangesHere); + } + else { + Item newItems[2]; + + newItems[0] = *item[0]; + newItems[1] = *item[1]; + newItems[0].flags &= ~(ITEM_FLAG_SET); + newItems[1].flags &= ~(ITEM_FLAG_SET); + + sub_80461C8(&info->action.actionParameters[0].itemPos,1); + ZeroOutItem(item[1]); + if (!sub_80460F8(&info->action.actionParameters[0].itemPos,&newItems[1],1)) { + LogMessageByIdWithPopupCheckUser(entity,*gNothingCanBePutDownHere); + } + else { + if (info->action.actionParameters[1].actionUseIndex == 0x81) { + info->heldItem = newItems[0]; + } + else { + AddItemToInventory(&newItems[0]); + } + + FillInventoryGaps(); + sub_8045BF8(gFormatBuffer_Items[0],&newItems[1]); + sub_8045BF8(gFormatBuffer_Items[1],&newItems[0]); + PlaySoundEffect(0x14d); + LogMessageByIdWithPopupCheckUser(entity,*gSwappedGroundItem); + sub_807AB38(entity,gDungeon->forceMonsterHouse); + } + } + } +} From 55f576b2524b4ee404120c9b96b019c419278bb7 Mon Sep 17 00:00:00 2001 From: DizzyEggg Date: Mon, 17 Feb 2025 15:59:43 +0100 Subject: [PATCH 02/40] sub_80671A0 --- asm/code_8066D04.s | 658 --------------------------------------------- src/code_8066D04.c | 229 +++++++++++++++- 2 files changed, 226 insertions(+), 661 deletions(-) diff --git a/asm/code_8066D04.s b/asm/code_8066D04.s index 665293ab7..e31f55880 100644 --- a/asm/code_8066D04.s +++ b/asm/code_8066D04.s @@ -5,664 +5,6 @@ .text - thumb_func_start sub_8066FA4 -sub_8066FA4: - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - sub sp, 0xC - adds r7, r0, 0 - ldr r0, [r7, 0x70] - mov r9, r0 - movs r1, 0x4 - ldrsh r0, [r7, r1] - movs r2, 0x6 - ldrsh r1, [r7, r2] - bl GetTile - mov r10, r0 - adds r0, r7, 0 - movs r1, 0 - movs r2, 0x7 - bl sub_8044D90 - adds r4, r0, 0 - adds r5, r4, 0 - ldr r0, _08067000 - mov r8, r0 - adds r1, r4, 0 - bl sub_8045BF8 - mov r0, r9 - adds r0, 0x48 - ldrb r0, [r0] - cmp r0, 0x14 - bhi _08067008 - ldrb r1, [r4] - movs r0, 0x18 - ands r0, r1 - cmp r0, 0x18 - bne _08067008 - mov r0, r8 - adds r0, 0x50 - adds r1, r4, 0 - bl sub_8045BF8 - ldr r0, _08067004 - b _0806709E - .align 2, 0 -_08067000: .4byte gFormatBuffer_Items -_08067004: .4byte gItemStickyCannotMove3 -_08067008: - mov r0, r9 - adds r0, 0x48 - ldrb r1, [r0] - str r0, [sp, 0x8] - cmp r1, 0x81 - bne _08067028 - adds r0, r5, 0 - ldrb r1, [r0] - movs r0, 0x8 - ands r0, r1 - cmp r0, 0 - beq _08067028 - ldr r0, _08067024 - b _0806709E - .align 2, 0 -_08067024: .4byte gItemStickyCannotMove2 -_08067028: - mov r1, r10 - ldr r0, [r1, 0x14] - cmp r0, 0 - beq _08067040 - bl GetEntityType - cmp r0, 0x3 - beq _08067040 - ldr r0, _0806703C - b _0806709E - .align 2, 0 -_0806703C: .4byte gNoExchangesHere -_08067040: - mov r2, r10 - ldr r0, [r2, 0x14] - bl GetItemData - adds r4, r0, 0 - ldr r0, _080670A8 - adds r1, r4, 0 - bl sub_8045BF8 - ldr r6, [r5] - str r6, [sp] - ldr r4, [r4] - mov r8, sp - str r4, [sp, 0x4] - movs r3, 0xEF - mov r0, sp - ldrb r2, [r0] - ands r2, r3 - ldr r1, _080670AC - adds r0, r1, 0 - ands r0, r6 - orrs r0, r2 - str r0, [sp] - mov r2, r8 - ldrb r0, [r2, 0x4] - ands r0, r3 - ands r1, r4 - orrs r1, r0 - str r1, [sp, 0x4] - adds r4, r7, 0x4 - adds r0, r4, 0 - movs r1, 0x1 - bl sub_80461C8 - movs r0, 0 - strb r0, [r5, 0x2] - strb r0, [r5, 0x1] - strb r0, [r5] - adds r0, r4, 0 - mov r1, sp - movs r2, 0x1 - bl sub_80460F8 - lsls r0, 24 - cmp r0, 0 - bne _080670B4 - ldr r0, _080670B0 -_0806709E: - ldr r1, [r0] - adds r0, r7, 0 - bl LogMessageByIdWithPopupCheckUser - b _080670EE - .align 2, 0 -_080670A8: .4byte gFormatBuffer_Items + 0x50 -_080670AC: .4byte 0xffffff00 -_080670B0: .4byte gNothingCanBePutDownHere -_080670B4: - ldr r1, [sp, 0x8] - ldrb r0, [r1] - cmp r0, 0x81 - bne _080670C4 - ldr r0, [sp, 0x4] - mov r2, r9 - str r0, [r2, 0x60] - b _080670CA -_080670C4: - add r0, sp, 0x4 - bl AddItemToInventory -_080670CA: - bl FillInventoryGaps - ldr r0, _08067100 - bl PlaySoundEffect - ldr r0, _08067104 - ldr r1, [r0] - adds r0, r7, 0 - bl LogMessageByIdWithPopupCheckUser - ldr r0, _08067108 - ldr r0, [r0] - ldr r1, _0806710C - adds r0, r1 - ldrb r1, [r0] - adds r0, r7, 0 - bl sub_807AB38 -_080670EE: - add sp, 0xC - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_08067100: .4byte 0x0000014d -_08067104: .4byte gSwappedGroundItem -_08067108: .4byte gDungeon -_0806710C: .4byte 0x00003a08 - thumb_func_end sub_8066FA4 - - thumb_func_start sub_8067110 -sub_8067110: - push {r4-r6,lr} - sub sp, 0xC - adds r5, r0, 0 - ldr r4, [r5, 0x70] - movs r1, 0 - movs r2, 0x8 - bl sub_8044D90 - adds r6, r0, 0 - ldr r0, _08067190 - adds r1, r6, 0 - bl sub_8045BF8 - ldr r0, _08067194 - adds r1, r4, 0 - movs r2, 0 - bl SetMessageArgument_2 - adds r0, r5, 0 - adds r1, r6, 0 - bl sub_8048D50 - lsls r0, 24 - cmp r0, 0 - beq _08067188 - adds r0, r6, 0 - bl sub_80464AC - adds r1, r0, 0 - adds r0, r5, 0 - bl LogMessageByIdWithPopupCheckUser - ldr r0, [r6] - str r0, [sp, 0x8] - adds r0, r5, 0 - movs r1, 0 - movs r2, 0x66 - bl sub_8044DF0 - movs r0, 0x1E - movs r1, 0x11 - bl sub_803E708 - str r5, [sp] - add r0, sp, 0x8 - str r0, [sp, 0x4] - movs r0, 0 - movs r1, 0 - movs r2, 0 - adds r3, r5, 0 - bl sub_80479B8 - ldr r0, _08067198 - ldr r0, [r0] - ldr r1, _0806719C - adds r0, r1 - ldrb r1, [r0] - adds r0, r5, 0 - bl sub_807AB38 -_08067188: - add sp, 0xC - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_08067190: .4byte gFormatBuffer_Items -_08067194: .4byte gFormatBuffer_Monsters -_08067198: .4byte gDungeon -_0806719C: .4byte 0x00003a08 - thumb_func_end sub_8067110 - - thumb_func_start sub_80671A0 -sub_80671A0: - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - sub sp, 0x14 - adds r6, r0, 0 - ldr r0, [r6, 0x70] - mov r8, r0 - adds r0, r6, 0 - movs r1, 0 - movs r2, 0x9 - bl sub_8044D90 - adds r4, r0, 0 - mov r0, r8 - adds r0, 0x48 - ldrb r0, [r0] - cmp r0, 0x81 - bne _080671E8 - ldrb r1, [r4] - movs r0, 0x8 - ands r0, r1 - cmp r0, 0 - beq _080671E8 - ldr r0, _080671E0 - adds r1, r4, 0 - bl sub_8045BF8 - ldr r0, _080671E4 - b _08067230 - .align 2, 0 -_080671E0: .4byte gFormatBuffer_Items -_080671E4: .4byte gUnknown_80F8BE0 -_080671E8: - ldrb r0, [r4, 0x2] - bl GetItemCategory - lsls r0, 24 - cmp r0, 0 - beq _08067202 - ldrb r0, [r4, 0x2] - bl GetItemCategory - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - bne _08067220 -_08067202: - ldrb r1, [r4] - movs r0, 0x8 - ands r0, r1 - cmp r0, 0 - beq _08067220 - ldr r0, _08067218 - adds r1, r4, 0 - bl sub_8045BF8 - ldr r0, _0806721C - b _08067230 - .align 2, 0 -_08067218: .4byte gFormatBuffer_Items -_0806721C: .4byte gUnknown_80F8BE0 -_08067220: - adds r0, r6, 0 - movs r1, 0x1 - bl ShouldMonsterRunAwayAndShowEffect - lsls r0, 24 - cmp r0, 0 - beq _08067248 - ldr r0, _08067244 -_08067230: - ldr r1, [r0] - adds r0, r6, 0 - bl LogMessageByIdWithPopupCheckUser - movs r0, 0x14 - movs r1, 0x4C - bl sub_803E708 - b _080674F8 - .align 2, 0 -_08067244: .4byte gUnknown_80FF76C -_08067248: - ldr r2, [r4] - str r2, [sp, 0x4] - movs r1, 0xEF - add r0, sp, 0x4 - ldrb r0, [r0] - ands r0, r1 - ldr r1, _080672C0 - ands r2, r1 - orrs r2, r0 - str r2, [sp, 0x4] - mov r0, r8 - adds r0, 0x48 - ldrb r1, [r0] - adds r5, r0, 0 - cmp r1, 0x80 - bne _08067272 - movs r4, 0 - adds r0, 0x4 - movs r1, 0x1 - bl sub_80461C8 -_08067272: - movs r7, 0x1 - ldr r0, [sp, 0x4] - lsrs r0, 16 - lsls r0, 24 - lsrs r0, 24 - bl GetItemCategory - lsls r0, 24 - cmp r0, 0 - beq _0806729A - ldr r0, [sp, 0x4] - lsrs r0, 16 - lsls r0, 24 - lsrs r0, 24 - bl GetItemCategory - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - bne _080672A8 -_0806729A: - ldr r0, [sp, 0x4] - lsrs r0, 8 - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - bls _080672A8 - movs r7, 0 -_080672A8: - cmp r7, 0 - beq _080672C4 - ldrb r0, [r5] - cmp r0, 0x80 - beq _080672F6 - movs r0, 0 - strb r0, [r4, 0x2] - strb r0, [r4, 0x1] - strb r0, [r4] - bl FillInventoryGaps - b _080672F6 - .align 2, 0 -_080672C0: .4byte 0xffffff00 -_080672C4: - ldrb r0, [r5] - cmp r0, 0x80 - bne _080672F0 - ldr r2, [sp, 0x4] - lsrs r0, r2, 8 - subs r0, 0x1 - lsls r0, 24 - lsrs r0, 16 - ldr r1, _080672EC - ands r2, r1 - orrs r2, r0 - str r2, [sp, 0x4] - mov r0, r8 - adds r0, 0x4C - add r1, sp, 0x4 - movs r2, 0x1 - bl sub_80460F8 - b _080672F6 - .align 2, 0 -_080672EC: .4byte 0xffff00ff -_080672F0: - ldrb r0, [r4, 0x1] - subs r0, 0x1 - strb r0, [r4, 0x1] -_080672F6: - adds r0, r6, 0 - movs r1, 0x29 - bl HasHeldItem - lsls r0, 24 - cmp r0, 0 - beq _08067310 - movs r0, 0x8 - bl DungeonRandInt - mov r1, r8 - adds r1, 0x46 - strb r0, [r1] -_08067310: - adds r0, r6, 0 - bl sub_8045888 - lsls r0, 24 - movs r1, 0xE0 - add r1, r8 - mov r10, r1 - adds r1, r6, 0x4 - str r1, [sp, 0x10] - add r1, sp, 0xC - mov r9, r1 - cmp r0, 0 - beq _08067364 - mov r0, r8 - adds r0, 0x46 - ldrb r4, [r0] - movs r1, 0xB2 - lsls r1, 1 - adds r0, r6, 0 - bl sub_80421C0 - movs r7, 0x7 - movs r5, 0x7 -_0806733E: - subs r4, 0x1 - ands r4, r7 - adds r0, r6, 0 - movs r1, 0 - adds r2, r4, 0 - bl sub_806CDD4 - movs r0, 0x2 - movs r1, 0x15 - bl sub_803E708 - subs r5, 0x1 - cmp r5, 0 - bge _0806733E - movs r1, 0xB3 - lsls r1, 1 - add r1, r8 - movs r0, 0x4 - strb r0, [r1] -_08067364: - add r4, sp, 0x4 - ldrb r0, [r4, 0x2] - bl GetItemCategory - lsls r0, 24 - cmp r0, 0 - beq _08067380 - ldrb r0, [r4, 0x2] - bl GetItemCategory - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - bne _08067384 -_08067380: - movs r0, 0x1 - strb r0, [r4, 0x1] -_08067384: - ldr r0, _080673B0 - add r4, sp, 0x4 - adds r1, r4, 0 - bl sub_8045C08 - ldr r0, _080673B4 - mov r1, r8 - movs r2, 0 - bl SetMessageArgument_2 - ldrb r0, [r4, 0x2] - bl GetItemCategory - lsls r0, 24 - cmp r0, 0 - bne _080673BC - ldr r0, _080673B8 - ldr r1, [r0] - adds r0, r6, 0 - bl LogMessageByIdWithPopupCheckUser - b _080673C6 - .align 2, 0 -_080673B0: .4byte gFormatBuffer_Items -_080673B4: .4byte gFormatBuffer_Monsters -_080673B8: .4byte gMonThrewItem2 -_080673BC: - ldr r0, _080673F8 - ldr r1, [r0] - adds r0, r6, 0 - bl LogMessageByIdWithPopupCheckUser -_080673C6: - add r0, sp, 0x4 - ldrb r0, [r0, 0x2] - bl GetItemCategory - adds r1, r0, 0 - lsls r1, 24 - lsrs r1, 24 - adds r0, r6, 0 - bl sub_8042208 - adds r0, r6, 0 - movs r1, 0x27 - bl HasHeldItem - lsls r0, 24 - cmp r0, 0 - beq _08067400 - ldr r0, _080673FC - ldr r1, [sp, 0xC] - ands r1, r0 - movs r0, 0x80 - lsls r0, 1 - orrs r1, r0 - str r1, [sp, 0xC] - b _08067408 - .align 2, 0 -_080673F8: .4byte gMonThrewItem1 -_080673FC: .4byte 0xffff00ff -_08067400: - ldr r1, _0806741C - ldr r0, [sp, 0xC] - ands r0, r1 - str r0, [sp, 0xC] -_08067408: - mov r1, r10 - ldrb r0, [r1] - cmp r0, 0x1 - beq _08067440 - cmp r0, 0x1 - bgt _08067420 - cmp r0, 0 - beq _08067426 - b _08067462 - .align 2, 0 -_0806741C: .4byte 0xffff00ff -_08067420: - cmp r0, 0x2 - beq _0806744C - b _08067462 -_08067426: - ldr r1, _08067438 - ldr r0, [sp, 0xC] - ands r0, r1 - ldr r1, _0806743C - ands r0, r1 - movs r1, 0xA0 - lsls r1, 12 - b _0806745E - .align 2, 0 -_08067438: .4byte 0xffffff00 -_0806743C: .4byte 0x0000ffff -_08067440: - ldr r1, _08067448 - ldr r0, [sp, 0xC] - ands r0, r1 - b _08067456 - .align 2, 0 -_08067448: .4byte 0xffffff00 -_0806744C: - ldr r1, _080674B4 - ldr r0, [sp, 0xC] - ands r0, r1 - movs r1, 0x1 - orrs r0, r1 -_08067456: - ldr r1, _080674B8 - ands r0, r1 - movs r1, 0xC6 - lsls r1, 15 -_0806745E: - orrs r0, r1 - str r0, [sp, 0xC] -_08067462: - adds r0, r6, 0 - movs r1, 0xF - bl HasHeldItem - lsls r0, 24 - cmp r0, 0 - beq _08067486 - ldr r1, _080674B4 - ldr r0, [sp, 0xC] - ands r0, r1 - movs r1, 0x1 - orrs r0, r1 - ldr r1, _080674B8 - ands r0, r1 - movs r1, 0xC6 - lsls r1, 15 - orrs r0, r1 - str r0, [sp, 0xC] -_08067486: - add r0, sp, 0x4 - ldrb r0, [r0, 0x2] - bl GetItemCategory - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - bne _080674BC - add r4, sp, 0x8 - adds r0, r4, 0 - adds r1, r6, 0 - bl sub_8083904 - mov r0, r9 - str r0, [sp] - adds r0, r6, 0 - add r1, sp, 0x4 - ldr r2, [sp, 0x10] - adds r3, r4, 0 - bl sub_80475C4 - b _080674D0 - .align 2, 0 -_080674B4: .4byte 0xffffff00 -_080674B8: .4byte 0x0000ffff -_080674BC: - mov r0, r8 - adds r0, 0x46 - ldrb r3, [r0] - mov r1, r9 - str r1, [sp] - adds r0, r6, 0 - add r1, sp, 0x4 - ldr r2, [sp, 0x10] - bl sub_8047190 -_080674D0: - adds r0, r6, 0 - bl EntityIsValid - lsls r0, 24 - cmp r0, 0 - beq _080674F8 - mov r0, r8 - adds r0, 0x46 - ldrb r1, [r0] - adds r0, r6, 0 - bl sub_806CE68 - ldr r0, _08067508 - ldr r0, [r0] - ldr r1, _0806750C - adds r0, r1 - ldrb r1, [r0] - adds r0, r6, 0 - bl sub_807AB38 -_080674F8: - add sp, 0x14 - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_08067508: .4byte gDungeon -_0806750C: .4byte 0x00003a08 - thumb_func_end sub_80671A0 thumb_func_start HandleTalkFieldAction HandleTalkFieldAction: diff --git a/src/code_8066D04.c b/src/code_8066D04.c index 105202201..1c22bac80 100644 --- a/src/code_8066D04.c +++ b/src/code_8066D04.c @@ -2,14 +2,22 @@ #include "code_8045A00.h" #include "dungeon_message.h" #include "code_807CD9C.h" +#include "code_8041AD0.h" +#include "code_806CD90.h" #include "dungeon_map_access.h" #include "dungeon_movement.h" #include "dungeon_music.h" #include "dungeon_util.h" #include "items.h" #include "string_format.h" +#include "status_checks_1.h" +#include "dungeon_ai_targeting.h" +#include "dungeon_items.h" +#include "dungeon_random.h" +#include "constants/item.h" extern u8 *gUnknown_80F8BE0[]; +extern u8 *gUnknown_80FF76C[]; extern u8 *gItemStickyCannotMove1[]; extern u8 *gItemStickyCannotMove2[]; extern u8 *gItemStickyCannotEquip[]; @@ -25,15 +33,24 @@ extern u8 *gUnknown_80F8DB4[]; extern u8 *gUnknown_80F8DE0[]; extern u8 *gUnknown_80F8E04[]; extern u8 *gUnknown_80F8E28[]; -extern u8 *gUnknown_80F8BE0[]; extern u8 *gItemStickyCannotMove3[]; extern u8 *gNothingCanBePutDownHere[]; extern u8 *gUnknown_80F8E2C[]; extern u8 *gNoExchangesHere[]; extern u8 *gSwappedGroundItem[]; +extern const u8 *const gMonThrewItem2; +extern const u8 *const gMonThrewItem1; +extern void sub_8045C08(u8 *buffer, Item *item); +extern bool8 sub_8045888(Entity *); extern Item *sub_8044D90(Entity *, s32, u32); void sub_8045BF8(u8 *, Item *); +u8 sub_8048D50(); +u8 * sub_80464AC(); +void sub_8044DF0(); +void sub_8042208(Entity *pokemon, u8 r1); +void sub_803E708(); +void sub_80479B8(); u8 sub_80460F8(DungeonPos *, Item *, u32); extern void sub_807AB38(Entity *, u32); extern Entity * sub_8044DA4(Entity *param_1,int param_2); @@ -344,13 +361,13 @@ void sub_8066E14(Entity *entity) sub_8045BF8(gFormatBuffer_Items[0],item[1]); LogMessageByIdWithPopupCheckUser(entity,*gUnknown_80F8BE0); } - else if ((info->action.actionParameters[1].actionUseIndex == 0x81) && ItemSticky(item[1])) { + else if (info->action.actionParameters[1].actionUseIndex == 0x81 && ItemSticky(item[1])) { sub_8045BF8(gFormatBuffer_Items[1],item[1]); LogMessageByIdWithPopupCheckUser(entity,*gItemStickyCannotMove3); } else { const Tile *tile = GetTile((entity->pos).x,(entity->pos).y); - if ((tile->object != NULL) && (GetEntityType(tile->object) != 3)) { + if (tile->object != NULL && GetEntityType(tile->object) != ENTITY_ITEM) { LogMessageByIdWithPopupCheckUser(entity,*gNoExchangesHere); } else { @@ -384,3 +401,209 @@ void sub_8066E14(Entity *entity) } } } + +void sub_8066FA4(Entity *entity) +{ + Item *item[2]; + EntityInfo *info = GetEntInfo(entity); + const Tile *tile = GetTile((entity->pos).x,(entity->pos).y); + + item[0] = sub_8044D90(entity,0,7); + sub_8045BF8(gFormatBuffer_Items[0],item[0]); + if (info->action.actionParameters[0].actionUseIndex < 0x15 && (item[0]->flags & ITEM_FLAG_SET) && (item[0]->flags & ITEM_FLAG_STICKY)) { + sub_8045BF8(gFormatBuffer_Items[1],item[0]); + LogMessageByIdWithPopupCheckUser(entity,*gItemStickyCannotMove3); + } + else if (info->action.actionParameters[0].actionUseIndex == 0x81 && ItemSticky(item[0])) { + LogMessageByIdWithPopupCheckUser(entity,*gItemStickyCannotMove2); + } + else if (tile->object != NULL && GetEntityType(tile->object) != ENTITY_ITEM) { + LogMessageByIdWithPopupCheckUser(entity,*gNoExchangesHere); + } + else { + Item newItems[2]; + + item[1] = GetItemData(tile->object); + sub_8045BF8(gFormatBuffer_Items[1],item[1]); + newItems[0] = *item[0]; + newItems[1] = *item[1]; + newItems[0].flags &= ~(ITEM_FLAG_SET); + newItems[1].flags &= ~(ITEM_FLAG_SET); + + sub_80461C8(&entity->pos,1); + ZeroOutItem(item[0]); + if (!sub_80460F8(&entity->pos, &newItems[0],1)) { + LogMessageByIdWithPopupCheckUser(entity,*gNothingCanBePutDownHere); + } + else { + if (info->action.actionParameters[0].actionUseIndex == 0x81) { + info->heldItem = newItems[1]; + } + else { + AddItemToInventory(&newItems[1]); + } + FillInventoryGaps(); + PlaySoundEffect(0x14d); + LogMessageByIdWithPopupCheckUser(entity,*gSwappedGroundItem); + sub_807AB38(entity,gDungeon->forceMonsterHouse); + } + } +} + +void sub_8067110(Entity *entity) +{ + EntityInfo *info = GetEntInfo(entity); + Item *item = sub_8044D90(entity,0,8); + + sub_8045BF8(gFormatBuffer_Items[0],item); + SetMessageArgument_2(gFormatBuffer_Monsters[0],info,0); + if (sub_8048D50(entity,item)) { + Item item2; + + LogMessageByIdWithPopupCheckUser(entity,sub_80464AC(item)); + item2 = *item; + sub_8044DF0(entity,0,0x66); + sub_803E708(0x1e,0x11); + sub_80479B8(0,0,0,entity,entity,&item2); + sub_807AB38(entity,gDungeon->forceMonsterHouse); + } +} + +struct UnkStruct_8067110 +{ + u8 unk0; + u8 unk1; + s16 unk2; +}; + +extern void sub_8083904(DungeonPos *pos, Entity *entity); +extern void sub_80475C4(Entity *entity, Item *item, DungeonPos *pos1, DungeonPos *pos2, struct UnkStruct_8067110 *); +extern void sub_8047190(Entity *entity, Item *item, DungeonPos *pos1, s32 dir, struct UnkStruct_8067110 *); + +void sub_80671A0(Entity *entity) +{ + EntityInfo *info = GetEntInfo(entity); + Item *item = sub_8044D90(entity, 0, 9); + + if (info->action.actionParameters[0].actionUseIndex == 0x81 && ItemSticky(item)) { + sub_8045BF8(gFormatBuffer_Items[0], item); + LogMessageByIdWithPopupCheckUser(entity, *gUnknown_80F8BE0); + sub_803E708(0x14, 0x4C); + } + else if ((GetItemCategory(item->id) == CATEGORY_THROWN_LINE || GetItemCategory(item->id) == CATEGORY_THROWN_ARC) && ItemSticky(item)) { + sub_8045BF8(gFormatBuffer_Items[0], item); + LogMessageByIdWithPopupCheckUser(entity, *gUnknown_80F8BE0); + sub_803E708(0x14, 0x4C); + } + else if (ShouldMonsterRunAwayAndShowEffect(entity, TRUE)) { + LogMessageByIdWithPopupCheckUser(entity, *gUnknown_80FF76C); + sub_803E708(0x14, 0x4C); + } + else { + bool8 r7; + Item newItem; + DungeonPos pos; + struct UnkStruct_8067110 unkStruct; + + newItem = *item; + newItem.flags &= ~(ITEM_FLAG_SET); + + if (info->action.actionParameters[0].actionUseIndex == 0x80) { + item = NULL; + sub_80461C8(&info->action.actionParameters[0].itemPos, 1); + } + + r7 = TRUE; + if ((GetItemCategory(newItem.id) == CATEGORY_THROWN_LINE || GetItemCategory(newItem.id) == CATEGORY_THROWN_ARC) && (newItem.quantity > 1)) { + r7 = FALSE; + } + + if (r7) { + if (info->action.actionParameters[0].actionUseIndex != 0x80) { + ZeroOutItem(item); + FillInventoryGaps(); + } + } + else { + if (info->action.actionParameters[0].actionUseIndex == 0x80) { + newItem.quantity--; + sub_80460F8(&info->action.actionParameters[0].itemPos, &newItem, 1); + } + else { + item->quantity--; + } + } + + if (HasHeldItem(entity, ITEM_NO_AIM_SCOPE)) { + info->action.direction = DungeonRandInt(NUM_DIRECTIONS); + } + + if (sub_8045888(entity)) { + s32 i; + s32 dir = info->action.direction; + sub_80421C0(entity, 0x164); + + for (i = 0; i < NUM_DIRECTIONS; i++) { + dir--; + dir &= DIRECTION_MASK; + sub_806CDD4(entity, 0, dir); + sub_803E708(2, 21); + } + info->unk166 = 4; + } + + if ((GetItemCategory(newItem.id) == CATEGORY_THROWN_LINE || GetItemCategory(newItem.id) == CATEGORY_THROWN_ARC)) { + newItem.quantity = 1; + } + + sub_8045C08(gFormatBuffer_Items[0], &newItem); + SetMessageArgument_2(gFormatBuffer_Monsters[0], info, 0); + if (GetItemCategory(newItem.id) == CATEGORY_THROWN_LINE) { + LogMessageByIdWithPopupCheckUser(entity, gMonThrewItem2); + } + else { + LogMessageByIdWithPopupCheckUser(entity, gMonThrewItem1); + } + + sub_8042208(entity, GetItemCategory(newItem.id)); + if (HasHeldItem(entity, ITEM_CURVE_BAND)) { + unkStruct.unk1 = 1; + } + else { + unkStruct.unk1 = 0; + } + + switch (info->longTossClassStatus.status) { + case 0: + unkStruct.unk0 = 0; + unkStruct.unk2 = 10; + break; + case STATUS_LONG_TOSS: + unkStruct.unk0 = 0; + unkStruct.unk2 = 99; + break; + case STATUS_PIERCE: + unkStruct.unk0 = 1; + unkStruct.unk2 = 99; + break; + } + + if (HasHeldItem(entity, ITEM_PIERCE_BAND)) { + unkStruct.unk0 = 1; + unkStruct.unk2 = 99; + } + + if (GetItemCategory(newItem.id) == CATEGORY_THROWN_ARC) { + sub_8083904(&pos, entity); + sub_80475C4(entity, &newItem, &entity->pos, &pos, &unkStruct); + } + else { + sub_8047190(entity, &newItem, &entity->pos, info->action.direction, &unkStruct); + } + + if (EntityIsValid(entity)) { + sub_806CE68(entity, info->action.direction); + sub_807AB38(entity,gDungeon->forceMonsterHouse); + } + } +} From 1ce273c08201ecd6c62f82c7c8779a3da4ffb144 Mon Sep 17 00:00:00 2001 From: DizzyEggg Date: Mon, 17 Feb 2025 18:46:52 +0100 Subject: [PATCH 03/40] sub_8067768 --- asm/code_8066D04.s | 326 ---------------------------------- include/structs/str_dungeon.h | 2 +- src/code_805D8C8_1.c | 2 +- src/code_8066D04.c | 128 +++++++++++++ 4 files changed, 130 insertions(+), 328 deletions(-) diff --git a/asm/code_8066D04.s b/asm/code_8066D04.s index e31f55880..c56cce373 100644 --- a/asm/code_8066D04.s +++ b/asm/code_8066D04.s @@ -6,332 +6,6 @@ .text - thumb_func_start HandleTalkFieldAction -HandleTalkFieldAction: - push {r4,lr} - adds r4, r0, 0 - bl sub_806773C - adds r1, r0, 0 - movs r2, 0x1 - negs r2, r2 - adds r0, r4, 0 - bl sub_8067558 - pop {r4} - pop {r0} - bx r0 - thumb_func_end HandleTalkFieldAction - - thumb_func_start sub_806752C -sub_806752C: - push {r4,lr} - ldr r1, _08067550 - ldr r1, [r1] - ldrb r0, [r0, 0x4] - lsls r0, 2 - ldr r2, _08067554 - adds r1, r2 - adds r1, r0 - ldr r4, [r1] - bl GetLeader - adds r1, r4, 0 - movs r2, 0 - bl sub_8067558 - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_08067550: .4byte gDungeon -_08067554: .4byte 0x0001357c - thumb_func_end sub_806752C - - thumb_func_start sub_8067558 -sub_8067558: - push {r4-r7,lr} - mov r7, r9 - mov r6, r8 - push {r6,r7} - sub sp, 0x12C - adds r6, r0, 0 - adds r5, r1, 0 - mov r9, r2 - ldr r0, [r6, 0x70] - mov r8, r0 - cmp r5, 0 - bne _0806757C - ldr r0, _08067578 - ldr r1, [r0] - movs r0, 0 - b _08067716 - .align 2, 0 -_08067578: .4byte gCannotTalk -_0806757C: - adds r0, r6, 0 - bl sub_8070BC0 - lsls r0, 24 - cmp r0, 0 - bne _08067594 - ldr r0, _08067590 - ldr r1, [r0] - movs r0, 0 - b _08067716 - .align 2, 0 -_08067590: .4byte gCannotTalk -_08067594: - adds r0, r6, 0 - adds r1, r5, 0 - movs r2, 0x1 - movs r3, 0 - bl GetTreatmentBetweenMonsters - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - bne _080675AA - b _0806771E -_080675AA: - adds r0, r5, 0 - adds r1, r6, 0 - movs r2, 0x1 - movs r3, 0 - bl GetTreatmentBetweenMonsters - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - bne _080675C0 - b _0806771E -_080675C0: - ldr r7, [r5, 0x70] - ldr r4, _08067608 - adds r0, r4, 0 - adds r1, r7, 0 - movs r2, 0 - bl SetMessageArgument_2 - adds r4, 0x50 - adds r0, r4, 0 - mov r1, r8 - movs r2, 0x7 - bl SetMessageArgument_2 - bl sub_8084778 - adds r0, r6, 0 - adds r1, r5, 0 - bl TrySendImmobilizeSleepEndMsg - adds r0, r5, 0 - bl sub_8070BC0 - lsls r0, 24 - cmp r0, 0 - beq _08067600 - adds r0, r5, 0 - movs r1, 0x1 - bl CheckVariousStatuses2 - lsls r0, 24 - cmp r0, 0 - beq _08067610 -_08067600: - ldr r0, _0806760C - ldr r1, [r0] - movs r0, 0 - b _08067716 - .align 2, 0 -_08067608: .4byte gFormatBuffer_Monsters -_0806760C: .4byte gUnknown_80FE008 -_08067610: - adds r0, r6, 0x4 - adds r1, r5, 0x4 - bl GetDirectionTowardsPosition - adds r1, r0, 0 - adds r0, r6, 0 - bl sub_806CEFC - mov r1, r9 - cmp r1, 0 - blt _0806762E - adds r0, r5, 0 - bl sub_806CEFC - b _0806763C -_0806762E: - mov r0, r8 - adds r0, 0x46 - ldrb r1, [r0] - adds r1, 0x4 - adds r0, r5, 0 - bl sub_806CEFC -_0806763C: - ldrb r0, [r7, 0x8] - cmp r0, 0x1 - bne _08067648 - bl sub_807EF84 - b _0806772A -_08067648: - adds r0, r7, 0 - adds r0, 0xA4 - ldrb r0, [r0] - cmp r0, 0x1 - bne _08067694 - ldr r0, _08067668 - ldr r1, [r0] - ldr r2, _0806766C - adds r0, r1, r2 - ldrb r0, [r0] - cmp r0, 0 - beq _08067674 - ldr r0, _08067670 - ldr r1, [r0] - movs r0, 0 - b _08067716 - .align 2, 0 -_08067668: .4byte gDungeon -_0806766C: .4byte 0x0000066e -_08067670: .4byte gUnknown_80FF674 -_08067674: - ldr r3, _08067688 - adds r0, r1, r3 - ldrb r0, [r0] - cmp r0, 0 - beq _0806768C - adds r0, r5, 0 - bl sub_80845E0 - b _0806772A - .align 2, 0 -_08067688: .4byte 0x00000677 -_0806768C: - adds r0, r5, 0 - bl sub_8084448 - b _0806772A -_08067694: - movs r0, 0x4 - ldrsh r5, [r7, r0] - movs r6, 0 - adds r0, r7, 0 - adds r0, 0x40 - ldrb r0, [r0] - cmp r0, 0x4A - bne _080676AA - movs r5, 0xD2 - lsls r5, 1 - b _080676CC -_080676AA: - cmp r0, 0x47 - bne _080676B8 - ldr r5, _080676B4 - b _080676CC - .align 2, 0 -_080676B4: .4byte 0x000001a5 -_080676B8: - cmp r0, 0x41 - bne _080676CC - ldr r0, _080676E8 - ldr r0, [r0] - ldr r1, _080676EC - adds r0, r1 - ldrb r0, [r0] - cmp r0, 0 - bne _080676CC - movs r6, 0x1 -_080676CC: - movs r3, 0x10 - ldrsh r2, [r7, r3] - adds r0, r2, 0 - cmp r2, 0 - bge _080676D8 - adds r0, r2, 0x3 -_080676D8: - movs r3, 0xE - ldrsh r1, [r7, r3] - asrs r0, 2 - cmp r1, r0 - bgt _080676F0 - movs r2, 0x2 - b _08067708 - .align 2, 0 -_080676E8: .4byte gDungeon -_080676EC: .4byte 0x0000065c -_080676F0: - movs r0, 0xE - ldrsh r4, [r7, r0] - lsls r0, r2, 1 - adds r0, r2 - lsls r0, 1 - movs r1, 0xA - bl __divsi3 - movs r2, 0 - cmp r4, r0 - bgt _08067708 - movs r2, 0x1 -_08067708: - mov r0, sp - adds r1, r5, 0 - adds r3, r6, 0 - bl sub_806A3D4 - movs r0, 0 - mov r1, sp -_08067716: - movs r2, 0x1 - bl DisplayDungeonMessage - b _0806772A -_0806771E: - ldr r0, _08067738 - ldr r1, [r0] - movs r0, 0 - movs r2, 0x1 - bl DisplayDungeonMessage -_0806772A: - add sp, 0x12C - pop {r3,r4} - mov r8, r3 - mov r9, r4 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_08067738: .4byte gCannotTalk - thumb_func_end sub_8067558 - - thumb_func_start sub_806773C -sub_806773C: - push {r4,r5,lr} - adds r5, r0, 0 - bl sub_80696A8 - adds r4, r0, 0 - cmp r4, 0 - beq _08067760 - adds r0, r4, 0 - bl GetEntityType - cmp r0, 0x1 - bne _08067760 - ldr r0, [r5, 0x70] - ldrb r0, [r0, 0x6] - cmp r0, 0 - bne _08067760 - adds r0, r4, 0 - b _08067762 -_08067760: - movs r0, 0 -_08067762: - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end sub_806773C - - thumb_func_start sub_8067768 -sub_8067768: - push {r4,lr} - ldr r1, _0806778C - ldr r1, [r1] - ldrb r0, [r0, 0x4] - lsls r0, 2 - ldr r2, _08067790 - adds r1, r2 - adds r1, r0 - ldr r4, [r1] - bl GetLeader - adds r1, r4, 0 - movs r2, 0 - bl sub_8067794 - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_0806778C: .4byte gDungeon -_08067790: .4byte 0x0001357c - thumb_func_end sub_8067768 thumb_func_start sub_8067794 sub_8067794: diff --git a/include/structs/str_dungeon.h b/include/structs/str_dungeon.h index 1fa914b7c..ab1811197 100644 --- a/include/structs/str_dungeon.h +++ b/include/structs/str_dungeon.h @@ -273,7 +273,7 @@ typedef struct unkDungeon644 /* 0x30 */ u8 unk30; /* 0x31 */ u8 unk31; /* 0x32 */ bool8 itemHoldersIdentified; - /* 0x33 */ u8 fill33; + /* 0x33 */ u8 unk33; /* 0x34 */ u8 unk34; /* 0x35 */ u8 unk35; /* 0x36 */ u8 unk36; diff --git a/src/code_805D8C8_1.c b/src/code_805D8C8_1.c index e81651380..58aad9578 100644 --- a/src/code_805D8C8_1.c +++ b/src/code_805D8C8_1.c @@ -111,7 +111,7 @@ void sub_806752C(ActionContainer *a0); bool8 sub_8061A38(ActionContainer *a0, bool8 a1); void sub_8063A70(ActionContainer *a0, bool8 a1); void sub_8063CF0(ActionContainer *a0, bool8 a1); -void sub_8067768(UNUSED ActionContainer *a0); +void sub_8067768(ActionContainer *a0); void ShowTacticsMenu(ActionContainer *a0); void sub_804A728(DungeonPos *pos, s32 a1, u8 a2, u8 a3); extern bool8 sub_8071A8C(Entity *pokemon); diff --git a/src/code_8066D04.c b/src/code_8066D04.c index 1c22bac80..7f7f3990d 100644 --- a/src/code_8066D04.c +++ b/src/code_8066D04.c @@ -7,14 +7,20 @@ #include "dungeon_map_access.h" #include "dungeon_movement.h" #include "dungeon_music.h" +#include "position_util.h" #include "dungeon_util.h" #include "items.h" #include "string_format.h" +#include "dungeon_leader.h" #include "status_checks_1.h" #include "dungeon_ai_targeting.h" #include "dungeon_items.h" #include "dungeon_random.h" +#include "code_8077274_1.h" +#include "code_8084778.h" +#include "dungeon_capabilities.h" #include "constants/item.h" +#include "constants/dungeon.h" extern u8 *gUnknown_80F8BE0[]; extern u8 *gUnknown_80FF76C[]; @@ -40,6 +46,9 @@ extern u8 *gNoExchangesHere[]; extern u8 *gSwappedGroundItem[]; extern const u8 *const gMonThrewItem2; extern const u8 *const gMonThrewItem1; +extern const u8 *const gCannotTalk; +extern const u8 *const gUnknown_80FE008; +extern const u8 *const gUnknown_80FF674; extern void sub_8045C08(u8 *buffer, Item *item); extern bool8 sub_8045888(Entity *); @@ -607,3 +616,122 @@ void sub_80671A0(Entity *entity) } } } + +Entity *sub_806773C(Entity *entity); +void sub_8067558(Entity *entity, Entity *targetEntity, s32 a2); +void sub_8067794(Entity *entity, Entity *targetEntity, s32 a2); +extern void sub_807EF84(void); +extern void sub_80845E0(Entity *entity); +extern void sub_8084448(Entity *entity); +extern void sub_806A3D4(u8 *dst, s32 _a1, s32 id, bool32 _a3); +extern Entity * sub_80696A8(Entity *target); + +void HandleTalkFieldAction(Entity *entity) +{ + sub_8067558(entity, sub_806773C(entity), -1); +} + +void sub_806752C(ActionContainer *a0) +{ + Entity *targetEntity = gDungeon->teamPokemon[a0->actionParameters[0].actionUseIndex]; + sub_8067558(GetLeader(), targetEntity, 0); +} + +void sub_8067558(Entity *entity, Entity *targetEntity, s32 a2) +{ + EntityInfo *info1 = GetEntInfo(entity); + + if (targetEntity == NULL) { + DisplayDungeonMessage(NULL, gCannotTalk, TRUE); + } + else if (!sub_8070BC0(entity)) { + DisplayDungeonMessage(NULL, gCannotTalk, TRUE); + } + else if (GetTreatmentBetweenMonsters(entity, targetEntity, TRUE, FALSE) != 1 + && GetTreatmentBetweenMonsters(targetEntity, entity, TRUE, FALSE) != 1) + { + EntityInfo *info2 = GetEntInfo(targetEntity); + + SetMessageArgument_2(gFormatBuffer_Monsters[0], info2, 0); + SetMessageArgument_2(gFormatBuffer_Monsters[1], info1, 7); + sub_8084778(); + TrySendImmobilizeSleepEndMsg(entity, targetEntity); + if (!sub_8070BC0(targetEntity) || CheckVariousStatuses2(targetEntity, TRUE)) { + DisplayDungeonMessage(NULL, gUnknown_80FE008, TRUE); + return; + } + + sub_806CEFC(entity, GetDirectionTowardsPosition(&entity->pos, &targetEntity->pos)); + if (a2 >= 0) { + sub_806CEFC(targetEntity, a2); + } + else { + sub_806CEFC(targetEntity, info1->action.direction + 4); + } + + if (info2->shopkeeper == SHOPKEEPER_MODE_SHOPKEEPER) { + sub_807EF84(); + return; + } + + if (info2->monsterBehavior == 1) { + if (gDungeon->unk644.unk2A != 0) { + DisplayDungeonMessage(NULL, gUnknown_80FF674, TRUE); + } + else if (gDungeon->unk644.unk33) { + sub_80845E0(targetEntity); + } + else { + sub_8084448(targetEntity); + } + } + else { + u8 txt[300]; + s32 r2; + s32 speciesId = info2->apparentID; + bool8 r6 = FALSE; + + if (info2->joinedAt.id == DUNGEON_JOIN_LOCATION_CLIENT_POKEMON) { + speciesId = MONSTER_MUNCHLAX; + } + else if (info2->joinedAt.id == DUNGEON_RESCUE_TEAM_BASE) { + speciesId = MONSTER_DECOY; + } + else if (info2->joinedAt.id == DUNGEON_JOIN_LOCATION_PARTNER && !gDungeon->unk644.unk18) { + r6 = TRUE; + } + + if (info2->HP <= info2->maxHPStat / 4) { + r2 = 2; + } + else if (info2->HP <= (info2->maxHPStat * 6) / 10) { + r2 = 1; + } + else { + r2 = 0; + } + + sub_806A3D4(txt, speciesId, r2, r6); + DisplayDungeonMessage(NULL, txt, TRUE); + } + } + else { + DisplayDungeonMessage(NULL, gCannotTalk, TRUE); + } +} + +Entity *sub_806773C(Entity *entity) +{ + Entity *ret = sub_80696A8(entity); + if (ret == NULL) return NULL; + if (GetEntityType(ret) != ENTITY_MONSTER) return NULL; + if (GetEntInfo(entity)->isNotTeamMember) return NULL; + + return ret; +} + +void sub_8067768(ActionContainer *a0) +{ + Entity *targetEntity = gDungeon->teamPokemon[a0->actionParameters[0].actionUseIndex]; + sub_8067794(GetLeader(), targetEntity, 0); +} From afb9fbeaf8a81fc30aabe723bd9e4be8bf54c2bc Mon Sep 17 00:00:00 2001 From: DizzyEggg Date: Tue, 18 Feb 2025 14:39:43 +0100 Subject: [PATCH 04/40] sub_8067A80 --- asm/code_8066D04.s | 921 ----------------------------------------- include/dungeon_move.h | 9 + src/code_8066D04.c | 428 +++++++++++++++++++ src/dungeon_move.c | 2 +- 4 files changed, 438 insertions(+), 922 deletions(-) create mode 100644 include/dungeon_move.h diff --git a/asm/code_8066D04.s b/asm/code_8066D04.s index c56cce373..5a293ca66 100644 --- a/asm/code_8066D04.s +++ b/asm/code_8066D04.s @@ -5,927 +5,6 @@ .text - - - thumb_func_start sub_8067794 -sub_8067794: - push {r4-r7,lr} - sub sp, 0x40 - adds r7, r1, 0 - ldr r4, [r7, 0x70] - cmp r7, 0 - bne _080677B4 - ldr r0, _080677B0 - ldr r1, [r0] - movs r0, 0 - movs r2, 0x1 - bl DisplayDungeonMessage - b _0806786C - .align 2, 0 -_080677B0: .4byte gCannotFarewell -_080677B4: - ldr r0, _080677F0 - adds r1, r7, 0 - movs r2, 0 - bl SubstitutePlaceholderStringTags - ldr r0, _080677F4 - ldr r5, [r0] - ldr r0, _080677F8 - ldr r6, [r0] - ldrb r2, [r4, 0xA] - cmp r2, 0 - blt _08067834 - ldr r1, _080677FC - movs r0, 0x64 - muls r0, r2 - ldr r2, _08067800 - adds r0, r2 - ldr r1, [r1] - adds r4, r1, r0 - movs r1, 0xA - ldrsh r0, [r4, r1] - bl sub_806A564 - lsls r0, 24 - cmp r0, 0 - beq _0806780C - ldr r0, _08067804 - ldr r5, [r0] - ldr r0, _08067808 - b _08067832 - .align 2, 0 -_080677F0: .4byte gFormatBuffer_Monsters -_080677F4: .4byte gSayFarewellQ -_080677F8: .4byte gUnknown_80F913C -_080677FC: .4byte gRecruitedPokemonRef -_08067800: .4byte 0x00008df8 -_08067804: .4byte gUnknown_80F9114 -_08067808: .4byte gMonDisappointedAndLeft -_0806780C: - movs r2, 0xA - ldrsh r0, [r4, r2] - bl sub_806A58C - lsls r0, 24 - cmp r0, 0 - beq _08067834 - bl IsMakuhitaTrainingMaze - lsls r0, 24 - cmp r0, 0 - beq _0806782C - ldr r0, _08067828 - b _0806782E - .align 2, 0 -_08067828: .4byte gSendMonBackQ -_0806782C: - ldr r0, _08067874 -_0806782E: - ldr r5, [r0] - ldr r0, _08067878 -_08067832: - ldr r6, [r0] -_08067834: - movs r0, 0 - adds r1, r5, 0 - movs r2, 0 - bl DisplayDungeonYesNoMessage - cmp r0, 0x1 - bne _0806786C - ldr r4, _0806787C - mov r0, sp - adds r1, r4, 0 - movs r2, 0x40 - bl strncpy - ldr r1, _08067880 - adds r0, r7, 0 - movs r2, 0 - bl sub_8068FE0 - adds r0, r4, 0 - mov r1, sp - movs r2, 0x40 - bl strncpy - movs r0, 0 - adds r1, r6, 0 - movs r2, 0x1 - bl DisplayDungeonMessage -_0806786C: - add sp, 0x40 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_08067874: .4byte gSendMonBackWithItemQ -_08067878: .4byte gMonWentBack -_0806787C: .4byte gFormatBuffer_Monsters -_08067880: .4byte 0x0000021d - thumb_func_end sub_8067794 - - thumb_func_start HandleUseMovePlayerAction -HandleUseMovePlayerAction: - push {r4-r6,lr} - sub sp, 0x4 - adds r5, r0, 0 - movs r6, 0 - b _0806789A -_0806788E: - ldr r1, _08067900 - adds r0, r4, r1 - ldrb r0, [r0] - cmp r0, 0 - bne _080678C6 - adds r6, 0x1 -_0806789A: - adds r0, r5, 0 - movs r1, 0x1 - bl sub_8070828 - cmp r6, r0 - bge _080678C6 - ldr r4, [r5, 0x70] - adds r0, r4, 0 - adds r0, 0x50 - ldrb r1, [r0] - movs r0, 0 - str r0, [sp] - adds r0, r5, 0 - movs r2, 0x1 - movs r3, 0 - bl sub_8055A00 - bl sub_8044B28 - lsls r0, 24 - cmp r0, 0 - beq _0806788E -_080678C6: - adds r0, r5, 0 - movs r1, 0x1 - bl sub_8057588 - bl sub_8044B28 - lsls r0, 24 - cmp r0, 0 - bne _080678F6 - adds r0, r5, 0 - bl EntityIsValid - lsls r0, 24 - cmp r0, 0 - beq _080678F0 - ldr r0, [r5, 0x70] - adds r0, 0x50 - ldrb r1, [r0] - adds r0, r5, 0 - bl sub_806A9B4 -_080678F0: - adds r0, r5, 0 - bl sub_806A1B0 -_080678F6: - add sp, 0x4 - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_08067900: .4byte 0x00000159 - thumb_func_end HandleUseMovePlayerAction - - thumb_func_start sub_8067904 -sub_8067904: - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - sub sp, 0x14 - adds r5, r0, 0 - lsls r1, 16 - lsrs r1, 16 - mov r9, r1 - ldr r6, [r5, 0x70] - ldr r1, _08067940 - movs r0, 0 - str r0, [r1] - add r0, sp, 0x8 - mov r1, r9 - bl InitPokemonMove - adds r0, r6, 0 - adds r0, 0xBC - ldrb r0, [r0] - cmp r0, 0x1 - bne _0806794C - ldr r0, _08067944 - adds r1, r5, 0 - movs r2, 0 - bl SubstitutePlaceholderStringTags - ldr r0, _08067948 - b _08067962 - .align 2, 0 -_08067940: .4byte gUnknown_202F208 -_08067944: .4byte gFormatBuffer_Monsters -_08067948: .4byte gMonCringing -_0806794C: - adds r0, r6, 0 - adds r0, 0xAC - ldrb r0, [r0] - cmp r0, 0x4 - bne _08067974 - ldr r0, _0806796C - adds r1, r5, 0 - movs r2, 0 - bl SubstitutePlaceholderStringTags - ldr r0, _08067970 -_08067962: - ldr r1, [r0] - adds r0, r5, 0 - bl LogMessageByIdWithPopupCheckUser - b _08067A56 - .align 2, 0 -_0806796C: .4byte gFormatBuffer_Monsters -_08067970: .4byte gMonParalyzed -_08067974: - movs r0, 0xB0 - lsls r0, 1 - movs r1, 0 - mov r10, r1 - cmp r9, r0 - bne _08067984 - movs r2, 0x1 - mov r10, r2 -_08067984: - movs r0, 0 - mov r8, r0 - movs r7, 0 - add r4, sp, 0x8 - b _080679D2 -_0806798E: - movs r1, 0xBC - lsls r1, 1 - adds r0, r6, r1 - strh r7, [r0] - ldrb r0, [r4] - movs r1, 0x8 - orrs r0, r1 - orrs r0, r7 - movs r1, 0x4 - orrs r0, r1 - strb r0, [r4] - movs r0, 0xA - strb r0, [r4, 0x4] - str r7, [sp] - str r4, [sp, 0x4] - adds r0, r5, 0 - mov r1, r10 - movs r2, 0 - movs r3, 0 - bl TryUseChosenMove - adds r0, r5, 0 - bl EntityIsValid - lsls r0, 24 - cmp r0, 0 - beq _080679DE - ldr r2, _08067A68 - adds r0, r6, r2 - ldrb r0, [r0] - cmp r0, 0 - bne _080679DE - movs r0, 0x1 - add r8, r0 -_080679D2: - adds r0, r5, 0 - movs r1, 0x1 - bl sub_8070828 - cmp r8, r0 - blt _0806798E -_080679DE: - adds r0, r5, 0 - bl EntityIsValid - lsls r0, 24 - cmp r0, 0 - beq _08067A56 - movs r0, 0xB0 - lsls r0, 1 - cmp r9, r0 - bne _08067A04 - ldr r0, _08067A6C - ldr r0, [r0] - cmp r0, 0 - bne _08067A04 - ldr r0, _08067A70 - ldr r1, [r0] - adds r0, r5, 0 - bl LogMessageByIdWithPopupCheckUser -_08067A04: - ldrb r0, [r6, 0x7] - cmp r0, 0 - beq _08067A50 - movs r0, 0xB0 - lsls r0, 1 - cmp r9, r0 - beq _08067A50 - ldr r4, _08067A74 - adds r3, r6, 0 - adds r3, 0x46 - ldrb r0, [r3] - lsls r0, 2 - adds r0, r4 - ldrh r0, [r0] - ldrh r1, [r5, 0x4] - adds r0, r1 - lsls r0, 16 - lsrs r0, 16 - ldr r2, _08067A78 - ldr r1, [sp, 0x10] - ands r1, r2 - orrs r1, r0 - str r1, [sp, 0x10] - ldrb r0, [r3] - lsls r0, 2 - adds r0, r4 - ldrh r0, [r0, 0x2] - ldrh r2, [r5, 0x6] - adds r0, r2 - lsls r0, 16 - ldr r2, _08067A7C - ands r1, r2 - orrs r1, r0 - str r1, [sp, 0x10] - add r0, sp, 0x10 - movs r1, 0x1 - bl sub_807FE44 -_08067A50: - adds r0, r5, 0 - bl sub_8071DA4 -_08067A56: - add sp, 0x14 - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_08067A68: .4byte 0x00000159 -_08067A6C: .4byte gUnknown_202F208 -_08067A70: .4byte gUnknown_80FC690 -_08067A74: .4byte gAdjacentTileOffsets -_08067A78: .4byte 0xffff0000 -_08067A7C: .4byte 0x0000ffff - thumb_func_end sub_8067904 - - thumb_func_start sub_8067A80 -sub_8067A80: - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - sub sp, 0x6C - str r1, [sp, 0x68] - mov r8, r2 - mov r9, r3 - lsls r0, 24 - lsrs r0, 24 - str r0, [sp, 0x64] - ldr r1, _08067AC8 - add r0, sp, 0x4 - movs r2, 0x60 - bl memcpy - ldr r1, _08067ACC - movs r0, 0 - str r0, [r1] - mov r10, r0 - cmp r10, r8 - blt _08067AB0 - b _08067ED8 -_08067AB0: - ldr r5, _08067AD0 - mov r4, r9 - mov r3, r8 -_08067AB6: - ldm r4!, {r2} - ldrh r1, [r2] - adds r0, r5, 0 - ands r0, r1 - strh r0, [r2] - subs r3, 0x1 - cmp r3, 0 - bne _08067AB6 - b _08067ED8 - .align 2, 0 -_08067AC8: .4byte gUnknown_8106DC8 -_08067ACC: .4byte gUnknown_202F30C -_08067AD0: .4byte 0x00007fff -_08067AD4: - movs r7, 0 - ldr r1, _08067B98 - movs r0, 0x1 - strb r0, [r1] - strb r7, [r1, 0x1] - movs r0, 0xE - strb r0, [r1, 0x2] - strb r7, [r1, 0x3] - add r0, sp, 0x4 - movs r1, 0x1 - bl sub_803ECB4 - ldr r5, _08067B9C - ldr r2, [r5] - ldr r0, [sp, 0x68] - str r0, [sp] - ldr r0, [sp, 0x64] - mov r1, r9 - mov r3, r8 - bl sub_8067F00 - ldr r4, _08067BA0 - mov r0, r8 - cmp r0, 0x8 - ble _08067B08 - movs r0, 0x8 -_08067B08: - strh r0, [r4, 0x1A] - mov r1, r10 - strh r1, [r4, 0x18] - movs r0, 0x8 - strh r0, [r4, 0x1C] - strh r7, [r4, 0x1E] - strh r7, [r4, 0x20] - strh r7, [r4, 0x4] - movs r0, 0x12 - strh r0, [r4, 0x6] - strh r7, [r4, 0xC] - strh r7, [r4, 0xE] - strh r7, [r4, 0x14] - str r7, [r4] - adds r0, r4, 0 - adds r0, 0x28 - bl sub_801317C - adds r0, r4, 0 - movs r1, 0 - bl sub_80137B0 - adds r6, r5, 0 -_08067B36: - ldr r0, _08067BA0 - bl AddMenuCursorSprite - movs r5, 0 - movs r7, 0 - ldr r0, [r6] - mov r2, r8 - subs r0, r2, r0 - cmp r0, 0x8 - ble _08067B50 - movs r5, 0x1 - bl sub_80684C4 -_08067B50: - ldr r0, [r6] - cmp r0, 0 - beq _08067B5C - movs r7, 0x1 - bl sub_8068344 -_08067B5C: - movs r0, 0 - ldr r1, _08067BA4 - bl sub_8014140 - adds r4, r0, 0 - movs r0, 0x37 - bl sub_803E46C - cmp r4, 0x2 - bne _08067BAC - cmp r5, 0 - beq _08067BAC - ldr r0, [r6] - mov r3, r8 - subs r0, r3, r0 - cmp r0, 0x8 - ble _08067BF0 - ldr r5, _08067BA8 - movs r4, 0x5 -_08067B82: - ldr r1, [r5] - movs r0, 0 - bl _call_via_r1 - movs r0, 0x37 - bl sub_803E46C - subs r4, 0x1 - cmp r4, 0 - bge _08067B82 - b _08067BEA - .align 2, 0 -_08067B98: .4byte gUnknown_202F308 -_08067B9C: .4byte gUnknown_202F30C -_08067BA0: .4byte gUnknown_202EE10 -_08067BA4: .4byte gUnknown_8106DA4 -_08067BA8: .4byte gIwramTextFunc1 -_08067BAC: - ldr r0, _08067BF8 - ldrh r1, [r0, 0x4] - movs r0, 0x80 - ands r0, r1 - cmp r0, 0 - beq _08067C0C - movs r0, 0x1 - bl sub_8083CE0 - ldr r1, _08067BFC - movs r2, 0x18 - ldrsh r0, [r1, r2] - cmp r0, 0x7 - bne _08067C04 - ldr r0, [r6] - mov r3, r8 - subs r0, r3, r0 - cmp r0, 0x8 - ble _08067BF0 - ldr r5, _08067C00 - movs r4, 0x5 -_08067BD6: - ldr r1, [r5] - movs r0, 0 - bl _call_via_r1 - movs r0, 0x37 - bl sub_803E46C - subs r4, 0x1 - cmp r4, 0 - bge _08067BD6 -_08067BEA: - ldr r0, [r6] - adds r0, 0x1 - str r0, [r6] -_08067BF0: - movs r7, 0 - movs r0, 0x7 - mov r10, r0 - b _08067CF6 - .align 2, 0 -_08067BF8: .4byte gRealInputs -_08067BFC: .4byte gUnknown_202EE10 -_08067C00: .4byte gIwramTextFunc1 -_08067C04: - adds r0, r1, 0 - movs r1, 0 - bl sub_80136E0 -_08067C0C: - cmp r4, 0x1 - bne _08067C44 - cmp r7, 0 - beq _08067C44 - ldr r0, [r6] - cmp r0, 0 - beq _08067C38 - ldr r5, _08067C40 - movs r4, 0x5 -_08067C1E: - ldr r1, [r5] - movs r0, 0 - bl _call_via_r1 - movs r0, 0x37 - bl sub_803E46C - subs r4, 0x1 - cmp r4, 0 - bge _08067C1E - ldr r0, [r6] - subs r0, 0x1 - str r0, [r6] -_08067C38: - movs r7, 0 - movs r1, 0 - mov r10, r1 - b _08067CF6 - .align 2, 0 -_08067C40: .4byte gIwramTextFunc2 -_08067C44: - ldr r0, _08067C8C - ldrh r1, [r0, 0x4] - movs r0, 0x40 - ands r0, r1 - cmp r0, 0 - beq _08067CA0 - movs r0, 0x1 - bl sub_8083CE0 - ldr r1, _08067C90 - movs r2, 0x18 - ldrsh r0, [r1, r2] - cmp r0, 0 - bne _08067C98 - ldr r0, [r6] - cmp r0, 0 - beq _08067C84 - ldr r5, _08067C94 - movs r4, 0x5 -_08067C6A: - ldr r1, [r5] - movs r0, 0 - bl _call_via_r1 - movs r0, 0x37 - bl sub_803E46C - subs r4, 0x1 - cmp r4, 0 - bge _08067C6A - ldr r0, [r6] - subs r0, 0x1 - str r0, [r6] -_08067C84: - movs r7, 0 - movs r3, 0 - mov r10, r3 - b _08067CF6 - .align 2, 0 -_08067C8C: .4byte gRealInputs -_08067C90: .4byte gUnknown_202EE10 -_08067C94: .4byte gIwramTextFunc2 -_08067C98: - adds r0, r1, 0 - movs r1, 0 - bl sub_8013744 -_08067CA0: - bl sub_80048C8 - lsls r0, 24 - cmp r0, 0 - beq _08067CAC - b _08067B36 -_08067CAC: - ldr r0, _08067CD4 - ldrh r1, [r0, 0x2] - movs r0, 0x8 - ands r0, r1 - cmp r0, 0 - bne _08067D40 - movs r0, 0x1 - ands r0, r1 - cmp r0, 0 - bne _08067CCC - ldr r2, _08067CD8 - adds r0, r2, 0 - adds r0, 0x29 - ldrb r0, [r0] - cmp r0, 0 - beq _08067CDC -_08067CCC: - bl sub_8083D08 - movs r7, 0x1 - b _08067CF6 - .align 2, 0 -_08067CD4: .4byte gRealInputs -_08067CD8: .4byte gUnknown_202EE10 -_08067CDC: - movs r0, 0x2 - ands r0, r1 - cmp r0, 0 - bne _08067CF0 - adds r0, r2, 0 - adds r0, 0x2A - ldrb r0, [r0] - cmp r0, 0 - bne _08067CF0 - b _08067B36 -_08067CF0: - bl sub_8083D30 - movs r7, 0x2 -_08067CF6: - ldr r4, _08067D34 - adds r0, r4, 0 - bl AddMenuCursorSprite - movs r0, 0x37 - bl sub_803E46C - cmp r7, 0 - bne _08067D0A - b _08067AD4 -_08067D0A: - cmp r7, 0x2 - bne _08067D48 - movs r1, 0x18 - ldrsh r0, [r4, r1] - mov r10, r0 - ldr r0, _08067D38 - ldr r0, [r0] - ldr r2, [sp, 0x68] - cmp r0, r2 - bge _08067D20 - b _08067AD4 -_08067D20: - ldr r0, _08067D3C - ldr r1, [r0] - movs r0, 0 - movs r2, 0x1 - bl DisplayDungeonYesNoMessage - cmp r0, 0x1 - bne _08067D32 - b _08067ED8 -_08067D32: - b _08067AD4 - .align 2, 0 -_08067D34: .4byte gUnknown_202EE10 -_08067D38: .4byte gUnknown_202F310 -_08067D3C: .4byte gUnknown_80FDFB8 -_08067D40: - bl sub_8083D1C - movs r7, 0x3 - b _08067CF6 -_08067D48: - cmp r7, 0x3 - bne _08067D64 - movs r0, 0x18 - ldrsh r3, [r4, r0] - mov r10, r3 - ldr r0, _08067D60 - ldr r0, [r0] - add r0, r10 - lsls r0, 2 - add r0, r9 - b _08067ED0 - .align 2, 0 -_08067D60: .4byte gUnknown_202F30C -_08067D64: - movs r2, 0x18 - ldrsh r1, [r4, r2] - mov r10, r1 - ldr r0, _08067DAC - ldr r0, [r0] - adds r4, r0, r1 - ldr r1, _08067DB0 - movs r0, 0 - str r0, [r1] - movs r0, 0x29 - movs r1, 0 - bl sub_8044F5C - movs r0, 0x2A - movs r1, 0 - bl sub_8044F5C - movs r0, 0x40 - movs r1, 0 - bl sub_8044F5C - lsls r0, r4, 2 - add r0, r9 - ldr r0, [r0] - ldrh r0, [r0] - movs r3, 0x80 - lsls r3, 8 - adds r1, r3, 0 - ands r0, r1 - cmp r0, 0 - beq _08067DBC - movs r0, 0x29 - bl sub_8044FF0 - b _08067DC2 - .align 2, 0 -_08067DAC: .4byte gUnknown_202F30C -_08067DB0: .4byte gUnknown_202EE6C -_08067DB4: - bl sub_8083D08 - movs r7, 0x1 - b _08067E6E -_08067DBC: - movs r0, 0x2A - bl sub_8044FF0 -_08067DC2: - lsls r0, r4, 2 - mov r2, r9 - adds r1, r0, r2 - ldr r2, [r1] - ldrb r1, [r2, 0x2] - adds r6, r0, 0 - cmp r1, 0 - bne _08067DDC - ldrb r1, [r2, 0x4] - cmp r1, 0x40 - beq _08067DDC - cmp r1, 0x41 - bne _08067DE2 -_08067DDC: - movs r0, 0x29 - bl sub_8044FF0 -_08067DE2: - bl sub_8045064 - add r0, sp, 0x4 - movs r1, 0x15 - bl sub_805FC30 - ldr r4, _08067EA0 - ldr r5, _08067EA4 - adds r7, r4, 0 - adds r7, 0x2A -_08067DF6: - adds r0, r4, 0 - bl AddMenuCursorSprite - movs r0, 0x37 - bl sub_803E46C - ldrh r1, [r5, 0x4] - movs r0, 0x80 - ands r0, r1 - cmp r0, 0 - beq _08067E1A - movs r0, 0x1 - bl sub_8083CE0 - adds r0, r4, 0 - movs r1, 0x1 - bl sub_80136E0 -_08067E1A: - ldrh r1, [r5, 0x4] - movs r0, 0x40 - ands r0, r1 - cmp r0, 0 - beq _08067E32 - movs r0, 0x1 - bl sub_8083CE0 - adds r0, r4, 0 - movs r1, 0x1 - bl sub_8013744 -_08067E32: - ldrh r1, [r5, 0x2] - movs r0, 0x1 - ands r0, r1 - cmp r0, 0 - bne _08067E46 - adds r0, r4, 0 - adds r0, 0x29 - ldrb r0, [r0] - cmp r0, 0 - beq _08067E58 -_08067E46: - movs r3, 0x18 - ldrsh r0, [r4, r3] - bl sub_8044F3C - lsls r0, 24 - cmp r0, 0 - bne _08067DB4 - bl sub_8083D30 -_08067E58: - ldrh r1, [r5, 0x2] - movs r0, 0x2 - ands r0, r1 - cmp r0, 0 - bne _08067E68 - ldrb r0, [r7] - cmp r0, 0 - beq _08067DF6 -_08067E68: - bl sub_8083D30 - movs r7, 0 -_08067E6E: - ldr r4, _08067EA0 - adds r0, r4, 0 - bl AddMenuCursorSprite - movs r0, 0x37 - bl sub_803E46C - cmp r7, 0 - bne _08067E82 - b _08067AD4 -_08067E82: - movs r1, 0x18 - ldrsh r0, [r4, r1] - cmp r0, 0 - bne _08067EA8 - mov r2, r9 - adds r0, r6, r2 - ldr r1, [r0] - ldrh r2, [r1] - movs r3, 0x80 - lsls r3, 8 - adds r0, r3, 0 - orrs r0, r2 - strh r0, [r1] - b _08067EBC - .align 2, 0 -_08067EA0: .4byte gUnknown_202EE10 -_08067EA4: .4byte gRealInputs -_08067EA8: - cmp r0, 0x1 - bne _08067ECC - mov r1, r9 - adds r0, r6, r1 - ldr r2, [r0] - ldrh r0, [r2] - ldr r3, _08067EC8 - adds r1, r3, 0 - ands r0, r1 - strh r0, [r2] -_08067EBC: - mov r0, r8 - mov r1, r9 - bl sub_8068310 - b _08067AD4 - .align 2, 0 -_08067EC8: .4byte 0x00007fff -_08067ECC: - mov r1, r9 - adds r0, r6, r1 -_08067ED0: - ldr r0, [r0] - bl sub_806806C - b _08067AD4 -_08067ED8: - mov r0, r8 - mov r1, r9 - bl sub_8068310 - ldr r0, _08067EFC - ldr r0, [r0] - ldr r2, [sp, 0x68] - cmp r0, r2 - bge _08067EEC - b _08067AD4 -_08067EEC: - add sp, 0x6C - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_08067EFC: .4byte gUnknown_202F310 - thumb_func_end sub_8067A80 - thumb_func_start sub_8067F00 sub_8067F00: push {r4-r7,lr} diff --git a/include/dungeon_move.h b/include/dungeon_move.h new file mode 100644 index 000000000..ccb15e650 --- /dev/null +++ b/include/dungeon_move.h @@ -0,0 +1,9 @@ +#ifndef GUARD_DUNGEON_MOVE_H +#define GUARD_DUNGEON_MOVE_H + +#include "structs/str_pokemon.h" +#include "structs/str_moves.h" + +bool8 TryUseChosenMove(struct Entity *attacker, u32 r6, s32 itemId, u32 var_30, bool32 isLinkedMove, struct Move *move); + +#endif diff --git a/src/code_8066D04.c b/src/code_8066D04.c index 7f7f3990d..241510c94 100644 --- a/src/code_8066D04.c +++ b/src/code_8066D04.c @@ -10,17 +10,27 @@ #include "position_util.h" #include "dungeon_util.h" #include "items.h" +#include "input.h" +#include "text.h" +#include "code_803E46C.h" #include "string_format.h" #include "dungeon_leader.h" #include "status_checks_1.h" #include "dungeon_ai_targeting.h" +#include "dungeon_engine.h" +#include "dungeon_move.h" #include "dungeon_items.h" #include "dungeon_random.h" #include "code_8077274_1.h" #include "code_8084778.h" +#include "pokemon.h" +#include "trap.h" +#include "moves.h" +#include "menu_input.h" #include "dungeon_capabilities.h" #include "constants/item.h" #include "constants/dungeon.h" +#include "constants/move_id.h" extern u8 *gUnknown_80F8BE0[]; extern u8 *gUnknown_80FF76C[]; @@ -46,16 +56,40 @@ extern u8 *gNoExchangesHere[]; extern u8 *gSwappedGroundItem[]; extern const u8 *const gMonThrewItem2; extern const u8 *const gMonThrewItem1; +extern const u8 *const gCannotFarewell; +extern const u8 *const gSayFarewellQ; +extern const u8 *const gUnknown_80FDFB8; +extern const u8 *const gUnknown_80F913C; extern const u8 *const gCannotTalk; extern const u8 *const gUnknown_80FE008; +extern const u8 *const gUnknown_80FDF74; extern const u8 *const gUnknown_80FF674; +extern const u8 *const gUnknown_80F9114; +extern const u8 *const gMonDisappointedAndLeft; +extern const u8 *const gSendMonBackQ; +extern const u8 *const gSendMonBackWithItemQ; +extern const u8 *const gMonWentBack; +extern const u8 *const gMonCringing; +extern const u8 *const gMonParalyzed; +extern const u8 *const gUnknown_80FC690; +extern s32 gUnknown_202EE6C; + +extern void sub_8071DA4(Entity *); +extern void sub_806A1B0(Entity *); +extern void sub_806A9B4(Entity *, u32); +extern void sub_8057588(Entity * pokemon, u8 param_2); +extern void sub_8068FE0(Entity *, u32, Entity *r2); +extern bool8 sub_806A58C(s16 a0); +extern bool8 sub_806A564(s16 r0); extern void sub_8045C08(u8 *buffer, Item *item); extern bool8 sub_8045888(Entity *); extern Item *sub_8044D90(Entity *, s32, u32); void sub_8045BF8(u8 *, Item *); u8 sub_8048D50(); +void sub_8044FF0(u16 param_1); u8 * sub_80464AC(); +void sub_8044F5C(u16 param_1, u8 param_2); void sub_8044DF0(); void sub_8042208(Entity *pokemon, u8 r1); void sub_803E708(); @@ -67,6 +101,8 @@ extern void sub_806A6E8(Entity *); extern void sub_8044DF0(Entity *, u32, u32); extern void sub_8045DB4(DungeonPos *, u32); extern bool8 sub_80461C8(DungeonPos *, u32); +extern bool32 sub_8055A00(Entity *attacker, s32 firstMoveId, s32 var_34, s32 itemId, s32 arg_0); +extern bool8 sub_8044B28(void); void HandlePickUpPlayerAction(Entity *entity) { @@ -735,3 +771,395 @@ void sub_8067768(ActionContainer *a0) Entity *targetEntity = gDungeon->teamPokemon[a0->actionParameters[0].actionUseIndex]; sub_8067794(GetLeader(), targetEntity, 0); } + +void sub_8067794(Entity *entity, Entity *targetEntity, s32 a2) +{ + const u8 *stringPtr1; + const u8 *stringPtr2; + s32 teamIndex; + EntityInfo *info2 = GetEntInfo(targetEntity); + + if (targetEntity == NULL) { + DisplayDungeonMessage(NULL, gCannotFarewell, TRUE); + return; + } + + SubstitutePlaceholderStringTags(gFormatBuffer_Monsters[0], targetEntity, 0); + stringPtr1 = gSayFarewellQ; + stringPtr2 = gUnknown_80F913C; + teamIndex = info2->teamIndex; + if (teamIndex >= 0) { + PokemonStruct2 *pokeStruct = &gRecruitedPokemonRef->pokemon2[teamIndex]; + if (sub_806A564(pokeStruct->unkA)) { + stringPtr1 = gUnknown_80F9114; + stringPtr2 = gMonDisappointedAndLeft; + } + else if (sub_806A58C(pokeStruct->unkA)) { + if (IsMakuhitaTrainingMaze()) { + stringPtr1 = gSendMonBackQ; + } + else { + stringPtr1 = gSendMonBackWithItemQ; + } + stringPtr2 = gMonWentBack; + } + } + + if (DisplayDungeonYesNoMessage(NULL, stringPtr1, FALSE) == 1) { + u8 tempText[64]; + + strncpy(tempText, gFormatBuffer_Monsters[0], sizeof(tempText)); + sub_8068FE0(targetEntity, 0x21D, 0); + strncpy(gFormatBuffer_Monsters[0], tempText, sizeof(tempText)); + DisplayDungeonMessage(NULL, stringPtr2, TRUE); + } +} + +void HandleUseMovePlayerAction(Entity *entity) +{ + s32 i = 0; + + while (i < sub_8070828(entity, TRUE)) { + EntityInfo *info = GetEntInfo(entity); + + sub_8055A00(entity, info->action.actionParameters[1].actionUseIndex, 1, 0, 0); + if (sub_8044B28()) { + break; + } + if (info->unk159 != 0) { + break; + } + i++; + } + + sub_8057588(entity, 1); + if (!sub_8044B28()) { + if (EntityIsValid(entity)) { + sub_806A9B4(entity, GetEntInfo(entity)->action.actionParameters[1].actionUseIndex); + } + sub_806A1B0(entity); + } +} + +extern u32 gUnknown_202F208; + +void sub_8067904(Entity *entity, u16 moveId) +{ + Move move; + EntityInfo *info = GetEntInfo(entity); + + gUnknown_202F208 = 0; + InitPokemonMove(&move, moveId); + if (info->cringeClassStatus.status == STATUS_CRINGE) { + SubstitutePlaceholderStringTags(gFormatBuffer_Monsters[0], entity, 0); + LogMessageByIdWithPopupCheckUser(entity, gMonCringing); + } + else if (info->burnClassStatus.status == STATUS_PARALYSIS) { + SubstitutePlaceholderStringTags(gFormatBuffer_Monsters[0], entity, 0); + LogMessageByIdWithPopupCheckUser(entity, gMonParalyzed); + } + else { + s32 i; + bool32 isStrugle; + + if (moveId == MOVE_STRUGGLE) { + isStrugle = TRUE; + } + else { + isStrugle = FALSE; + } + + i = 0; + while (i < sub_8070828(entity, TRUE)) { + info->abilityEffectFlags = 0; + move.moveFlags |= 8; + move.moveFlags |= 4; + move.PP = 10; + TryUseChosenMove(entity, isStrugle, 0, 0, FALSE, &move); + + if (!EntityIsValid(entity) || info->unk159 != 0) { + break; + } + i++; + } + + if (EntityIsValid(entity)) { + if (moveId == MOVE_STRUGGLE && gUnknown_202F208 == 0) { + LogMessageByIdWithPopupCheckUser(entity, gUnknown_80FC690); + } + if (info->isTeamLeader && moveId != MOVE_STRUGGLE) { + DungeonPos pos; + + pos.x = entity->pos.x + gAdjacentTileOffsets[info->action.direction].x; + pos.y = entity->pos.y + gAdjacentTileOffsets[info->action.direction].y; + sub_807FE44(&pos, 1); + } + sub_8071DA4(entity); + } + } +} + +typedef struct UnkTextStruct3 { + UnkTextStruct2 a0[4]; +} UnkTextStruct3; + +extern void sub_80684C4(void); +void sub_8045064(void); +extern void sub_8083CE0(u8 param_1); +extern void sub_8068344(void); +bool8 sub_8044F3C(s32 param_1); +void sub_8068310(s32 a0, PokemonStruct1 **a1); +void sub_8067F00(s32 a0, PokemonStruct1 **a1, s32 a2, s32 a3, s32 a4); +extern void sub_803ECB4(UnkTextStruct3 *a0, u8 a1); +u32 sub_8014140(s32 a0, const void *a1); +void sub_8083D1C(void); +void sub_8083D08(void); +void sub_8083D30(void); +void sub_806806C(PokemonStruct1 *a0); +void sub_805FC30(UnkTextStruct3 *a0, s32 a1); + +extern const u8 gUnknown_8106DA4[]; +extern MenuInputStruct gUnknown_202EE10; +extern const UnkTextStruct3 gUnknown_8106DC8; +extern s32 gUnknown_202F30C; +extern s32 gUnknown_202F310; +extern u8 gUnknown_202F308[]; + +void sub_8067A80(u8 a0, s32 a1, s32 a2, PokemonStruct1 **a3) +{ + s32 i; + s32 r10; + UnkTextStruct3 spTxtStruct = gUnknown_8106DC8; + + gUnknown_202F30C = 0; + r10 = 0; + for (i = 0; i < a2; i++) { + a3[i]->unk0 &= ~(0x8000); + } + + while (1) { + sub_8068310(a2, a3); + if (gUnknown_202F310 >= a1) + break; + while (1) { + s32 r7 = 0, r5 = 0; + + gUnknown_202F308[0] = 1; + gUnknown_202F308[1] = 0; + gUnknown_202F308[2] = 0xE; + gUnknown_202F308[3] = 0; + + ASM_MATCH_TRICK(r7); + + sub_803ECB4(&spTxtStruct, 1); + sub_8067F00(a0, a3, gUnknown_202F30C, a2, a1); + gUnknown_202EE10.unk1A = min(a2, 8); + gUnknown_202EE10.menuIndex = r10; + gUnknown_202EE10.unk1C = 8; + gUnknown_202EE10.unk1E = 0; + gUnknown_202EE10.unk20 = 0; + gUnknown_202EE10.unk4 = 0; + gUnknown_202EE10.unk6 = 18; + gUnknown_202EE10.unkC = 0; + gUnknown_202EE10.unkE = 0; + gUnknown_202EE10.unk14.x = 0; + gUnknown_202EE10.unk0 = 0; + sub_801317C(&gUnknown_202EE10.unk28); + sub_80137B0(&gUnknown_202EE10, 0); + while (1) { + s32 r4; + + AddMenuCursorSprite(&gUnknown_202EE10); + r5 = 0; + r7 = 0; + if (a2 - gUnknown_202F30C > 8) { + r5 = 1; + sub_80684C4(); + } + if (gUnknown_202F30C != 0) { + r7 = 1; + sub_8068344(); + } + + r4 = sub_8014140(0, gUnknown_8106DA4); + sub_803E46C(0x37); + if (r4 == 2 && r5) { + if (a2 - gUnknown_202F30C > 8) { + s32 i; + for (i = 0; i < 6; i++) { + gIwramTextFunc1(0); + sub_803E46C(0x37); + } + gUnknown_202F30C++; + } + r7 = 0; + r10 = 7; + break; + } + if (gRealInputs.repeated & DPAD_DOWN) { + sub_8083CE0(1); + if (gUnknown_202EE10.menuIndex == 7) { + if (a2 - gUnknown_202F30C > 8) { + s32 i; + for (i = 0; i < 6; i++) { + gIwramTextFunc1(0); + sub_803E46C(0x37); + } + gUnknown_202F30C++; + } + r7 = 0; + r10 = 7; + break; + } + sub_80136E0(&gUnknown_202EE10, 0); + } + + if (r4 == 1 && r7 != 0) { + if (gUnknown_202F30C != 0) { + s32 i; + for (i = 0; i < 6; i++) { + gIwramTextFunc2(0); + sub_803E46C(0x37); + } + gUnknown_202F30C--; + } + r7 = 0; + r10 = 0; + break; + } + if (gRealInputs.repeated & DPAD_UP) { + sub_8083CE0(1); + if (gUnknown_202EE10.menuIndex == 0) { + if (gUnknown_202F30C != 0) { + s32 i; + for (i = 0; i < 6; i++) { + gIwramTextFunc2(0); + sub_803E46C(0x37); + } + gUnknown_202F30C--; + } + r7 = 0; + r10 = 0; + break; + } + sub_8013744(&gUnknown_202EE10, 0); + } + + if (sub_80048C8()) { + continue; + } + + if (gRealInputs.pressed & START_BUTTON) { + sub_8083D1C(); + r7 = 3; + break; + } + if ((gRealInputs.pressed & A_BUTTON) || gUnknown_202EE10.unk28.a_button) { + sub_8083D08(); + r7 = 1; + break; + } + if ((gRealInputs.pressed & B_BUTTON) || gUnknown_202EE10.unk28.b_button) { + sub_8083D30(); + r7 = 2; + break; + } + } + + AddMenuCursorSprite(&gUnknown_202EE10); + sub_803E46C(0x37); + if (r7 == 0) { + continue; + } + else if (r7 == 2) { + r10 = gUnknown_202EE10.menuIndex; + if (gUnknown_202F310 < a1) { + continue; + } + + if (DisplayDungeonYesNoMessage(NULL, gUnknown_80FDFB8, TRUE) == 1) { + break; + } + else { + continue; + } + } + else if (r7 == 3) { + r10 = gUnknown_202EE10.menuIndex; + sub_806806C(a3[gUnknown_202F30C + r10]); + continue; + } + else { + s32 arrId; + u8 locIdIsPartner; + + r10 = gUnknown_202EE10.menuIndex; + arrId = gUnknown_202F30C + r10; + gUnknown_202EE6C = 0; + sub_8044F5C(0x29, 0); + sub_8044F5C(0x2A, 0); + sub_8044F5C(0x40, 0); + if (a3[arrId]->unk0 & 0x8000) { + sub_8044FF0(0x29); + } + else { + sub_8044FF0(0x2A); + } + + // This unnecessary variable is required to match. + locIdIsPartner = DUNGEON_JOIN_LOCATION_PARTNER; + if (a3[arrId]->isTeamLeader || (a3[arrId]->dungeonLocation.id == DUNGEON_JOIN_LOCATION_LEADER || a3[arrId]->dungeonLocation.id == locIdIsPartner)) { + sub_8044FF0(0x29); + } + + sub_8045064(); + sub_805FC30(&spTxtStruct, 0x15); + + while (1) { + AddMenuCursorSprite(&gUnknown_202EE10); + sub_803E46C(0x37); + + if (gRealInputs.repeated & DPAD_DOWN) { + sub_8083CE0(1); + sub_80136E0(&gUnknown_202EE10, 1); + } + if (gRealInputs.repeated & DPAD_UP) { + sub_8083CE0(1); + sub_8013744(&gUnknown_202EE10, 1); + } + + if ((gRealInputs.pressed & A_BUTTON) || gUnknown_202EE10.unk28.a_button) { + if (sub_8044F3C(gUnknown_202EE10.menuIndex)) { + sub_8083D08(); + r7 = 1; + break; + } + sub_8083D30(); + } + if ((gRealInputs.pressed & B_BUTTON) || gUnknown_202EE10.unk28.b_button) { + sub_8083D30(); + r7 = 0; + break; + } + } + + AddMenuCursorSprite(&gUnknown_202EE10); + sub_803E46C(0x37); + if (r7 != 0) { + if (gUnknown_202EE10.menuIndex == 0) { + a3[arrId]->unk0 |= 0x8000; + sub_8068310(a2, a3); + } + else if (gUnknown_202EE10.menuIndex == 1) { + a3[arrId]->unk0 &= ~(0x8000); + sub_8068310(a2, a3); + } + else { + sub_806806C(a3[arrId]); + } + } + continue; + } + } + } +} diff --git a/src/dungeon_move.c b/src/dungeon_move.c index 3ef1630e9..8f30f6abf 100644 --- a/src/dungeon_move.c +++ b/src/dungeon_move.c @@ -1,4 +1,5 @@ #include "global.h" +#include "dungeon_move.h" #include "dungeon_pokemon_attributes.h" #include "dungeon_util.h" #include "dungeon_message.h" @@ -304,7 +305,6 @@ s32 HandleDamagingMove(Entity *, Entity *, Move *, s24_8, s32); static s32 TryHitTarget(Entity *attacker, Entity *target, Move *move, struct DamageStruct *dmgStruct, s16 unk); static void TriggerTargetAbilityEffect(Entity *attacker); static bool8 AccuracyCalc(Entity *attacker, Entity *target, Move *move, s32 accuracyType, bool8 selfAlwaysHits); -bool8 TryUseChosenMove(struct Entity *attacker, u32 r6, s32 itemId, u32 var_30, bool32 isLinkedMove, struct Move *move); bool8 sub_8056468(Entity *entity, Move *move, const u8 *str, Entity **unkArray, bool32 itemId, bool8 arg_4, bool32 unused); bool8 sub_805744C(Entity * pokemon, Move *move, bool8 param_3); static void SetTargetsForMove(Entity **targetsArray, Entity *attacker, Move *move); From 22e9d9979d052cd88ee4a375f83f7492cb893543 Mon Sep 17 00:00:00 2001 From: DizzyEggg Date: Tue, 18 Feb 2025 22:02:06 +0100 Subject: [PATCH 05/40] code_8066D04 --- asm/code_8066D04.s | 504 --------------------------------------------- ld_script.txt | 1 - src/code_8066D04.c | 211 ++++++++++++++++++- 3 files changed, 205 insertions(+), 511 deletions(-) delete mode 100644 asm/code_8066D04.s diff --git a/asm/code_8066D04.s b/asm/code_8066D04.s deleted file mode 100644 index 5a293ca66..000000000 --- a/asm/code_8066D04.s +++ /dev/null @@ -1,504 +0,0 @@ - #include "asm/constants/gba_constants.inc" - #include "asm/macros.inc" - - .syntax unified - - .text - - thumb_func_start sub_8067F00 -sub_8067F00: - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - sub sp, 0x8 - adds r4, r0, 0 - mov r9, r1 - str r3, [sp, 0x4] - lsls r4, 24 - lsrs r4, 24 - subs r7, r2, 0x1 - movs r0, 0x16 - mov r8, r0 - movs r0, 0 - bl sub_80073B8 - ldr r0, _08067F44 - adds r1, r4, 0 - movs r2, 0 - bl WriteFriendAreaName - ldr r2, _08067F48 - movs r0, 0 - str r0, [sp] - movs r0, 0xC - movs r1, 0 - movs r3, 0 - bl PrintFormattedStringOnWindow - movs r1, 0 - mov r10, r1 - b _08067FF6 - .align 2, 0 -_08067F44: .4byte gFormatBuffer_Monsters -_08067F48: .4byte gUnknown_8106E28 -_08067F4C: - ldr r4, _08067F8C - lsls r6, r7, 2 - mov r0, r9 - adds r5, r6, r0 - ldr r1, [r5] - adds r0, r4, 0 - movs r2, 0 - bl PrintColoredPokeNameToBuffer - adds r4, 0x50 - ldr r0, [r5] - movs r2, 0x8 - ldrsh r1, [r0, r2] - adds r0, r4, 0 - bl sub_808D930 - ldr r1, _08067F90 - adds r0, r7, 0x1 - str r0, [r1] - ldr r0, [r5] - ldrh r1, [r0] - movs r0, 0x80 - lsls r0, 8 - ands r0, r1 - cmp r0, 0 - beq _08067F9C - ldr r0, _08067F94 - ldr r1, _08067F98 - bl strcpy - b _08067FA4 - .align 2, 0 -_08067F8C: .4byte gFormatBuffer_Monsters -_08067F90: .4byte gFormatArgs -_08067F94: .4byte gFormatBuffer_Items -_08067F98: .4byte gUnknown_8106E2C -_08067F9C: - ldr r0, _08067FCC - ldr r1, _08067FD0 - bl strcpy -_08067FA4: - mov r1, r9 - adds r0, r6, r1 - ldr r0, [r0] - ldrh r1, [r0] - movs r0, 0x80 - lsls r0, 7 - ands r0, r1 - lsls r0, 16 - lsrs r0, 16 - cmp r0, 0 - beq _08067FD8 - ldr r2, _08067FD4 - movs r0, 0 - str r0, [sp] - movs r0, 0x7 - mov r1, r8 - movs r3, 0 - bl PrintFormattedStringOnWindow - b _08067FE6 - .align 2, 0 -_08067FCC: .4byte gFormatBuffer_Items -_08067FD0: .4byte gUnknown_8106E30 -_08067FD4: .4byte gUnknown_8106E34 -_08067FD8: - ldr r2, _08068028 - str r0, [sp] - movs r0, 0x7 - mov r1, r8 - movs r3, 0 - bl PrintFormattedStringOnWindow -_08067FE6: - movs r2, 0x1 - add r10, r2 - movs r0, 0xC - add r8, r0 - adds r7, 0x1 - mov r1, r10 - cmp r1, 0x9 - bgt _08068000 -_08067FF6: - cmp r7, 0 - blt _08067FE6 - ldr r2, [sp, 0x4] - cmp r7, r2 - blt _08067F4C -_08068000: - movs r0, 0 - bl sub_80073E0 - movs r0, 0x1 - bl sub_80073B8 - ldr r0, _0806802C - ldr r0, [r0] - ldr r1, [sp, 0x28] - cmp r0, r1 - blt _08068034 - ldr r2, _08068030 - movs r0, 0 - str r0, [sp] - movs r0, 0x8 - movs r1, 0x2 - movs r3, 0x1 - bl PrintFormattedStringOnWindow - b _0806804C - .align 2, 0 -_08068028: .4byte gUnknown_8106E48 -_0806802C: .4byte gUnknown_202F310 -_08068030: .4byte gUnknown_8106E5C -_08068034: - ldr r1, _08068064 - ldr r2, [sp, 0x28] - subs r0, r2, r0 - str r0, [r1] - ldr r2, _08068068 - movs r0, 0 - str r0, [sp] - movs r0, 0x8 - movs r1, 0x2 - movs r3, 0x1 - bl PrintFormattedStringOnWindow -_0806804C: - movs r0, 0x1 - bl sub_80073E0 - add sp, 0x8 - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_08068064: .4byte gFormatArgs -_08068068: .4byte gUnknown_8106E6C - thumb_func_end sub_8067F00 - - thumb_func_start sub_806806C -sub_806806C: - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - sub sp, 0x110 - str r0, [sp, 0x108] - add r4, sp, 0x98 - adds r0, r4, 0 - movs r1, 0 - movs r2, 0x60 - bl memset - movs r0, 0x6 - str r0, [r4, 0x4] - movs r1, 0x2 - strh r1, [r4, 0x8] - strh r1, [r4, 0xA] - movs r2, 0x12 - strh r2, [r4, 0xC] - movs r0, 0xE - strh r0, [r4, 0xE] - strh r2, [r4, 0x10] - strh r1, [r4, 0x12] - ldr r0, _080681B4 - str r0, [r4, 0x14] - movs r0, 0x3 - str r0, [r4, 0x1C] - str r0, [r4, 0x34] - str r0, [r4, 0x4C] - movs r7, 0 - add r1, sp, 0x44 - strh r7, [r1] - mov r0, sp - adds r0, 0x5A - strh r7, [r0] - ldr r0, _080681B8 - strh r7, [r0, 0x18] - mov r9, r1 - adds r1, 0xB4 - str r1, [sp, 0x10C] - add r2, sp, 0x68 - mov r10, r2 - adds r6, r0, 0 -_080680C4: - movs r3, 0 - mov r8, r3 - add r1, sp, 0xF8 - ldr r0, _080681BC - ldm r0!, {r2-r4} - stm r1!, {r2-r4} - ldr r0, [r0] - str r0, [r1] - ldr r1, _080681B4 - movs r2, 0x4 - strb r2, [r1] - strb r7, [r1, 0x1] - movs r0, 0xA - strb r0, [r1, 0x2] - mov r4, r8 - strb r4, [r1, 0x3] - strh r7, [r6, 0x1E] - strh r2, [r6, 0x20] - mov r0, r8 - strh r0, [r6, 0x1A] - strh r0, [r6, 0x18] - strh r0, [r6, 0x1C] - strh r0, [r6, 0x4] - movs r0, 0x10 - strh r0, [r6, 0x6] - mov r1, r8 - strh r1, [r6, 0x14] - mov r2, r8 - str r2, [r6] - adds r0, r6, 0 - adds r0, 0x28 - bl sub_801317C - add r0, sp, 0x98 - movs r1, 0x1 - bl sub_803ECB4 - ldr r0, _080681C0 - ldr r0, [r0] - ldr r3, _080681C4 - adds r0, r3 - ldrb r2, [r0] - add r0, sp, 0x4 - ldr r1, [sp, 0x108] - bl sub_808FF20 - lsls r4, r7, 2 - mov r0, sp - adds r0, r4 - adds r0, 0xF8 - ldr r0, [r0] - mov r1, r8 - str r1, [sp] - adds r1, r7, 0 - add r2, sp, 0x4 - mov r3, r10 - bl CreatePokemonInfoTabScreen - ldr r1, _080681C8 - movs r2, 0 - ldrsh r0, [r1, r2] - adds r0, 0xF - lsls r0, 3 - strh r0, [r6, 0xC] - movs r3, 0x2 - ldrsh r0, [r1, r3] - adds r0, 0x1 - lsls r0, 3 - subs r0, 0x2 - strh r0, [r6, 0xE] -_08068150: - ldr r0, _080681B8 - bl AddMenuCursorSprite - ldr r1, [sp, 0x10C] - adds r0, r1, r4 - ldr r0, [r0] - cmp r0, 0x4 - bne _0806817A - mov r2, r10 - ldrb r0, [r2, 0x8] - cmp r0, 0 - beq _0806816C - bl sub_80684C4 -_0806816C: - mov r3, r9 - movs r1, 0 - ldrsh r0, [r3, r1] - cmp r0, 0 - beq _0806817A - bl sub_8068344 -_0806817A: - movs r0, 0 - ldr r1, _080681CC - bl sub_8014140 - adds r5, r0, 0 - movs r0, 0x1C - bl sub_803E46C - ldr r3, _080681D0 - ldrh r1, [r3, 0x2] - movs r0, 0x10 - ands r0, r1 - cmp r0, 0 - bne _080681A2 - ldr r2, _080681B8 - adds r0, r2, 0 - adds r0, 0x2B - ldrb r0, [r0] - cmp r0, 0 - beq _080681D4 -_080681A2: - movs r0, 0 - bl sub_8083CE0 - adds r7, 0x1 - cmp r7, 0x4 - beq _080681B0 - b _080682E8 -_080681B0: - movs r7, 0 - b _080682E8 - .align 2, 0 -_080681B4: .4byte gUnknown_202F308 -_080681B8: .4byte gUnknown_202EE10 -_080681BC: .4byte gUnknown_8106E80 -_080681C0: .4byte gDungeon -_080681C4: .4byte 0x0000065a -_080681C8: .4byte gUnknown_2027370 -_080681CC: .4byte gUnknown_8106DA4 -_080681D0: .4byte gRealInputs -_080681D4: - movs r0, 0x20 - ands r0, r1 - cmp r0, 0 - bne _080681E6 - adds r0, r2, 0 - adds r0, 0x2C - ldrb r0, [r0] - cmp r0, 0 - beq _080681FA -_080681E6: - movs r0, 0 - bl sub_8083CE0 - subs r7, 0x1 - movs r0, 0x1 - negs r0, r0 - cmp r7, r0 - bne _080682E8 - movs r7, 0x3 - b _080682E8 -_080681FA: - ldr r2, [sp, 0x10C] - adds r0, r2, r4 - ldr r0, [r0] - cmp r0, 0x4 - bne _08068294 - ldrh r1, [r3, 0x4] - movs r0, 0x80 - ands r0, r1 - cmp r0, 0 - bne _08068212 - cmp r5, 0x2 - bne _08068248 -_08068212: - mov r3, r10 - ldrb r0, [r3, 0x8] - cmp r0, 0 - beq _08068248 - movs r0, 0 - bl sub_8083CE0 - ldr r5, _08068244 - movs r4, 0x5 -_08068224: - ldr r1, [r5] - movs r0, 0 - bl _call_via_r1 - movs r0, 0x1C - bl sub_803E46C - subs r4, 0x1 - cmp r4, 0 - bge _08068224 - mov r4, r9 - ldrh r0, [r4] - adds r0, 0x1 - strh r0, [r4] - b _080682E8 - .align 2, 0 -_08068244: .4byte gIwramTextFunc1 -_08068248: - ldr r0, _0806828C - ldrh r1, [r0, 0x4] - movs r0, 0x40 - ands r0, r1 - cmp r0, 0 - bne _08068258 - cmp r5, 0x1 - bne _08068294 -_08068258: - mov r1, r9 - movs r2, 0 - ldrsh r0, [r1, r2] - cmp r0, 0 - beq _08068294 - movs r0, 0 - bl sub_8083CE0 - ldr r5, _08068290 - movs r4, 0x5 -_0806826C: - ldr r1, [r5] - movs r0, 0 - bl _call_via_r1 - movs r0, 0x1C - bl sub_803E46C - subs r4, 0x1 - cmp r4, 0 - bge _0806826C - mov r3, r9 - ldrh r0, [r3] - subs r0, 0x1 - strh r0, [r3] - b _080682E8 - .align 2, 0 -_0806828C: .4byte gRealInputs -_08068290: .4byte gIwramTextFunc2 -_08068294: - bl sub_80048C8 - lsls r0, 24 - cmp r0, 0 - beq _080682A0 - b _08068150 -_080682A0: - ldr r0, _080682C4 - ldrh r1, [r0, 0x2] - movs r0, 0x1 - ands r0, r1 - cmp r0, 0 - bne _080682B8 - ldr r2, _080682C8 - adds r0, r2, 0 - adds r0, 0x29 - ldrb r0, [r0] - cmp r0, 0 - beq _080682CC -_080682B8: - bl sub_8083D08 - movs r4, 0x1 - mov r8, r4 - b _080682E8 - .align 2, 0 -_080682C4: .4byte gRealInputs -_080682C8: .4byte gUnknown_202EE10 -_080682CC: - movs r0, 0x2 - ands r0, r1 - cmp r0, 0 - bne _080682E0 - adds r0, r2, 0 - adds r0, 0x2A - ldrb r0, [r0] - cmp r0, 0 - bne _080682E0 - b _08068150 -_080682E0: - bl sub_8083D30 - movs r0, 0x1 - mov r8, r0 -_080682E8: - movs r0, 0x37 - bl sub_803E46C - mov r1, r8 - cmp r1, 0 - bne _080682F6 - b _080680C4 -_080682F6: - movs r0, 0 - movs r1, 0 - bl sub_803EAF0 - add sp, 0x110 - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r0} - bx r0 - thumb_func_end sub_806806C - - .align 2,0 diff --git a/ld_script.txt b/ld_script.txt index 0f655209b..6c9cb7146 100755 --- a/ld_script.txt +++ b/ld_script.txt @@ -229,7 +229,6 @@ SECTIONS { src/code_805D8C8_1.o(.text); asm/code_805D8C8.o(.text); src/code_8066D04.o(.text); - asm/code_8066D04.o(.text); src/code_805D8C8.o(.text); asm/code_805D8C8_1.o(.text); src/code_8069D4C.o(.text); diff --git a/src/code_8066D04.c b/src/code_8066D04.c index 241510c94..19382a04d 100644 --- a/src/code_8066D04.c +++ b/src/code_8066D04.c @@ -14,6 +14,7 @@ #include "text.h" #include "code_803E46C.h" #include "string_format.h" +#include "friend_area.h" #include "dungeon_leader.h" #include "status_checks_1.h" #include "dungeon_ai_targeting.h" @@ -26,6 +27,7 @@ #include "pokemon.h" #include "trap.h" #include "moves.h" +#include "pokemon_3.h" #include "menu_input.h" #include "dungeon_capabilities.h" #include "constants/item.h" @@ -68,6 +70,13 @@ extern const u8 *const gUnknown_80F9114; extern const u8 *const gMonDisappointedAndLeft; extern const u8 *const gSendMonBackQ; extern const u8 *const gSendMonBackWithItemQ; +extern const u8 gUnknown_8106E28[]; +extern const u8 gUnknown_8106E5C[]; +extern const u8 gUnknown_8106E30[]; +extern const u8 gUnknown_8106E6C[]; +extern const u8 gUnknown_8106E48[]; +extern const u8 gUnknown_8106E2C[]; +extern const u8 gUnknown_8106E34[]; extern const u8 *const gMonWentBack; extern const u8 *const gMonCringing; extern const u8 *const gMonParalyzed; @@ -909,7 +918,7 @@ extern void sub_8083CE0(u8 param_1); extern void sub_8068344(void); bool8 sub_8044F3C(s32 param_1); void sub_8068310(s32 a0, PokemonStruct1 **a1); -void sub_8067F00(s32 a0, PokemonStruct1 **a1, s32 a2, s32 a3, s32 a4); +void sub_8067F00(u8 a0, PokemonStruct1 **a1, s32 a2, s32 a3, s32 a4); extern void sub_803ECB4(UnkTextStruct3 *a0, u8 a1); u32 sub_8014140(s32 a0, const void *a1); void sub_8083D1C(void); @@ -917,13 +926,14 @@ void sub_8083D08(void); void sub_8083D30(void); void sub_806806C(PokemonStruct1 *a0); void sub_805FC30(UnkTextStruct3 *a0, s32 a1); +extern void sub_803EAF0(u32, u8 *); extern const u8 gUnknown_8106DA4[]; extern MenuInputStruct gUnknown_202EE10; extern const UnkTextStruct3 gUnknown_8106DC8; extern s32 gUnknown_202F30C; extern s32 gUnknown_202F310; -extern u8 gUnknown_202F308[]; +extern UnkTextStruct2_sub2 gUnknown_202F308; void sub_8067A80(u8 a0, s32 a1, s32 a2, PokemonStruct1 **a3) { @@ -944,10 +954,10 @@ void sub_8067A80(u8 a0, s32 a1, s32 a2, PokemonStruct1 **a3) while (1) { s32 r7 = 0, r5 = 0; - gUnknown_202F308[0] = 1; - gUnknown_202F308[1] = 0; - gUnknown_202F308[2] = 0xE; - gUnknown_202F308[3] = 0; + gUnknown_202F308.f0 = 1; + gUnknown_202F308.f1 = 0; + gUnknown_202F308.f2 = 0xE; + gUnknown_202F308.f3 = 0; ASM_MATCH_TRICK(r7); @@ -1163,3 +1173,192 @@ void sub_8067A80(u8 a0, s32 a1, s32 a2, PokemonStruct1 **a3) } } } + +void sub_8067F00(u8 a0, PokemonStruct1 **a1, s32 a2_, s32 a3, s32 a4) +{ + s32 i, y; + s32 a2; + + a2 = a2_ - 1; + y = 0x16; + + sub_80073B8(0); + WriteFriendAreaName(gFormatBuffer_Monsters[0], a0, FALSE); + PrintFormattedStringOnWindow(12, 0, gUnknown_8106E28, 0, '\0'); + i = 0; + while (i < 10) { + if (a2 >= 0) { + if (a2 >= a3) { + break; + } + + PrintColoredPokeNameToBuffer(gFormatBuffer_Monsters[0], a1[a2], 0); + sub_808D930(gFormatBuffer_Monsters[1], a1[a2]->speciesNum); + gFormatArgs[0] = a2 + 1; + if (a1[a2]->unk0 & 0x8000) { + strcpy(gFormatBuffer_Items[0], gUnknown_8106E2C); + } + else { + strcpy(gFormatBuffer_Items[0], gUnknown_8106E30); + } + + if (a1[a2]->unk0 & 0x4000) { + PrintFormattedStringOnWindow(7, y, gUnknown_8106E34, 0, '\0'); + } + else { + PrintFormattedStringOnWindow(7, y, gUnknown_8106E48, 0, '\0'); + } + } + + i++; + y += 12; + a2++; + } + + sub_80073E0(0); + sub_80073B8(1); + if (gUnknown_202F310 >= a4) { + PrintFormattedStringOnWindow(8, 2, gUnknown_8106E5C, 1, '\0'); + } + else { + gFormatArgs[0] = a4 - gUnknown_202F310; + PrintFormattedStringOnWindow(8, 2, gUnknown_8106E6C, 1, '\0'); + } + + sub_80073E0(1); +} + +extern const s32 gUnknown_8106E80[]; + +void sub_806806C(PokemonStruct1 *a0) +{ + struct unkStruct_808FF20 unkStruct; + u8 var_C8[48]; + UnkTextStruct3 spTxtStruct = {0}; + s32 spF8[4]; + s32 r7, r8; + + spTxtStruct.a0[0].unk4 = 6; + spTxtStruct.a0[0].unk8.unk0.separate.unk0 = 2; + spTxtStruct.a0[0].unk8.unk0.separate.unk2 = 2; + spTxtStruct.a0[0].unkC = 0x12; + spTxtStruct.a0[0].unkE = 0xE; + spTxtStruct.a0[0].unk10 = 0x12; + spTxtStruct.a0[0].unk12 = 2; + spTxtStruct.a0[0].unk14 = &gUnknown_202F308; + spTxtStruct.a0[1].unk4 = 3; + spTxtStruct.a0[2].unk4 = 3; + spTxtStruct.a0[3].unk4 = 3; + + r7 = 0; + unkStruct.unk40 = 0; + unkStruct.unk56 = 0; + gUnknown_202EE10.menuIndex = 0; + + while (1) { + r8 = 0; + memcpy(spF8, gUnknown_8106E80, sizeof(spF8)); + + gUnknown_202F308.f0 = 4; + gUnknown_202F308.f1 = r7; + gUnknown_202F308.f2 = 10; + gUnknown_202F308.f3 = 0; + + gUnknown_202EE10.unk1E = r7; + gUnknown_202EE10.unk20 = 4; + gUnknown_202EE10.unk1A = 0; + gUnknown_202EE10.menuIndex = 0; + gUnknown_202EE10.unk1C = 0; + gUnknown_202EE10.unk4 = 0; + gUnknown_202EE10.unk6 = 16; + gUnknown_202EE10.unk14.x = 0; + gUnknown_202EE10.unk0 = 0; + + sub_801317C(&gUnknown_202EE10.unk28); + sub_803ECB4(&spTxtStruct, 1); + sub_808FF20(&unkStruct, a0, gDungeon->unk644.unk16); + CreatePokemonInfoTabScreen(spF8[r7], r7, &unkStruct, var_C8, 0); + + gUnknown_202EE10.unkC = (gUnknown_2027370[0].unk0 + 15) * 8; + gUnknown_202EE10.unkE = ((gUnknown_2027370[0].unk2 + 1) * 8) - 2; + + while (1) { + s32 r5; + + AddMenuCursorSprite(&gUnknown_202EE10); + if (spF8[r7] == 4) { + if (var_C8[8] != 0) { + sub_80684C4(); + } + if (unkStruct.unk40 != 0) { + sub_8068344(); + } + } + + r5 = sub_8014140(0, gUnknown_8106DA4); + sub_803E46C(0x1C); + if ((gRealInputs.pressed & DPAD_RIGHT) || gUnknown_202EE10.unk28.dpad_right) { + sub_8083CE0(0); + if (++r7 == 4) { + r7 = 0; + } + break; + } + if ((gRealInputs.pressed & DPAD_LEFT) || gUnknown_202EE10.unk28.dpad_left) { + sub_8083CE0(0); + if (--r7 == -1) { + r7 = 3; + } + break; + } + + if (spF8[r7] == 4) { + if (((gRealInputs.repeated & DPAD_DOWN) || r5 == 2) && var_C8[8] != 0) { + s32 i; + + sub_8083CE0(0); + for (i = 0; i < 6; i++) { + gIwramTextFunc1(0); + sub_803E46C(0x1C); + } + unkStruct.unk40++; + break; + } + if (((gRealInputs.repeated & DPAD_UP) || r5 == 1) && unkStruct.unk40 != 0) { + s32 i; + + sub_8083CE0(0); + for (i = 0; i < 6; i++) { + gIwramTextFunc2(0); + sub_803E46C(0x1C); + } + unkStruct.unk40--; + break; + } + } + + if (sub_80048C8()) { + continue; + } + + if ((gRealInputs.pressed & A_BUTTON) || gUnknown_202EE10.unk28.a_button) { + sub_8083D08(); + r8 = 1; + break; + } + if ((gRealInputs.pressed & B_BUTTON) || gUnknown_202EE10.unk28.b_button) { + sub_8083D30(); + r8 = 1; + break; + } + } + + sub_803E46C(0x37); + if (r8 != 0) { + break; + } + } + + sub_803EAF0(0, NULL); +} + From d47faa5e2103f3d32f3026590f0bfbff55c38237 Mon Sep 17 00:00:00 2001 From: DizzyEggg Date: Tue, 18 Feb 2025 22:43:59 +0100 Subject: [PATCH 06/40] const/ewram data to code_8066D04 --- data/data_8106A4C.s | 98 ------------------------------------- data/data_8106A4C_2.s | 40 +++++++++++++++ include/global.h | 11 +++++ ld_script.txt | 2 + src/code_8066D04.c | 110 ++++++++++++++++++++++++++---------------- src/dungeon_message.c | 11 ----- sym_ewram.txt | 8 +-- 7 files changed, 122 insertions(+), 158 deletions(-) create mode 100644 data/data_8106A4C_2.s diff --git a/data/data_8106A4C.s b/data/data_8106A4C.s index ea2317b5d..002a4b90d 100644 --- a/data/data_8106A4C.s +++ b/data/data_8106A4C.s @@ -257,101 +257,3 @@ gUnknown_8106D8C: @ 8106D8C @ ??? .align 2,0 .string "pksdir0\0" - -@ sub_8067A80 - sub_806806C - .align 2,0 - .string "pksdir0\0" - .align 2,0 - - .global gUnknown_8106DA4 -gUnknown_8106DA4: @ 8106DA4 - .byte 0x01, 0x00, 0x38, 0x00, 0x00, 0x00, 0x18, 0x00, 0x18, 0x00, 0x00, 0x00, 0x02, 0x00, 0x38, 0x00, 0x68, 0x00, 0x18, 0x00, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - .byte 0x00, 0x00, 0x00, 0x00 - - .global gUnknown_8106DC8 -gUnknown_8106DC8: @ 8106DC8 - .byte 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x02, 0x00, 0x02, 0x00, 0x11, 0x00, 0x0e, 0x00, 0x12, 0x00, 0x02, 0x00, 0x08, 0xf3, 0x02, 0x02, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00 - .byte 0x15, 0x00, 0x04, 0x00, 0x07, 0x00, 0x04, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - - .global gUnknown_8106E28 -gUnknown_8106E28: @ 8106E28 - .string "{POKEMON_0}\0" - .align 2,0 - - .global gUnknown_8106E2C -gUnknown_8106E2C: @ 8106E2C - .byte 0x87, 0x42, 0x00, 0x00 - - .global gUnknown_8106E30 -gUnknown_8106E30: @ 8106E30 - .byte 0x87, 0x40, 0x00, 0x00 - - .global gUnknown_8106E34 -gUnknown_8106E34: @ 8106E34 - .string "{MOVE_ITEM_0}{color CYAN}$v02:{POKEMON_0}{reset}\0" - .align 2,0 - - .global gUnknown_8106E48 -gUnknown_8106E48: @ 8106E48 - .string "{MOVE_ITEM_0}{color YELLOW}$v02:{POKEMON_0}{reset}\0" - .align 2,0 - - .global gUnknown_8106E5C -gUnknown_8106E5C: @ 8106E5C - .string "Press {B_BUTTON}\n" - .string "if OK.\0" - .align 2,0 - - .global gUnknown_8106E6C -gUnknown_8106E6C: @ 8106E6C - .string "Say bye to\n" - .string "{VALUE_0} more\0" - .align 2,0 - - .global gUnknown_8106E80 -gUnknown_8106E80: @ 8106E80 - .byte 0x02, 0x00, 0x00, 0x00 - .byte 0x03, 0x00, 0x00, 0x00 - .byte 0x04, 0x00, 0x00, 0x00 - .byte 0x05, 0x00, 0x00, 0x00 - -@ sub_8068614 - sub_806A3D4 - .string "pksdir0\0" - .align 2,0 - - .global gUnknown_8106E98 -gUnknown_8106E98: @ 8106E98 - .string "palet\0" - .align 2,0 - - .global gUnknown_8106EA0 -gUnknown_8106EA0: @ 8106EA0 - .string "ax%03d\0" - .align 2,0 - - .global gUnknown_8106EA8 -gUnknown_8106EA8: @ 8106EA8 - .string "talkp%d\0" - .align 2,0 - - .global gUnknown_8106EB0 -gUnknown_8106EB0: @ 8106EB0 - .string "talk%d\0" - -@ ??? - .align 2,0 - .string "pksdir0\0" - -@ sub_806C51C - sub_806E100 - .align 2,0 - .string "pksdir0\0" - .align 2,0 - - .global gUnknown_8106EC8 -gUnknown_8106EC8: @ 8106EC8 -.byte 0x00, 0x01, 0x07, 0x07, 0x07, 0x05, 0x06, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07 -.byte 0x07, 0x07, 0x05, 0x06, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x05 -.byte 0x06, 0x07, 0x07, 0x07, 0x07, 0x0b, 0x07 - - diff --git a/data/data_8106A4C_2.s b/data/data_8106A4C_2.s new file mode 100644 index 000000000..c7152ee35 --- /dev/null +++ b/data/data_8106A4C_2.s @@ -0,0 +1,40 @@ + .section .rodata + +.align 2,0 +@ sub_8068614 - sub_806A3D4 + .string "pksdir0\0" + .align 2,0 + + .global gUnknown_8106E98 +gUnknown_8106E98: @ 8106E98 + .string "palet\0" + .align 2,0 + + .global gUnknown_8106EA0 +gUnknown_8106EA0: @ 8106EA0 + .string "ax%03d\0" + .align 2,0 + + .global gUnknown_8106EA8 +gUnknown_8106EA8: @ 8106EA8 + .string "talkp%d\0" + .align 2,0 + + .global gUnknown_8106EB0 +gUnknown_8106EB0: @ 8106EB0 + .string "talk%d\0" + +@ ??? + .align 2,0 + .string "pksdir0\0" + +@ sub_806C51C - sub_806E100 + .align 2,0 + .string "pksdir0\0" + .align 2,0 + + .global gUnknown_8106EC8 +gUnknown_8106EC8: @ 8106EC8 +.byte 0x00, 0x01, 0x07, 0x07, 0x07, 0x05, 0x06, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07 +.byte 0x07, 0x07, 0x05, 0x06, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x05 +.byte 0x06, 0x07, 0x07, 0x07, 0x07, 0x0b, 0x07 diff --git a/include/global.h b/include/global.h index 6674e8d79..f6fb1b249 100644 --- a/include/global.h +++ b/include/global.h @@ -31,6 +31,17 @@ static inline s16 Self_s16(s16 a) return a; } +// Needed to match a couple of functions. +static inline void InlineStrcpy(u8 *dst, const u8 *src) +{ + strcpy(dst, src); +} + +static inline void InlineStrncpy(u8 *dst, const u8 *src, s32 n) +{ + strncpy(dst, src, n); +} + // Sometimes incrementing and decrementing a variable changes how registers are allocated, which helps with matching functions. Functionality-wise this doesn't do anything. #ifdef NONMATCHING #define ASM_MATCH_TRICK(a) {;} diff --git a/ld_script.txt b/ld_script.txt index 6c9cb7146..a5b09e9c8 100755 --- a/ld_script.txt +++ b/ld_script.txt @@ -533,6 +533,8 @@ SECTIONS { src/dungeon_message.o(.rodata); src/dungeon_move.o(.rodata); data/data_8106A4C.o(.rodata); + src/code_8066D04.o(.rodata); + data/data_8106A4C_2.o(.rodata); src/code_806CD90.o(.rodata); src/type_effectiveness.o(.data); data/data_8106F7C.o(.rodata); diff --git a/src/code_8066D04.c b/src/code_8066D04.c index 19382a04d..27e13b120 100644 --- a/src/code_8066D04.c +++ b/src/code_8066D04.c @@ -1,4 +1,5 @@ #include "global.h" +#include "globaldata.h" #include "code_8045A00.h" #include "dungeon_message.h" #include "code_807CD9C.h" @@ -70,19 +71,13 @@ extern const u8 *const gUnknown_80F9114; extern const u8 *const gMonDisappointedAndLeft; extern const u8 *const gSendMonBackQ; extern const u8 *const gSendMonBackWithItemQ; -extern const u8 gUnknown_8106E28[]; -extern const u8 gUnknown_8106E5C[]; -extern const u8 gUnknown_8106E30[]; -extern const u8 gUnknown_8106E6C[]; -extern const u8 gUnknown_8106E48[]; -extern const u8 gUnknown_8106E2C[]; -extern const u8 gUnknown_8106E34[]; extern const u8 *const gMonWentBack; extern const u8 *const gMonCringing; extern const u8 *const gMonParalyzed; extern const u8 *const gUnknown_80FC690; extern s32 gUnknown_202EE6C; +extern u32 gUnknown_202F208; extern void sub_8071DA4(Entity *); extern void sub_806A1B0(Entity *); @@ -112,6 +107,14 @@ extern void sub_8045DB4(DungeonPos *, u32); extern bool8 sub_80461C8(DungeonPos *, u32); extern bool32 sub_8055A00(Entity *attacker, s32 firstMoveId, s32 var_34, s32 itemId, s32 arg_0); extern bool8 sub_8044B28(void); +Entity *sub_806773C(Entity *entity); +void sub_8067558(Entity *entity, Entity *targetEntity, s32 a2); +void sub_8067794(Entity *entity, Entity *targetEntity, s32 a2); +extern void sub_807EF84(void); +extern void sub_80845E0(Entity *entity); +extern void sub_8084448(Entity *entity); +extern void sub_806A3D4(u8 *dst, s32 _a1, s32 id, bool32 _a3); +extern Entity * sub_80696A8(Entity *target); void HandlePickUpPlayerAction(Entity *entity) { @@ -161,7 +164,6 @@ void HandleSetItemAction(Entity *param_1, bool8 param_2) } } - void HandleUnsetItemAction(Entity *entity,bool8 enableMessage) { Item *item; @@ -186,7 +188,6 @@ void HandleUnsetItemAction(Entity *entity,bool8 enableMessage) } } - void HandleGiveItemAction(Entity *param_1) { Entity *entity; @@ -264,7 +265,6 @@ void HandleGiveItemAction(Entity *param_1) } } - void HandleTakeItemAction(Entity *param_1) { Entity *entity; @@ -662,15 +662,6 @@ void sub_80671A0(Entity *entity) } } -Entity *sub_806773C(Entity *entity); -void sub_8067558(Entity *entity, Entity *targetEntity, s32 a2); -void sub_8067794(Entity *entity, Entity *targetEntity, s32 a2); -extern void sub_807EF84(void); -extern void sub_80845E0(Entity *entity); -extern void sub_8084448(Entity *entity); -extern void sub_806A3D4(u8 *dst, s32 _a1, s32 id, bool32 _a3); -extern Entity * sub_80696A8(Entity *target); - void HandleTalkFieldAction(Entity *entity) { sub_8067558(entity, sub_806773C(entity), -1); @@ -850,8 +841,6 @@ void HandleUseMovePlayerAction(Entity *entity) } } -extern u32 gUnknown_202F208; - void sub_8067904(Entity *entity, u16 moveId) { Move move; @@ -928,12 +917,52 @@ void sub_806806C(PokemonStruct1 *a0); void sub_805FC30(UnkTextStruct3 *a0, s32 a1); extern void sub_803EAF0(u32, u8 *); -extern const u8 gUnknown_8106DA4[]; +extern const s32 gUnknown_8106E80[]; extern MenuInputStruct gUnknown_202EE10; -extern const UnkTextStruct3 gUnknown_8106DC8; -extern s32 gUnknown_202F30C; -extern s32 gUnknown_202F310; -extern UnkTextStruct2_sub2 gUnknown_202F308; + +static EWRAM_DATA UnkTextStruct2_sub2 gUnknown_202F308 = {0}; +static EWRAM_DATA s32 gUnknown_202F30C = 0; +EWRAM_DATA s32 gUnknown_202F310 = 0; + +// It's likely a struct only used in Blue version. Touchpad maybe? +static const u8 gUnknown_8106DA4[] = { + 0x01, 0, 0x38, 0, 0, 0, 0x18, 0, 0x18, 0, 0, 0, 0x02, 0, 0x38, 0, 0x68, 0, 0x18, 0, 0x18, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 +}; + +static const UnkTextStruct3 gUnknown_8106DC8 = { + .a0 = { + [0] = + { + .unk0 = 0, + .unk4 = 0x06, + .unk8 = {0x02, 0x02}, + .unkC = 0x11, + .unkE = 0x0E, + .unk10 = 0x12, + .unk12 = 0x02, + .unk14 = &gUnknown_202F308 + }, + [1] = + { + .unk0 = 0, + .unk4 = 0x03, + .unk8 = {0x15, 0x04}, + .unkC = 0x07, + .unkE = 0x04, + .unk10 = 0x04, + .unk12 = 0, + .unk14 = NULL + }, + [2] = + { + .unk4 = 0x03, + }, + [3] = + { + .unk4 = 0x03, + } + } +}; void sub_8067A80(u8 a0, s32 a1, s32 a2, PokemonStruct1 **a3) { @@ -1184,7 +1213,7 @@ void sub_8067F00(u8 a0, PokemonStruct1 **a1, s32 a2_, s32 a3, s32 a4) sub_80073B8(0); WriteFriendAreaName(gFormatBuffer_Monsters[0], a0, FALSE); - PrintFormattedStringOnWindow(12, 0, gUnknown_8106E28, 0, '\0'); + PrintFormattedStringOnWindow(12, 0, _("{POKEMON_0}"), 0, '\0'); i = 0; while (i < 10) { if (a2 >= 0) { @@ -1196,17 +1225,17 @@ void sub_8067F00(u8 a0, PokemonStruct1 **a1, s32 a2_, s32 a3, s32 a4) sub_808D930(gFormatBuffer_Monsters[1], a1[a2]->speciesNum); gFormatArgs[0] = a2 + 1; if (a1[a2]->unk0 & 0x8000) { - strcpy(gFormatBuffer_Items[0], gUnknown_8106E2C); + InlineStrcpy(gFormatBuffer_Items[0], _("{STAR_BULLET}")); } else { - strcpy(gFormatBuffer_Items[0], gUnknown_8106E30); + InlineStrcpy(gFormatBuffer_Items[0], _("{ICON_BLANK}")); } if (a1[a2]->unk0 & 0x4000) { - PrintFormattedStringOnWindow(7, y, gUnknown_8106E34, 0, '\0'); + PrintFormattedStringOnWindow(7, y, _("{MOVE_ITEM_0}{color CYAN}$v02:{POKEMON_0}{reset}"), 0, '\0'); } else { - PrintFormattedStringOnWindow(7, y, gUnknown_8106E48, 0, '\0'); + PrintFormattedStringOnWindow(7, y, _("{MOVE_ITEM_0}{color YELLOW}$v02:{POKEMON_0}{reset}"), 0, '\0'); } } @@ -1218,25 +1247,22 @@ void sub_8067F00(u8 a0, PokemonStruct1 **a1, s32 a2_, s32 a3, s32 a4) sub_80073E0(0); sub_80073B8(1); if (gUnknown_202F310 >= a4) { - PrintFormattedStringOnWindow(8, 2, gUnknown_8106E5C, 1, '\0'); + PrintFormattedStringOnWindow(8, 2, _("Press {B_BUTTON}\nif OK."), 1, '\0'); } else { gFormatArgs[0] = a4 - gUnknown_202F310; - PrintFormattedStringOnWindow(8, 2, gUnknown_8106E6C, 1, '\0'); + PrintFormattedStringOnWindow(8, 2, _("Say bye to\n{VALUE_0} more"), 1, '\0'); } sub_80073E0(1); } -extern const s32 gUnknown_8106E80[]; - void sub_806806C(PokemonStruct1 *a0) { struct unkStruct_808FF20 unkStruct; u8 var_C8[48]; UnkTextStruct3 spTxtStruct = {0}; - s32 spF8[4]; - s32 r7, r8; + s32 r7; spTxtStruct.a0[0].unk4 = 6; spTxtStruct.a0[0].unk8.unk0.separate.unk0 = 2; @@ -1256,8 +1282,8 @@ void sub_806806C(PokemonStruct1 *a0) gUnknown_202EE10.menuIndex = 0; while (1) { - r8 = 0; - memcpy(spF8, gUnknown_8106E80, sizeof(spF8)); + bool32 loopBreak = FALSE; + s32 spF8[4] = {2, 3, 4, 5}; gUnknown_202F308.f0 = 4; gUnknown_202F308.f1 = r7; @@ -1343,18 +1369,18 @@ void sub_806806C(PokemonStruct1 *a0) if ((gRealInputs.pressed & A_BUTTON) || gUnknown_202EE10.unk28.a_button) { sub_8083D08(); - r8 = 1; + loopBreak = TRUE; break; } if ((gRealInputs.pressed & B_BUTTON) || gUnknown_202EE10.unk28.b_button) { sub_8083D30(); - r8 = 1; + loopBreak = TRUE; break; } } sub_803E46C(0x37); - if (r8 != 0) { + if (loopBreak) { break; } } diff --git a/src/dungeon_message.c b/src/dungeon_message.c index dab15b7da..a6e0362ff 100644 --- a/src/dungeon_message.c +++ b/src/dungeon_message.c @@ -65,17 +65,6 @@ EWRAM_INIT u8 gUnknown_203B434 = 1; #define FLAG_CAN_SCROLL_UP 0x1 #define FLAG_CAN_SCROLL_DOWN 0x2 -// Needed to match :shrug: -static inline void InlineStrcpy(u8 *dst, const u8 *src) -{ - strcpy(dst, src); -} - -static inline void InlineStrncpy(u8 *dst, const u8 *src, s32 n) -{ - strncpy(dst, src, n); -} - void sub_80521D0(void) { s32 i; diff --git a/sym_ewram.txt b/sym_ewram.txt index 0069640b5..7e5738f9f 100644 --- a/sym_ewram.txt +++ b/sym_ewram.txt @@ -248,13 +248,7 @@ gUnknown_202F2FC: /* 202F2FC (sub_8065FB4 - sub_8066358) */ gUnknown_202F300: /* 202F300 (sub_8066434) */ .space 0x8 -gUnknown_202F308: /* 202F308 (sub_8067A80 - sub_806806C) */ - .space 0x4 -gUnknown_202F30C: /* 202F30C (sub_8067A80 - sub_8067A80) */ - .space 0x4 -gUnknown_202F310: /* 202F310 (sub_8067A80 - sub_8068310) */ - .space 0x4 - + .include "src/code_8066D04.o" .include "src/dungeon_movement.o" .include "src/code_80718D8.o" From abf677b928ac41a8761a5b8711360965df3df52e Mon Sep 17 00:00:00 2001 From: DizzyEggg Date: Wed, 19 Feb 2025 09:59:57 +0100 Subject: [PATCH 07/40] unify unktextstruct2[4] into unktextstruct3 --- include/code_801B3C0.h | 4 +- include/code_801B60C.h | 4 +- include/code_801D014.h | 2 +- include/code_801EE10.h | 2 +- include/code_80227B8.h | 4 +- include/code_8024458.h | 2 +- include/code_802DB28.h | 2 +- include/code_802DE84.h | 4 +- include/credits1.h | 4 +- include/debug_menu1.h | 4 +- include/debug_menu2.h | 4 +- include/debug_menu3.h | 4 +- include/debug_menu4.h | 4 +- include/felicity_bank.h | 2 +- include/friend_area_action_menu.h | 4 +- include/friend_list_menu.h | 2 +- include/friend_rescue.h | 4 +- include/gulpin_shop.h | 2 +- include/gulpin_shop_801FB50.h | 2 +- include/iq_skill_info_menu.h | 2 +- include/iq_skill_menu.h | 2 +- include/kangaskhan_storage1.h | 2 +- include/kangaskhan_storage2.h | 2 +- include/kecleon_bros1.h | 2 +- include/luminous_cave.h | 2 +- include/mailbox.h | 2 +- include/main_menu1.h | 6 +- include/main_menu2.h | 2 +- include/makuhita_dojo1.h | 2 +- include/menu_input.h | 2 +- include/options_menu1.h | 2 +- include/options_menu2.h | 2 +- include/other_menus1.h | 2 +- include/party_list_menu.h | 2 +- include/pelipper_board.h | 2 +- include/pokemon_news2.h | 2 +- include/post_office_guide2.h | 2 +- include/rescue_password_menu.h | 4 +- include/save_menu.h | 2 +- include/structs/str_text.h | 8 ++ include/structs/struct_sub80095e4.h | 18 ++-- include/text.h | 4 +- include/thank_you_wonder_mail.h | 4 +- include/trade_items_menu.h | 4 +- include/wigglytuff_shop2.h | 2 +- include/wigglytuff_shop3.h | 2 +- include/wonder_mail.h | 4 +- include/wonder_mail_802C860.h | 2 +- include/wonder_mail_802D098.h | 2 +- src/adventure_log.c | 12 +-- src/code_8015080.c | 24 +++--- src/code_801B3C0.c | 4 +- src/code_801B60C.c | 20 ++--- src/code_801C8C4.c | 16 ++-- src/code_801D014.c | 34 ++++---- src/code_801D9E4.c | 14 +-- src/code_801EE10.c | 18 ++-- src/code_801F428.c | 14 +-- src/code_801F808.c | 18 ++-- src/code_80227B8.c | 14 +-- src/code_8023144.c | 16 ++-- src/code_8024458.c | 12 +-- src/code_802DB28.c | 6 +- src/code_802DE84.c | 12 +-- src/code_8031D70.c | 14 +-- src/code_803E724.c | 18 ++-- src/code_805D8C8_1.c | 8 -- src/code_8066D04.c | 4 - src/code_8072F3C.c | 16 ++-- src/credits1.c | 6 +- src/debug_menu1.c | 8 +- src/debug_menu2.c | 12 +-- src/debug_menu3.c | 8 +- src/debug_menu4.c | 14 +-- src/felicity_bank.c | 30 +++---- src/friend_area_action_menu.c | 16 ++-- src/friend_list_menu.c | 16 ++-- src/friend_rescue.c | 74 ++++++++-------- src/gulpin_shop.c | 12 +-- src/gulpin_shop_801FB50.c | 36 ++++---- src/hints_menu1.c | 14 +-- src/hints_menu2.c | 14 +-- src/iq_skill_info_menu.c | 4 +- src/iq_skill_list_menu.c | 16 ++-- src/iq_skill_menu.c | 8 +- src/kangaskhan_storage1.c | 28 +++--- src/kangaskhan_storage2.c | 38 ++++----- src/kecleon_bros1.c | 24 +++--- src/kecleon_bros2.c | 14 +-- src/kecleon_bros3.c | 14 +-- src/kecleon_bros4.c | 18 ++-- src/load_screen.c | 20 ++--- src/luminous_cave.c | 8 +- src/mailbox.c | 20 ++--- src/main_menu1.c | 12 ++- src/main_menu2.c | 46 +++++----- src/makuhita_dojo1.c | 6 +- src/makuhita_dojo2.c | 14 +-- src/menu_input.c | 14 +-- src/mission_reward.c | 8 +- src/options_menu1.c | 22 ++--- src/options_menu2.c | 12 +-- src/other_menus1.c | 26 +++--- src/party_list_menu.c | 22 ++--- src/pelipper_board.c | 20 ++--- src/personality_test1.c | 8 +- src/personality_test2.c | 16 ++-- src/pokemon_news1.c | 16 ++-- src/pokemon_news2.c | 14 +-- src/pokemon_news3.c | 16 ++-- src/post_office_guide2.c | 12 +-- src/rescue_password_menu.c | 28 +++--- src/save_menu.c | 20 ++--- src/string_format.c | 127 ++++++++++++---------------- src/text.c | 40 ++++----- src/thank_you_wonder_mail.c | 32 +++---- src/trade_items_menu.c | 22 ++--- src/unk_menu_203B360.c | 8 +- src/wigglytuff_shop1.c | 16 ++-- src/wigglytuff_shop2.c | 12 +-- src/wigglytuff_shop3.c | 14 +-- src/wonder_mail.c | 40 ++++----- src/wonder_mail_3_mid.c | 12 +-- src/wonder_mail_4.c | 16 ++-- src/wonder_mail_5.c | 14 +-- src/wonder_mail_6.c | 32 +++---- src/wonder_mail_802C10C.c | 16 ++-- src/wonder_mail_802C4C8.c | 16 ++-- src/wonder_mail_802C860.c | 12 +-- src/wonder_mail_802CDD4.c | 14 +-- src/wonder_mail_802D098.c | 18 ++-- src/wonder_mail_main_menu.c | 8 +- 132 files changed, 851 insertions(+), 872 deletions(-) diff --git a/include/code_801B3C0.h b/include/code_801B3C0.h index 33db72e14..43612b262 100644 --- a/include/code_801B3C0.h +++ b/include/code_801B3C0.h @@ -17,7 +17,7 @@ typedef struct unkStruct_203B230 u8 fill18[0x20 - 0x18]; u32 unk20; u32 unk24; - UnkTextStruct2 unk28[4]; + UnkTextStruct3 unk28; MenuInputStructSub unk88; } unkStruct_203B230; @@ -25,4 +25,4 @@ bool8 sub_801B3C0(Item *item); u32 sub_801B410(void); void sub_801B450(void); -#endif // GUARD_CODE_801B3C0_H \ No newline at end of file +#endif // GUARD_CODE_801B3C0_H diff --git a/include/code_801B60C.h b/include/code_801B60C.h index 7b7073892..1a1b52bc7 100644 --- a/include/code_801B60C.h +++ b/include/code_801B60C.h @@ -20,11 +20,11 @@ typedef struct unkStruct_203B234 MenuStruct unk78; /* 0xC8 */ u32 menuAction; MenuItem unkCC[5]; - UnkTextStruct2 unkF4[4]; + UnkTextStruct3 unkF4; } unkStruct_203B234; bool8 sub_801B60C(u32, u8 id, u8 quantity); u32 sub_801B6AC(void); void sub_801B72C(void); -#endif // GUARD_CODE_801B60C_H \ No newline at end of file +#endif // GUARD_CODE_801B60C_H diff --git a/include/code_801D014.h b/include/code_801D014.h index 63168f5b7..878fde93a 100644 --- a/include/code_801D014.h +++ b/include/code_801D014.h @@ -21,7 +21,7 @@ struct unk_203B250 MenuStruct unk18; MenuItem unk68[8]; u16 unkA8[8]; - UnkTextStruct2 unkB8[4]; + UnkTextStruct3 unkB8; }; // size: 0x8 diff --git a/include/code_801EE10.h b/include/code_801EE10.h index 71c95f515..2c5bd155b 100644 --- a/include/code_801EE10.h +++ b/include/code_801EE10.h @@ -21,7 +21,7 @@ typedef struct unkStruct_203B270 /* 0x1C */ MenuInputStruct input; u32 unk50; u32 unk54; - UnkTextStruct2 unk58[4]; + UnkTextStruct3 unk58; const u8 *text; } unkStruct_203B270; diff --git a/include/code_80227B8.h b/include/code_80227B8.h index a7bcadfff..8cba3a418 100644 --- a/include/code_80227B8.h +++ b/include/code_80227B8.h @@ -26,11 +26,11 @@ typedef struct unkStruct_203B294 /* 0xF4 */ u32 menuAction; MenuItem unkF8[8]; u16 unk138[8]; - UnkTextStruct2 unk148[4]; + UnkTextStruct3 unk148; } unkStruct_203B294; bool8 sub_80227B8(PokemonStruct1 *pkmn); u32 sub_8022860(void); void sub_8022908(void); -#endif // GUARD_CODE_80227B8_H \ No newline at end of file +#endif // GUARD_CODE_80227B8_H diff --git a/include/code_8024458.h b/include/code_8024458.h index f9f50961d..8d69e6492 100644 --- a/include/code_8024458.h +++ b/include/code_8024458.h @@ -17,7 +17,7 @@ struct unkStruct_203B2AC u8 fillB4[0xE0 - 0xB4]; u32 unkE0; UnkTextStruct2 *unkE4; - UnkTextStruct2 unkE8[4]; + UnkTextStruct3 unkE8; UnkTextStruct2_sub2 unk148; }; diff --git a/include/code_802DB28.h b/include/code_802DB28.h index 572a54287..07cc7283b 100644 --- a/include/code_802DB28.h +++ b/include/code_802DB28.h @@ -15,7 +15,7 @@ struct unkStruct_203B2FC /* 0x30 */ u8 jobSlotIndex; /* 0x34 */ WonderMail *jobInfo; /* 0x38 */ struct MonPortraitMsg monPortrait; - UnkTextStruct2 unk48[4]; + UnkTextStruct3 unk48; }; bool8 sub_802DB28(u8 jobSlotIndex, u8 dungeon); diff --git a/include/code_802DE84.h b/include/code_802DE84.h index cd553c082..a16d463f9 100644 --- a/include/code_802DE84.h +++ b/include/code_802DE84.h @@ -12,7 +12,7 @@ struct unkStruct_203B300 /* 0xC */ unkStruct_802C39C *mail; u32 unk10; UnkTextStruct2 *unk14; - UnkTextStruct2 unk18[4]; + UnkTextStruct3 unk18; u8 unk78[4]; }; @@ -20,4 +20,4 @@ bool8 sub_802DE84(unkStruct_802C39C *mail); u32 sub_802DEE0(void); void sub_802DF24(void); -#endif // GUARD_CODE_802DE84_H \ No newline at end of file +#endif // GUARD_CODE_802DE84_H diff --git a/include/credits1.h b/include/credits1.h index 83217ad18..14c91fa68 100644 --- a/include/credits1.h +++ b/include/credits1.h @@ -6,7 +6,7 @@ // size: 0x6C typedef struct Credits1Work { - UnkTextStruct2 unk0[4]; + UnkTextStruct3 unk0; s32 unk60; s32 unk64; /* 0x68 */ s32 creditsCategoryIndex; @@ -26,4 +26,4 @@ bool8 DrawCredits(s32 creditsCategoryIndex, s32); s32 sub_8035574(void); void sub_803565C(void); -#endif // GUARD_CREDITS1_H \ No newline at end of file +#endif // GUARD_CREDITS1_H diff --git a/include/debug_menu1.h b/include/debug_menu1.h index 708296549..7417ac18b 100644 --- a/include/debug_menu1.h +++ b/include/debug_menu1.h @@ -8,7 +8,7 @@ struct DebugMenu { MenuStruct unk0[4]; - UnkTextStruct2 unk140[4]; + UnkTextStruct3 unk140; u32 fill1A0; }; @@ -16,4 +16,4 @@ void CreateDebugMenu(void); void DeleteDebugMenu(void); u32 UpdateDebugMenu(void); -#endif // GUARD_DEBUG_MENU1_H \ No newline at end of file +#endif // GUARD_DEBUG_MENU1_H diff --git a/include/debug_menu2.h b/include/debug_menu2.h index 40a0baa3f..b56610cbe 100644 --- a/include/debug_menu2.h +++ b/include/debug_menu2.h @@ -14,7 +14,7 @@ typedef struct unkStruct_203B3F0 MenuStruct unk4C; unkStructFor8013AA0 unk9C; u8 fillCC[0xD8 - 0xCC]; - UnkTextStruct2 unkD8[4]; + UnkTextStruct3 unkD8; } unkStruct_203B3F0; -#endif // GUARD_DEBUG_MENU2_H \ No newline at end of file +#endif // GUARD_DEBUG_MENU2_H diff --git a/include/debug_menu3.h b/include/debug_menu3.h index cf61cfdd8..3c64aec0e 100644 --- a/include/debug_menu3.h +++ b/include/debug_menu3.h @@ -12,7 +12,7 @@ typedef struct unkStruct_203B3F4 /* 0x8 */ u32 menuAction; /* 0xC */ MenuItem menuItems[8]; MenuStruct unk4C; - UnkTextStruct2 unk9C[4]; + UnkTextStruct3 unk9C; } unkStruct_203B3F4; -#endif // GUARD_DEBUG_MENU3_H \ No newline at end of file +#endif // GUARD_DEBUG_MENU3_H diff --git a/include/debug_menu4.h b/include/debug_menu4.h index c7925fc54..25b605659 100644 --- a/include/debug_menu4.h +++ b/include/debug_menu4.h @@ -17,7 +17,7 @@ typedef struct unkStruct_203B3F8 unkStructFor8013AA0 unk60; MenuItem unk90[8]; u16 unkD0[8]; - UnkTextStruct2 unkE0[4]; + UnkTextStruct3 unkE0; } unkStruct_203B3F8; -#endif // GUARD_DEBUG_MENU4_H \ No newline at end of file +#endif // GUARD_DEBUG_MENU4_H diff --git a/include/felicity_bank.h b/include/felicity_bank.h index 42c65e138..a2ad63ba1 100644 --- a/include/felicity_bank.h +++ b/include/felicity_bank.h @@ -22,7 +22,7 @@ typedef struct FelicityBankWork unkStructFor8013AA0 unk64; /* 0x94 */ struct MonPortraitMsg monPortrait; struct MonPortraitMsg *monPortraitPtr; - UnkTextStruct2 unkA8[4]; + UnkTextStruct3 unkA8; } FelicityBankWork; bool8 CreateFelicityBank(s32 mode); diff --git a/include/friend_area_action_menu.h b/include/friend_area_action_menu.h index 911f8e25e..7cdf7c193 100644 --- a/include/friend_area_action_menu.h +++ b/include/friend_area_action_menu.h @@ -65,11 +65,11 @@ struct unkStruct_203B2BC MenuItem menuItems[4]; u8 fill120[0x16C - 0x13C]; u16 unk16C[10]; - UnkTextStruct2 unk180[4]; + UnkTextStruct3 unk180; }; u32 sub_8027074(void); u32 sub_80270A4(void); void sub_8027168(void); -#endif // GUARD_FRIEND_AREA_ACTION_MENU_H \ No newline at end of file +#endif // GUARD_FRIEND_AREA_ACTION_MENU_H diff --git a/include/friend_list_menu.h b/include/friend_list_menu.h index eaf2858fb..eb5485477 100644 --- a/include/friend_list_menu.h +++ b/include/friend_list_menu.h @@ -31,7 +31,7 @@ typedef struct unkStruct_203B2B4 MenuStruct unk78; MenuItem unkC8[8]; u16 unk108[8]; - UnkTextStruct2 unk118[4]; + UnkTextStruct3 unk118; } unkStruct_203B2B4; bool8 CreateFriendListMenu(s32 param_1); diff --git a/include/friend_rescue.h b/include/friend_rescue.h index 2db0ba41f..78f4f4c65 100644 --- a/include/friend_rescue.h +++ b/include/friend_rescue.h @@ -23,8 +23,8 @@ typedef struct WonderMailStruct_203B33C unkStruct_203B480 unk1E8; u8 unk218; MenuStruct unk21C[4]; - UnkTextStruct2 unk35C[4]; - UnkTextStruct2 unk3BC[4]; + UnkTextStruct3 unk35C; + UnkTextStruct3 unk3BC; /* 0x41C */ Item item; u32 unk420; // Is this supposed to be a File like 203B2C4? u8 unk424[0x100]; diff --git a/include/gulpin_shop.h b/include/gulpin_shop.h index 60284eca3..e18eba9fd 100644 --- a/include/gulpin_shop.h +++ b/include/gulpin_shop.h @@ -27,7 +27,7 @@ typedef struct GulpinShopWork u8 fillC8[0x118 - 0xC8]; /* 0x118 */ struct MonPortraitMsg monPortrait; struct MonPortraitMsg *monPortraitPtr; - UnkTextStruct2 unk12C[4]; + UnkTextStruct3 unk12C; } GulpinShopWork; bool8 CreateGulpinShop(u32 mode, s16 pokeSpecies, Move *moves); diff --git a/include/gulpin_shop_801FB50.h b/include/gulpin_shop_801FB50.h index a3bc8f0f8..179573e6b 100644 --- a/include/gulpin_shop_801FB50.h +++ b/include/gulpin_shop_801FB50.h @@ -35,7 +35,7 @@ typedef struct unkStruct_203B27C u8 fill11C[0x16C - 0x11C]; /* 0x16C */ struct MonPortraitMsg monPortrait; struct MonPortraitMsg *monPortraitPtr; - UnkTextStruct2 unk180[4]; + UnkTextStruct3 unk180; } unkStruct_203B27C; bool8 sub_801FB50(u32 mode); diff --git a/include/iq_skill_info_menu.h b/include/iq_skill_info_menu.h index bf8cc6294..8a09588df 100644 --- a/include/iq_skill_info_menu.h +++ b/include/iq_skill_info_menu.h @@ -16,7 +16,7 @@ struct IQSkillInfoMenu u8 fill14[0x20 - 0x18]; u32 unk20; u32 unk24; - UnkTextStruct2 unk28[4]; + UnkTextStruct3 unk28; MenuInputStructSub unk88; }; diff --git a/include/iq_skill_menu.h b/include/iq_skill_menu.h index 4d814e443..ab3102f5e 100644 --- a/include/iq_skill_menu.h +++ b/include/iq_skill_menu.h @@ -19,7 +19,7 @@ struct IQSkillMenu /* 0x30 */ s32 menuAction; MenuItem unk34[8]; MenuStruct unk74; - UnkTextStruct2 unkC4[4]; + UnkTextStruct3 unkC4; }; bool8 CreateIQSkillMenu(s16 species); diff --git a/include/kangaskhan_storage1.h b/include/kangaskhan_storage1.h index 08f4edffe..d9fd833d7 100644 --- a/include/kangaskhan_storage1.h +++ b/include/kangaskhan_storage1.h @@ -47,7 +47,7 @@ struct KangaskhanStorageWork unkStructFor8013AA0 unkA8; /* 0xD8 */ struct MonPortraitMsg monPortrait; struct MonPortraitMsg *monPortraitPtr; - UnkTextStruct2 unkEC[4]; + UnkTextStruct3 unkEC; }; bool8 CreateKangaskhanStorage(u32 mode); diff --git a/include/kangaskhan_storage2.h b/include/kangaskhan_storage2.h index 24238ba41..97b8e82e0 100644 --- a/include/kangaskhan_storage2.h +++ b/include/kangaskhan_storage2.h @@ -27,7 +27,7 @@ typedef struct unkStruct_203B20C u16 unk60[8]; MenuStruct unk70; unkStructFor8013AA0 unkC0; - UnkTextStruct2 unkF0[4]; + UnkTextStruct3 unkF0; } unkStruct_203B20C; bool8 sub_8017E1C(void); diff --git a/include/kecleon_bros1.h b/include/kecleon_bros1.h index 43427d2db..eb05faa75 100644 --- a/include/kecleon_bros1.h +++ b/include/kecleon_bros1.h @@ -65,7 +65,7 @@ typedef struct KecleonBrosWork1 /* 0x84 */ MenuStruct menu; /* 0xD4 */ struct MonPortraitMsg monPortrait; struct MonPortraitMsg *monPortraitPtr; - UnkTextStruct2 unkE8[4]; + UnkTextStruct3 unkE8; } KecleonBrosWork1; // mode corresponds to the enum: KecleonBrosMode diff --git a/include/luminous_cave.h b/include/luminous_cave.h index acf0a7bd6..683421305 100644 --- a/include/luminous_cave.h +++ b/include/luminous_cave.h @@ -33,7 +33,7 @@ typedef struct LuminousCaveWork u8 unk110; u8 unk111; u8 unk112; - UnkTextStruct2 unk114[4]; + UnkTextStruct3 unk114; } LuminousCaveWork; void CleanLuminousCave(void); diff --git a/include/mailbox.h b/include/mailbox.h index ea8ec6557..22f97b44d 100644 --- a/include/mailbox.h +++ b/include/mailbox.h @@ -19,7 +19,7 @@ struct unkStruct_203B304 MenuStruct unk6C; MenuItem menuItems[8]; u16 unkFC[8]; - UnkTextStruct2 unk10C[4]; + UnkTextStruct3 unk10C; }; extern void SetMailboxState(u32); diff --git a/include/main_menu1.h b/include/main_menu1.h index 0c183a4cd..1b419b438 100644 --- a/include/main_menu1.h +++ b/include/main_menu1.h @@ -38,12 +38,12 @@ void CleanUpMenu(void); void DeleteMainMenu(void); MainMenu1Work *GetMainMenu(void); void InitMainMenu(void); -void SetMenuItems(MenuStruct *, UnkTextStruct2 *, s32 index, const UnkTextStruct2 *, const MenuItem *menuItems, bool8, u32 menuAction, bool8 unused); +void SetMenuItems(MenuStruct *, UnkTextStruct3 *, s32 index, const UnkTextStruct2 *, const MenuItem *menuItems, bool8, u32 menuAction, bool8 unused); void SetUpMenu(void); s32 UpdateMenu(void); void sub_8035C1C(void); -void sub_8035CC0(UnkTextStruct2 *dataArray, u32 index); +void sub_8035CC0(UnkTextStruct3 *dataArray, u32 index); void sub_8035CF4(MenuStruct *menu, u32 index, bool8); void sub_8035D1C(void); s16 sub_8035D3C(void); @@ -51,4 +51,4 @@ s32 sub_8035D74(void); unkStruct_8035D94 *sub_8035D94(void); void sub_8035DA0(void); -#endif // GUARD_MAIN_MENU1_H \ No newline at end of file +#endif // GUARD_MAIN_MENU1_H diff --git a/include/main_menu2.h b/include/main_menu2.h index 9f4c53808..9267e578c 100644 --- a/include/main_menu2.h +++ b/include/main_menu2.h @@ -9,7 +9,7 @@ typedef struct MainMenu2Work { u32 unk0; MenuStruct unk4[4]; - UnkTextStruct2 unk144[4]; + UnkTextStruct3 unk144; /* 0x1A4 */ u32 currMenuChoice; } MainMenu2Work; diff --git a/include/makuhita_dojo1.h b/include/makuhita_dojo1.h index 6b5615300..088ccb009 100644 --- a/include/makuhita_dojo1.h +++ b/include/makuhita_dojo1.h @@ -30,7 +30,7 @@ typedef struct MakuhitaDojoWork1 u8 fill38[0x58 - 0x38]; /* 0x58 */ struct MonPortraitMsg monPortrait; struct MonPortraitMsg *monPortraitPtr; - UnkTextStruct2 unk6C[4]; + UnkTextStruct3 unk6C; } MakuhitaDojoWork1; void MakuhitaDojo_Delete(void); diff --git a/include/menu_input.h b/include/menu_input.h index 0d897b526..9eee9ac5f 100644 --- a/include/menu_input.h +++ b/include/menu_input.h @@ -49,7 +49,7 @@ void sub_8013C68(unkStructFor8013AA0 *); void sub_8013D10(unkStructFor8013AA0 *); void sub_8013E54(void); void sub_8013F84(void); -void sub_80140B4(UnkTextStruct2 *); +void sub_80140B4(UnkTextStruct3 *); #endif // GUARD_MENU_INPUT_H diff --git a/include/options_menu1.h b/include/options_menu1.h index 24baa5ba9..46f64b54c 100644 --- a/include/options_menu1.h +++ b/include/options_menu1.h @@ -14,7 +14,7 @@ struct unkStruct_203B25C /* 0x1C */ MenuStruct menu; /* 0x6C */ MenuItem menuItems[8]; u16 unkAC[8]; - UnkTextStruct2 unkBC[4]; + UnkTextStruct3 unkBC; }; bool8 sub_801DCC4(void); diff --git a/include/options_menu2.h b/include/options_menu2.h index 2d7bdeadd..f0ddf18cb 100644 --- a/include/options_menu2.h +++ b/include/options_menu2.h @@ -12,7 +12,7 @@ struct unkStruct_203B260 /* 0x10 */ MenuInputStruct input; u32 unk44; UnkTextStruct2 *unk48; - UnkTextStruct2 unk4C[4]; + UnkTextStruct3 unk4C; }; bool8 sub_801E198(GameOptions *optionsMenu); diff --git a/include/other_menus1.h b/include/other_menus1.h index 9155b4c1e..0c35d485e 100644 --- a/include/other_menus1.h +++ b/include/other_menus1.h @@ -18,7 +18,7 @@ typedef struct unkStruct_203B35C u32 unk14; u8 fill18[0x1C - 0x18]; MenuStruct unk1C[4]; - UnkTextStruct2 unk15C[4]; + UnkTextStruct3 unk15C; unkStruct_8035D94 unk1BC[2]; unkStruct_203B480 unk1CC; unkStruct_203B480 unk1FC; diff --git a/include/party_list_menu.h b/include/party_list_menu.h index 3db582c1b..0ed0d2c83 100644 --- a/include/party_list_menu.h +++ b/include/party_list_menu.h @@ -32,7 +32,7 @@ typedef struct unkStruct_203B2B8 MenuItem unk16C[10]; MenuItem unk1BC[10]; u16 unk20C[10]; - UnkTextStruct2 unk220[4]; + UnkTextStruct3 unk220; } unkStruct_203B2B8; bool8 CreatePartyListMenu(PokemonStruct1 *pokeStruct); diff --git a/include/pelipper_board.h b/include/pelipper_board.h index 1495d4b77..f29272503 100644 --- a/include/pelipper_board.h +++ b/include/pelipper_board.h @@ -17,7 +17,7 @@ struct unkStruct_203B308 MenuStruct unk6C; MenuItem menuItems[8]; u16 unkFC[8]; - UnkTextStruct2 unk10C[4]; + UnkTextStruct3 unk10C; }; extern struct unkStruct_203B308 *gPelipperBoard; diff --git a/include/pokemon_news2.h b/include/pokemon_news2.h index 03da4a4d0..5d72cd208 100644 --- a/include/pokemon_news2.h +++ b/include/pokemon_news2.h @@ -14,7 +14,7 @@ struct unkStruct_203B2D4 const u8 *unk10[4]; u32 unk20; u32 unk24; - UnkTextStruct2 unk28[4]; + UnkTextStruct3 unk28; MenuInputStructSub unk88; }; diff --git a/include/post_office_guide2.h b/include/post_office_guide2.h index 1f8a1b67c..82159926c 100644 --- a/include/post_office_guide2.h +++ b/include/post_office_guide2.h @@ -12,7 +12,7 @@ typedef struct unkStruct_203B330 /* 0xD */ u8 dungeonIndex; u32 unk10; UnkTextStruct2 *unk14; - UnkTextStruct2 unk18[4]; + UnkTextStruct3 unk18; } unkStruct_203B330; bool8 sub_80319A4(u8, u8 dungeon, s32); diff --git a/include/rescue_password_menu.h b/include/rescue_password_menu.h index c2382da0c..0a2520827 100644 --- a/include/rescue_password_menu.h +++ b/include/rescue_password_menu.h @@ -12,8 +12,8 @@ struct RescuePasswordMenu u32 currMenu; u32 state; MenuStruct unk8[4]; - UnkTextStruct2 unk148[4]; - UnkTextStruct2 unk1A8[4]; + UnkTextStruct3 unk148; + UnkTextStruct3 unk1A8; SpriteOAM unk208; u32 unk210; }; diff --git a/include/save_menu.h b/include/save_menu.h index 56612edb2..427e5c584 100644 --- a/include/save_menu.h +++ b/include/save_menu.h @@ -9,7 +9,7 @@ typedef struct SaveMenuWork /* 0x0 */ u32 currMenu; u32 unk4; MenuStruct unk8[4]; - UnkTextStruct2 unk148[4]; + UnkTextStruct3 unk148; SpriteOAM unk1A8; u32 unk1B0; // Sprite count? } SaveMenuWork; diff --git a/include/structs/str_text.h b/include/structs/str_text.h index 32a4d2d2a..3b16a5863 100644 --- a/include/structs/str_text.h +++ b/include/structs/str_text.h @@ -66,4 +66,12 @@ typedef struct UnkTextStruct2 const UnkTextStruct2_sub2 *unk14; // Pointer to 4 bytes which may be x-coord related. Could be window's header? } UnkTextStruct2; +typedef struct UnkTextStruct3 { + UnkTextStruct2 a0[4]; + // Something ugly, so that sub_805FD74 could match weird compiler memcpy/stack initialization + #ifndef NONMATCHING + u8 fakeMatch[0]; + #endif // NONMATCHING +} UnkTextStruct3; + #endif // GUARD_STR_TEXT_H diff --git a/include/structs/struct_sub80095e4.h b/include/structs/struct_sub80095e4.h index 16b4757a6..a38dfac93 100644 --- a/include/structs/struct_sub80095e4.h +++ b/include/structs/struct_sub80095e4.h @@ -13,7 +13,7 @@ typedef struct struct_Sub80095E4 /* 0x0 */ MenuInputStruct input; u32 unk34; UnkTextStruct2 *unk38; - UnkTextStruct2 unk3C[4]; + UnkTextStruct3 unk3C; // size: 0x9C } struct_Sub80095E4; @@ -33,16 +33,16 @@ typedef struct struct_Sub80095E4_2 s16 newE; \ s16 a0 = (_a0); \ UNUSED s32 a0_ = a0; \ - UNUSED s16 oldE = (ptr).unk3C[(ptr).unk34].unkE; \ + UNUSED s16 oldE = (ptr).unk3C.a0[(ptr).unk34].unkE; \ a0_ = 0; \ new10 = a0 + 2; \ newE = a0; \ \ - (ptr).unk3C[(ptr).unk34].unkE = newE; \ - (ptr).unk3C[(ptr).unk34].unk10 = a0 + 2; \ + (ptr).unk3C.a0[(ptr).unk34].unkE = newE; \ + (ptr).unk3C.a0[(ptr).unk34].unk10 = a0 + 2; \ \ ResetUnusedInputStruct(); \ - xxx_call_save_unk_text_struct_800641C((ptr).unk3C, TRUE, TRUE); \ + xxx_call_save_unk_text_struct_800641C(&(ptr).unk3C, TRUE, TRUE); \ } #define SUB_80095E4_CALL(ptr) \ @@ -54,14 +54,14 @@ typedef struct struct_Sub80095E4_2 #define SUB_80095E4_CALL_2(ptr) \ { \ s32 a0 = sub_80095E4((ptr).input.unk1A, 12) + 2; \ - UNUSED s16 oldE = (ptr).unk3C[(ptr).unk34].unkE; \ + UNUSED s16 oldE = (ptr).unk3C.a0[(ptr).unk34].unkE; \ s16 newE = a0; \ \ - (ptr).unk3C[(ptr).unk34].unkE = newE; \ - (ptr).unk3C[(ptr).unk34].unk10 = newE; \ + (ptr).unk3C.a0[(ptr).unk34].unkE = newE; \ + (ptr).unk3C.a0[(ptr).unk34].unk10 = newE; \ \ ResetUnusedInputStruct(); \ - xxx_call_save_unk_text_struct_800641C((ptr).unk3C, TRUE, TRUE); \ + xxx_call_save_unk_text_struct_800641C(&(ptr).unk3C, TRUE, TRUE); \ } // sub_802BF30 and sub_802C328 use a different function call, and 24 instead of 12 diff --git a/include/text.h b/include/text.h index 4bb2e17a0..02059816a 100644 --- a/include/text.h +++ b/include/text.h @@ -63,8 +63,8 @@ u32 UpdateFadeInTile(u32 a0); u32 sub_80063B0(void); void SelectCharmap(u32 a0); void SetCharacterMask(int a0); -void xxx_call_save_unk_text_struct_800641C(const UnkTextStruct2 *a0, bool8 a1, bool8 a2); -void RestoreUnkTextStruct_8006518(UnkTextStruct2 *unkData); +void xxx_call_save_unk_text_struct_800641C(const UnkTextStruct3 *a0, bool8 a1, bool8 a2); +void RestoreUnkTextStruct_8006518(UnkTextStruct3 *unkData); u32 sub_8006544(u32 index); void sub_8007334(s32 a0); void sub_80073B8(s32 a0); diff --git a/include/thank_you_wonder_mail.h b/include/thank_you_wonder_mail.h index 4ed0248ab..7c683e2c7 100644 --- a/include/thank_you_wonder_mail.h +++ b/include/thank_you_wonder_mail.h @@ -22,8 +22,8 @@ typedef struct WonderMailStruct_203B2C4 unkStruct_203B480 unk1E8; /* 0x218 */ s8 mailIndex; MenuStruct unk21C[4]; - UnkTextStruct2 unk35C[4]; - UnkTextStruct2 unk3BC[4]; + UnkTextStruct3 unk35C; + UnkTextStruct3 unk3BC; Item unk41C; /* 0x420 */ struct MonPortraitMsg monPortrait; u32 unk430; diff --git a/include/trade_items_menu.h b/include/trade_items_menu.h index 31c1fae05..912979441 100644 --- a/include/trade_items_menu.h +++ b/include/trade_items_menu.h @@ -47,8 +47,8 @@ struct TradeItemsMenu u32 unk10; unkStructFor8013AA0 unk14; MenuStruct unk44[4]; - UnkTextStruct2 unk184[4]; - UnkTextStruct2 unk1E4[4]; + UnkTextStruct3 unk184; + UnkTextStruct3 unk1E4; // TODO These might be structs... struct TradeItem unk244; diff --git a/include/wigglytuff_shop2.h b/include/wigglytuff_shop2.h index 0053dc6db..1eac49f85 100644 --- a/include/wigglytuff_shop2.h +++ b/include/wigglytuff_shop2.h @@ -14,7 +14,7 @@ typedef struct WigglytuffShop2Work /* 0x70 */ s32 numPokemoninFriendArea; s32 unk74; UnkTextStruct2 *unk78; - UnkTextStruct2 unk7C[4]; + UnkTextStruct3 unk7C; u8 unkDC[4]; } WigglytuffShop2Work; diff --git a/include/wigglytuff_shop3.h b/include/wigglytuff_shop3.h index 48a12c019..866591260 100644 --- a/include/wigglytuff_shop3.h +++ b/include/wigglytuff_shop3.h @@ -54,7 +54,7 @@ typedef struct WigglytuffShop3Work MenuStruct unk6C; /* 0xBC */ struct MonPortraitMsg monPortrait; struct MonPortraitMsg *monPortraitPtr; - UnkTextStruct2 unkD0[4]; + UnkTextStruct3 unkD0; u32 unk130; u32 unk134; } WigglytuffShop3Work; diff --git a/include/wonder_mail.h b/include/wonder_mail.h index 1cf88327f..944f2b769 100644 --- a/include/wonder_mail.h +++ b/include/wonder_mail.h @@ -22,8 +22,8 @@ typedef struct WonderMailStruct_203B2C0 u8 fill16A[0x218 - 0x1B8]; /* 0x218 */ u8 mailIndex; MenuStruct unk21C[4]; - UnkTextStruct2 unk35C[4]; - UnkTextStruct2 unk3BC[4]; + UnkTextStruct3 unk35C; + UnkTextStruct3 unk3BC; /* 0x41C */ u32 unkfill; // ItemSlot? /* 0x420 */ struct MonPortraitMsg monPortrait; /* 0x430 */ u8 padding3[0x534 - 0x430]; diff --git a/include/wonder_mail_802C860.h b/include/wonder_mail_802C860.h index 572ad8420..387a4594a 100644 --- a/include/wonder_mail_802C860.h +++ b/include/wonder_mail_802C860.h @@ -19,7 +19,7 @@ struct unkStruct_203B2F0 MenuItem unk10C[8]; MenuItem unk14C[8]; u8 fill18C[0x19C - 0x18C]; - UnkTextStruct2 unk19C[4]; + UnkTextStruct3 unk19C; }; bool8 InitializeJobListMenu(u32); diff --git a/include/wonder_mail_802D098.h b/include/wonder_mail_802D098.h index 182128537..892320027 100644 --- a/include/wonder_mail_802D098.h +++ b/include/wonder_mail_802D098.h @@ -34,7 +34,7 @@ typedef struct unkStruct_203B2F8 MenuItem unk118[8]; MenuItem unk158[8]; u16 unk198[8]; - UnkTextStruct2 unk1A8[4]; + UnkTextStruct3 unk1A8; } unkStruct_203B2F8; bool8 GetWonderMailAccepted(void); diff --git a/src/adventure_log.c b/src/adventure_log.c index 32846c6b2..f236825d0 100644 --- a/src/adventure_log.c +++ b/src/adventure_log.c @@ -23,13 +23,13 @@ bool8 CreateAdventureLogScreen(u32 kind) { sAdventureLog = MemoryAlloc(sizeof(*sAdventureLog), 8); sAdventureLog->s0.unk34 = kind; - sAdventureLog->s0.unk38 = &sAdventureLog->s0.unk3C[kind]; - RestoreUnkTextStruct_8006518(sAdventureLog->s0.unk3C); - sAdventureLog->s0.unk3C[sAdventureLog->s0.unk34] = sUnknown_80E2008; + sAdventureLog->s0.unk38 = &sAdventureLog->s0.unk3C.a0[kind]; + RestoreUnkTextStruct_8006518(&sAdventureLog->s0.unk3C); + sAdventureLog->s0.unk3C.a0[sAdventureLog->s0.unk34] = sUnknown_80E2008; sAdventureLog->s0.unk38->unk14 = &sAdventureLog->unk9C; ResetUnusedInputStruct(); - xxx_call_save_unk_text_struct_800641C(sAdventureLog->s0.unk3C, TRUE, TRUE); + xxx_call_save_unk_text_struct_800641C(&sAdventureLog->s0.unk3C, TRUE, TRUE); sub_8013818(&sAdventureLog->s0.input, 0x20, 8, kind); sub_8032084(); DisplayAdventureLog(); @@ -63,9 +63,9 @@ u32 HandleAdventureLogInput(bool8 a0) void CleanAdventureLogScreen(void) { if (sAdventureLog != NULL) { - sAdventureLog->s0.unk3C[sAdventureLog->s0.unk34] = sUnknown_80E1FF0; + sAdventureLog->s0.unk3C.a0[sAdventureLog->s0.unk34] = sUnknown_80E1FF0; ResetUnusedInputStruct(); - xxx_call_save_unk_text_struct_800641C(sAdventureLog->s0.unk3C, TRUE, TRUE); + xxx_call_save_unk_text_struct_800641C(&sAdventureLog->s0.unk3C, TRUE, TRUE); MemoryFree(sAdventureLog); sAdventureLog = NULL; } diff --git a/src/code_8015080.c b/src/code_8015080.c index 8aa56f2a7..7138cc5ce 100644 --- a/src/code_8015080.c +++ b/src/code_8015080.c @@ -16,7 +16,7 @@ struct unkStruct_203B1F8 // size: 0x4B4 u32 menuAction; MenuStruct unk4; - UnkTextStruct2 unk54[4]; + UnkTextStruct3 unk54; u8 buffer[0x400]; }; @@ -296,14 +296,14 @@ bool8 sub_8015080(u8 *buffer, const MenuItem *menuItems) for(index = 0; index < 4; index++) { - gUnknown_203B1F8->unk54[index] = gUnknown_80DAF70; + gUnknown_203B1F8->unk54.a0[index] = gUnknown_80DAF70; } - gUnknown_203B1F8->unk54[0] = gUnknown_80DAF88; - gUnknown_203B1F8->unk54[2] = gUnknown_80DAFA0; - sub_8012CAC(&gUnknown_203B1F8->unk54[2], menuItems); + gUnknown_203B1F8->unk54.a0[0] = gUnknown_80DAF88; + gUnknown_203B1F8->unk54.a0[2] = gUnknown_80DAFA0; + sub_8012CAC(&gUnknown_203B1F8->unk54.a0[2], menuItems); ResetUnusedInputStruct(); - xxx_call_save_unk_text_struct_800641C(gUnknown_203B1F8->unk54, 1, 1); + xxx_call_save_unk_text_struct_800641C(&gUnknown_203B1F8->unk54, 1, 1); sub_80073B8(0); FormatString(buffer, gUnknown_203B1F8->buffer, gUnknown_203B1F8->buffer + 0x400, 0); PrintStringOnWindow(4, 4, gUnknown_203B1F8->buffer, 0, 0); @@ -356,7 +356,7 @@ struct unkStruct_203B1FC u8 *unkF8; u8 unkFC[56]; u8 *unk134; - UnkTextStruct2 unk138[4]; + UnkTextStruct3 unk138; }; extern struct unkStruct_203B1FC *gUnknown_203B1FC; @@ -471,19 +471,19 @@ u32 sub_80151C0(u32 r0, u8 *buffer) gUnknown_203B1FC->unk17 = 0; for (index = 0; index < 4; index++) { - gUnknown_203B1FC->unk138[index] = gUnknown_80DB538; + gUnknown_203B1FC->unk138.a0[index] = gUnknown_80DB538; } if(gUnknown_203B1FC->unk4 != 0) { - gUnknown_203B1FC->unk138[1] = gUnknown_80DB580; + gUnknown_203B1FC->unk138.a0[1] = gUnknown_80DB580; } else { - gUnknown_203B1FC->unk138[1] = gUnknown_80DB568; + gUnknown_203B1FC->unk138.a0[1] = gUnknown_80DB568; } - gUnknown_203B1FC->unk138[0] = gUnknown_80DB550; + gUnknown_203B1FC->unk138.a0[0] = gUnknown_80DB550; ResetUnusedInputStruct(); - xxx_call_save_unk_text_struct_800641C(gUnknown_203B1FC->unk138, 1, 1); + xxx_call_save_unk_text_struct_800641C(&gUnknown_203B1FC->unk138, 1, 1); sub_8015A08(1); sub_8015C1C(); diff --git a/src/code_801B3C0.c b/src/code_801B3C0.c index 0da13b7cb..000ada2ed 100644 --- a/src/code_801B3C0.c +++ b/src/code_801B3C0.c @@ -26,9 +26,9 @@ bool8 sub_801B3C0(Item *item) sUnknown_203B230->item = *item; sub_801317C(&sUnknown_203B230->unk88); sUnknown_203B230->unk24 = 0; - sub_80140B4(sUnknown_203B230->unk28); + sub_80140B4(&sUnknown_203B230->unk28); ResetUnusedInputStruct(); - xxx_call_save_unk_text_struct_800641C(sUnknown_203B230->unk28, TRUE, TRUE); + xxx_call_save_unk_text_struct_800641C(&sUnknown_203B230->unk28, TRUE, TRUE); sub_801B46C(0); return TRUE; } diff --git a/src/code_801B60C.c b/src/code_801B60C.c index 3873b1a66..2fa46c6d8 100644 --- a/src/code_801B60C.c +++ b/src/code_801B60C.c @@ -124,26 +124,26 @@ static void sub_801B760(void) case 13: case 14: case 15: - RestoreUnkTextStruct_8006518(sUnknown_203B234->unkF4); + RestoreUnkTextStruct_8006518(&sUnknown_203B234->unkF4); for (i = 0; i < 4; i++) - sUnknown_203B234->unkF4[i] = sUnknown_80DBA58; + sUnknown_203B234->unkF4.a0[i] = sUnknown_80DBA58; ResetUnusedInputStruct(); - xxx_call_save_unk_text_struct_800641C(sUnknown_203B234->unkF4, TRUE, TRUE); + xxx_call_save_unk_text_struct_800641C(&sUnknown_203B234->unkF4, TRUE, TRUE); break; case 10: - RestoreUnkTextStruct_8006518(sUnknown_203B234->unkF4); + RestoreUnkTextStruct_8006518(&sUnknown_203B234->unkF4); sub_801BB5C(); - sUnknown_203B234->unkF4[2] = sUnknown_80DBA70; - sub_8012CAC(&sUnknown_203B234->unkF4[2], sUnknown_203B234->unkCC); + sUnknown_203B234->unkF4.a0[2] = sUnknown_80DBA70; + sub_8012CAC(&sUnknown_203B234->unkF4.a0[2], sUnknown_203B234->unkCC); ResetUnusedInputStruct(); - xxx_call_save_unk_text_struct_800641C(sUnknown_203B234->unkF4, TRUE, TRUE); + xxx_call_save_unk_text_struct_800641C(&sUnknown_203B234->unkF4, TRUE, TRUE); break; case 12: - RestoreUnkTextStruct_8006518(sUnknown_203B234->unkF4); - sUnknown_203B234->unkF4[1] = sUnknown_80DBA88; + RestoreUnkTextStruct_8006518(&sUnknown_203B234->unkF4); + sUnknown_203B234->unkF4.a0[1] = sUnknown_80DBA88; ResetUnusedInputStruct(); - xxx_call_save_unk_text_struct_800641C(sUnknown_203B234->unkF4, TRUE, TRUE); + xxx_call_save_unk_text_struct_800641C(&sUnknown_203B234->unkF4, TRUE, TRUE); break; } } diff --git a/src/code_801C8C4.c b/src/code_801C8C4.c index c8ade824b..d7070ab5c 100644 --- a/src/code_801C8C4.c +++ b/src/code_801C8C4.c @@ -29,17 +29,17 @@ bool8 sub_801C8C4(s32 a0, s32 a1, UnkTextStruct2_sub *a2, u32 a3) sUnknown_203B244->unk0 = a0; sub_801CF94(); sUnknown_203B244->unk4B4.s0.unk34 = a1; - sUnknown_203B244->unk4B4.s0.unk38 = &sUnknown_203B244->unk4B4.s0.unk3C[a1]; - RestoreUnkTextStruct_8006518(sUnknown_203B244->unk4B4.s0.unk3C); - sUnknown_203B244->unk4B4.s0.unk3C[sUnknown_203B244->unk4B4.s0.unk34] = sUnknown_80DBE54; + sUnknown_203B244->unk4B4.s0.unk38 = &sUnknown_203B244->unk4B4.s0.unk3C.a0[a1]; + RestoreUnkTextStruct_8006518(&sUnknown_203B244->unk4B4.s0.unk3C); + sUnknown_203B244->unk4B4.s0.unk3C.a0[sUnknown_203B244->unk4B4.s0.unk34] = sUnknown_80DBE54; sUnknown_203B244->unk4B4.s0.unk38->unk14 = &sUnknown_203B244->unk4B4.unk9C; if (a2 != NULL) - sUnknown_203B244->unk4B4.s0.unk3C[sUnknown_203B244->unk4B4.s0.unk34].unk8 = *a2; + sUnknown_203B244->unk4B4.s0.unk3C.a0[sUnknown_203B244->unk4B4.s0.unk34].unk8 = *a2; sub_8012D08(sUnknown_203B244->unk4B4.s0.unk38, a3); ResetUnusedInputStruct(); - xxx_call_save_unk_text_struct_800641C(sUnknown_203B244->unk4B4.s0.unk3C, TRUE, TRUE); + xxx_call_save_unk_text_struct_800641C(&sUnknown_203B244->unk4B4.s0.unk3C, TRUE, TRUE); sub_8013818(&sUnknown_203B244->unk4B4.s0.input, sub_801CE58(), a3, a1); if (sUnknown_203B248 == sUnknown_203B244->unk0) { @@ -111,7 +111,7 @@ u8 sub_801CB24(void) void sub_801CB5C(bool8 a0) { ResetUnusedInputStruct(); - xxx_call_save_unk_text_struct_800641C(sUnknown_203B244->unk4B4.s0.unk3C, FALSE, FALSE); + xxx_call_save_unk_text_struct_800641C(&sUnknown_203B244->unk4B4.s0.unk3C, FALSE, FALSE); sUnknown_203B244->unk4B4.s0.input.unk22 = sub_801CE58(); sub_8013984(&sUnknown_203B244->unk4B4.s0.input); sub_801CC38(); @@ -127,9 +127,9 @@ void sub_801CBB8(void) sUnknown_203B248 = sUnknown_203B244->unk0; sUnknown_203B24C = sUnknown_203B244->unk4B4.s0.input.menuIndex; sUnknown_203B24E = sUnknown_203B244->unk4B4.s0.input.unk1E; - sUnknown_203B244->unk4B4.s0.unk3C[sUnknown_203B244->unk4B4.s0.unk34] = sUnknown_80DBE3C; + sUnknown_203B244->unk4B4.s0.unk3C.a0[sUnknown_203B244->unk4B4.s0.unk34] = sUnknown_80DBE3C; ResetUnusedInputStruct(); - xxx_call_save_unk_text_struct_800641C(sUnknown_203B244->unk4B4.s0.unk3C, TRUE, TRUE); + xxx_call_save_unk_text_struct_800641C(&sUnknown_203B244->unk4B4.s0.unk3C, TRUE, TRUE); MemoryFree(sUnknown_203B244); sUnknown_203B244 = NULL; } diff --git a/src/code_801D014.c b/src/code_801D014.c index 0769db871..472ebd8ec 100644 --- a/src/code_801D014.c +++ b/src/code_801D014.c @@ -188,7 +188,7 @@ static void sub_801D220(void) { s32 i; - RestoreUnkTextStruct_8006518(sUnknown_203B250->unkB8); + RestoreUnkTextStruct_8006518(&sUnknown_203B250->unkB8); switch (sUnknown_203B250->state) { case 0: @@ -196,18 +196,18 @@ static void sub_801D220(void) if (sUnknown_203B250->pokeStruct != NULL) { for (i = 0; i < 4; i++) - sUnknown_203B250->unkB8[i] = sUnknown_80DBE7C; + sUnknown_203B250->unkB8.a0[i] = sUnknown_80DBE7C; - sUnknown_203B250->unkB8[0] = sUnknown_80DBE98; - sub_8012CAC(sUnknown_203B250->unkB8, sUnknown_203B250->unk68); - sUnknown_203B250->unkB8[0].unkC = 9; + sUnknown_203B250->unkB8.a0[0] = sUnknown_80DBE98; + sub_8012CAC(&sUnknown_203B250->unkB8.a0[0], sUnknown_203B250->unk68); + sUnknown_203B250->unkB8.a0[0].unkC = 9; } else { for (i = 0; i < 4; i++) - sUnknown_203B250->unkB8[i] = sUnknown_80DBEB0[i]; + sUnknown_203B250->unkB8.a0[i] = sUnknown_80DBEB0[i]; - sub_8012CAC(sUnknown_203B250->unkB8, sUnknown_203B250->unk68); - sUnknown_203B250->unkB8[0].unkC = 8; + sub_8012CAC(&sUnknown_203B250->unkB8.a0[0], sUnknown_203B250->unk68); + sUnknown_203B250->unkB8.a0[0].unkC = 8; } break; case 1: @@ -215,28 +215,28 @@ static void sub_801D220(void) if (sUnknown_203B250->pokeStruct != NULL) { for (i = 0; i < 4; i++) - sUnknown_203B250->unkB8[i] = sUnknown_80DBE7C; + sUnknown_203B250->unkB8.a0[i] = sUnknown_80DBE7C; - sUnknown_203B250->unkB8[0] = sUnknown_80DBE98; - sub_8012CAC(sUnknown_203B250->unkB8, sUnknown_203B250->unk68); - sUnknown_203B250->unkB8[0].unkC = 9; + sUnknown_203B250->unkB8.a0[0] = sUnknown_80DBE98; + sub_8012CAC(&sUnknown_203B250->unkB8.a0[0], sUnknown_203B250->unk68); + sUnknown_203B250->unkB8.a0[0].unkC = 9; } else { for (i = 0; i < 4; i++) - sUnknown_203B250->unkB8[i] = sUnknown_80DBEB0[i]; + sUnknown_203B250->unkB8.a0[i] = sUnknown_80DBEB0[i]; - sub_8012CAC(sUnknown_203B250->unkB8, sUnknown_203B250->unk68); - sUnknown_203B250->unkB8[0].unkC = 8; + sub_8012CAC(&sUnknown_203B250->unkB8.a0[0], sUnknown_203B250->unk68); + sUnknown_203B250->unkB8.a0[0].unkC = 8; } break; default: for (i = 0; i < 4; i++) - sUnknown_203B250->unkB8[i] = sUnknown_80DBE7C; + sUnknown_203B250->unkB8.a0[i] = sUnknown_80DBE7C; break; } ResetUnusedInputStruct(); - xxx_call_save_unk_text_struct_800641C(sUnknown_203B250->unkB8, TRUE, TRUE); + xxx_call_save_unk_text_struct_800641C(&sUnknown_203B250->unkB8, TRUE, TRUE); } static void sub_801D3A8(void) diff --git a/src/code_801D9E4.c b/src/code_801D9E4.c index bb9c1acf6..1b52285dd 100644 --- a/src/code_801D9E4.c +++ b/src/code_801D9E4.c @@ -23,12 +23,12 @@ bool8 sub_801D9E4(void) { sUnknown_203B258 = MemoryAlloc(sizeof(*sUnknown_203B258), 8); sUnknown_203B258->s0.unk34 = 3; - sUnknown_203B258->s0.unk38 = &sUnknown_203B258->s0.unk3C[3]; - RestoreUnkTextStruct_8006518(sUnknown_203B258->s0.unk3C); - sUnknown_203B258->s0.unk3C[sUnknown_203B258->s0.unk34] = sUnknown_80DBF88; + sUnknown_203B258->s0.unk38 = &sUnknown_203B258->s0.unk3C.a0[3]; + RestoreUnkTextStruct_8006518(&sUnknown_203B258->s0.unk3C); + sUnknown_203B258->s0.unk3C.a0[sUnknown_203B258->s0.unk34] = sUnknown_80DBF88; sUnknown_203B258->s0.unk38->unk14 = &sUnknown_203B258->unk9C; ResetUnusedInputStruct(); - xxx_call_save_unk_text_struct_800641C(sUnknown_203B258->s0.unk3C, TRUE, TRUE); + xxx_call_save_unk_text_struct_800641C(&sUnknown_203B258->s0.unk3C, TRUE, TRUE); sub_8013818(&sUnknown_203B258->s0.input, 229, 10, sUnknown_203B258->s0.unk34); sub_801DB54(); sub_801DBD4(); @@ -80,9 +80,9 @@ UNUSED static void sub_801DADC(bool8 a0) void sub_801DB0C(void) { if (sUnknown_203B258 != NULL) { - sUnknown_203B258->s0.unk3C[sUnknown_203B258->s0.unk34] = sUnknown_80DBF70; + sUnknown_203B258->s0.unk3C.a0[sUnknown_203B258->s0.unk34] = sUnknown_80DBF70; ResetUnusedInputStruct(); - xxx_call_save_unk_text_struct_800641C(sUnknown_203B258->s0.unk3C, TRUE, TRUE); + xxx_call_save_unk_text_struct_800641C(&sUnknown_203B258->s0.unk3C, TRUE, TRUE); MemoryFree(sUnknown_203B258); sUnknown_203B258 = NULL; } @@ -96,7 +96,7 @@ static void sub_801DB54(void) sUnknown_203B258->unk9C.f3 = 0; ResetUnusedInputStruct(); - xxx_call_save_unk_text_struct_800641C(sUnknown_203B258->s0.unk3C, TRUE, TRUE); + xxx_call_save_unk_text_struct_800641C(&sUnknown_203B258->s0.unk3C, TRUE, TRUE); SUB_80095E4_CALL(sUnknown_203B258->s0); } diff --git a/src/code_801EE10.c b/src/code_801EE10.c index 3c0b70c68..0ce383ec7 100644 --- a/src/code_801EE10.c +++ b/src/code_801EE10.c @@ -84,16 +84,16 @@ u8 sub_801EE10(u32 param_1, s16 species, Move *moves, u32 param_4, const u8 *tex if (iVar8 < four) { iVar8 = 4; } - RestoreUnkTextStruct_8006518(gUnknown_203B270->unk58); + RestoreUnkTextStruct_8006518(&gUnknown_203B270->unk58); gUnknown_203B270->unk50 = param_6; - gUnknown_203B270->unk58[param_6] = gUnknown_80DC25C; + gUnknown_203B270->unk58.a0[param_6] = gUnknown_80DC25C; if (gUnknown_203B270->text != NULL) { gUnknown_203B270->unk54 = sub_8006544(param_6); - gUnknown_203B270->unk58[gUnknown_203B270->unk54] = gUnknown_80DC274; + gUnknown_203B270->unk58.a0[gUnknown_203B270->unk54] = gUnknown_80DC274; } - sub_8012D08(&gUnknown_203B270->unk58[gUnknown_203B270->unk50],iVar8); + sub_8012D08(&gUnknown_203B270->unk58.a0[gUnknown_203B270->unk50],iVar8); ResetUnusedInputStruct(); - xxx_call_save_unk_text_struct_800641C(gUnknown_203B270->unk58, TRUE, TRUE); + xxx_call_save_unk_text_struct_800641C(&gUnknown_203B270->unk58, TRUE, TRUE); sub_8013818(&gUnknown_203B270->input,iVar5,iVar5,param_6); sub_8013780(&gUnknown_203B270->input,0); sub_801F280(TRUE); @@ -250,7 +250,7 @@ void sub_801F1B0(bool8 param_1, bool8 param_2) if(!gUnknown_203B270->unk4) gUnknown_203B270->unk4 = param_2; ResetUnusedInputStruct(); - xxx_call_save_unk_text_struct_800641C(gUnknown_203B270->unk58, TRUE, TRUE); + xxx_call_save_unk_text_struct_800641C(&gUnknown_203B270->unk58, TRUE, TRUE); gUnknown_203B270->input.unk22 = sub_801F3F8(); sub_8013984(&gUnknown_203B270->input); gUnknown_203B270->input.menuIndex = sub_8092F4C(gUnknown_203B270->moves, gUnknown_203B270->input.menuIndex); @@ -263,13 +263,13 @@ void sub_801F214(void) { if(gUnknown_203B270) { - gUnknown_203B270->unk58[gUnknown_203B270->unk50] = gUnknown_80DC240; + gUnknown_203B270->unk58.a0[gUnknown_203B270->unk50] = gUnknown_80DC240; if(gUnknown_203B270->text) { - gUnknown_203B270->unk58[gUnknown_203B270->unk54] = gUnknown_80DC240; + gUnknown_203B270->unk58.a0[gUnknown_203B270->unk54] = gUnknown_80DC240; } ResetUnusedInputStruct(); - xxx_call_save_unk_text_struct_800641C(gUnknown_203B270->unk58, TRUE, TRUE); + xxx_call_save_unk_text_struct_800641C(&gUnknown_203B270->unk58, TRUE, TRUE); MemoryFree(gUnknown_203B270); gUnknown_203B270 = NULL; } diff --git a/src/code_801F428.c b/src/code_801F428.c index f6a3dc033..82a225896 100644 --- a/src/code_801F428.c +++ b/src/code_801F428.c @@ -52,16 +52,16 @@ bool8 sub_801F428(s16 index, s32 param_2) gUnknown_203B274->pokeStruct = &gRecruitedPokemonRef->pokemon[index_s32]; gUnknown_203B274->unk4 = &gUnknown_203B274->unk8; gUnknown_203B274->s348.s0.unk34 = param_2; - gUnknown_203B274->s348.s0.unk38 = &gUnknown_203B274->s348.s0.unk3C[gUnknown_203B274->s348.s0.unk34]; - RestoreUnkTextStruct_8006518(gUnknown_203B274->s348.s0.unk3C); - gUnknown_203B274->s348.s0.unk3C[gUnknown_203B274->s348.s0.unk34] = sUnknown_80DC2C4; + gUnknown_203B274->s348.s0.unk38 = &gUnknown_203B274->s348.s0.unk3C.a0[gUnknown_203B274->s348.s0.unk34]; + RestoreUnkTextStruct_8006518(&gUnknown_203B274->s348.s0.unk3C); + gUnknown_203B274->s348.s0.unk3C.a0[gUnknown_203B274->s348.s0.unk34] = sUnknown_80DC2C4; gUnknown_203B274->s348.s0.unk38->unk14 = &gUnknown_203B274->s348.unk9C; gUnknown_203B274->s348.unk9C.f0 = 1; gUnknown_203B274->s348.unk9C.f1 = 0; gUnknown_203B274->s348.unk9C.f2 = 0xC; gUnknown_203B274->s348.unk9C.f3 = 0; ResetUnusedInputStruct(); - xxx_call_save_unk_text_struct_800641C(gUnknown_203B274->s348.s0.unk3C, TRUE, TRUE); + xxx_call_save_unk_text_struct_800641C(&gUnknown_203B274->s348.s0.unk3C, TRUE, TRUE); sub_8013818(&gUnknown_203B274->s348.s0.input, sub_801F7E4(), 4, param_2); sub_801F690(); sub_801F700(); @@ -108,7 +108,7 @@ u16 sub_801F5B4(void) void sub_801F5F0(bool8 r0) { ResetUnusedInputStruct(); - xxx_call_save_unk_text_struct_800641C(gUnknown_203B274->s348.s0.unk3C, FALSE, FALSE); + xxx_call_save_unk_text_struct_800641C(&gUnknown_203B274->s348.s0.unk3C, FALSE, FALSE); sub_8013984(&gUnknown_203B274->s348.s0.input); sub_801F690(); sub_801F700(); @@ -120,9 +120,9 @@ void sub_801F63C(void) { if(gUnknown_203B274 != NULL) { - gUnknown_203B274->s348.s0.unk3C[gUnknown_203B274->s348.s0.unk34] = sUnknown_80DC2AC; + gUnknown_203B274->s348.s0.unk3C.a0[gUnknown_203B274->s348.s0.unk34] = sUnknown_80DC2AC; ResetUnusedInputStruct(); - xxx_call_save_unk_text_struct_800641C(gUnknown_203B274->s348.s0.unk3C, TRUE, TRUE); + xxx_call_save_unk_text_struct_800641C(&gUnknown_203B274->s348.s0.unk3C, TRUE, TRUE); MemoryFree(gUnknown_203B274); gUnknown_203B274 = NULL; } diff --git a/src/code_801F808.c b/src/code_801F808.c index 7e42bc5a9..9fd0847bc 100644 --- a/src/code_801F808.c +++ b/src/code_801F808.c @@ -24,7 +24,7 @@ struct unkStruct_203B278 MenuInputStruct unk28; u32 unk5C; UnkTextStruct2 *unk60; - UnkTextStruct2 unk64[4]; + UnkTextStruct3 unk64; UnkTextStruct2_sub2 unkC4; MenuInputStructSub unkC8; }; @@ -55,10 +55,10 @@ bool8 sub_801F808(u16 *moveIDs) ResetSprites(TRUE); gUnknown_203B278 = MemoryAlloc(sizeof(struct unkStruct_203B278), 8); gUnknown_203B278->unk5C = 0; - gUnknown_203B278->unk60 = gUnknown_203B278->unk64; - sub_80140B4(gUnknown_203B278->unk64); + gUnknown_203B278->unk60 = &gUnknown_203B278->unk64.a0[0]; + sub_80140B4(&gUnknown_203B278->unk64); ResetUnusedInputStruct(); - xxx_call_save_unk_text_struct_800641C(gUnknown_203B278->unk64, TRUE, TRUE); + xxx_call_save_unk_text_struct_800641C(&gUnknown_203B278->unk64, TRUE, TRUE); gUnknown_203B278->moveIDs = moveIDs; for(index = 4; index > 1; index--) @@ -93,9 +93,9 @@ void sub_801F8D0(void) { if(gUnknown_203B278) { - gUnknown_203B278->unk64[gUnknown_203B278->unk5C] = sUnknown_80DC2F8; + gUnknown_203B278->unk64.a0[gUnknown_203B278->unk5C] = sUnknown_80DC2F8; ResetUnusedInputStruct(); - xxx_call_save_unk_text_struct_800641C(gUnknown_203B278->unk64, TRUE, TRUE); + xxx_call_save_unk_text_struct_800641C(&gUnknown_203B278->unk64, TRUE, TRUE); MemoryFree(gUnknown_203B278); gUnknown_203B278 = NULL; } @@ -110,7 +110,7 @@ void sub_801F918(s32 newState) void sub_801F930(void) { - sub_80140B4(gUnknown_203B278->unk64); + sub_80140B4(&gUnknown_203B278->unk64); switch(gUnknown_203B278->state) { case 0: @@ -120,11 +120,11 @@ void sub_801F930(void) gUnknown_203B278->unkC4.f2 = 0x10; gUnknown_203B278->unkC4.f3 = 0; ResetUnusedInputStruct(); - xxx_call_save_unk_text_struct_800641C(gUnknown_203B278->unk64, TRUE, TRUE); + xxx_call_save_unk_text_struct_800641C(&gUnknown_203B278->unk64, TRUE, TRUE); break; case 1: ResetUnusedInputStruct(); - xxx_call_save_unk_text_struct_800641C(gUnknown_203B278->unk64, TRUE, TRUE); + xxx_call_save_unk_text_struct_800641C(&gUnknown_203B278->unk64, TRUE, TRUE); break; default: break; diff --git a/src/code_80227B8.c b/src/code_80227B8.c index 1558bce6d..80eb414c2 100644 --- a/src/code_80227B8.c +++ b/src/code_80227B8.c @@ -109,28 +109,28 @@ static void sub_802293C(void) { s32 i; - RestoreUnkTextStruct_8006518(sUnknown_203B294->unk148); + RestoreUnkTextStruct_8006518(&sUnknown_203B294->unk148); switch (sUnknown_203B294->state) { case 2: sub_8022D2C(); - sUnknown_203B294->unk148[2] = sUnknown_80DC5BC; - sub_8012CAC(&sUnknown_203B294->unk148[2], sUnknown_203B294->unkF8); - sUnknown_203B294->unk148[2].unkC = 6; + sUnknown_203B294->unk148.a0[2] = sUnknown_80DC5BC; + sub_8012CAC(&sUnknown_203B294->unk148.a0[2], sUnknown_203B294->unkF8); + sUnknown_203B294->unk148.a0[2].unkC = 6; break; case 3: - sUnknown_203B294->unk148[1] = sUnknown_80DC5D4; + sUnknown_203B294->unk148.a0[1] = sUnknown_80DC5D4; break; default: for (i = 0; i < 4; i++) - sUnknown_203B294->unk148[i] = sUnknown_80DC5A4; + sUnknown_203B294->unk148.a0[i] = sUnknown_80DC5A4; break; case 10 ... 16: break; } ResetUnusedInputStruct(); - xxx_call_save_unk_text_struct_800641C(sUnknown_203B294->unk148, TRUE, TRUE); + xxx_call_save_unk_text_struct_800641C(&sUnknown_203B294->unk148, TRUE, TRUE); } static void sub_8022A10(void) diff --git a/src/code_8023144.c b/src/code_8023144.c index 81dfb5e1c..860c49798 100644 --- a/src/code_8023144.c +++ b/src/code_8023144.c @@ -47,18 +47,18 @@ bool8 sub_8023144(s32 a0, s32 index, UnkTextStruct2_sub *sub, u32 a3) gUnknown_3001B5C->unk4 = gUnknown_203B298; gUnknown_3001B5C->s35C.s0.unk34 = index; - gUnknown_3001B5C->s35C.s0.unk38 = &gUnknown_3001B5C->s35C.s0.unk3C[index]; - RestoreUnkTextStruct_8006518(gUnknown_3001B5C->s35C.s0.unk3C); - gUnknown_3001B5C->s35C.s0.unk3C[gUnknown_3001B5C->s35C.s0.unk34] = sUnknown_80DC91C; + gUnknown_3001B5C->s35C.s0.unk38 = &gUnknown_3001B5C->s35C.s0.unk3C.a0[index]; + RestoreUnkTextStruct_8006518(&gUnknown_3001B5C->s35C.s0.unk3C); + gUnknown_3001B5C->s35C.s0.unk3C.a0[gUnknown_3001B5C->s35C.s0.unk34] = sUnknown_80DC91C; gUnknown_3001B5C->s35C.s0.unk38->unk14 = &gUnknown_3001B5C->s35C.unk9C; if (sub != NULL) - gUnknown_3001B5C->s35C.s0.unk3C[gUnknown_3001B5C->s35C.s0.unk34].unk8 = *sub; + gUnknown_3001B5C->s35C.s0.unk3C.a0[gUnknown_3001B5C->s35C.s0.unk34].unk8 = *sub; sub_8012D08(gUnknown_3001B5C->s35C.s0.unk38, a3); ResetUnusedInputStruct(); - xxx_call_save_unk_text_struct_800641C(gUnknown_3001B5C->s35C.s0.unk3C, TRUE, TRUE); + xxx_call_save_unk_text_struct_800641C(&gUnknown_3001B5C->s35C.s0.unk3C, TRUE, TRUE); sub_8013818(&gUnknown_3001B5C->s35C.s0.input, sub_80236A4(), a3, index); gUnknown_3001B5C->s35C.s0.input.menuIndex = gUnknown_203B29C; gUnknown_3001B5C->s35C.s0.input.unk1E = gUnknown_203B29E; @@ -112,7 +112,7 @@ s16 sub_802331C(void) void sub_8023354(bool8 cursorSprite) { ResetUnusedInputStruct(); - xxx_call_save_unk_text_struct_800641C(gUnknown_3001B5C->s35C.s0.unk3C, FALSE, FALSE); + xxx_call_save_unk_text_struct_800641C(&gUnknown_3001B5C->s35C.s0.unk3C, FALSE, FALSE); sub_8013984(&gUnknown_3001B5C->s35C.s0.input); sub_8023420(); sub_80234BC(); @@ -127,9 +127,9 @@ void sub_80233A0(void) gUnknown_203B298 = gUnknown_3001B5C->unk4; gUnknown_203B29C = gUnknown_3001B5C->s35C.s0.input.menuIndex; gUnknown_203B29E = gUnknown_3001B5C->s35C.s0.input.unk1E; - gUnknown_3001B5C->s35C.s0.unk3C[gUnknown_3001B5C->s35C.s0.unk34] = sUnknown_80DC904; + gUnknown_3001B5C->s35C.s0.unk3C.a0[gUnknown_3001B5C->s35C.s0.unk34] = sUnknown_80DC904; ResetUnusedInputStruct(); - xxx_call_save_unk_text_struct_800641C(gUnknown_3001B5C->s35C.s0.unk3C, TRUE, TRUE); + xxx_call_save_unk_text_struct_800641C(&gUnknown_3001B5C->s35C.s0.unk3C, TRUE, TRUE); MemoryFree(gUnknown_3001B5C); gUnknown_3001B5C = NULL; } diff --git a/src/code_8024458.c b/src/code_8024458.c index 5547d28d8..e8e3cb418 100644 --- a/src/code_8024458.c +++ b/src/code_8024458.c @@ -26,9 +26,9 @@ bool8 sub_8024458(s16 speciesNum, s32 a1) sUnknown_203B2AC = MemoryAlloc(sizeof(struct unkStruct_203B2AC), 8); sUnknown_203B2AC->speciesNum = speciesNum_s32; sUnknown_203B2AC->unkE0 = a1; - sUnknown_203B2AC->unkE4 = &sUnknown_203B2AC->unkE8[a1]; - RestoreUnkTextStruct_8006518(sUnknown_203B2AC->unkE8); - sUnknown_203B2AC->unkE8[sUnknown_203B2AC->unkE0] = sUnknown_80DC9C8; + sUnknown_203B2AC->unkE4 = &sUnknown_203B2AC->unkE8.a0[a1]; + RestoreUnkTextStruct_8006518(&sUnknown_203B2AC->unkE8); + sUnknown_203B2AC->unkE8.a0[sUnknown_203B2AC->unkE0] = sUnknown_80DC9C8; sUnknown_203B2AC->unkE4->unk14 = &sUnknown_203B2AC->unk148; sUnknown_203B2AC->unk148.f2 = 10; sub_8024604(); @@ -64,9 +64,9 @@ void sub_802452C(void) void sub_802453C(void) { if (sUnknown_203B2AC != NULL) { - sUnknown_203B2AC->unkE8[sUnknown_203B2AC->unkE0] = sUnknown_80DC9B0; + sUnknown_203B2AC->unkE8.a0[sUnknown_203B2AC->unkE0] = sUnknown_80DC9B0; ResetUnusedInputStruct(); - xxx_call_save_unk_text_struct_800641C(sUnknown_203B2AC->unkE8, TRUE, TRUE); + xxx_call_save_unk_text_struct_800641C(&sUnknown_203B2AC->unkE8, TRUE, TRUE); MemoryFree(sUnknown_203B2AC); sUnknown_203B2AC = NULL; } @@ -78,7 +78,7 @@ static void sub_8024588(void) sUnknown_203B2AC->unk148.f1 = sUnknown_203B2AC->input.unk1E; sUnknown_203B2AC->unk148.f3 = 0; ResetUnusedInputStruct(); - xxx_call_save_unk_text_struct_800641C(sUnknown_203B2AC->unkE8, TRUE, TRUE); + xxx_call_save_unk_text_struct_800641C(&sUnknown_203B2AC->unkE8, TRUE, TRUE); } static void sub_80245D0(void) diff --git a/src/code_802DB28.c b/src/code_802DB28.c index 8205833b3..b540962e7 100644 --- a/src/code_802DB28.c +++ b/src/code_802DB28.c @@ -92,18 +92,18 @@ static void sub_802DC40(void) { s32 i; - RestoreUnkTextStruct_8006518(sUnknown_203B2FC->unk48); + RestoreUnkTextStruct_8006518(&sUnknown_203B2FC->unk48); switch (sUnknown_203B2FC->state) { case 0: case 7: for (i = 0; i < 4; i++) - sUnknown_203B2FC->unk48[i] = sUnknown_80E016C; + sUnknown_203B2FC->unk48.a0[i] = sUnknown_80E016C; break; } ResetUnusedInputStruct(); - xxx_call_save_unk_text_struct_800641C(sUnknown_203B2FC->unk48, TRUE, TRUE); + xxx_call_save_unk_text_struct_800641C(&sUnknown_203B2FC->unk48, TRUE, TRUE); } static void sub_802DC9C(void) diff --git a/src/code_802DE84.c b/src/code_802DE84.c index 943d909a1..42806cfb7 100644 --- a/src/code_802DE84.c +++ b/src/code_802DE84.c @@ -22,9 +22,9 @@ bool8 sub_802DE84(unkStruct_802C39C *mail) sUnknown_203B300->mail = mail; sub_801317C(&sUnknown_203B300->unk0); sUnknown_203B300->unk10 = sUnknown_203B300->mail->unk0[0]; - sUnknown_203B300->unk14 = &sUnknown_203B300->unk18[sUnknown_203B300->unk10]; - RestoreUnkTextStruct_8006518(sUnknown_203B300->unk18); - sUnknown_203B300->unk18[sUnknown_203B300->unk10] = sUnknown_80E0264; + sUnknown_203B300->unk14 = &sUnknown_203B300->unk18.a0[sUnknown_203B300->unk10]; + RestoreUnkTextStruct_8006518(&sUnknown_203B300->unk18); + sUnknown_203B300->unk18.a0[sUnknown_203B300->unk10] = sUnknown_80E0264; sub_802DF14(); return TRUE; } @@ -52,9 +52,9 @@ static void sub_802DF14(void) void sub_802DF24(void) { if (sUnknown_203B300 != NULL) { - sUnknown_203B300->unk18[sUnknown_203B300->unk10] = sUnknown_80E0248; + sUnknown_203B300->unk18.a0[sUnknown_203B300->unk10] = sUnknown_80E0248; ResetUnusedInputStruct(); - xxx_call_save_unk_text_struct_800641C(sUnknown_203B300->unk18, TRUE, TRUE); + xxx_call_save_unk_text_struct_800641C(&sUnknown_203B300->unk18, TRUE, TRUE); MemoryFree(sUnknown_203B300); sUnknown_203B300 = NULL; } @@ -63,7 +63,7 @@ void sub_802DF24(void) static void sub_802DF6C(void) { ResetUnusedInputStruct(); - xxx_call_save_unk_text_struct_800641C(sUnknown_203B300->unk18, TRUE, TRUE); + xxx_call_save_unk_text_struct_800641C(&sUnknown_203B300->unk18, TRUE, TRUE); } static void sub_802DF88(void) diff --git a/src/code_8031D70.c b/src/code_8031D70.c index 50fd743b0..438aa1e81 100644 --- a/src/code_8031D70.c +++ b/src/code_8031D70.c @@ -19,7 +19,7 @@ struct unkStruct_203B334 MenuInputStructSub unk4; u32 unk10; UnkTextStruct2 *unk14; - UnkTextStruct2 unk18[4]; + UnkTextStruct3 unk18; u8 unk78[4]; }; @@ -58,9 +58,9 @@ bool8 sub_8031D70(u32 mailIndex, s32 param_2) gUnknown_203B334->mailIndex = mailIndex; sub_801317C(&gUnknown_203B334->unk4); gUnknown_203B334->unk10 = param_2; - gUnknown_203B334->unk14 = &gUnknown_203B334->unk18[param_2]; - RestoreUnkTextStruct_8006518(gUnknown_203B334->unk18); - gUnknown_203B334->unk18[gUnknown_203B334->unk10] = gUnknown_80E1FC4; + gUnknown_203B334->unk14 = &gUnknown_203B334->unk18.a0[param_2]; + RestoreUnkTextStruct_8006518(&gUnknown_203B334->unk18); + gUnknown_203B334->unk18.a0[gUnknown_203B334->unk10] = gUnknown_80E1FC4; sub_8031E00(); return TRUE; } @@ -90,9 +90,9 @@ void sub_8031E10(void) { if(gUnknown_203B334) { - gUnknown_203B334->unk18[gUnknown_203B334->unk10] = gUnknown_80E1FA8; + gUnknown_203B334->unk18.a0[gUnknown_203B334->unk10] = gUnknown_80E1FA8; ResetUnusedInputStruct(); - xxx_call_save_unk_text_struct_800641C(gUnknown_203B334->unk18, TRUE, TRUE); + xxx_call_save_unk_text_struct_800641C(&gUnknown_203B334->unk18, TRUE, TRUE); MemoryFree(gUnknown_203B334); gUnknown_203B334 = NULL; } @@ -101,7 +101,7 @@ void sub_8031E10(void) void sub_8031E58(void) { ResetUnusedInputStruct(); - xxx_call_save_unk_text_struct_800641C(gUnknown_203B334->unk18, TRUE, TRUE); + xxx_call_save_unk_text_struct_800641C(&gUnknown_203B334->unk18, TRUE, TRUE); } void DrawSOSPasswordScreen(void) diff --git a/src/code_803E724.c b/src/code_803E724.c index 847abf862..c640b874d 100644 --- a/src/code_803E724.c +++ b/src/code_803E724.c @@ -45,10 +45,10 @@ extern MenuInputStruct gUnknown_202EE10; extern SpriteOAM gUnknown_202EDDC; extern const RGB gUnknown_80F62AC; -extern const struct UnkTextStruct2 gUnknown_80F62B0[]; -extern const struct UnkTextStruct2 gUnknown_80F6310[]; -extern const struct UnkTextStruct2 gUnknown_80F6370[]; -extern const struct UnkTextStruct2 gUnknown_80F63D0[]; +extern const struct UnkTextStruct3 gUnknown_80F62B0; +extern const struct UnkTextStruct3 gUnknown_80F6310; +extern const struct UnkTextStruct3 gUnknown_80F6370; +extern const struct UnkTextStruct3 gUnknown_80F63D0; extern const u32 gUnknown_80F6490[]; extern const s32 gUnknown_80F64B4[]; extern const s32 gUnknown_80F64FC[]; @@ -203,7 +203,7 @@ void sub_803EAF0(u32 a0, u8 *a1) } break; case 3: - xxx_call_save_unk_text_struct_800641C(gUnknown_80F62B0, TRUE, TRUE); + xxx_call_save_unk_text_struct_800641C(&gUnknown_80F62B0, TRUE, TRUE); if (gUnknown_203B40C != 0) { sub_8040ABC(1); } @@ -213,14 +213,14 @@ void sub_803EAF0(u32 a0, u8 *a1) sub_8052210(0); } ResetUnusedInputStruct(); - xxx_call_save_unk_text_struct_800641C(gUnknown_80F6310, TRUE, TRUE); + xxx_call_save_unk_text_struct_800641C(&gUnknown_80F6310, TRUE, TRUE); break; case 7: if (gUnknown_203B40C != 0) { sub_8052210(0); } ResetUnusedInputStruct(); - xxx_call_save_unk_text_struct_800641C(gUnknown_80F6370, TRUE, TRUE); + xxx_call_save_unk_text_struct_800641C(&gUnknown_80F6370, TRUE, TRUE); break; case 2: case 4: @@ -250,7 +250,7 @@ void sub_803EAF0(u32 a0, u8 *a1) sub_8083D44(); } ResetUnusedInputStruct(); - xxx_call_save_unk_text_struct_800641C(gUnknown_80F63D0, FALSE, TRUE); + xxx_call_save_unk_text_struct_800641C(&gUnknown_80F63D0, FALSE, TRUE); break; case 10: sub_8083D44(); @@ -272,7 +272,7 @@ void sub_803EC94(void) sub_801317C(&gUnknown_202EE10.unk28); } -void sub_803ECB4(UnkTextStruct2 *a0, bool8 a1) +void sub_803ECB4(UnkTextStruct3 *a0, bool8 a1) { gUnknown_202EDD0 = 10; sub_8052210(0); diff --git a/src/code_805D8C8_1.c b/src/code_805D8C8_1.c index 58aad9578..6c35adaa6 100644 --- a/src/code_805D8C8_1.c +++ b/src/code_805D8C8_1.c @@ -1675,14 +1675,6 @@ extern bool8 sub_8044F3C(s32 param_1); extern s32 gUnknown_202EE6C; extern const u8 gUnknown_8106B50[]; -typedef struct UnkTextStruct3 { - UnkTextStruct2 a0[4]; - // Something ugly, so that sub_805FD74 could match weird compiler memcpy/stack initialization - #ifndef NONMATCHING - u8 fakeMatch[0]; - #endif // NONMATCHING -} UnkTextStruct3; - extern void sub_803ECB4(UnkTextStruct3 *a0, u8 a1); static void CreateFieldItemMenu(s32 a0, Entity *a1, bool8 a2, bool8 a3, UnkTextStruct3 *a4, UnkTextStruct2_sub2 *a5); diff --git a/src/code_8066D04.c b/src/code_8066D04.c index 27e13b120..211bbc2bf 100644 --- a/src/code_8066D04.c +++ b/src/code_8066D04.c @@ -897,10 +897,6 @@ void sub_8067904(Entity *entity, u16 moveId) } } -typedef struct UnkTextStruct3 { - UnkTextStruct2 a0[4]; -} UnkTextStruct3; - extern void sub_80684C4(void); void sub_8045064(void); extern void sub_8083CE0(u8 param_1); diff --git a/src/code_8072F3C.c b/src/code_8072F3C.c index 29c6f7496..c4d281a63 100644 --- a/src/code_8072F3C.c +++ b/src/code_8072F3C.c @@ -76,22 +76,22 @@ u32 sub_802F73C(u32 r0, UnkTextStruct2_sub *r1, u32 r2, u8 r3) gUnknown_203B314->unkB8 = r3; gUnknown_203B314->sBC.s0.unk34 = r0; - gUnknown_203B314->sBC.s0.unk38 = &gUnknown_203B314->sBC.s0.unk3C[gUnknown_203B314->sBC.s0.unk34]; - RestoreUnkTextStruct_8006518(gUnknown_203B314->sBC.s0.unk3C); + gUnknown_203B314->sBC.s0.unk38 = &gUnknown_203B314->sBC.s0.unk3C.a0[gUnknown_203B314->sBC.s0.unk34]; + RestoreUnkTextStruct_8006518(&gUnknown_203B314->sBC.s0.unk3C); if (r3 != 0) - gUnknown_203B314->sBC.s0.unk3C[gUnknown_203B314->sBC.s0.unk34] = gUnknown_80E072C; + gUnknown_203B314->sBC.s0.unk3C.a0[gUnknown_203B314->sBC.s0.unk34] = gUnknown_80E072C; else - gUnknown_203B314->sBC.s0.unk3C[gUnknown_203B314->sBC.s0.unk34] = gUnknown_80E0714; + gUnknown_203B314->sBC.s0.unk3C.a0[gUnknown_203B314->sBC.s0.unk34] = gUnknown_80E0714; gUnknown_203B314->sBC.s0.unk38->unk14 = &gUnknown_203B314->sBC.unk9C; if (r1 != 0) - gUnknown_203B314->sBC.s0.unk3C[gUnknown_203B314->sBC.s0.unk34].unk8 = *r1; + gUnknown_203B314->sBC.s0.unk3C.a0[gUnknown_203B314->sBC.s0.unk34].unk8 = *r1; sub_8012D08(gUnknown_203B314->sBC.s0.unk38, r2); ResetUnusedInputStruct(); - xxx_call_save_unk_text_struct_800641C(gUnknown_203B314->sBC.s0.unk3C, TRUE, TRUE); + xxx_call_save_unk_text_struct_800641C(&gUnknown_203B314->sBC.s0.unk3C, TRUE, TRUE); sub_8013818(&gUnknown_203B314->sBC.s0.input, sub_802FBF4(), r2, r0); sub_802F9C0(); sub_802FA50(); @@ -169,9 +169,9 @@ void sub_802F974(void) { if(gUnknown_203B314 != NULL) { - gUnknown_203B314->sBC.s0.unk3C[gUnknown_203B314->sBC.s0.unk34] = gUnknown_80E06FC; + gUnknown_203B314->sBC.s0.unk3C.a0[gUnknown_203B314->sBC.s0.unk34] = gUnknown_80E06FC; ResetUnusedInputStruct(); - xxx_call_save_unk_text_struct_800641C(gUnknown_203B314->sBC.s0.unk3C, TRUE, TRUE); + xxx_call_save_unk_text_struct_800641C(&gUnknown_203B314->sBC.s0.unk3C, TRUE, TRUE); MemoryFree(gUnknown_203B314); gUnknown_203B314 = NULL; } diff --git a/src/credits1.c b/src/credits1.c index 0008e6101..6fe585879 100644 --- a/src/credits1.c +++ b/src/credits1.c @@ -31,11 +31,11 @@ bool8 DrawCredits(s32 creditsCategoryIndex, s32 param_2) sCredits1Work->creditsCategoryIndex = creditsCategoryIndex; for (i = 0; i < 4; i++) - sCredits1Work->unk0[i] = gUnknown_80E4A10; - sCredits1Work->unk0[0] = gUnknown_80E4A28; + sCredits1Work->unk0.a0[i] = gUnknown_80E4A10; + sCredits1Work->unk0.a0[0] = gUnknown_80E4A28; ResetUnusedInputStruct(); - xxx_call_save_unk_text_struct_800641C(&sCredits1Work->unk0[0], TRUE, TRUE); + xxx_call_save_unk_text_struct_800641C(&sCredits1Work->unk0, TRUE, TRUE); sub_8099690(2); sub_80073B8(0); diff --git a/src/debug_menu1.c b/src/debug_menu1.c index 3b34de591..f0dfbb1a6 100644 --- a/src/debug_menu1.c +++ b/src/debug_menu1.c @@ -47,10 +47,10 @@ void CreateDebugMenu(void) } for (i = 0; i < 4; i++) - sDebugMenu->unk140[i] = sUnknown_80E7D40; + sDebugMenu->unk140.a0[i] = sUnknown_80E7D40; ResetUnusedInputStruct(); - xxx_call_save_unk_text_struct_800641C(sDebugMenu->unk140, TRUE, TRUE); + xxx_call_save_unk_text_struct_800641C(&sDebugMenu->unk140, TRUE, TRUE); SetDebugMenuItems(); } @@ -118,13 +118,13 @@ u32 UpdateDebugMenu(void) static void SetDebugMenuItems(void) { - SetMenuItems(sDebugMenu->unk0, sDebugMenu->unk140, 0, &sUnknown_80E7D58, sDebugMenuItems, TRUE, 13, FALSE); + SetMenuItems(sDebugMenu->unk0, &sDebugMenu->unk140, 0, &sUnknown_80E7D58, sDebugMenuItems, TRUE, 13, FALSE); sub_8035CF4(sDebugMenu->unk0, 0, 1); } static void sub_803A3A0(void) { - sub_8035CC0(sDebugMenu->unk140, 0); + sub_8035CC0(&sDebugMenu->unk140, 0); } static void sub_803A3BC(void) diff --git a/src/debug_menu2.c b/src/debug_menu2.c index 39a8c6d67..08a771c3a 100644 --- a/src/debug_menu2.c +++ b/src/debug_menu2.c @@ -80,23 +80,23 @@ static void sub_803A51C(void) { s32 i; - RestoreUnkTextStruct_8006518(sUnknown_203B3F0->unkD8); + RestoreUnkTextStruct_8006518(&sUnknown_203B3F0->unkD8); switch (sUnknown_203B3F0->state) { case 3: - sUnknown_203B3F0->unkD8[1] = sUnknown_80E7E64; + sUnknown_203B3F0->unkD8.a0[1] = sUnknown_80E7E64; break; case 2: - sUnknown_203B3F0->unkD8[2] = sUnknown_80E7E4C; + sUnknown_203B3F0->unkD8.a0[2] = sUnknown_80E7E4C; break; default: for (i = 0; i < 4; i++) - sUnknown_203B3F0->unkD8[i] = sUnknown_80E7E34; + sUnknown_203B3F0->unkD8.a0[i] = sUnknown_80E7E34; break; } ResetUnusedInputStruct(); - xxx_call_save_unk_text_struct_800641C(sUnknown_203B3F0->unkD8, TRUE, TRUE); + xxx_call_save_unk_text_struct_800641C(&sUnknown_203B3F0->unkD8, TRUE, TRUE); } static void sub_803A5A0(void) @@ -121,7 +121,7 @@ static void sub_803A5A0(void) sUnknown_203B3F0->unk9C.unkC = 999; sUnknown_203B3F0->unk9C.unk4 = gTeamInventoryRef->teamStorage[sUnknown_203B3F0->id]; sUnknown_203B3F0->unk9C.unk14 = 1; - sUnknown_203B3F0->unk9C.unk18 = &sUnknown_203B3F0->unkD8[1]; + sUnknown_203B3F0->unk9C.unk18 = &sUnknown_203B3F0->unkD8.a0[1]; sUnknown_203B3F0->unk9C.unk1C = 44; sUnknown_203B3F0->unk9C.unk20 = 18; sub_8013AA0(&sUnknown_203B3F0->unk9C); diff --git a/src/debug_menu3.c b/src/debug_menu3.c index dffb89dab..970a5348f 100644 --- a/src/debug_menu3.c +++ b/src/debug_menu3.c @@ -79,17 +79,17 @@ static void sub_803A93C(void) { s32 i; - RestoreUnkTextStruct_8006518(sUnknown_203B3F4->unk9C); + RestoreUnkTextStruct_8006518(&sUnknown_203B3F4->unk9C); if (sUnknown_203B3F4->state == 2) - sUnknown_203B3F4->unk9C[2] = sUnknown_80E7EA4; + sUnknown_203B3F4->unk9C.a0[2] = sUnknown_80E7EA4; else { for(i = 0; i < 4; i++) - sUnknown_203B3F4->unk9C[i] = sUnknown_80E7E8C; + sUnknown_203B3F4->unk9C.a0[i] = sUnknown_80E7E8C; } ResetUnusedInputStruct(); - xxx_call_save_unk_text_struct_800641C(sUnknown_203B3F4->unk9C, TRUE, TRUE); + xxx_call_save_unk_text_struct_800641C(&sUnknown_203B3F4->unk9C, TRUE, TRUE); } static void sub_803A9AC(void) diff --git a/src/debug_menu4.c b/src/debug_menu4.c index a808ecef5..c420c9e5d 100644 --- a/src/debug_menu4.c +++ b/src/debug_menu4.c @@ -82,25 +82,25 @@ static void sub_803ACE8(void) { s32 i; - RestoreUnkTextStruct_8006518(sUnknown_203B3F8->unkE0); + RestoreUnkTextStruct_8006518(&sUnknown_203B3F8->unkE0); switch (sUnknown_203B3F8->state) { case 3: sub_803AEB0(); - sUnknown_203B3F8->unkE0[2] = sUnknown_80E7EEC; - sub_8012CAC(&sUnknown_203B3F8->unkE0[2], sUnknown_203B3F8->unk90); + sUnknown_203B3F8->unkE0.a0[2] = sUnknown_80E7EEC; + sub_8012CAC(&sUnknown_203B3F8->unkE0.a0[2], sUnknown_203B3F8->unk90); break; case 5: - sUnknown_203B3F8->unkE0[3] = sUnknown_80E7F04; + sUnknown_203B3F8->unkE0.a0[3] = sUnknown_80E7F04; break; default: for (i = 0; i < 4; i++) - sUnknown_203B3F8->unkE0[i] = sUnknown_80E7ED4; + sUnknown_203B3F8->unkE0.a0[i] = sUnknown_80E7ED4; break; } ResetUnusedInputStruct(); - xxx_call_save_unk_text_struct_800641C(sUnknown_203B3F8->unkE0, TRUE, TRUE); + xxx_call_save_unk_text_struct_800641C(&sUnknown_203B3F8->unkE0, TRUE, TRUE); } static void sub_803AD88(void) @@ -122,7 +122,7 @@ static void sub_803AD88(void) sUnknown_203B3F8->unk60.unkC = 100; sUnknown_203B3F8->unk60.unk4 = sUnknown_203B3F8->pokemon->level; sUnknown_203B3F8->unk60.unk14 = 3; - sUnknown_203B3F8->unk60.unk18 = &sUnknown_203B3F8->unkE0[3]; + sUnknown_203B3F8->unk60.unk18 = &sUnknown_203B3F8->unkE0.a0[3]; sUnknown_203B3F8->unk60.unk1C = 44; sUnknown_203B3F8->unk60.unk20 = 18; sub_8013AA0(&sUnknown_203B3F8->unk60); diff --git a/src/felicity_bank.c b/src/felicity_bank.c index 1280b9034..a4c107bca 100644 --- a/src/felicity_bank.c +++ b/src/felicity_bank.c @@ -130,32 +130,32 @@ static void sub_801645C(void) { s32 i; - RestoreUnkTextStruct_8006518(sFelicityBankWork->unkA8); + RestoreUnkTextStruct_8006518(&sFelicityBankWork->unkA8); switch (sFelicityBankWork->currState) { case 2: - sFelicityBankWork->unkA8[0].unk0 = 0x80; - sFelicityBankWork->unkA8[1].unk0 = 0x80; - sFelicityBankWork->unkA8[2].unk0 = 0x80; - sFelicityBankWork->unkA8[3] = sUnknown_80DB6F4; + sFelicityBankWork->unkA8.a0[0].unk0 = 0x80; + sFelicityBankWork->unkA8.a0[1].unk0 = 0x80; + sFelicityBankWork->unkA8.a0[2].unk0 = 0x80; + sFelicityBankWork->unkA8.a0[3] = sUnknown_80DB6F4; ResetUnusedInputStruct(); - xxx_call_save_unk_text_struct_800641C(sFelicityBankWork->unkA8, TRUE, FALSE); + xxx_call_save_unk_text_struct_800641C(&sFelicityBankWork->unkA8, TRUE, FALSE); break; case FELICITY_BANK_STORE_HOW_MUCH: case FELICITY_BANK_TAKE_HOW_MUCH: - sFelicityBankWork->unkA8[0].unk0 = 0x80; - sFelicityBankWork->unkA8[1].unk0 = 0x80; - sFelicityBankWork->unkA8[3] = sUnknown_80DB6F4; - sFelicityBankWork->unkA8[2] = sUnknown_80DB70C; + sFelicityBankWork->unkA8.a0[0].unk0 = 0x80; + sFelicityBankWork->unkA8.a0[1].unk0 = 0x80; + sFelicityBankWork->unkA8.a0[3] = sUnknown_80DB6F4; + sFelicityBankWork->unkA8.a0[2] = sUnknown_80DB70C; ResetUnusedInputStruct(); - xxx_call_save_unk_text_struct_800641C(sFelicityBankWork->unkA8, TRUE, FALSE); + xxx_call_save_unk_text_struct_800641C(&sFelicityBankWork->unkA8, TRUE, FALSE); break; default: for (i = 0; i < 4; i++) - sFelicityBankWork->unkA8[i] = sUnknown_80DB6DC; + sFelicityBankWork->unkA8.a0[i] = sUnknown_80DB6DC; ResetUnusedInputStruct(); - xxx_call_save_unk_text_struct_800641C(sFelicityBankWork->unkA8, TRUE, TRUE); + xxx_call_save_unk_text_struct_800641C(&sFelicityBankWork->unkA8, TRUE, TRUE); break; } } @@ -218,7 +218,7 @@ static void UpdateFelicityBankDialogue(void) sFelicityBankWork->unk64.unk8 = 1; sFelicityBankWork->unk64.unk10 = 5; sFelicityBankWork->unk64.unk14 = 2; - sFelicityBankWork->unk64.unk18 = &sFelicityBankWork->unkA8[2]; + sFelicityBankWork->unk64.unk18 = &sFelicityBankWork->unkA8.a0[2]; sFelicityBankWork->unk64.unk1C = 0x50; sFelicityBankWork->unk64.unk20 = 0x12; sub_8013AA0(&sFelicityBankWork->unk64); @@ -253,7 +253,7 @@ static void UpdateFelicityBankDialogue(void) sFelicityBankWork->unk64.unk8 = 1; sFelicityBankWork->unk64.unk10 = 5; sFelicityBankWork->unk64.unk14 = 2; - sFelicityBankWork->unk64.unk18 = &sFelicityBankWork->unkA8[2]; + sFelicityBankWork->unk64.unk18 = &sFelicityBankWork->unkA8.a0[2]; sFelicityBankWork->unk64.unk1C = 0x50; sFelicityBankWork->unk64.unk20 = 0x12; sub_8013AA0(&sFelicityBankWork->unk64); diff --git a/src/friend_area_action_menu.c b/src/friend_area_action_menu.c index bad311ce8..4adf5fb09 100644 --- a/src/friend_area_action_menu.c +++ b/src/friend_area_action_menu.c @@ -142,29 +142,29 @@ void sub_802719C(void) { s32 index; - RestoreUnkTextStruct_8006518(sUnknown_203B2BC->unk180); + RestoreUnkTextStruct_8006518(&sUnknown_203B2BC->unk180); switch(sUnknown_203B2BC->state) { case 3: - sUnknown_203B2BC->unk180[3] = sUnknown_80DD74C; + sUnknown_203B2BC->unk180.a0[3] = sUnknown_80DD74C; CreateFriendActionMenu(); - sUnknown_203B2BC->unk180[2] = sUnknown_80DD704; - sub_8012CAC(&sUnknown_203B2BC->unk180[2], sUnknown_203B2BC->menuItems); + sUnknown_203B2BC->unk180.a0[2] = sUnknown_80DD704; + sub_8012CAC(&sUnknown_203B2BC->unk180.a0[2], sUnknown_203B2BC->menuItems); break; case 0xC: sub_80276A8(); - sUnknown_203B2BC->unk180[2] = sUnknown_80DD71C; - sub_8012CAC(&sUnknown_203B2BC->unk180[2], sUnknown_203B2BC->menuItems); + sUnknown_203B2BC->unk180.a0[2] = sUnknown_80DD71C; + sub_8012CAC(&sUnknown_203B2BC->unk180.a0[2], sUnknown_203B2BC->menuItems); break; default: for(index = 0; index < 4; index++) { - sUnknown_203B2BC->unk180[index] = sUnknown_80DD6EC; + sUnknown_203B2BC->unk180.a0[index] = sUnknown_80DD6EC; } break; } ResetUnusedInputStruct(); - xxx_call_save_unk_text_struct_800641C(sUnknown_203B2BC->unk180, TRUE, TRUE); + xxx_call_save_unk_text_struct_800641C(&sUnknown_203B2BC->unk180, TRUE, TRUE); } void sub_8027274(void) diff --git a/src/friend_list_menu.c b/src/friend_list_menu.c index 4f391f3c9..2d7b31eff 100644 --- a/src/friend_list_menu.c +++ b/src/friend_list_menu.c @@ -145,31 +145,31 @@ void sub_802544C(void) { s32 i; - RestoreUnkTextStruct_8006518(gUnknown_203B2B4->unk118); + RestoreUnkTextStruct_8006518(&gUnknown_203B2B4->unk118); switch (gUnknown_203B2B4->state) { case 3: if (gUnknown_203B2B4->unk0 == 0) - gUnknown_203B2B4->unk118[3] = sUnknown_80DD190; + gUnknown_203B2B4->unk118.a0[3] = sUnknown_80DD190; sub_8025728(); - gUnknown_203B2B4->unk118[2] = sUnknown_80DD160; - sub_8012CAC(&gUnknown_203B2B4->unk118[2], gUnknown_203B2B4->unkC8); + gUnknown_203B2B4->unk118.a0[2] = sUnknown_80DD160; + sub_8012CAC(&gUnknown_203B2B4->unk118.a0[2], gUnknown_203B2B4->unkC8); break; case 13: sub_802591C(); - gUnknown_203B2B4->unk118[2] = sUnknown_80DD178; - sub_8012CAC(&gUnknown_203B2B4->unk118[2], gUnknown_203B2B4->unkC8); + gUnknown_203B2B4->unk118.a0[2] = sUnknown_80DD178; + sub_8012CAC(&gUnknown_203B2B4->unk118.a0[2], gUnknown_203B2B4->unkC8); break; default: for (i = 0; i < 4; i++) - gUnknown_203B2B4->unk118[i] = sUnknown_80DD148; + gUnknown_203B2B4->unk118.a0[i] = sUnknown_80DD148; break; } ResetUnusedInputStruct(); - xxx_call_save_unk_text_struct_800641C(gUnknown_203B2B4->unk118, TRUE, TRUE); + xxx_call_save_unk_text_struct_800641C(&gUnknown_203B2B4->unk118, TRUE, TRUE); } void sub_8025518(void) diff --git a/src/friend_rescue.c b/src/friend_rescue.c index c5926d6f1..519abcba1 100644 --- a/src/friend_rescue.c +++ b/src/friend_rescue.c @@ -842,7 +842,7 @@ void sub_8032828(void) CreateDialogueBoxAndPortrait(&gUnknown_80E2A0C[0], 0, 0, 0x101); break; case 0x3A: - RestoreUnkTextStruct_8006518(gUnknown_203B33C->unk3BC); + RestoreUnkTextStruct_8006518(&gUnknown_203B33C->unk3BC); ResetUnusedInputStruct(); xxx_call_save_unk_text_struct_800641C(NULL, TRUE, TRUE); sub_8031D70(gUnknown_203B33C->unk218, 0); @@ -900,8 +900,8 @@ void sub_8032828(void) sub_8023868(3, 0, 0, 9); break; case 0x27: - RestoreUnkTextStruct_8006518(gUnknown_203B33C->unk35C); - SetMenuItems(gUnknown_203B33C->unk21C, gUnknown_203B33C->unk35C, 3, &gUnknown_80E2334, gUnknown_80E234C, TRUE, 0, FALSE); + RestoreUnkTextStruct_8006518(&gUnknown_203B33C->unk35C); + SetMenuItems(gUnknown_203B33C->unk21C, &gUnknown_203B33C->unk35C, 3, &gUnknown_80E2334, gUnknown_80E234C, TRUE, 0, FALSE); sub_8023DA4(); sub_8035CF4(gUnknown_203B33C->unk21C, 3, 1); break; @@ -1051,7 +1051,7 @@ void sub_8032828(void) CreateDialogueBoxAndPortrait(&gUnknown_80E3078[0], 0, 0, 0x101); break; case 0x1A: - RestoreUnkTextStruct_8006518(gUnknown_203B33C->unk3BC); + RestoreUnkTextStruct_8006518(&gUnknown_203B33C->unk3BC); ResetUnusedInputStruct(); xxx_call_save_unk_text_struct_800641C(NULL, TRUE, TRUE); sub_80151C0(4, gUnknown_203B33C->passwordBuffer); @@ -1063,8 +1063,8 @@ void sub_8032828(void) CreateDialogueBoxAndPortrait(gUnknown_80E30D0, 0, 0, 0x101); break; case 0x5D: - RestoreUnkTextStruct_8006518(gUnknown_203B33C->unk35C); - SetMenuItems(gUnknown_203B33C->unk21C, gUnknown_203B33C->unk35C, 3, &gUnknown_80E231C, gUnknown_80E2408, TRUE, 0, FALSE); + RestoreUnkTextStruct_8006518(&gUnknown_203B33C->unk35C); + SetMenuItems(gUnknown_203B33C->unk21C, &gUnknown_203B33C->unk35C, 3, &gUnknown_80E231C, gUnknown_80E2408, TRUE, 0, FALSE); sub_803092C(); sub_8035CF4(gUnknown_203B33C->unk21C, 3, 1); break; @@ -1079,8 +1079,8 @@ void sub_8032828(void) } break; case 0x60: - RestoreUnkTextStruct_8006518(gUnknown_203B33C->unk35C); - SetMenuItems(gUnknown_203B33C->unk21C, gUnknown_203B33C->unk35C, 3, &gUnknown_80E23F0, gUnknown_80E2408, TRUE, 0, FALSE); + RestoreUnkTextStruct_8006518(&gUnknown_203B33C->unk35C); + SetMenuItems(gUnknown_203B33C->unk21C, &gUnknown_203B33C->unk35C, 3, &gUnknown_80E23F0, gUnknown_80E2408, TRUE, 0, FALSE); sub_801CCD8(); sub_8035CF4(gUnknown_203B33C->unk21C, 3, 1); break; @@ -1116,7 +1116,7 @@ void sub_8032828(void) CreateDialogueBoxAndPortrait(gUnknown_80E311C, 0, 0, 0x101); break; case 0x73: - RestoreUnkTextStruct_8006518(gUnknown_203B33C->unk3BC); + RestoreUnkTextStruct_8006518(&gUnknown_203B33C->unk3BC); ResetUnusedInputStruct(); xxx_call_save_unk_text_struct_800641C(NULL, TRUE, TRUE); sub_80151C0(4, gUnknown_203B33C->passwordBuffer); @@ -1126,7 +1126,7 @@ void sub_8032828(void) break; case 0x67: case 0x2E: - RestoreUnkTextStruct_8006518(gUnknown_203B33C->unk3BC); + RestoreUnkTextStruct_8006518(&gUnknown_203B33C->unk3BC); ResetUnusedInputStruct(); xxx_call_save_unk_text_struct_800641C(NULL, TRUE, TRUE); sub_8031D70(gUnknown_203B33C->unk218, 0); @@ -1242,8 +1242,8 @@ void sub_8032828(void) case 0x13: case 0x1E: case 0x33: - RestoreUnkTextStruct_8006518(gUnknown_203B33C->unk35C); - SetMenuItems(gUnknown_203B33C->unk21C, gUnknown_203B33C->unk35C, 3, &gUnknown_80E231C, gUnknown_80E234C, TRUE, 0, FALSE); + RestoreUnkTextStruct_8006518(&gUnknown_203B33C->unk35C); + SetMenuItems(gUnknown_203B33C->unk21C, &gUnknown_203B33C->unk35C, 3, &gUnknown_80E231C, gUnknown_80E234C, TRUE, 0, FALSE); sub_803092C(); sub_8035CF4(gUnknown_203B33C->unk21C, 3, 1); break; @@ -1714,7 +1714,7 @@ void sub_8033DBC(void) case 2: sub_80155F0(); ResetUnusedInputStruct(); - xxx_call_save_unk_text_struct_800641C(gUnknown_203B33C->unk3BC, TRUE, TRUE); + xxx_call_save_unk_text_struct_800641C(&gUnknown_203B33C->unk3BC, TRUE, TRUE); SetFriendRescueMenuState(FRIEND_RESCUE_MENU_MAIN); break; default: @@ -1784,7 +1784,7 @@ void sub_8033FE4(void) case 4: gUnknown_203B33C->fallbackState = 0x1D; gUnknown_203B33C->unk218 = sub_80307EC(); - RestoreUnkTextStruct_8006518(gUnknown_203B33C->unk3BC); + RestoreUnkTextStruct_8006518(&gUnknown_203B33C->unk3BC); ResetUnusedInputStruct(); xxx_call_save_unk_text_struct_800641C(NULL, TRUE, TRUE); sub_8030D40(gUnknown_203B33C->unk218, 0); @@ -1809,7 +1809,7 @@ void sub_8034074(void) break; case 10: gUnknown_203B33C->fallbackState = FRIEND_RESCUE_MENU_DEFAULT_FALLBACK; - RestoreUnkTextStruct_8006518(gUnknown_203B33C->unk3BC); + RestoreUnkTextStruct_8006518(&gUnknown_203B33C->unk3BC); ResetUnusedInputStruct(); xxx_call_save_unk_text_struct_800641C(NULL, TRUE, TRUE); sub_8030D40(gUnknown_203B33C->unk218, 0); @@ -1817,7 +1817,7 @@ void sub_8034074(void) break; case 5: case 8: - sub_8035CC0(gUnknown_203B33C->unk35C, 2); + sub_8035CC0(&gUnknown_203B33C->unk35C, 2); sub_8030810(0x1); SetFriendRescueMenuState(0x1D); break; @@ -1832,7 +1832,7 @@ void sub_8034130(void) case 3: sub_8030DE4(); ResetUnusedInputStruct(); - xxx_call_save_unk_text_struct_800641C(gUnknown_203B33C->unk3BC, TRUE, TRUE); + xxx_call_save_unk_text_struct_800641C(&gUnknown_203B33C->unk3BC, TRUE, TRUE); sub_803092C(); if(gUnknown_203B33C->fallbackState == FRIEND_RESCUE_MENU_DEFAULT_FALLBACK) { @@ -1867,7 +1867,7 @@ void sub_803418C(void) case 4: gUnknown_203B33C->fallbackState = 0x26; gUnknown_203B33C->speciesNum = sub_8023B44(); - RestoreUnkTextStruct_8006518(gUnknown_203B33C->unk3BC); + RestoreUnkTextStruct_8006518(&gUnknown_203B33C->unk3BC); ResetUnusedInputStruct(); xxx_call_save_unk_text_struct_800641C(NULL, TRUE, TRUE); sub_8024458(gUnknown_203B33C->speciesNum, 0); @@ -1892,7 +1892,7 @@ void sub_8034254(void) break; case 10: gUnknown_203B33C->fallbackState = FRIEND_RESCUE_MENU_DEFAULT_FALLBACK; - RestoreUnkTextStruct_8006518(gUnknown_203B33C->unk3BC); + RestoreUnkTextStruct_8006518(&gUnknown_203B33C->unk3BC); ResetUnusedInputStruct(); xxx_call_save_unk_text_struct_800641C(NULL, TRUE, TRUE); sub_8024458(gUnknown_203B33C->speciesNum, 0); @@ -1900,7 +1900,7 @@ void sub_8034254(void) break; case 5: case 8: - sub_8035CC0(gUnknown_203B33C->unk35C, 3); + sub_8035CC0(&gUnknown_203B33C->unk35C, 3); sub_8023DA4(); SetFriendRescueMenuState(0x26); break; @@ -1918,7 +1918,7 @@ void sub_8034310(void) case 3: sub_802453C(); ResetUnusedInputStruct(); - xxx_call_save_unk_text_struct_800641C(gUnknown_203B33C->unk3BC, TRUE, TRUE); + xxx_call_save_unk_text_struct_800641C(&gUnknown_203B33C->unk3BC, TRUE, TRUE); sub_8023B7C(1); if(gUnknown_203B33C->fallbackState == FRIEND_RESCUE_MENU_DEFAULT_FALLBACK) { @@ -2036,7 +2036,7 @@ void sub_80344C0(void) case 3: sub_8031E10(); ResetUnusedInputStruct(); - xxx_call_save_unk_text_struct_800641C(gUnknown_203B33C->unk3BC, TRUE, TRUE); + xxx_call_save_unk_text_struct_800641C(&gUnknown_203B33C->unk3BC, TRUE, TRUE); SetFriendRescueMenuState(0x2F); break; case 1: @@ -2062,7 +2062,7 @@ void sub_8034500(void) case 4: gUnknown_203B33C->fallbackState = 0x32; gUnknown_203B33C->unk218 = sub_80307EC(); - RestoreUnkTextStruct_8006518(gUnknown_203B33C->unk3BC); + RestoreUnkTextStruct_8006518(&gUnknown_203B33C->unk3BC); ResetUnusedInputStruct(); xxx_call_save_unk_text_struct_800641C(NULL, TRUE, TRUE); sub_8030D40(gUnknown_203B33C->unk218, 0); @@ -2087,7 +2087,7 @@ void sub_8034590(void) break; case 10: gUnknown_203B33C->fallbackState = FRIEND_RESCUE_MENU_DEFAULT_FALLBACK; - RestoreUnkTextStruct_8006518(gUnknown_203B33C->unk3BC); + RestoreUnkTextStruct_8006518(&gUnknown_203B33C->unk3BC); ResetUnusedInputStruct(); xxx_call_save_unk_text_struct_800641C(NULL, TRUE, TRUE); sub_8030D40(gUnknown_203B33C->unk218, 0); @@ -2095,7 +2095,7 @@ void sub_8034590(void) break; case 5: case 8: - sub_8035CC0(gUnknown_203B33C->unk35C, 2); + sub_8035CC0(&gUnknown_203B33C->unk35C, 2); sub_8030810(0x1); SetFriendRescueMenuState(0x32); break; @@ -2110,7 +2110,7 @@ void sub_803464C(void) case 3: sub_8030DE4(); ResetUnusedInputStruct(); - xxx_call_save_unk_text_struct_800641C(gUnknown_203B33C->unk3BC, TRUE, TRUE); + xxx_call_save_unk_text_struct_800641C(&gUnknown_203B33C->unk3BC, TRUE, TRUE); sub_803092C(); if(gUnknown_203B33C->fallbackState == FRIEND_RESCUE_MENU_DEFAULT_FALLBACK) { @@ -2183,7 +2183,7 @@ void sub_803473C(void) case 3: sub_8031E10(); ResetUnusedInputStruct(); - xxx_call_save_unk_text_struct_800641C(gUnknown_203B33C->unk3BC, TRUE, TRUE); + xxx_call_save_unk_text_struct_800641C(&gUnknown_203B33C->unk3BC, TRUE, TRUE); SetFriendRescueMenuState(0x3B); break; case 1: @@ -2342,7 +2342,7 @@ void sub_8034970(void) case 3: sub_8031E10(); ResetUnusedInputStruct(); - xxx_call_save_unk_text_struct_800641C(gUnknown_203B33C->unk3BC, TRUE, TRUE); + xxx_call_save_unk_text_struct_800641C(&gUnknown_203B33C->unk3BC, TRUE, TRUE); SetFriendRescueMenuState(0x68); break; case 1: @@ -2386,7 +2386,7 @@ void sub_80349E0(void) case 4: gUnknown_203B33C->fallbackState = 0x5C; gUnknown_203B33C->unk218 = sub_80307EC(); - RestoreUnkTextStruct_8006518(gUnknown_203B33C->unk3BC); + RestoreUnkTextStruct_8006518(&gUnknown_203B33C->unk3BC); ResetUnusedInputStruct(); xxx_call_save_unk_text_struct_800641C(NULL, TRUE, TRUE); sub_8030D40(gUnknown_203B33C->unk218, 0); @@ -2411,7 +2411,7 @@ void sub_8034A70(void) break; case 10: gUnknown_203B33C->fallbackState = FRIEND_RESCUE_MENU_DEFAULT_FALLBACK; - RestoreUnkTextStruct_8006518(gUnknown_203B33C->unk3BC); + RestoreUnkTextStruct_8006518(&gUnknown_203B33C->unk3BC); ResetUnusedInputStruct(); xxx_call_save_unk_text_struct_800641C(NULL, TRUE, TRUE); sub_8030D40(gUnknown_203B33C->unk218, 0); @@ -2419,7 +2419,7 @@ void sub_8034A70(void) break; case 5: case 8: - sub_8035CC0(gUnknown_203B33C->unk35C, 2); + sub_8035CC0(&gUnknown_203B33C->unk35C, 2); sub_8030810(0x1); SetFriendRescueMenuState(0x5C); break; @@ -2434,7 +2434,7 @@ void sub_8034B2C(void) case 3: sub_8030DE4(); ResetUnusedInputStruct(); - xxx_call_save_unk_text_struct_800641C(gUnknown_203B33C->unk3BC, TRUE, TRUE); + xxx_call_save_unk_text_struct_800641C(&gUnknown_203B33C->unk3BC, TRUE, TRUE); sub_803092C(); if(gUnknown_203B33C->fallbackState == FRIEND_RESCUE_MENU_DEFAULT_FALLBACK) { @@ -2467,7 +2467,7 @@ void sub_8034B88(void) case 4: gUnknown_203B33C->fallbackState = 0x5F; gUnknown_203B33C->item.id = sub_801CB24(); - RestoreUnkTextStruct_8006518(gUnknown_203B33C->unk3BC); + RestoreUnkTextStruct_8006518(&gUnknown_203B33C->unk3BC); ResetUnusedInputStruct(); xxx_call_save_unk_text_struct_800641C(NULL, TRUE, TRUE); sub_801B3C0(&gUnknown_203B33C->item); @@ -2484,7 +2484,7 @@ void sub_8034C38(void) case 3: sub_801B450(); ResetUnusedInputStruct(); - xxx_call_save_unk_text_struct_800641C(gUnknown_203B33C->unk3BC, TRUE, TRUE); + xxx_call_save_unk_text_struct_800641C(&gUnknown_203B33C->unk3BC, TRUE, TRUE); sub_801CB5C(TRUE); if(gUnknown_203B33C->fallbackState == FRIEND_RESCUE_MENU_DEFAULT_FALLBACK) { @@ -2516,7 +2516,7 @@ void sub_8034C98(void) break; case 10: gUnknown_203B33C->fallbackState = FRIEND_RESCUE_MENU_DEFAULT_FALLBACK; - RestoreUnkTextStruct_8006518(gUnknown_203B33C->unk3BC); + RestoreUnkTextStruct_8006518(&gUnknown_203B33C->unk3BC); ResetUnusedInputStruct(); xxx_call_save_unk_text_struct_800641C(NULL, TRUE, TRUE); sub_801B3C0(&gUnknown_203B33C->item); @@ -2524,7 +2524,7 @@ void sub_8034C98(void) break; case 5: case 8: - sub_8035CC0(gUnknown_203B33C->unk35C, 3); + sub_8035CC0(&gUnknown_203B33C->unk35C, 3); sub_801CB5C(TRUE); SetFriendRescueMenuState(0x5F); break; @@ -2582,7 +2582,7 @@ void sub_8034D74(void) case 2: sub_80155F0(); ResetUnusedInputStruct(); - xxx_call_save_unk_text_struct_800641C(gUnknown_203B33C->unk3BC, TRUE, TRUE); + xxx_call_save_unk_text_struct_800641C(&gUnknown_203B33C->unk3BC, TRUE, TRUE); SetFriendRescueMenuState(FRIEND_RESCUE_MENU_MAIN); break; default: diff --git a/src/gulpin_shop.c b/src/gulpin_shop.c index 4db64dde4..311112a10 100644 --- a/src/gulpin_shop.c +++ b/src/gulpin_shop.c @@ -111,24 +111,24 @@ static void sub_801E980(void) { s32 index; - RestoreUnkTextStruct_8006518(sGulpinShopWork->unk12C); + RestoreUnkTextStruct_8006518(&sGulpinShopWork->unk12C); switch (sGulpinShopWork->state) { case 2: sub_801EBC4(); - sGulpinShopWork->unk12C[1] = gUnknown_80DC11C; - sGulpinShopWork->unk12C[2] = gUnknown_80DC134; - sub_8012CAC(&sGulpinShopWork->unk12C[2], sGulpinShopWork->unk28); + sGulpinShopWork->unk12C.a0[1] = gUnknown_80DC11C; + sGulpinShopWork->unk12C.a0[2] = gUnknown_80DC134; + sub_8012CAC(&sGulpinShopWork->unk12C.a0[2], sGulpinShopWork->unk28); break; default: for(index = 0; index < 4; index++) { - sGulpinShopWork->unk12C[index] = gUnknown_80DC11C; + sGulpinShopWork->unk12C.a0[index] = gUnknown_80DC11C; } break; } ResetUnusedInputStruct(); - xxx_call_save_unk_text_struct_800641C(sGulpinShopWork->unk12C, TRUE, TRUE); + xxx_call_save_unk_text_struct_800641C(&sGulpinShopWork->unk12C, TRUE, TRUE); } static void sub_801EA28(void) diff --git a/src/gulpin_shop_801FB50.c b/src/gulpin_shop_801FB50.c index 5909e414b..8a3ddf623 100644 --- a/src/gulpin_shop_801FB50.c +++ b/src/gulpin_shop_801FB50.c @@ -194,45 +194,45 @@ static void sub_801FDC0(void) { s32 index; - RestoreUnkTextStruct_8006518(gUnknown_203B27C->unk180); + RestoreUnkTextStruct_8006518(&gUnknown_203B27C->unk180); switch (gUnknown_203B27C->state) { case 0x2: - gUnknown_203B27C->unk180[0].unk0 = 0x80; - gUnknown_203B27C->unk180[1].unk0 = 0x80; - gUnknown_203B27C->unk180[2].unk0 = 0x80; - gUnknown_203B27C->unk180[3] = gUnknown_80DC37C; + gUnknown_203B27C->unk180.a0[0].unk0 = 0x80; + gUnknown_203B27C->unk180.a0[1].unk0 = 0x80; + gUnknown_203B27C->unk180.a0[2].unk0 = 0x80; + gUnknown_203B27C->unk180.a0[3] = gUnknown_80DC37C; ResetUnusedInputStruct(); - xxx_call_save_unk_text_struct_800641C(gUnknown_203B27C->unk180, TRUE, FALSE); + xxx_call_save_unk_text_struct_800641C(&gUnknown_203B27C->unk180, TRUE, FALSE); break; case 0x11: sub_80205D0(); - gUnknown_203B27C->unk180[2] = gUnknown_80DC334; - sub_8012CAC(&gUnknown_203B27C->unk180[2], gUnknown_203B27C->unk7C); + gUnknown_203B27C->unk180.a0[2] = gUnknown_80DC334; + sub_8012CAC(&gUnknown_203B27C->unk180.a0[2], gUnknown_203B27C->unk7C); ResetUnusedInputStruct(); - xxx_call_save_unk_text_struct_800641C(gUnknown_203B27C->unk180, TRUE, TRUE); + xxx_call_save_unk_text_struct_800641C(&gUnknown_203B27C->unk180, TRUE, TRUE); break; case 0x17: sub_802069C(); - gUnknown_203B27C->unk180[2] = gUnknown_80DC334; - sub_8012CAC(&gUnknown_203B27C->unk180[2], gUnknown_203B27C->unk7C); + gUnknown_203B27C->unk180.a0[2] = gUnknown_80DC334; + sub_8012CAC(&gUnknown_203B27C->unk180.a0[2], gUnknown_203B27C->unk7C); ResetUnusedInputStruct(); - xxx_call_save_unk_text_struct_800641C(gUnknown_203B27C->unk180, TRUE, TRUE); + xxx_call_save_unk_text_struct_800641C(&gUnknown_203B27C->unk180, TRUE, TRUE); break; case 0x20: CreateGulpinLinkMenu(); - gUnknown_203B27C->unk180[1] = gUnknown_80DC31C; - gUnknown_203B27C->unk180[2] = gUnknown_80DC34C; - sub_8012CAC(&gUnknown_203B27C->unk180[2], gUnknown_203B27C->unk7C); + gUnknown_203B27C->unk180.a0[1] = gUnknown_80DC31C; + gUnknown_203B27C->unk180.a0[2] = gUnknown_80DC34C; + sub_8012CAC(&gUnknown_203B27C->unk180.a0[2], gUnknown_203B27C->unk7C); ResetUnusedInputStruct(); - xxx_call_save_unk_text_struct_800641C(gUnknown_203B27C->unk180, TRUE, TRUE); + xxx_call_save_unk_text_struct_800641C(&gUnknown_203B27C->unk180, TRUE, TRUE); break; default: for (index = 0; index < 4; index++) - gUnknown_203B27C->unk180[index] = gUnknown_80DC31C; + gUnknown_203B27C->unk180.a0[index] = gUnknown_80DC31C; ResetUnusedInputStruct(); - xxx_call_save_unk_text_struct_800641C(gUnknown_203B27C->unk180, TRUE, TRUE); + xxx_call_save_unk_text_struct_800641C(&gUnknown_203B27C->unk180, TRUE, TRUE); break; } } diff --git a/src/hints_menu1.c b/src/hints_menu1.c index fc94254bb..816a735a1 100644 --- a/src/hints_menu1.c +++ b/src/hints_menu1.c @@ -23,12 +23,12 @@ bool8 sub_801E3F0(u32 a0) sUnknown_203B264 = MemoryAlloc(sizeof(*sUnknown_203B264), 8); sUnknown_203B264->unk34 = a0; - sUnknown_203B264->unk38 = &sUnknown_203B264->unk3C[a0]; - RestoreUnkTextStruct_8006518(sUnknown_203B264->unk3C); - sUnknown_203B264->unk3C[sUnknown_203B264->unk34] = sUnknown_80DC0BC; + sUnknown_203B264->unk38 = &sUnknown_203B264->unk3C.a0[a0]; + RestoreUnkTextStruct_8006518(&sUnknown_203B264->unk3C); + sUnknown_203B264->unk3C.a0[sUnknown_203B264->unk34] = sUnknown_80DC0BC; sub_8012D08(sUnknown_203B264->unk38, 10); ResetUnusedInputStruct(); - xxx_call_save_unk_text_struct_800641C(sUnknown_203B264->unk3C, TRUE, TRUE); + xxx_call_save_unk_text_struct_800641C(&sUnknown_203B264->unk3C, TRUE, TRUE); sub_8013818(&sUnknown_203B264->input, 5, 10, a0); sub_801E594(); DrawHintSelectionMenu(); @@ -73,7 +73,7 @@ s32 GetChosenHintIndex(void) void CreateHintSelectionScreen(bool8 cursorSprite) { ResetUnusedInputStruct(); - xxx_call_save_unk_text_struct_800641C(sUnknown_203B264->unk3C, FALSE, FALSE); + xxx_call_save_unk_text_struct_800641C(&sUnknown_203B264->unk3C, FALSE, FALSE); sub_8013984(&sUnknown_203B264->input); sub_801E594(); DrawHintSelectionMenu(); @@ -85,9 +85,9 @@ void CreateHintSelectionScreen(bool8 cursorSprite) void sub_801E54C(void) { if (sUnknown_203B264 != NULL) { - sUnknown_203B264->unk3C[sUnknown_203B264->unk34] = sUnknown_80DC0A0; + sUnknown_203B264->unk3C.a0[sUnknown_203B264->unk34] = sUnknown_80DC0A0; ResetUnusedInputStruct(); - xxx_call_save_unk_text_struct_800641C(sUnknown_203B264->unk3C, TRUE, TRUE); + xxx_call_save_unk_text_struct_800641C(&sUnknown_203B264->unk3C, TRUE, TRUE); MemoryFree(sUnknown_203B264); sUnknown_203B264 = NULL; } diff --git a/src/hints_menu2.c b/src/hints_menu2.c index f37017e67..d09443479 100644 --- a/src/hints_menu2.c +++ b/src/hints_menu2.c @@ -22,12 +22,12 @@ bool8 CreateHintDisplayScreen(u32 index) { sUnknown_203B268 = MemoryAlloc(sizeof(struct_Sub80095E4_2), 8); sUnknown_203B268->s0.unk34 = 0; - sUnknown_203B268->s0.unk38 = sUnknown_203B268->s0.unk3C; - RestoreUnkTextStruct_8006518(sUnknown_203B268->s0.unk3C); - sUnknown_203B268->s0.unk3C[sUnknown_203B268->s0.unk34] = sUnknown_80DC0FC; + sUnknown_203B268->s0.unk38 = &sUnknown_203B268->s0.unk3C.a0[0]; + RestoreUnkTextStruct_8006518(&sUnknown_203B268->s0.unk3C); + sUnknown_203B268->s0.unk3C.a0[sUnknown_203B268->s0.unk34] = sUnknown_80DC0FC; sUnknown_203B268->s0.unk38->unk14 = &sUnknown_203B268->unk9C; ResetUnusedInputStruct(); - xxx_call_save_unk_text_struct_800641C(sUnknown_203B268->s0.unk3C, TRUE, TRUE); + xxx_call_save_unk_text_struct_800641C(&sUnknown_203B268->s0.unk3C, TRUE, TRUE); sub_8013818(&sUnknown_203B268->s0.input, 5, 1, sUnknown_203B268->s0.unk34); sUnknown_203B268->s0.input.unk1E = index; sub_801E714(); @@ -62,9 +62,9 @@ static void sub_801E714(void) void DestroyHintDisplayScreen(void) { if (sUnknown_203B268 != NULL) { - sUnknown_203B268->s0.unk3C[sUnknown_203B268->s0.unk34] = sUnknown_80DC0E4; + sUnknown_203B268->s0.unk3C.a0[sUnknown_203B268->s0.unk34] = sUnknown_80DC0E4; ResetUnusedInputStruct(); - xxx_call_save_unk_text_struct_800641C(sUnknown_203B268->s0.unk3C, TRUE, TRUE); + xxx_call_save_unk_text_struct_800641C(&sUnknown_203B268->s0.unk3C, TRUE, TRUE); MemoryFree(sUnknown_203B268); sUnknown_203B268 = NULL; } @@ -77,7 +77,7 @@ static void sub_801E76C(void) sUnknown_203B268->unk9C.f2 = 15; sUnknown_203B268->unk9C.f3 = 0; ResetUnusedInputStruct(); - xxx_call_save_unk_text_struct_800641C(sUnknown_203B268->s0.unk3C, TRUE, TRUE); + xxx_call_save_unk_text_struct_800641C(&sUnknown_203B268->s0.unk3C, TRUE, TRUE); } static void DisplayChosenHint(void) diff --git a/src/iq_skill_info_menu.c b/src/iq_skill_info_menu.c index 1a9091f84..2ff5296b2 100644 --- a/src/iq_skill_info_menu.c +++ b/src/iq_skill_info_menu.c @@ -34,9 +34,9 @@ bool8 CreateIQSkillInfoMenu(u8 iqSkill) sIQSkillInfoMenu->chosenIQSkill = iqSkill; sub_801317C(&sIQSkillInfoMenu->unk88); sIQSkillInfoMenu->unk24 = 0; - sub_80140B4(sIQSkillInfoMenu->unk28); + sub_80140B4(&sIQSkillInfoMenu->unk28); ResetUnusedInputStruct(); - xxx_call_save_unk_text_struct_800641C(sIQSkillInfoMenu->unk28, TRUE, TRUE); + xxx_call_save_unk_text_struct_800641C(&sIQSkillInfoMenu->unk28, TRUE, TRUE); SetIQSkillInfoMenuState(IQ_SKILL_INFO_MENU_INIT); return TRUE; } diff --git a/src/iq_skill_list_menu.c b/src/iq_skill_list_menu.c index 8ae25c0a7..37bb95807 100644 --- a/src/iq_skill_list_menu.c +++ b/src/iq_skill_list_menu.c @@ -30,13 +30,13 @@ bool8 CreateIQSkillListMenu(s16 species, u32 index, u32 a2) sIQSkillListMenu->pokeStruct = &gRecruitedPokemonRef->pokemon[species_s32]; sIQSkillListMenu->numIQSkills = GetNumAvailableIQSkills(sIQSkillListMenu->iqSkills, sIQSkillListMenu->pokeStruct->IQ); sIQSkillListMenu->s24.s0.unk34 = index; - sIQSkillListMenu->s24.s0.unk38 = &sIQSkillListMenu->s24.s0.unk3C[index]; - RestoreUnkTextStruct_8006518(sIQSkillListMenu->s24.s0.unk3C); - sIQSkillListMenu->s24.s0.unk3C[sIQSkillListMenu->s24.s0.unk34] = sUnknown_80DBDF0; + sIQSkillListMenu->s24.s0.unk38 = &sIQSkillListMenu->s24.s0.unk3C.a0[index]; + RestoreUnkTextStruct_8006518(&sIQSkillListMenu->s24.s0.unk3C); + sIQSkillListMenu->s24.s0.unk3C.a0[sIQSkillListMenu->s24.s0.unk34] = sUnknown_80DBDF0; sIQSkillListMenu->s24.s0.unk38->unk14 = &sIQSkillListMenu->s24.unk9C; sub_8012D08(sIQSkillListMenu->s24.s0.unk38, a2); ResetUnusedInputStruct(); - xxx_call_save_unk_text_struct_800641C(sIQSkillListMenu->s24.s0.unk3C, TRUE, TRUE); + xxx_call_save_unk_text_struct_800641C(&sIQSkillListMenu->s24.s0.unk3C, TRUE, TRUE); sub_8013818(&sIQSkillListMenu->s24.s0.input, sIQSkillListMenu->numIQSkills, a2, index); sub_801C440(); BuildIQSkillList(); @@ -78,7 +78,7 @@ s32 GetIQSkillSelection(void) void RedrawIQSkillListMenu(bool8 addCursor) { ResetUnusedInputStruct(); - xxx_call_save_unk_text_struct_800641C(sIQSkillListMenu->s24.s0.unk3C, FALSE, FALSE); + xxx_call_save_unk_text_struct_800641C(&sIQSkillListMenu->s24.s0.unk3C, FALSE, FALSE); sIQSkillListMenu->s24.s0.input.unk22 = sIQSkillListMenu->numIQSkills; sub_8013984(&sIQSkillListMenu->s24.s0.input); sub_801C440(); @@ -91,9 +91,9 @@ void RedrawIQSkillListMenu(bool8 addCursor) void CleanIQSkillListMenu(void) { if (sIQSkillListMenu != NULL) { - sIQSkillListMenu->s24.s0.unk3C[sIQSkillListMenu->s24.s0.unk34] = sUnknown_80DBDD8; + sIQSkillListMenu->s24.s0.unk3C.a0[sIQSkillListMenu->s24.s0.unk34] = sUnknown_80DBDD8; ResetUnusedInputStruct(); - xxx_call_save_unk_text_struct_800641C(sIQSkillListMenu->s24.s0.unk3C, TRUE, TRUE); + xxx_call_save_unk_text_struct_800641C(&sIQSkillListMenu->s24.s0.unk3C, TRUE, TRUE); MemoryFree(sIQSkillListMenu); sIQSkillListMenu = NULL; } @@ -106,7 +106,7 @@ static void sub_801C440(void) sIQSkillListMenu->s24.unk9C.f2 = 10; sIQSkillListMenu->s24.unk9C.f3 = 0; ResetUnusedInputStruct(); - xxx_call_save_unk_text_struct_800641C(sIQSkillListMenu->s24.s0.unk3C, TRUE, TRUE); + xxx_call_save_unk_text_struct_800641C(&sIQSkillListMenu->s24.s0.unk3C, TRUE, TRUE); SUB_80095E4_CALL_2(sIQSkillListMenu->s24.s0); } diff --git a/src/iq_skill_menu.c b/src/iq_skill_menu.c index b06603f73..c453d6fbf 100644 --- a/src/iq_skill_menu.c +++ b/src/iq_skill_menu.c @@ -77,17 +77,17 @@ static void sub_801BFCC(void) { s32 i; - RestoreUnkTextStruct_8006518(sIQSkillMenu->unkC4); + RestoreUnkTextStruct_8006518(&sIQSkillMenu->unkC4); if (sIQSkillMenu->state == 2) - sIQSkillMenu->unkC4[2] = sUnknown_80DBDB0; + sIQSkillMenu->unkC4.a0[2] = sUnknown_80DBDB0; else { for (i = 0; i < 4; i++) - sIQSkillMenu->unkC4[i] = sUnknown_80DBD98; + sIQSkillMenu->unkC4.a0[i] = sUnknown_80DBD98; } ResetUnusedInputStruct(); - xxx_call_save_unk_text_struct_800641C(sIQSkillMenu->unkC4, TRUE, TRUE); + xxx_call_save_unk_text_struct_800641C(&sIQSkillMenu->unkC4, TRUE, TRUE); } static void HandleIQSkillMenuState(void) diff --git a/src/kangaskhan_storage1.c b/src/kangaskhan_storage1.c index 410fbd3c3..966ff2727 100644 --- a/src/kangaskhan_storage1.c +++ b/src/kangaskhan_storage1.c @@ -145,38 +145,38 @@ static void sub_8016E80(void) { s32 index; - RestoreUnkTextStruct_8006518(gKangaskhanStorageWork->unkEC); + RestoreUnkTextStruct_8006518(&gKangaskhanStorageWork->unkEC); switch (gKangaskhanStorageWork->currState) { case 13: case 14: - gKangaskhanStorageWork->unkEC[0] = sUnknown_80DB748; - gKangaskhanStorageWork->unkEC[1] = sUnknown_80DB748; - gKangaskhanStorageWork->unkEC[2] = sUnknown_80DB748; - gKangaskhanStorageWork->unkEC[0] = sUnknown_80DB748; + gKangaskhanStorageWork->unkEC.a0[0] = sUnknown_80DB748; + gKangaskhanStorageWork->unkEC.a0[1] = sUnknown_80DB748; + gKangaskhanStorageWork->unkEC.a0[2] = sUnknown_80DB748; + gKangaskhanStorageWork->unkEC.a0[0] = sUnknown_80DB748; break; case 22: case 23: - gKangaskhanStorageWork->unkEC[0] = sUnknown_80DB748; - gKangaskhanStorageWork->unkEC[1] = sUnknown_80DB748; - gKangaskhanStorageWork->unkEC[2] = sUnknown_80DB748; - gKangaskhanStorageWork->unkEC[0] = sUnknown_80DB778; + gKangaskhanStorageWork->unkEC.a0[0] = sUnknown_80DB748; + gKangaskhanStorageWork->unkEC.a0[1] = sUnknown_80DB748; + gKangaskhanStorageWork->unkEC.a0[2] = sUnknown_80DB748; + gKangaskhanStorageWork->unkEC.a0[0] = sUnknown_80DB778; break; case 24: - gKangaskhanStorageWork->unkEC[1] = sUnknown_80DB790; + gKangaskhanStorageWork->unkEC.a0[1] = sUnknown_80DB790; break; case 15: case 25: - gKangaskhanStorageWork->unkEC[2] = sUnknown_80DB760; + gKangaskhanStorageWork->unkEC.a0[2] = sUnknown_80DB760; break; default: for (index = 0; index < 4; index++) - gKangaskhanStorageWork->unkEC[index] = sUnknown_80DB748; + gKangaskhanStorageWork->unkEC.a0[index] = sUnknown_80DB748; break; } ResetUnusedInputStruct(); - xxx_call_save_unk_text_struct_800641C(gKangaskhanStorageWork->unkEC, TRUE, TRUE); + xxx_call_save_unk_text_struct_800641C(&gKangaskhanStorageWork->unkEC, TRUE, TRUE); } static void sub_8016FF8(void) @@ -309,7 +309,7 @@ static void sub_8016FF8(void) gKangaskhanStorageWork->unkA8.unk4 = gKangaskhanStorageWork->unkA8.unkC; gKangaskhanStorageWork->unkA8.unk14 = 1; - gKangaskhanStorageWork->unkA8.unk18 = &gKangaskhanStorageWork->unkEC[1]; + gKangaskhanStorageWork->unkA8.unk18 = &gKangaskhanStorageWork->unkEC.a0[1]; gKangaskhanStorageWork->unkA8.unk1C = 40; gKangaskhanStorageWork->unkA8.unk20 = 18; sub_8013AA0(&gKangaskhanStorageWork->unkA8); diff --git a/src/kangaskhan_storage2.c b/src/kangaskhan_storage2.c index 830d2490c..4a3081d13 100644 --- a/src/kangaskhan_storage2.c +++ b/src/kangaskhan_storage2.c @@ -108,46 +108,46 @@ static void sub_8017F28(void) { s32 index; - RestoreUnkTextStruct_8006518(sUnknown_203B20C->unkF0); + RestoreUnkTextStruct_8006518(&sUnknown_203B20C->unkF0); switch (sUnknown_203B20C->state) { case KANGASKHAN_STORAGE_2_MAIN: - sUnknown_203B20C->unkF0[0] = sUnknown_80DB7B8; - sUnknown_203B20C->unkF0[1] = sUnknown_80DB7B8; - sUnknown_203B20C->unkF0[0] = sUnknown_80DB7B8; + sUnknown_203B20C->unkF0.a0[0] = sUnknown_80DB7B8; + sUnknown_203B20C->unkF0.a0[1] = sUnknown_80DB7B8; + sUnknown_203B20C->unkF0.a0[0] = sUnknown_80DB7B8; BuildKangaskhanStorage2MainMenu(); - sUnknown_203B20C->unkF0[2] = sUnknown_80DB7D0; - sub_8012CAC(&sUnknown_203B20C->unkF0[2], sUnknown_203B20C->unk20); + sUnknown_203B20C->unkF0.a0[2] = sUnknown_80DB7D0; + sub_8012CAC(&sUnknown_203B20C->unkF0.a0[2], sUnknown_203B20C->unk20); break; case 4: case 5: - sUnknown_203B20C->unkF0[0] = sUnknown_80DB7B8; - sUnknown_203B20C->unkF0[1] = sUnknown_80DB7B8; - sUnknown_203B20C->unkF0[2] = sUnknown_80DB7B8; - sUnknown_203B20C->unkF0[0] = sUnknown_80DB7B8; + sUnknown_203B20C->unkF0.a0[0] = sUnknown_80DB7B8; + sUnknown_203B20C->unkF0.a0[1] = sUnknown_80DB7B8; + sUnknown_203B20C->unkF0.a0[2] = sUnknown_80DB7B8; + sUnknown_203B20C->unkF0.a0[0] = sUnknown_80DB7B8; break; case 10: case 11: - sUnknown_203B20C->unkF0[0] = sUnknown_80DB7B8; - sUnknown_203B20C->unkF0[1] = sUnknown_80DB7B8; - sUnknown_203B20C->unkF0[2] = sUnknown_80DB7B8; - sUnknown_203B20C->unkF0[0] = sUnknown_80DB800; + sUnknown_203B20C->unkF0.a0[0] = sUnknown_80DB7B8; + sUnknown_203B20C->unkF0.a0[1] = sUnknown_80DB7B8; + sUnknown_203B20C->unkF0.a0[2] = sUnknown_80DB7B8; + sUnknown_203B20C->unkF0.a0[0] = sUnknown_80DB800; break; case 12: - sUnknown_203B20C->unkF0[1] = sUnknown_80DB818; + sUnknown_203B20C->unkF0.a0[1] = sUnknown_80DB818; break; case 6: case 13: - sUnknown_203B20C->unkF0[2] = sUnknown_80DB7E8; + sUnknown_203B20C->unkF0.a0[2] = sUnknown_80DB7E8; break; default: case KANGASKHAN_STORAGE_2_INIT: for (index = 0; index < 4; index++) - sUnknown_203B20C->unkF0[index] = sUnknown_80DB7B8; + sUnknown_203B20C->unkF0.a0[index] = sUnknown_80DB7B8; break; } ResetUnusedInputStruct(); - xxx_call_save_unk_text_struct_800641C(sUnknown_203B20C->unkF0, TRUE, TRUE); + xxx_call_save_unk_text_struct_800641C(&sUnknown_203B20C->unkF0, TRUE, TRUE); } static void sub_8018100(void) @@ -189,7 +189,7 @@ static void sub_8018100(void) sUnknown_203B20C->unkC0.unk4 = sUnknown_203B20C->unkC0.unkC; sUnknown_203B20C->unkC0.unk14 = 1; - sUnknown_203B20C->unkC0.unk18 = &sUnknown_203B20C->unkF0[1]; + sUnknown_203B20C->unkC0.unk18 = &sUnknown_203B20C->unkF0.a0[1]; sUnknown_203B20C->unkC0.unk1C = 40; sUnknown_203B20C->unkC0.unk20 = 18; sub_8013AA0(&sUnknown_203B20C->unkC0); diff --git a/src/kecleon_bros1.c b/src/kecleon_bros1.c index f42766aca..375c82925 100644 --- a/src/kecleon_bros1.c +++ b/src/kecleon_bros1.c @@ -179,26 +179,26 @@ static void sub_8018D30(void) { s32 i; - RestoreUnkTextStruct_8006518(sKecleonBrosWork1->unkE8); + RestoreUnkTextStruct_8006518(&sKecleonBrosWork1->unkE8); switch (sKecleonBrosWork1->currState) { case 18: case 19: - sKecleonBrosWork1->unkE8[0] = sUnknown_80DB840; - sKecleonBrosWork1->unkE8[2] = sUnknown_80DB840; - sKecleonBrosWork1->unkE8[0] = sUnknown_80DB870; - sKecleonBrosWork1->unkE8[1] = sUnknown_80DB888; + sKecleonBrosWork1->unkE8.a0[0] = sUnknown_80DB840; + sKecleonBrosWork1->unkE8.a0[2] = sUnknown_80DB840; + sKecleonBrosWork1->unkE8.a0[0] = sUnknown_80DB870; + sKecleonBrosWork1->unkE8.a0[1] = sUnknown_80DB888; break; case 26: case 27: - sKecleonBrosWork1->unkE8[0] = sUnknown_80DB840; - sKecleonBrosWork1->unkE8[1] = sUnknown_80DB840; - sKecleonBrosWork1->unkE8[2] = sUnknown_80DB840; - sKecleonBrosWork1->unkE8[1] = sUnknown_80DB888; + sKecleonBrosWork1->unkE8.a0[0] = sUnknown_80DB840; + sKecleonBrosWork1->unkE8.a0[1] = sUnknown_80DB840; + sKecleonBrosWork1->unkE8.a0[2] = sUnknown_80DB840; + sKecleonBrosWork1->unkE8.a0[1] = sUnknown_80DB888; break; case 20: case 28: - sKecleonBrosWork1->unkE8[2] = sUnknown_80DB858; + sKecleonBrosWork1->unkE8.a0[2] = sUnknown_80DB858; break; default: case KECLEON_STORE_BUY_ITEM_INFO: @@ -207,12 +207,12 @@ static void sub_8018D30(void) case KECLEON_STORE_SELL_ITEM_MENU: case KECLEON_STORE_SELL_ITEM_RECEIPT: for (i = 0; i < 4; i++) - sKecleonBrosWork1->unkE8[i] = sUnknown_80DB840; + sKecleonBrosWork1->unkE8.a0[i] = sUnknown_80DB840; break; } ResetUnusedInputStruct(); - xxx_call_save_unk_text_struct_800641C(sKecleonBrosWork1->unkE8, TRUE, TRUE); + xxx_call_save_unk_text_struct_800641C(&sKecleonBrosWork1->unkE8, TRUE, TRUE); } static void UpdateKecleonStoreDialogue(void) diff --git a/src/kecleon_bros2.c b/src/kecleon_bros2.c index e071f6169..f05684cb8 100644 --- a/src/kecleon_bros2.c +++ b/src/kecleon_bros2.c @@ -25,12 +25,12 @@ bool8 sub_8019E40(u32 r0) gUnknown_203B214 = MemoryAlloc(sizeof(*gUnknown_203B214), 8); gUnknown_203B214->s0.unk34 = r0; - gUnknown_203B214->s0.unk38 = &gUnknown_203B214->s0.unk3C[gUnknown_203B214->s0.unk34]; - RestoreUnkTextStruct_8006518(gUnknown_203B214->s0.unk3C); - gUnknown_203B214->s0.unk3C[gUnknown_203B214->s0.unk34] = sUnknown_80DB8CC; + gUnknown_203B214->s0.unk38 = &gUnknown_203B214->s0.unk3C.a0[gUnknown_203B214->s0.unk34]; + RestoreUnkTextStruct_8006518(&gUnknown_203B214->s0.unk3C); + gUnknown_203B214->s0.unk3C.a0[gUnknown_203B214->s0.unk34] = sUnknown_80DB8CC; gUnknown_203B214->s0.unk38->unk14 = &gUnknown_203B214->unk9C; ResetUnusedInputStruct(); - xxx_call_save_unk_text_struct_800641C(gUnknown_203B214->s0.unk3C, TRUE, TRUE); + xxx_call_save_unk_text_struct_800641C(&gUnknown_203B214->s0.unk3C, TRUE, TRUE); sub_8013818(&gUnknown_203B214->s0.input, CountKecleonShopItems(), 10, r0); gUnknown_203B214->s0.input.menuIndex = gUnknown_203B218; sub_8013984(&gUnknown_203B214->s0.input); @@ -84,7 +84,7 @@ u8 sub_8019FB0(void) void sub_8019FCC(bool8 r0) { ResetUnusedInputStruct(); - xxx_call_save_unk_text_struct_800641C(gUnknown_203B214->s0.unk3C, FALSE, FALSE); + xxx_call_save_unk_text_struct_800641C(&gUnknown_203B214->s0.unk3C, FALSE, FALSE); gUnknown_203B214->s0.input.unk22 = CountKecleonShopItems(); sub_8013984(&gUnknown_203B214->s0.input); sub_801A064(); @@ -97,9 +97,9 @@ void sub_801A010(void) { if (gUnknown_203B214 != NULL) { gUnknown_203B218 = gUnknown_203B214->s0.input.menuIndex; - gUnknown_203B214->s0.unk3C[gUnknown_203B214->s0.unk34] = sUnknown_80DB8B4; + gUnknown_203B214->s0.unk3C.a0[gUnknown_203B214->s0.unk34] = sUnknown_80DB8B4; ResetUnusedInputStruct(); - xxx_call_save_unk_text_struct_800641C(gUnknown_203B214->s0.unk3C, TRUE, TRUE); + xxx_call_save_unk_text_struct_800641C(&gUnknown_203B214->s0.unk3C, TRUE, TRUE); MemoryFree(gUnknown_203B214); gUnknown_203B214 = NULL; } diff --git a/src/kecleon_bros3.c b/src/kecleon_bros3.c index 795957ecd..23fe1676b 100644 --- a/src/kecleon_bros3.c +++ b/src/kecleon_bros3.c @@ -25,12 +25,12 @@ u8 sub_801A20C(u32 r0) gUnknown_203B21C = MemoryAlloc(sizeof(*gUnknown_203B21C), 8); gUnknown_203B21C->s0.unk34 = r0; - gUnknown_203B21C->s0.unk38 = &gUnknown_203B21C->s0.unk3C[gUnknown_203B21C->s0.unk34]; - RestoreUnkTextStruct_8006518(gUnknown_203B21C->s0.unk3C); - gUnknown_203B21C->s0.unk3C[gUnknown_203B21C->s0.unk34] = sUnknown_80DB914; + gUnknown_203B21C->s0.unk38 = &gUnknown_203B21C->s0.unk3C.a0[gUnknown_203B21C->s0.unk34]; + RestoreUnkTextStruct_8006518(&gUnknown_203B21C->s0.unk3C); + gUnknown_203B21C->s0.unk3C.a0[gUnknown_203B21C->s0.unk34] = sUnknown_80DB914; gUnknown_203B21C->s0.unk38->unk14 = &gUnknown_203B21C->unk9C; ResetUnusedInputStruct(); - xxx_call_save_unk_text_struct_800641C(gUnknown_203B21C->s0.unk3C, TRUE, TRUE); + xxx_call_save_unk_text_struct_800641C(&gUnknown_203B21C->s0.unk3C, TRUE, TRUE); sub_8013818(&gUnknown_203B21C->s0.input, CountKecleonWareItems(), 10, r0); gUnknown_203B21C->s0.input.menuIndex = gUnknown_203B220; sub_8013984(&gUnknown_203B21C->s0.input); @@ -85,7 +85,7 @@ u8 sub_801A37C(void) void sub_801A398(bool8 r0) { ResetUnusedInputStruct(); - xxx_call_save_unk_text_struct_800641C(gUnknown_203B21C->s0.unk3C, FALSE, FALSE); + xxx_call_save_unk_text_struct_800641C(&gUnknown_203B21C->s0.unk3C, FALSE, FALSE); gUnknown_203B21C->s0.input.unk22 = CountKecleonWareItems(); sub_8013984(&gUnknown_203B21C->s0.input); sub_801A430(); @@ -98,9 +98,9 @@ void sub_801A3DC(void) { if (gUnknown_203B21C != NULL) { gUnknown_203B220 = gUnknown_203B21C->s0.input.menuIndex; - gUnknown_203B21C->s0.unk3C[gUnknown_203B21C->s0.unk34] = sUnknown_80DB8FC; + gUnknown_203B21C->s0.unk3C.a0[gUnknown_203B21C->s0.unk34] = sUnknown_80DB8FC; ResetUnusedInputStruct(); - xxx_call_save_unk_text_struct_800641C(gUnknown_203B21C->s0.unk3C, TRUE, TRUE); + xxx_call_save_unk_text_struct_800641C(&gUnknown_203B21C->s0.unk3C, TRUE, TRUE); MemoryFree(gUnknown_203B21C); gUnknown_203B21C = NULL; } diff --git a/src/kecleon_bros4.c b/src/kecleon_bros4.c index cb75b5065..d7d50d3b9 100644 --- a/src/kecleon_bros4.c +++ b/src/kecleon_bros4.c @@ -35,18 +35,18 @@ bool8 sub_801A5D8(u32 param_1, s32 param_2, UnkTextStruct2_sub *param_3, u32 par FillInventoryGaps(); sub_801AE84(); gUnknown_203B224->unk54.s0.unk34 = param_2; - gUnknown_203B224->unk54.s0.unk38 = &gUnknown_203B224->unk54.s0.unk3C[param_2]; - RestoreUnkTextStruct_8006518(gUnknown_203B224->unk54.s0.unk3C); - gUnknown_203B224->unk54.s0.unk3C[gUnknown_203B224->unk54.s0.unk34] = sUnknown_80DB95C; + gUnknown_203B224->unk54.s0.unk38 = &gUnknown_203B224->unk54.s0.unk3C.a0[param_2]; + RestoreUnkTextStruct_8006518(&gUnknown_203B224->unk54.s0.unk3C); + gUnknown_203B224->unk54.s0.unk3C.a0[gUnknown_203B224->unk54.s0.unk34] = sUnknown_80DB95C; gUnknown_203B224->unk54.s0.unk38->unk14 = &gUnknown_203B224->unk54.unk9C; if (param_3 != NULL) - gUnknown_203B224->unk54.s0.unk3C[gUnknown_203B224->unk54.s0.unk34].unk8 = *param_3; + gUnknown_203B224->unk54.s0.unk3C.a0[gUnknown_203B224->unk54.s0.unk34].unk8 = *param_3; sub_8012D08(gUnknown_203B224->unk54.s0.unk38, param_4); sub_8099690(1); ResetUnusedInputStruct(); - xxx_call_save_unk_text_struct_800641C(gUnknown_203B224->unk54.s0.unk3C, TRUE, TRUE); + xxx_call_save_unk_text_struct_800641C(&gUnknown_203B224->unk54.s0.unk3C, TRUE, TRUE); sub_8013818(&gUnknown_203B224->unk54.s0.input, GetNumberOfFilledInventorySlots(), param_4, param_2); gUnknown_203B224->unk54.s0.input.menuIndex = gUnknown_203B228; gUnknown_203B224->unk54.s0.input.unk1E = gUnknown_203B22A; @@ -147,7 +147,7 @@ void sub_801A8D0(bool8 r0) { sub_8099690(1); ResetUnusedInputStruct(); - xxx_call_save_unk_text_struct_800641C(gUnknown_203B224->unk54.s0.unk3C, FALSE, FALSE); + xxx_call_save_unk_text_struct_800641C(&gUnknown_203B224->unk54.s0.unk3C, FALSE, FALSE); FillInventoryGaps(); gUnknown_203B224->unk54.s0.input.unk22 = GetNumberOfFilledInventorySlots(); sub_8013984(&gUnknown_203B224->unk54.s0.input); @@ -162,10 +162,10 @@ void sub_801A928(void) if (gUnknown_203B224 != NULL) { gUnknown_203B228 = gUnknown_203B224->unk54.s0.input.menuIndex; gUnknown_203B22A = gUnknown_203B224->unk54.s0.input.unk1E; - gUnknown_203B224->unk54.s0.unk3C[gUnknown_203B224->unk54.s0.unk34] = sUnknown_80DB944; + gUnknown_203B224->unk54.s0.unk3C.a0[gUnknown_203B224->unk54.s0.unk34] = sUnknown_80DB944; sub_8099690(0); ResetUnusedInputStruct(); - xxx_call_save_unk_text_struct_800641C(gUnknown_203B224->unk54.s0.unk3C, TRUE, TRUE); + xxx_call_save_unk_text_struct_800641C(&gUnknown_203B224->unk54.s0.unk3C, TRUE, TRUE); MemoryFree(gUnknown_203B224); gUnknown_203B224 = NULL; } @@ -178,7 +178,7 @@ static void sub_801A998(void) gUnknown_203B224->unk54.unk9C.f2 = 11; gUnknown_203B224->unk54.unk9C.f3 = 0; ResetUnusedInputStruct(); - xxx_call_save_unk_text_struct_800641C(gUnknown_203B224->unk54.s0.unk3C, TRUE, TRUE); + xxx_call_save_unk_text_struct_800641C(&gUnknown_203B224->unk54.s0.unk3C, TRUE, TRUE); } void sub_801A9E0(void) diff --git a/src/load_screen.c b/src/load_screen.c index f816767a4..506b7af4b 100644 --- a/src/load_screen.c +++ b/src/load_screen.c @@ -29,7 +29,7 @@ struct LoadScreen // size: 0x27c u32 currMenu; MenuStruct unk4[4]; - UnkTextStruct2 unk144[4]; + UnkTextStruct3 unk144; /* 0x1A4 */ u8 formattedTeamName[0x24]; /* 0x1C8 */ u8 formattedPlayerName[0x24]; /* 0x1EC */ u8 formattedLocation[0x24]; @@ -168,29 +168,29 @@ void CreateLoadScreen(u32 currMenu) } gLoadScreen->currMenu = currMenu; for(index = 0; index < 4; index++){ - gLoadScreen->unk144[index] = gUnknown_80E75F8; + gLoadScreen->unk144.a0[index] = gUnknown_80E75F8; } ResetUnusedInputStruct(); - xxx_call_save_unk_text_struct_800641C(gLoadScreen->unk144, TRUE, TRUE); - SetMenuItems(gLoadScreen->unk4,gLoadScreen->unk144,0,&gUnknown_80E7610,gUnknown_203B378,FALSE,6,FALSE); + xxx_call_save_unk_text_struct_800641C(&gLoadScreen->unk144, TRUE, TRUE); + SetMenuItems(gLoadScreen->unk4,&gLoadScreen->unk144,0,&gUnknown_80E7610,gUnknown_203B378,FALSE,6,FALSE); switch(gLoadScreen->currMenu){ case MENU_CONTINUE: if (IsQuickSave()) - SetMenuItems(gLoadScreen->unk4,gLoadScreen->unk144,1,&gUnknown_80E762C,gResumeQuicksaveMenuItems,FALSE,6,FALSE); + SetMenuItems(gLoadScreen->unk4,&gLoadScreen->unk144,1,&gUnknown_80E762C,gResumeQuicksaveMenuItems,FALSE,6,FALSE); else - SetMenuItems(gLoadScreen->unk4,gLoadScreen->unk144,1,&gUnknown_80E762C,gResumeAdventureMenuItems,FALSE,6,FALSE); + SetMenuItems(gLoadScreen->unk4,&gLoadScreen->unk144,1,&gUnknown_80E762C,gResumeAdventureMenuItems,FALSE,6,FALSE); break; case MENU_AWAITING_RESCUE: - SetMenuItems(gLoadScreen->unk4,gLoadScreen->unk144,1,&gUnknown_80E762C,gQuitWaitingRescueMenuItems,FALSE,6,FALSE); + SetMenuItems(gLoadScreen->unk4,&gLoadScreen->unk144,1,&gUnknown_80E762C,gQuitWaitingRescueMenuItems,FALSE,6,FALSE); break; case MENU_DELETE_SAVE_PROMPT: - SetMenuItems(gLoadScreen->unk4,gLoadScreen->unk144,1,&gUnknown_80E762C,gDeleteSavePromptMenuItems,FALSE,6,FALSE); + SetMenuItems(gLoadScreen->unk4,&gLoadScreen->unk144,1,&gUnknown_80E762C,gDeleteSavePromptMenuItems,FALSE,6,FALSE); break; case MENU_DELETE_SAVE_CONFIRM: - SetMenuItems(gLoadScreen->unk4,gLoadScreen->unk144,1,&gUnknown_80E762C, gDeleteSaveConfirmMenuItems,FALSE,6,FALSE); + SetMenuItems(gLoadScreen->unk4,&gLoadScreen->unk144,1,&gUnknown_80E762C, gDeleteSaveConfirmMenuItems,FALSE,6,FALSE); break; } - SetMenuItems(gLoadScreen->unk4,gLoadScreen->unk144,2,&gUnknown_80E7784,gLoadScreenYesNoMenu,TRUE,2,FALSE); + SetMenuItems(gLoadScreen->unk4,&gLoadScreen->unk144,2,&gUnknown_80E7784,gLoadScreenYesNoMenu,TRUE,2,FALSE); sub_8035CF4(gLoadScreen->unk4,0,0); sub_8035CF4(gLoadScreen->unk4,1,0); sub_8035CF4(gLoadScreen->unk4,2,1); diff --git a/src/luminous_cave.c b/src/luminous_cave.c index edbb0cf20..2c4fe069b 100644 --- a/src/luminous_cave.c +++ b/src/luminous_cave.c @@ -180,12 +180,12 @@ static void sub_8024804(void) { s32 i; - RestoreUnkTextStruct_8006518(sLuminousCaveWork->unk114); + RestoreUnkTextStruct_8006518(&sLuminousCaveWork->unk114); switch (sLuminousCaveWork->state) { case 8: case 13: - sLuminousCaveWork->unk114[2] = sUnknown_80DCA00; + sLuminousCaveWork->unk114.a0[2] = sUnknown_80DCA00; break; case LUMINOUS_CAVE_LET_US_BEGIN: case LUMINOUS_CAVE_CHANGED_APPEARANCE: @@ -200,12 +200,12 @@ static void sub_8024804(void) break; default: for (i = 0; i < 4; i++) - sLuminousCaveWork->unk114[i] = sUnknown_80DC9E8; + sLuminousCaveWork->unk114.a0[i] = sUnknown_80DC9E8; break; } ResetUnusedInputStruct(); - xxx_call_save_unk_text_struct_800641C(sLuminousCaveWork->unk114, TRUE, TRUE); + xxx_call_save_unk_text_struct_800641C(&sLuminousCaveWork->unk114, TRUE, TRUE); } static void UpdateLuminousCaveDialogue(void) diff --git a/src/mailbox.c b/src/mailbox.c index 2e3a5a1f1..83ea8e5f7 100644 --- a/src/mailbox.c +++ b/src/mailbox.c @@ -150,34 +150,34 @@ void SetMailboxState(u32 newState) void sub_802E0A0(void) { s32 index; - RestoreUnkTextStruct_8006518(gUnknown_203B304->unk10C); + RestoreUnkTextStruct_8006518(&gUnknown_203B304->unk10C); switch(gUnknown_203B304->state) { case MAIN_MAILBOX_MENU: for(index = 0; index < 4; index++) { - gUnknown_203B304->unk10C[index] = gUnknown_80E0284; + gUnknown_203B304->unk10C.a0[index] = gUnknown_80E0284; } CreateMailboxMenu(); - gUnknown_203B304->unk10C[2] = gUnknown_80E029C; - sub_8012CAC(&gUnknown_203B304->unk10C[2], gUnknown_203B304->menuItems); + gUnknown_203B304->unk10C.a0[2] = gUnknown_80E029C; + sub_8012CAC(&gUnknown_203B304->unk10C.a0[2], gUnknown_203B304->menuItems); break; case MAIL_ACTION_MENU: CreateMailActionMenu(); - gUnknown_203B304->unk10C[2] = gUnknown_80E02B4; - sub_8012CAC(&gUnknown_203B304->unk10C[2], gUnknown_203B304->menuItems); - gUnknown_203B304->unk10C[2].unkC = 6; - gUnknown_203B304->unk10C[3] = gUnknown_80E02CC; + gUnknown_203B304->unk10C.a0[2] = gUnknown_80E02B4; + sub_8012CAC(&gUnknown_203B304->unk10C.a0[2], gUnknown_203B304->menuItems); + gUnknown_203B304->unk10C.a0[2].unkC = 6; + gUnknown_203B304->unk10C.a0[3] = gUnknown_80E02CC; break; default: for(index = 0; index < 4; index++) { - gUnknown_203B304->unk10C[index] = gUnknown_80E0284; + gUnknown_203B304->unk10C.a0[index] = gUnknown_80E0284; } break; } ResetUnusedInputStruct(); - xxx_call_save_unk_text_struct_800641C(gUnknown_203B304->unk10C, TRUE, TRUE); + xxx_call_save_unk_text_struct_800641C(&gUnknown_203B304->unk10C, TRUE, TRUE); } void sub_802E1AC(void) diff --git a/src/main_menu1.c b/src/main_menu1.c index 8a79f8eb2..5db81b46d 100644 --- a/src/main_menu1.c +++ b/src/main_menu1.c @@ -291,9 +291,10 @@ void sub_8035C1C(void) sMainMenu->sub.unk2D = 0; } -void SetMenuItems(MenuStruct *a0, UnkTextStruct2 *a1, s32 index, const UnkTextStruct2 *a3, const MenuItem *menuItems, bool8 a5, u32 menuAction, bool8 unused) +void SetMenuItems(MenuStruct *a0, UnkTextStruct3 *a1, s32 index, const UnkTextStruct2 *a3, const MenuItem *menuItems, bool8 a5, u32 menuAction, bool8 unused) { - a1[index] = *a3; + UnkTextStruct2 *txtPtrs = a1->a0; + txtPtrs[index] = *a3; ResetUnusedInputStruct(); xxx_call_save_unk_text_struct_800641C(a1, TRUE, TRUE); @@ -305,10 +306,13 @@ void SetMenuItems(MenuStruct *a0, UnkTextStruct2 *a1, s32 index, const UnkTextSt a0[index].unk4C = TRUE; } -void sub_8035CC0(UnkTextStruct2 *dataArray, u32 index) +void sub_8035CC0(UnkTextStruct3 *dataArray, u32 index) { + UnkTextStruct2 *txtPtrs; + RestoreUnkTextStruct_8006518(dataArray); - dataArray[index] = sUnknown_80E59A8; + txtPtrs = dataArray->a0; + txtPtrs[index] = sUnknown_80E59A8; ResetUnusedInputStruct(); xxx_call_save_unk_text_struct_800641C(dataArray, TRUE, TRUE); } diff --git a/src/main_menu2.c b/src/main_menu2.c index 220930b9d..f6d5d8a4d 100644 --- a/src/main_menu2.c +++ b/src/main_menu2.c @@ -32,10 +32,10 @@ void DrawMainMenu(void) } for (i = 0; i < 4; i++) - sUnknown_203B34C->unk144[i] = sUnknown_80E59C8; + sUnknown_203B34C->unk144.a0[i] = sUnknown_80E59C8; ResetUnusedInputStruct(); - xxx_call_save_unk_text_struct_800641C(sUnknown_203B34C->unk144, TRUE, TRUE); + xxx_call_save_unk_text_struct_800641C(&sUnknown_203B34C->unk144, TRUE, TRUE); SetMainMenuItems(); sUnknown_203B34C->currMenuChoice = -1; @@ -148,56 +148,56 @@ static bool8 SetMainMenuText(void) return FALSE; sUnknown_203B34C->currMenuChoice = menuChoice; - sub_8035CC0(sUnknown_203B34C->unk144, 2); - sub_8035CC0(sUnknown_203B34C->unk144, 3); + sub_8035CC0(&sUnknown_203B34C->unk144, 2); + sub_8035CC0(&sUnknown_203B34C->unk144, 3); switch (menuChoice) { case MENU_WIRELESS_COMMS: // Using wireless communications, you can go on an adventure to unknown worlds. - SetMenuItems(sUnknown_203B34C->unk4, sUnknown_203B34C->unk144, 2, &sUnknown_80E5CB4, sUnknown_80E6030, FALSE, 0, FALSE); + SetMenuItems(sUnknown_203B34C->unk4, &sUnknown_203B34C->unk144, 2, &sUnknown_80E5CB4, sUnknown_80E6030, FALSE, 0, FALSE); break; case MENU_WONDER_MAIL: // Using passwords, you can receive Wonder Mail - SetMenuItems(sUnknown_203B34C->unk4, sUnknown_203B34C->unk144, 2, &sUnknown_80E5CB4, sUnknown_80E5F80, FALSE, 0, FALSE); + SetMenuItems(sUnknown_203B34C->unk4, &sUnknown_203B34C->unk144, 2, &sUnknown_80E5CB4, sUnknown_80E5F80, FALSE, 0, FALSE); break; case MENU_AWAITING_RESCUE: // You are awaiting resuce by a friend // You can give up waiting for rescue - SetMenuItems(sUnknown_203B34C->unk4, sUnknown_203B34C->unk144, 2, &sUnknown_80E5CB4, sUnknown_80E5F1C, FALSE, 0, FALSE); + SetMenuItems(sUnknown_203B34C->unk4, &sUnknown_203B34C->unk144, 2, &sUnknown_80E5CB4, sUnknown_80E5F1C, FALSE, 0, FALSE); break; case MENU_NEW_GAME: // Start an entirely new adventure - SetMenuItems(sUnknown_203B34C->unk4, sUnknown_203B34C->unk144, 2, &sUnknown_80E5CB4, sUnknown_80E5CCC, FALSE, 0, FALSE); + SetMenuItems(sUnknown_203B34C->unk4, &sUnknown_203B34C->unk144, 2, &sUnknown_80E5CB4, sUnknown_80E5CCC, FALSE, 0, FALSE); break; case MENU_CONTINUE: // Resume your adventure from where you last saved - SetMenuItems(sUnknown_203B34C->unk4, sUnknown_203B34C->unk144, 2, &sUnknown_80E5CB4, sUnknown_80E5DA0, FALSE, 0, FALSE); + SetMenuItems(sUnknown_203B34C->unk4, &sUnknown_203B34C->unk144, 2, &sUnknown_80E5CB4, sUnknown_80E5DA0, FALSE, 0, FALSE); break; case MENU_DELETE_SAVE_PROMPT: // This will delete your saved game data. // Beware! This will delete it forever - SetMenuItems(sUnknown_203B34C->unk4, sUnknown_203B34C->unk144, 2, &sUnknown_80E5CB4, sUnknown_80E5DF0, FALSE, 0, FALSE); + SetMenuItems(sUnknown_203B34C->unk4, &sUnknown_203B34C->unk144, 2, &sUnknown_80E5CB4, sUnknown_80E5DF0, FALSE, 0, FALSE); break; case MENU_ADVENTURE_LOG: // Check your career as an adventurer - SetMenuItems(sUnknown_203B34C->unk4, sUnknown_203B34C->unk144, 2, &sUnknown_80E5CB4, sUnknown_80E5D0C, FALSE, 0, FALSE); + SetMenuItems(sUnknown_203B34C->unk4, &sUnknown_203B34C->unk144, 2, &sUnknown_80E5CB4, sUnknown_80E5D0C, FALSE, 0, FALSE); break; case MENU_FRIEND_RESCUE: // Using a Game Link cable or passwords, friends may rescue each other - SetMenuItems(sUnknown_203B34C->unk4, sUnknown_203B34C->unk144, 2, &sUnknown_80E5CB4, sUnknown_80E5E5C, FALSE, 0, FALSE); + SetMenuItems(sUnknown_203B34C->unk4, &sUnknown_203B34C->unk144, 2, &sUnknown_80E5CB4, sUnknown_80E5E5C, FALSE, 0, FALSE); break; case MENU_TRADE_ITEMS: // Using a Game Link cable you can trade stored items with a friend - SetMenuItems(sUnknown_203B34C->unk4, sUnknown_203B34C->unk144, 2, &sUnknown_80E5CB4, sUnknown_80E5EBC, FALSE, 0, FALSE); + SetMenuItems(sUnknown_203B34C->unk4, &sUnknown_203B34C->unk144, 2, &sUnknown_80E5CB4, sUnknown_80E5EBC, FALSE, 0, FALSE); break; case MENU_DUAL_SLOT: // Using Dual Slot function, you can receive teams from your friends - SetMenuItems(sUnknown_203B34C->unk4, sUnknown_203B34C->unk144, 2, &sUnknown_80E5CB4, sUnknown_80E5FCC, FALSE, 0, FALSE); + SetMenuItems(sUnknown_203B34C->unk4, &sUnknown_203B34C->unk144, 2, &sUnknown_80E5CB4, sUnknown_80E5FCC, FALSE, 0, FALSE); break; case MENU_DEBUG: // This is the Debug Mode. // It won't be in the release version - SetMenuItems(sUnknown_203B34C->unk4, sUnknown_203B34C->unk144, 2, &sUnknown_80E5CB4, sUnknown_80E5D48, FALSE, 0, FALSE); + SetMenuItems(sUnknown_203B34C->unk4, &sUnknown_203B34C->unk144, 2, &sUnknown_80E5CB4, sUnknown_80E5D48, FALSE, 0, FALSE); break; default: break; @@ -208,7 +208,7 @@ static bool8 SetMainMenuText(void) static void sub_803623C(void) { - sub_8035CC0(sUnknown_203B34C->unk144, 1); + sub_8035CC0(&sUnknown_203B34C->unk144, 1); SetMainMenuItems(); sUnknown_203B34C->currMenuChoice = -1; @@ -230,7 +230,7 @@ static void SetMainMenuItems(void) // Friend Rescue // Trade Items // Wonder Mail - SetMenuItems(sUnknown_203B34C->unk4, sUnknown_203B34C->unk144, 0, &sUnknown_80E5A78, sUnknown_80E5C18, TRUE, sUnknown_203B350, TRUE); + SetMenuItems(sUnknown_203B34C->unk4, &sUnknown_203B34C->unk144, 0, &sUnknown_80E5A78, sUnknown_80E5C18, TRUE, sUnknown_203B350, TRUE); } else { // Revive Team @@ -238,7 +238,7 @@ static void SetMainMenuItems(void) // Adventure Log // Friend Rescue // Trade Items - SetMenuItems(sUnknown_203B34C->unk4, sUnknown_203B34C->unk144, 0, &sUnknown_80E5BC4, sUnknown_80E5BDC, TRUE, sUnknown_203B350, TRUE); + SetMenuItems(sUnknown_203B34C->unk4, &sUnknown_203B34C->unk144, 0, &sUnknown_80E5BC4, sUnknown_80E5BDC, TRUE, sUnknown_203B350, TRUE); } } else { @@ -249,7 +249,7 @@ static void SetMainMenuItems(void) // Friend Rescue // Trade Items // Wonder Mail - SetMenuItems(sUnknown_203B34C->unk4, sUnknown_203B34C->unk144, 0, &sUnknown_80E5A78, sUnknown_80E5AFC, TRUE, sUnknown_203B350, TRUE); + SetMenuItems(sUnknown_203B34C->unk4, &sUnknown_203B34C->unk144, 0, &sUnknown_80E5A78, sUnknown_80E5AFC, TRUE, sUnknown_203B350, TRUE); } else { // Continue @@ -257,7 +257,7 @@ static void SetMainMenuItems(void) // Adventure Log // Friend Rescue // Trade Items - SetMenuItems(sUnknown_203B34C->unk4, sUnknown_203B34C->unk144, 0, &sUnknown_80E5A60, sUnknown_80E5A90, TRUE, sUnknown_203B350, TRUE); + SetMenuItems(sUnknown_203B34C->unk4, &sUnknown_203B34C->unk144, 0, &sUnknown_80E5A60, sUnknown_80E5A90, TRUE, sUnknown_203B350, TRUE); } } } @@ -269,7 +269,7 @@ static void SetMainMenuItems(void) // Friend Rescue // Trade Items // Wonder Mail - SetMenuItems(sUnknown_203B34C->unk4, sUnknown_203B34C->unk144, 0, &sUnknown_80E5A78, sUnknown_80E5B8C, TRUE, sUnknown_203B350, TRUE); + SetMenuItems(sUnknown_203B34C->unk4, &sUnknown_203B34C->unk144, 0, &sUnknown_80E5A78, sUnknown_80E5B8C, TRUE, sUnknown_203B350, TRUE); } else { // Awaiting Rescue @@ -277,14 +277,14 @@ static void SetMainMenuItems(void) // Adventure Log // Friend Rescue // Trade Items - SetMenuItems(sUnknown_203B34C->unk4, sUnknown_203B34C->unk144, 0, &sUnknown_80E5B34, sUnknown_80E5B4C, TRUE, sUnknown_203B350, TRUE); + SetMenuItems(sUnknown_203B34C->unk4, &sUnknown_203B34C->unk144, 0, &sUnknown_80E5B34, sUnknown_80E5B4C, TRUE, sUnknown_203B350, TRUE); } } } else { // New Game // Adventure Log - SetMenuItems(sUnknown_203B34C->unk4, sUnknown_203B34C->unk144, 0, &sUnknown_80E59E0, sUnknown_80E59F8, TRUE, sUnknown_203B350, TRUE); + SetMenuItems(sUnknown_203B34C->unk4, &sUnknown_203B34C->unk144, 0, &sUnknown_80E59E0, sUnknown_80E59F8, TRUE, sUnknown_203B350, TRUE); } } diff --git a/src/makuhita_dojo1.c b/src/makuhita_dojo1.c index bfcf7f211..e2357fb9a 100644 --- a/src/makuhita_dojo1.c +++ b/src/makuhita_dojo1.c @@ -152,21 +152,21 @@ static void sub_802FF1C(void) { s32 index; - RestoreUnkTextStruct_8006518(sMakuhitaDojoWork1->unk6C); + RestoreUnkTextStruct_8006518(&sMakuhitaDojoWork1->unk6C); switch (sMakuhitaDojoWork1->state) { case 0: case 4: case 13: for(index = 0; index < 4; index++) - sMakuhitaDojoWork1->unk6C[index] = sUnknown_80E0760; + sMakuhitaDojoWork1->unk6C.a0[index] = sUnknown_80E0760; break; default: break; } ResetUnusedInputStruct(); - xxx_call_save_unk_text_struct_800641C(sMakuhitaDojoWork1->unk6C, TRUE, TRUE); + xxx_call_save_unk_text_struct_800641C(&sMakuhitaDojoWork1->unk6C, TRUE, TRUE); } static void MakuhitaDojo_UpdateDialogue(void) diff --git a/src/makuhita_dojo2.c b/src/makuhita_dojo2.c index 0555b3045..a9e7fea41 100644 --- a/src/makuhita_dojo2.c +++ b/src/makuhita_dojo2.c @@ -31,17 +31,17 @@ bool8 sub_80302E8(s32 param_1, UnkTextStruct2_sub *param_2, u32 param_3) sMakuhitaDojoWork2 = MemoryAlloc(sizeof(MakuhitaDojoWork2), 8); sMakuhitaDojoWork2->s30.s0.unk34 = param_1; - sMakuhitaDojoWork2->s30.s0.unk38 = &sMakuhitaDojoWork2->s30.s0.unk3C[param_1]; - RestoreUnkTextStruct_8006518(sMakuhitaDojoWork2->s30.s0.unk3C); - sMakuhitaDojoWork2->s30.s0.unk3C[sMakuhitaDojoWork2->s30.s0.unk34] = sUnknown_80E0804; + sMakuhitaDojoWork2->s30.s0.unk38 = &sMakuhitaDojoWork2->s30.s0.unk3C.a0[param_1]; + RestoreUnkTextStruct_8006518(&sMakuhitaDojoWork2->s30.s0.unk3C); + sMakuhitaDojoWork2->s30.s0.unk3C.a0[sMakuhitaDojoWork2->s30.s0.unk34] = sUnknown_80E0804; sMakuhitaDojoWork2->s30.s0.unk38->unk14 = &sMakuhitaDojoWork2->s30.unk9C; if (param_2 != NULL) - sMakuhitaDojoWork2->s30.s0.unk3C[sMakuhitaDojoWork2->s30.s0.unk34].unk8 = *param_2; + sMakuhitaDojoWork2->s30.s0.unk3C.a0[sMakuhitaDojoWork2->s30.s0.unk34].unk8 = *param_2; sub_8012D08(sMakuhitaDojoWork2->s30.s0.unk38, param_3); ResetUnusedInputStruct(); - xxx_call_save_unk_text_struct_800641C(sMakuhitaDojoWork2->s30.s0.unk3C, TRUE, TRUE); + xxx_call_save_unk_text_struct_800641C(&sMakuhitaDojoWork2->s30.s0.unk3C, TRUE, TRUE); sub_8013818(&sMakuhitaDojoWork2->s30.s0.input, sub_8030668(), param_3, param_1); sub_80304C8(); MakuhitaDojo_DrawCourseList(); @@ -91,9 +91,9 @@ UNUSED static void sub_8030444(bool8 a0) void sub_8030480(void) { if (sMakuhitaDojoWork2 != NULL) { - sMakuhitaDojoWork2->s30.s0.unk3C[sMakuhitaDojoWork2->s30.s0.unk34] = sUnknown_80E07EC; + sMakuhitaDojoWork2->s30.s0.unk3C.a0[sMakuhitaDojoWork2->s30.s0.unk34] = sUnknown_80E07EC; ResetUnusedInputStruct(); - xxx_call_save_unk_text_struct_800641C(sMakuhitaDojoWork2->s30.s0.unk3C, TRUE, TRUE); + xxx_call_save_unk_text_struct_800641C(&sMakuhitaDojoWork2->s30.s0.unk3C, TRUE, TRUE); MemoryFree(sMakuhitaDojoWork2); sMakuhitaDojoWork2 = NULL; } diff --git a/src/menu_input.c b/src/menu_input.c index 3a19b7e9e..8b2f39d7c 100644 --- a/src/menu_input.c +++ b/src/menu_input.c @@ -386,7 +386,7 @@ void sub_8012EBC(MenuStruct *param_1) const u32 *colorArray; s32 counter; s32 index; - UnkTextStruct2 textStack[4]; + UnkTextStruct3 textStack; u8 buffer[256]; UnkTextStruct1 *ptr_text; UnkTextStruct2 *ptr_text2; @@ -397,8 +397,8 @@ void sub_8012EBC(MenuStruct *param_1) ptr_text = &gUnknown_2027370[index]; if (ptr_text->unkC == 6) { - ptr_text2 = &textStack[index]; - RestoreUnkTextStruct_8006518(textStack); + ptr_text2 = &textStack.a0[index]; + RestoreUnkTextStruct_8006518(&textStack); x = sub_8008ED0(param_1->unk0); PrintFormattedStringOnWindow(((ptr_text2->unk14->f2 * 8 - x) / 2) + 8, 0, param_1->unk0, param_1->index, 0); } @@ -1152,7 +1152,7 @@ static bool8 sub_8013DD0(unkStructFor8013AA0 *a0) void sub_8013E54(void) { UnkTextStruct1 *ptr = &gUnknown_2027370[0]; - SpriteOAM SStack_18 = {0}; + SpriteOAM SStack_18 = {0}; SpriteSetAffine1(&SStack_18, 0); SpriteSetAffine2(&SStack_18, 0); @@ -1174,7 +1174,7 @@ void sub_8013E54(void) void sub_8013F84(void) { UnkTextStruct1 *ptr = &gUnknown_2027370[0]; - SpriteOAM SStack_18 = {0}; + SpriteOAM SStack_18 = {0}; SpriteSetAffine1(&SStack_18, 0); SpriteSetAffine2(&SStack_18, 0); @@ -1193,13 +1193,13 @@ void sub_8013F84(void) AddSprite(&SStack_18,0x100,0,0x0); } -void sub_80140B4(UnkTextStruct2 *a0) +void sub_80140B4(UnkTextStruct3 *a0) { s32 i; for(i = 0; i < 4; i++) { - a0[i] = gUnknown_80D47C8[i]; + a0->a0[i] = gUnknown_80D47C8[i]; } } diff --git a/src/mission_reward.c b/src/mission_reward.c index 12d1ed130..4a970e60c 100644 --- a/src/mission_reward.c +++ b/src/mission_reward.c @@ -22,7 +22,7 @@ struct unkStruct_203B310 /* 0xC */ s32 itemRewardIndex; unkStruct_802F204 *unk10; /* 0x14 */ struct MonPortraitMsg monPortrait; - UnkTextStruct2 unk24[4]; + UnkTextStruct3 unk24; }; EWRAM_INIT struct unkStruct_203B310 *gUnknown_203B310 = {NULL}; @@ -180,13 +180,13 @@ void sub_802F300(void) switch(gUnknown_203B310->state) { case PREP_MONEY_REWARD: - RestoreUnkTextStruct_8006518(gUnknown_203B310->unk24); + RestoreUnkTextStruct_8006518(&gUnknown_203B310->unk24); for(index = 0; index < 4; index++) { - gUnknown_203B310->unk24[index] = gUnknown_80E041C; + gUnknown_203B310->unk24.a0[index] = gUnknown_80E041C; } ResetUnusedInputStruct(); - xxx_call_save_unk_text_struct_800641C(gUnknown_203B310->unk24, TRUE, TRUE); + xxx_call_save_unk_text_struct_800641C(&gUnknown_203B310->unk24, TRUE, TRUE); default: break; } diff --git a/src/options_menu1.c b/src/options_menu1.c index 4e0222a96..69dd2ef66 100644 --- a/src/options_menu1.c +++ b/src/options_menu1.c @@ -104,7 +104,7 @@ static void sub_801DD84(void) { s32 i; - RestoreUnkTextStruct_8006518(sUnknown_203B25C->unkBC); + RestoreUnkTextStruct_8006518(&sUnknown_203B25C->unkBC); switch (sUnknown_203B25C->state) { case OPTIONS_MENU_INIT: @@ -118,30 +118,30 @@ static void sub_801DD84(void) } for(i = 0; i < 4; i++) - sUnknown_203B25C->unkBC[i] = sUnknown_80DBFB0; + sUnknown_203B25C->unkBC.a0[i] = sUnknown_80DBFB0; - sUnknown_203B25C->unkBC[0] = sUnknown_80DBFCC; - sub_8012CAC(&sUnknown_203B25C->unkBC[0], sUnknown_203B25C->menuItems); - sUnknown_203B25C->unkBC[0].unkC = 10; + sUnknown_203B25C->unkBC.a0[0] = sUnknown_80DBFCC; + sub_8012CAC(&sUnknown_203B25C->unkBC.a0[0], sUnknown_203B25C->menuItems); + sUnknown_203B25C->unkBC.a0[0].unkC = 10; break; case OPTIONS_MENU_MAIN: CreateOthersMenu(); for (i = 0; i < 4; i++) - sUnknown_203B25C->unkBC[i] = sUnknown_80DBFB0; + sUnknown_203B25C->unkBC.a0[i] = sUnknown_80DBFB0; - sUnknown_203B25C->unkBC[0] = sUnknown_80DBFCC; - sub_8012CAC(&sUnknown_203B25C->unkBC[0], sUnknown_203B25C->menuItems); - sUnknown_203B25C->unkBC[0].unkC = 10; + sUnknown_203B25C->unkBC.a0[0] = sUnknown_80DBFCC; + sub_8012CAC(&sUnknown_203B25C->unkBC.a0[0], sUnknown_203B25C->menuItems); + sUnknown_203B25C->unkBC.a0[0].unkC = 10; break; default: for (i = 0; i < 4; i++) - sUnknown_203B25C->unkBC[i] = sUnknown_80DBFB0; + sUnknown_203B25C->unkBC.a0[i] = sUnknown_80DBFB0; break; } ResetUnusedInputStruct(); - xxx_call_save_unk_text_struct_800641C(sUnknown_203B25C->unkBC, TRUE, TRUE); + xxx_call_save_unk_text_struct_800641C(&sUnknown_203B25C->unkBC, TRUE, TRUE); } static void sub_801DED0(void) diff --git a/src/options_menu2.c b/src/options_menu2.c index 80fe8e084..d0a8d0211 100644 --- a/src/options_menu2.c +++ b/src/options_menu2.c @@ -22,12 +22,12 @@ bool8 sub_801E198(GameOptions *optionsMenu) sUnknown_203B260->optionsMenu = optionsMenu; sub_801317C(&sUnknown_203B260->unk4); sUnknown_203B260->unk44 = 0; - sUnknown_203B260->unk48 = &sUnknown_203B260->unk4C[0]; - RestoreUnkTextStruct_8006518(sUnknown_203B260->unk4C); - sUnknown_203B260->unk4C[sUnknown_203B260->unk44] = sUnknown_80DC03C; + sUnknown_203B260->unk48 = &sUnknown_203B260->unk4C.a0[0]; + RestoreUnkTextStruct_8006518(&sUnknown_203B260->unk4C); + sUnknown_203B260->unk4C.a0[sUnknown_203B260->unk44] = sUnknown_80DC03C; sub_8012D08(sUnknown_203B260->unk48, 1); ResetUnusedInputStruct(); - xxx_call_save_unk_text_struct_800641C(sUnknown_203B260->unk4C, TRUE, TRUE); + xxx_call_save_unk_text_struct_800641C(&sUnknown_203B260->unk4C, TRUE, TRUE); sub_8013818(&sUnknown_203B260->input, 1, 1, sUnknown_203B260->unk44); nullsub_38(); CreateOptionsMenu(); @@ -83,9 +83,9 @@ u32 sub_801E218(void) void sub_801E2C4(void) { if (sUnknown_203B260 != NULL) { - sUnknown_203B260->unk4C[sUnknown_203B260->unk44] = sUnknown_80DC020; + sUnknown_203B260->unk4C.a0[sUnknown_203B260->unk44] = sUnknown_80DC020; ResetUnusedInputStruct(); - xxx_call_save_unk_text_struct_800641C(sUnknown_203B260->unk4C, TRUE, TRUE); + xxx_call_save_unk_text_struct_800641C(&sUnknown_203B260->unk4C, TRUE, TRUE); MemoryFree(sUnknown_203B260); sUnknown_203B260 = NULL; } diff --git a/src/other_menus1.c b/src/other_menus1.c index 3cc5485d3..63f1f1153 100644 --- a/src/other_menus1.c +++ b/src/other_menus1.c @@ -54,11 +54,11 @@ void sub_8036FDC(s32 param_1) } for (index2 = 0; index2 < 4; index2++) - sUnknown_203B35C->unk15C[index2] = sUnknown_80E653C; + sUnknown_203B35C->unk15C.a0[index2] = sUnknown_80E653C; ResetUnusedInputStruct(); - xxx_call_save_unk_text_struct_800641C(sUnknown_203B35C->unk15C, TRUE, TRUE); - SetMenuItems(sUnknown_203B35C->unk1C, sUnknown_203B35C->unk15C, 0, &sUnknown_80E6CD0, sUnknown_80E6CE8, FALSE, 6, FALSE); + xxx_call_save_unk_text_struct_800641C(&sUnknown_203B35C->unk15C, TRUE, TRUE); + SetMenuItems(sUnknown_203B35C->unk1C, &sUnknown_203B35C->unk15C, 0, &sUnknown_80E6CD0, sUnknown_80E6CE8, FALSE, 6, FALSE); sub_8035CF4(sUnknown_203B35C->unk1C, 0, TRUE); sub_80376CC(); } @@ -128,17 +128,17 @@ static void sub_80371B8(void) if (sUnknown_203B35C->unk0 < 2 && sUnknown_203B35C->linkStatus == COMMS_GOOD) { if (sub_8037C10(FALSE) != 0) { sub_80376CC(); - sub_8035CC0(sUnknown_203B35C->unk15C, 0); + sub_8035CC0(&sUnknown_203B35C->unk15C, 0); // Success! // The item exchange with your friend // went through successfully - SetMenuItems(sUnknown_203B35C->unk1C, sUnknown_203B35C->unk15C, 0, &sUnknown_80E6C50, sUnknown_80E6C68, FALSE, 6, FALSE); + SetMenuItems(sUnknown_203B35C->unk1C, &sUnknown_203B35C->unk15C, 0, &sUnknown_80E6C50, sUnknown_80E6C68, FALSE, 6, FALSE); sub_8035CF4(sUnknown_203B35C->unk1C, 0, TRUE); } } else { sub_80376CC(); - sub_8035CC0(sUnknown_203B35C->unk15C, 0); + sub_8035CC0(&sUnknown_203B35C->unk15C, 0); switch (sUnknown_203B35C->linkStatus) { case 0: @@ -194,7 +194,7 @@ static void sub_80371B8(void) break; } - SetMenuItems(sUnknown_203B35C->unk1C, sUnknown_203B35C->unk15C, 0, puVar5, MenuItems, FALSE, 6, FALSE); + SetMenuItems(sUnknown_203B35C->unk1C, &sUnknown_203B35C->unk15C, 0, puVar5, MenuItems, FALSE, 6, FALSE); sub_8035CF4(sUnknown_203B35C->unk1C, 0, TRUE); if (sUnknown_203B35C->linkStatus != COMMS_GOOD && sUnknown_203B35C->unk0 == 0) { @@ -407,27 +407,27 @@ static void sub_8037810(void) void sub_8037900(void) { - sub_8035CC0(sUnknown_203B35C->unk15C, 0); + sub_8035CC0(&sUnknown_203B35C->unk15C, 0); switch (sUnknown_203B35C->unk0) { case 0: case 1: { - SetMenuItems(sUnknown_203B35C->unk1C, sUnknown_203B35C->unk15C, 0, &sUnknown_80E6554, sUnknown_80E656C, FALSE, 6, FALSE); + SetMenuItems(sUnknown_203B35C->unk1C, &sUnknown_203B35C->unk15C, 0, &sUnknown_80E6554, sUnknown_80E656C, FALSE, 6, FALSE); break; } case 2: case 3: { - SetMenuItems(sUnknown_203B35C->unk1C, sUnknown_203B35C->unk15C, 0, &sUnknown_80E6554, sUnknown_80E65D8, FALSE, 6, FALSE); + SetMenuItems(sUnknown_203B35C->unk1C, &sUnknown_203B35C->unk15C, 0, &sUnknown_80E6554, sUnknown_80E65D8, FALSE, 6, FALSE); break; } case 4: case 5: { - SetMenuItems(sUnknown_203B35C->unk1C, sUnknown_203B35C->unk15C, 0, &sUnknown_80E6554, sUnknown_80E661C, FALSE, 6, FALSE); + SetMenuItems(sUnknown_203B35C->unk1C, &sUnknown_203B35C->unk15C, 0, &sUnknown_80E6554, sUnknown_80E661C, FALSE, 6, FALSE); break; } case 6: case 7: { - SetMenuItems(sUnknown_203B35C->unk1C, sUnknown_203B35C->unk15C, 0, &sUnknown_80E6554, sUnknown_80E665C, FALSE, 6, FALSE); + SetMenuItems(sUnknown_203B35C->unk1C, &sUnknown_203B35C->unk15C, 0, &sUnknown_80E6554, sUnknown_80E665C, FALSE, 6, FALSE); break; } case 8: { @@ -435,7 +435,7 @@ void sub_8037900(void) } case 9: case 10: { - SetMenuItems(sUnknown_203B35C->unk1C, sUnknown_203B35C->unk15C, 0, &sUnknown_80E6554, sUnknown_80E667C, FALSE, 6, FALSE); + SetMenuItems(sUnknown_203B35C->unk1C, &sUnknown_203B35C->unk15C, 0, &sUnknown_80E6554, sUnknown_80E667C, FALSE, 6, FALSE); break; } } diff --git a/src/party_list_menu.c b/src/party_list_menu.c index 420c611a8..bc0fb1e48 100644 --- a/src/party_list_menu.c +++ b/src/party_list_menu.c @@ -157,36 +157,36 @@ static void SetPartyListMenuState(s32 newState) static void sub_802608C(void) { s32 index; - RestoreUnkTextStruct_8006518(sUnknown_203B2B8->unk220); + RestoreUnkTextStruct_8006518(&sUnknown_203B2B8->unk220); switch(sUnknown_203B2B8->state) { case PARTY_LIST_STATE_MAIN_MENU: case PARTY_LIST_STATE_MAIN_MENU_1: for(index = 0; index < 4; index++) { - sUnknown_203B2B8->unk220[index] = sUnknown_80DD310; + sUnknown_203B2B8->unk220.a0[index] = sUnknown_80DD310; } - sUnknown_203B2B8->unk220[0] = sUnknown_80DD358; - sUnknown_203B2B8->unk220[3] = sUnknown_80DD370; + sUnknown_203B2B8->unk220.a0[0] = sUnknown_80DD358; + sUnknown_203B2B8->unk220.a0[3] = sUnknown_80DD370; PartyListMenu_CreateMenu1(); - sUnknown_203B2B8->unk220[2] = sUnknown_80DD328; - sub_8012CAC(&sUnknown_203B2B8->unk220[2], sUnknown_203B2B8->unk16C); - sUnknown_203B2B8->unk220[2].unkC = 9; + sUnknown_203B2B8->unk220.a0[2] = sUnknown_80DD328; + sub_8012CAC(&sUnknown_203B2B8->unk220.a0[2], sUnknown_203B2B8->unk16C); + sUnknown_203B2B8->unk220.a0[2].unkC = 9; break; case 0x14: PartyListMenu_CreateMenu2(); - sUnknown_203B2B8->unk220[2] = sUnknown_80DD340; - sub_8012CAC(&sUnknown_203B2B8->unk220[2], sUnknown_203B2B8->unk16C); + sUnknown_203B2B8->unk220.a0[2] = sUnknown_80DD340; + sub_8012CAC(&sUnknown_203B2B8->unk220.a0[2], sUnknown_203B2B8->unk16C); break; default: for(index = 0; index < 4; index++) { - sUnknown_203B2B8->unk220[index] = sUnknown_80DD310; + sUnknown_203B2B8->unk220.a0[index] = sUnknown_80DD310; } break; } ResetUnusedInputStruct(); - xxx_call_save_unk_text_struct_800641C(sUnknown_203B2B8->unk220, TRUE, TRUE); + xxx_call_save_unk_text_struct_800641C(&sUnknown_203B2B8->unk220, TRUE, TRUE); } void HandlePartyListMenuCallback(void) diff --git a/src/pelipper_board.c b/src/pelipper_board.c index 43d2d0b16..521ecd5aa 100644 --- a/src/pelipper_board.c +++ b/src/pelipper_board.c @@ -145,34 +145,34 @@ void SetPelipperBoardState(u32 newState) void sub_802E94C(void) { s32 index; - RestoreUnkTextStruct_8006518(gPelipperBoard->unk10C); + RestoreUnkTextStruct_8006518(&gPelipperBoard->unk10C); switch(gPelipperBoard->state) { case MAIN_PELIPPER_BOARD_MENU: for(index = 0; index < 4; index++) { - gPelipperBoard->unk10C[index] = gUnknown_80E0330; + gPelipperBoard->unk10C.a0[index] = gUnknown_80E0330; } CreatePelipperBoardMenu(); - gPelipperBoard->unk10C[2] = gUnknown_80E0348; - sub_8012CAC(&gPelipperBoard->unk10C[2], gPelipperBoard->menuItems); + gPelipperBoard->unk10C.a0[2] = gUnknown_80E0348; + sub_8012CAC(&gPelipperBoard->unk10C.a0[2], gPelipperBoard->menuItems); break; case 6: sub_802EC10(); - gPelipperBoard->unk10C[2] = gUnknown_80E0360; - sub_8012CAC(&gPelipperBoard->unk10C[2], gPelipperBoard->menuItems); - gPelipperBoard->unk10C[2].unkC = 6; - gPelipperBoard->unk10C[3] = gUnknown_80E0378; + gPelipperBoard->unk10C.a0[2] = gUnknown_80E0360; + sub_8012CAC(&gPelipperBoard->unk10C.a0[2], gPelipperBoard->menuItems); + gPelipperBoard->unk10C.a0[2].unkC = 6; + gPelipperBoard->unk10C.a0[3] = gUnknown_80E0378; break; default: for(index = 0; index < 4; index++) { - gPelipperBoard->unk10C[index] = gUnknown_80E0330; + gPelipperBoard->unk10C.a0[index] = gUnknown_80E0330; } break; } ResetUnusedInputStruct(); - xxx_call_save_unk_text_struct_800641C(gPelipperBoard->unk10C, TRUE, TRUE); + xxx_call_save_unk_text_struct_800641C(&gPelipperBoard->unk10C, TRUE, TRUE); } void sub_802EA58(void) diff --git a/src/personality_test1.c b/src/personality_test1.c index 5518629e1..013b326e5 100644 --- a/src/personality_test1.c +++ b/src/personality_test1.c @@ -386,13 +386,13 @@ static void PersonalityTest_DisplayStarterSprite(void) s32 paletteIndex; s32 emotionId; const u8 *gfx; - UnkTextStruct2 stackArray[4]; + UnkTextStruct3 stackArray; starterID = sPersonalityTestTracker->unk4.StarterID; - RestoreUnkTextStruct_8006518(stackArray); - stackArray[1] = sUnknown_80F4244; + RestoreUnkTextStruct_8006518(&stackArray); + stackArray.a0[1] = sUnknown_80F4244; ResetUnusedInputStruct(); - xxx_call_save_unk_text_struct_800641C(stackArray, TRUE, FALSE); + xxx_call_save_unk_text_struct_800641C(&stackArray, TRUE, FALSE); CallPrepareTextbox_8008C54(1); sub_80073B8(1); diff --git a/src/personality_test2.c b/src/personality_test2.c index 9abf56dcd..04118b551 100644 --- a/src/personality_test2.c +++ b/src/personality_test2.c @@ -33,12 +33,12 @@ void CreatePartnerSelectionMenu(s16 starterID) sub_803CEAC(); gUnknown_203B404->StarterID = starterID_s32; gUnknown_203B404->s18.s0.unk34 = 0; - gUnknown_203B404->s18.s0.unk38 = gUnknown_203B404->s18.s0.unk3C; + gUnknown_203B404->s18.s0.unk38 = &gUnknown_203B404->s18.s0.unk3C.a0[0]; - gUnknown_203B404->s18.s0.unk3C[0] = gUnknown_80F4290; - gUnknown_203B404->s18.s0.unk3C[1] = gUnknown_80F42A8; - gUnknown_203B404->s18.s0.unk3C[2] = gUnknown_80F4278; - gUnknown_203B404->s18.s0.unk3C[3] = gUnknown_80F4278; + gUnknown_203B404->s18.s0.unk3C.a0[0] = gUnknown_80F4290; + gUnknown_203B404->s18.s0.unk3C.a0[1] = gUnknown_80F42A8; + gUnknown_203B404->s18.s0.unk3C.a0[2] = gUnknown_80F4278; + gUnknown_203B404->s18.s0.unk3C.a0[3] = gUnknown_80F4278; gUnknown_203B404->s18.s0.unk38->unk14 = &gUnknown_203B404->s18.unk9C; @@ -47,7 +47,7 @@ void CreatePartnerSelectionMenu(s16 starterID) gUnknown_203B404->s18.unk9C.f2 = 6; gUnknown_203B404->s18.unk9C.f3 = 0; ResetUnusedInputStruct(); - xxx_call_save_unk_text_struct_800641C(gUnknown_203B404->s18.s0.unk3C, TRUE, TRUE); + xxx_call_save_unk_text_struct_800641C(&gUnknown_203B404->s18.s0.unk3C, TRUE, TRUE); sub_8013818(&gUnknown_203B404->s18.s0.input, GetValidPartners(), 10, gUnknown_203B404->s18.s0.unk34); RedrawPartnerSelectionMenu(); PersonalityTest_DisplayPartnerSprite(); @@ -90,9 +90,9 @@ UNUSED static void sub_803CE34(bool8 cursorSprite) void sub_803CE6C(void) { - gUnknown_203B404->s18.s0.unk3C[gUnknown_203B404->s18.s0.unk34] = gUnknown_80F4278; + gUnknown_203B404->s18.s0.unk3C.a0[gUnknown_203B404->s18.s0.unk34] = gUnknown_80F4278; ResetUnusedInputStruct(); - xxx_call_save_unk_text_struct_800641C(gUnknown_203B404->s18.s0.unk3C, TRUE, TRUE); + xxx_call_save_unk_text_struct_800641C(&gUnknown_203B404->s18.s0.unk3C, TRUE, TRUE); sub_803CECC(); } diff --git a/src/pokemon_news1.c b/src/pokemon_news1.c index b88b50255..cc92deb6c 100644 --- a/src/pokemon_news1.c +++ b/src/pokemon_news1.c @@ -32,18 +32,18 @@ bool8 sub_802B640(u32 a0, UnkTextStruct2_sub *a1, u32 a2) sUnknown_203B2CC = MemoryAlloc(sizeof(struct unkStruct_203B2CC), 8); sUnknown_203B2CC->s38.unk34 = a0; - sUnknown_203B2CC->s38.unk38 = &sUnknown_203B2CC->s38.unk3C[a0]; + sUnknown_203B2CC->s38.unk38 = &sUnknown_203B2CC->s38.unk3C.a0[a0]; - RestoreUnkTextStruct_8006518(sUnknown_203B2CC->s38.unk3C); + RestoreUnkTextStruct_8006518(&sUnknown_203B2CC->s38.unk3C); - sUnknown_203B2CC->s38.unk3C[sUnknown_203B2CC->s38.unk34] = sUnknown_80DFBEC; + sUnknown_203B2CC->s38.unk3C.a0[sUnknown_203B2CC->s38.unk34] = sUnknown_80DFBEC; if (a1 != NULL) - sUnknown_203B2CC->s38.unk3C[sUnknown_203B2CC->s38.unk34].unk8 = *a1; + sUnknown_203B2CC->s38.unk3C.a0[sUnknown_203B2CC->s38.unk34].unk8 = *a1; sub_8012D08(sUnknown_203B2CC->s38.unk38, a2); ResetUnusedInputStruct(); - xxx_call_save_unk_text_struct_800641C(sUnknown_203B2CC->s38.unk3C, TRUE, TRUE); + xxx_call_save_unk_text_struct_800641C(&sUnknown_203B2CC->s38.unk3C, TRUE, TRUE); sub_8013818(&sUnknown_203B2CC->s38.input, GetNumPKMNNews(), a2, a0); @@ -92,7 +92,7 @@ u8 GetPokemonNewsIndex(void) void sub_802B7D0(bool8 cursorSprite) { ResetUnusedInputStruct(); - xxx_call_save_unk_text_struct_800641C(sUnknown_203B2CC->s38.unk3C, FALSE, FALSE); + xxx_call_save_unk_text_struct_800641C(&sUnknown_203B2CC->s38.unk3C, FALSE, FALSE); sUnknown_203B2CC->s38.input.unk22 = GetNumPKMNNews(); sub_8013984(&sUnknown_203B2CC->s38.input); @@ -110,10 +110,10 @@ void sub_802B81C(void) sUnknown_203B2D2 = sUnknown_203B2CC->s38.input.unk1E; - sUnknown_203B2CC->s38.unk3C[sUnknown_203B2CC->s38.unk34] = sUnknown_80DFBD0; + sUnknown_203B2CC->s38.unk3C.a0[sUnknown_203B2CC->s38.unk34] = sUnknown_80DFBD0; ResetUnusedInputStruct(); - xxx_call_save_unk_text_struct_800641C(sUnknown_203B2CC->s38.unk3C, TRUE, TRUE); + xxx_call_save_unk_text_struct_800641C(&sUnknown_203B2CC->s38.unk3C, TRUE, TRUE); MemoryFree(sUnknown_203B2CC); sUnknown_203B2CC = NULL; diff --git a/src/pokemon_news2.c b/src/pokemon_news2.c index c76a77490..76058ec60 100644 --- a/src/pokemon_news2.c +++ b/src/pokemon_news2.c @@ -27,12 +27,12 @@ bool8 sub_802B9FC(u8 mailIndex) sUnknown_203B2D4->currMailIndex = mailIndex; sub_801317C(&sUnknown_203B2D4->unk88); sUnknown_203B2D4->unk24 = 0; - sUnknown_203B2D4->unk28[0] = sUnknown_80DFC34; - sUnknown_203B2D4->unk28[1] = sUnknown_80DFC18; - sUnknown_203B2D4->unk28[2] = sUnknown_80DFC18; - sUnknown_203B2D4->unk28[3] = sUnknown_80DFC18; + sUnknown_203B2D4->unk28.a0[0] = sUnknown_80DFC34; + sUnknown_203B2D4->unk28.a0[1] = sUnknown_80DFC18; + sUnknown_203B2D4->unk28.a0[2] = sUnknown_80DFC18; + sUnknown_203B2D4->unk28.a0[3] = sUnknown_80DFC18; ResetUnusedInputStruct(); - xxx_call_save_unk_text_struct_800641C(sUnknown_203B2D4->unk28, TRUE, TRUE); + xxx_call_save_unk_text_struct_800641C(&sUnknown_203B2D4->unk28, TRUE, TRUE); sUnknown_203B2D4->unk8 = 0; sub_802BCC4(); sub_802BC7C(); @@ -62,9 +62,9 @@ u32 sub_802BA8C(void) void sub_802BACC(void) { if (sUnknown_203B2D4 != NULL) { - sUnknown_203B2D4->unk28[sUnknown_203B2D4->unk24] = sUnknown_80DFC18; + sUnknown_203B2D4->unk28.a0[sUnknown_203B2D4->unk24] = sUnknown_80DFC18; ResetUnusedInputStruct(); - xxx_call_save_unk_text_struct_800641C(sUnknown_203B2D4->unk28, TRUE, TRUE); + xxx_call_save_unk_text_struct_800641C(&sUnknown_203B2D4->unk28, TRUE, TRUE); MemoryFree(sUnknown_203B2D4); sUnknown_203B2D4 = NULL; } diff --git a/src/pokemon_news3.c b/src/pokemon_news3.c index c0b4820f5..f2acbe8f3 100644 --- a/src/pokemon_news3.c +++ b/src/pokemon_news3.c @@ -35,17 +35,17 @@ bool8 sub_802BD14(s32 a0, UnkTextStruct2_sub *a1, u32 a2) sUnknown_203B2D8 = MemoryAlloc(sizeof(struct unkStruct_203B2D8), 8); sUnknown_203B2D8->unk4.s0.unk34 = a0; - sUnknown_203B2D8->unk4.s0.unk38 = &sUnknown_203B2D8->unk4.s0.unk3C[a0]; - RestoreUnkTextStruct_8006518(sUnknown_203B2D8->unk4.s0.unk3C); - sUnknown_203B2D8->unk4.s0.unk3C[sUnknown_203B2D8->unk4.s0.unk34] = sUnknown_80DFC74; + sUnknown_203B2D8->unk4.s0.unk38 = &sUnknown_203B2D8->unk4.s0.unk3C.a0[a0]; + RestoreUnkTextStruct_8006518(&sUnknown_203B2D8->unk4.s0.unk3C); + sUnknown_203B2D8->unk4.s0.unk3C.a0[sUnknown_203B2D8->unk4.s0.unk34] = sUnknown_80DFC74; sUnknown_203B2D8->unk4.s0.unk38->unk14 = &sUnknown_203B2D8->unk4.unk9C; if (a1 != NULL) - sUnknown_203B2D8->unk4.s0.unk3C[sUnknown_203B2D8->unk4.s0.unk34].unk8 = *a1; + sUnknown_203B2D8->unk4.s0.unk3C.a0[sUnknown_203B2D8->unk4.s0.unk34].unk8 = *a1; sub_8012D34(sUnknown_203B2D8->unk4.s0.unk38, a2); ResetUnusedInputStruct(); - xxx_call_save_unk_text_struct_800641C(sUnknown_203B2D8->unk4.s0.unk3C, TRUE, TRUE); + xxx_call_save_unk_text_struct_800641C(&sUnknown_203B2D8->unk4.s0.unk3C, TRUE, TRUE); sub_8013848(&sUnknown_203B2D8->unk4.s0.input, CountEmptyMailSlots(), a2, a0); sUnknown_203B2D8->unk4.s0.input.menuIndex = sUnknown_203B2DC; sub_8013984(&sUnknown_203B2D8->unk4.s0.input); @@ -89,7 +89,7 @@ u8 sub_802BE74(void) void sub_802BE94(bool8 cursorSprite) { ResetUnusedInputStruct(); - xxx_call_save_unk_text_struct_800641C(sUnknown_203B2D8->unk4.s0.unk3C, FALSE, FALSE); + xxx_call_save_unk_text_struct_800641C(&sUnknown_203B2D8->unk4.s0.unk3C, FALSE, FALSE); sUnknown_203B2D8->unk4.s0.input.unk22 = CountEmptyMailSlots(); sub_8013984(&sUnknown_203B2D8->unk4.s0.input); @@ -104,9 +104,9 @@ void sub_802BEDC(void) { if (sUnknown_203B2D8 != NULL) { sUnknown_203B2DC = sUnknown_203B2D8->unk4.s0.input.menuIndex; - sUnknown_203B2D8->unk4.s0.unk3C[sUnknown_203B2D8->unk4.s0.unk34] = sUnknown_80DFC5C; + sUnknown_203B2D8->unk4.s0.unk3C.a0[sUnknown_203B2D8->unk4.s0.unk34] = sUnknown_80DFC5C; ResetUnusedInputStruct(); - xxx_call_save_unk_text_struct_800641C(sUnknown_203B2D8->unk4.s0.unk3C, TRUE, TRUE); + xxx_call_save_unk_text_struct_800641C(&sUnknown_203B2D8->unk4.s0.unk3C, TRUE, TRUE); MemoryFree(sUnknown_203B2D8); sUnknown_203B2D8 = NULL; } diff --git a/src/post_office_guide2.c b/src/post_office_guide2.c index c5e99e742..e18bf5efa 100644 --- a/src/post_office_guide2.c +++ b/src/post_office_guide2.c @@ -37,7 +37,7 @@ bool8 sub_80319A4(u8 param_1, u8 dungeon, s32 param_3) sUnknown_203B330->dungeonIndex = dungeon; sub_801317C(&sUnknown_203B330->input); sUnknown_203B330->unk10 = param_3; - sUnknown_203B330->unk14 = &sUnknown_203B330->unk18[param_3]; + sUnknown_203B330->unk14 = &sUnknown_203B330->unk18.a0[param_3]; sub_8031A2C(); return TRUE; } @@ -65,9 +65,9 @@ static void sub_8031A2C(void) void sub_8031A3C(void) { if (sUnknown_203B330 != NULL) { - sUnknown_203B330->unk18[sUnknown_203B330->unk10] = sUnknown_80E1EFC; + sUnknown_203B330->unk18.a0[sUnknown_203B330->unk10] = sUnknown_80E1EFC; ResetUnusedInputStruct(); - xxx_call_save_unk_text_struct_800641C(sUnknown_203B330->unk18, TRUE, TRUE); + xxx_call_save_unk_text_struct_800641C(&sUnknown_203B330->unk18, TRUE, TRUE); MemoryFree(sUnknown_203B330); sUnknown_203B330 = NULL; } @@ -77,8 +77,8 @@ static void sub_8031A84(void) { s32 jobs; - RestoreUnkTextStruct_8006518(sUnknown_203B330->unk18); - sUnknown_203B330->unk18[sUnknown_203B330->unk10] = sUnknown_80E1F18; + RestoreUnkTextStruct_8006518(&sUnknown_203B330->unk18); + sUnknown_203B330->unk18.a0[sUnknown_203B330->unk10] = sUnknown_80E1F18; if (sUnknown_203B330->unkC == 2) { jobs = CountJobsinDungeon(sUnknown_203B330->dungeonIndex); @@ -89,7 +89,7 @@ static void sub_8031A84(void) } ResetUnusedInputStruct(); - xxx_call_save_unk_text_struct_800641C(sUnknown_203B330->unk18, TRUE, TRUE); + xxx_call_save_unk_text_struct_800641C(&sUnknown_203B330->unk18, TRUE, TRUE); } static void DisplayMissionObjectives(void) diff --git a/src/rescue_password_menu.c b/src/rescue_password_menu.c index e574f1ca9..3d0251d64 100644 --- a/src/rescue_password_menu.c +++ b/src/rescue_password_menu.c @@ -265,10 +265,10 @@ void CreateRescuePasswordMenu(u32 currMenu) } for(counter = 0; counter < 4; counter++) - gRescuePasswordMenu->unk148[counter] = gUnknown_80E71E4; + gRescuePasswordMenu->unk148.a0[counter] = gUnknown_80E71E4; ResetUnusedInputStruct(); - xxx_call_save_unk_text_struct_800641C(gRescuePasswordMenu->unk148, TRUE, TRUE); + xxx_call_save_unk_text_struct_800641C(&gRescuePasswordMenu->unk148, TRUE, TRUE); if ((gUnknown_203B368 != 0) || (gUnknown_203B36C != currMenu)) { for(counter = 0; counter < RESCUE_PASSWORD_SIZE; counter++) @@ -543,37 +543,37 @@ s32 UpdateRescuePasswordMenu(void) void DisplayRescuePasswordError(u32 passwordError) { - RestoreUnkTextStruct_8006518(gRescuePasswordMenu->unk1A8); + RestoreUnkTextStruct_8006518(&gRescuePasswordMenu->unk1A8); ResetUnusedInputStruct(); xxx_call_save_unk_text_struct_800641C(NULL, TRUE, TRUE); sub_80155F0(); switch(passwordError) { case PASSWORD_ENTRY_INCORRECT_PASSWORD: - SetMenuItems(gRescuePasswordMenu->unk8,gRescuePasswordMenu->unk148,0,&gUnknown_80E71FC,gUnknown_80E7214,FALSE,13,FALSE); + SetMenuItems(gRescuePasswordMenu->unk8,&gRescuePasswordMenu->unk148,0,&gUnknown_80E71FC,gUnknown_80E7214,FALSE,13,FALSE); break; case PASSWORD_ENTRY_NOT_SOS_MAIL: - SetMenuItems(gRescuePasswordMenu->unk8,gRescuePasswordMenu->unk148,0,&gUnknown_80E72EC,gUnknown_80E7304,FALSE,13,FALSE); + SetMenuItems(gRescuePasswordMenu->unk8,&gRescuePasswordMenu->unk148,0,&gUnknown_80E72EC,gUnknown_80E7304,FALSE,13,FALSE); break; case PASSWORD_ENTRY_DUPLICATE_SOS_MAIL: - SetMenuItems(gRescuePasswordMenu->unk8,gRescuePasswordMenu->unk148,0,&gUnknown_80E7344,gUnknown_80E735C,FALSE,13,FALSE); + SetMenuItems(gRescuePasswordMenu->unk8,&gRescuePasswordMenu->unk148,0,&gUnknown_80E7344,gUnknown_80E735C,FALSE,13,FALSE); break; case PASSWORD_ENTRY_NO_SPACE: - SetMenuItems(gRescuePasswordMenu->unk8,gRescuePasswordMenu->unk148,0,&gUnknown_80E7588,gUnknown_80E75A0,FALSE,13,FALSE); + SetMenuItems(gRescuePasswordMenu->unk8,&gRescuePasswordMenu->unk148,0,&gUnknown_80E7588,gUnknown_80E75A0,FALSE,13,FALSE); break; case PASSWORD_ENTRY_NOT_AOK_MAIL: - SetMenuItems(gRescuePasswordMenu->unk8,gRescuePasswordMenu->unk148,0,&gUnknown_80E73AC,gUnknown_80E73C4,FALSE,13,FALSE); + SetMenuItems(gRescuePasswordMenu->unk8,&gRescuePasswordMenu->unk148,0,&gUnknown_80E73AC,gUnknown_80E73C4,FALSE,13,FALSE); break; case PASSWORD_ENTRY_DUPLICATE_AOK_MAIL: - SetMenuItems(gRescuePasswordMenu->unk8,gRescuePasswordMenu->unk148,0,&gUnknown_80E7408,gUnknown_80E7420,FALSE,13,FALSE); + SetMenuItems(gRescuePasswordMenu->unk8,&gRescuePasswordMenu->unk148,0,&gUnknown_80E7408,gUnknown_80E7420,FALSE,13,FALSE); break; case PASSWORD_ENTRY_NOT_THANK_YOU_MAIL: - SetMenuItems(gRescuePasswordMenu->unk8,gRescuePasswordMenu->unk148,0,&gUnknown_80E7468,gUnknown_80E7480,FALSE,13,FALSE); + SetMenuItems(gRescuePasswordMenu->unk8,&gRescuePasswordMenu->unk148,0,&gUnknown_80E7468,gUnknown_80E7480,FALSE,13,FALSE); break; case PASSWORD_ENTRY_DUPLICATE_THANK_YOU_MAIL: - SetMenuItems(gRescuePasswordMenu->unk8,gRescuePasswordMenu->unk148,0,&gUnknown_80E74C8,gUnknown_80E74E0,FALSE,13,FALSE); + SetMenuItems(gRescuePasswordMenu->unk8,&gRescuePasswordMenu->unk148,0,&gUnknown_80E74C8,gUnknown_80E74E0,FALSE,13,FALSE); break; case PASSWORD_ENTRY_NOT_WONDER_MAIL: - SetMenuItems(gRescuePasswordMenu->unk8,gRescuePasswordMenu->unk148,0,&gUnknown_80E752C,gUnknown_80E7544,FALSE,13,FALSE); + SetMenuItems(gRescuePasswordMenu->unk8,&gRescuePasswordMenu->unk148,0,&gUnknown_80E752C,gUnknown_80E7544,FALSE,13,FALSE); break; default: break; @@ -583,11 +583,11 @@ void DisplayRescuePasswordError(u32 passwordError) void DisplayPasswordAcceptScreen(void) { - RestoreUnkTextStruct_8006518(gRescuePasswordMenu->unk1A8); + RestoreUnkTextStruct_8006518(&gRescuePasswordMenu->unk1A8); ResetUnusedInputStruct(); xxx_call_save_unk_text_struct_800641C(NULL, TRUE, TRUE); sub_80155F0(); - SetMenuItems(gRescuePasswordMenu->unk8,gRescuePasswordMenu->unk148,0,&gUnknown_80E7278,gUnknown_80E7290,FALSE,13,FALSE); + SetMenuItems(gRescuePasswordMenu->unk8,&gRescuePasswordMenu->unk148,0,&gUnknown_80E7278,gUnknown_80E7290,FALSE,13,FALSE); sub_8035CF4(gRescuePasswordMenu->unk8,0,TRUE); } diff --git a/src/save_menu.c b/src/save_menu.c index 7933ea70b..47a4b51eb 100644 --- a/src/save_menu.c +++ b/src/save_menu.c @@ -130,19 +130,19 @@ void CreateSaveMenu(s32 currMenu) MemoryFill8(sUnknown_203B364,0,sizeof(SaveMenuWork)); } for(index = 0; index < 4; index++){ - sUnknown_203B364->unk148[index] = gUnknown_80E6F20; + sUnknown_203B364->unk148.a0[index] = gUnknown_80E6F20; } ResetUnusedInputStruct(); - xxx_call_save_unk_text_struct_800641C(sUnknown_203B364->unk148, TRUE, TRUE); + xxx_call_save_unk_text_struct_800641C(&sUnknown_203B364->unk148, TRUE, TRUE); if (currMenu == MENU_DELETE_SAVE) { // Beware, Deleting your Adventure - SetMenuItems(sUnknown_203B364->unk8,sUnknown_203B364->unk148,0,&gUnknown_80E6F38,gDeletingYourAdventureMenuItems, + SetMenuItems(sUnknown_203B364->unk8,&sUnknown_203B364->unk148,0,&gUnknown_80E6F38,gDeletingYourAdventureMenuItems, FALSE,6,FALSE); } else { // Saving your Adventure - SetMenuItems(sUnknown_203B364->unk8,sUnknown_203B364->unk148,0,&gUnknown_80E6F38,gSavingAdventureMenuItems, + SetMenuItems(sUnknown_203B364->unk8,&sUnknown_203B364->unk148,0,&gUnknown_80E6F38,gSavingAdventureMenuItems, FALSE,6,FALSE); } sub_8035CF4(sUnknown_203B364->unk8,0,TRUE); @@ -187,13 +187,13 @@ s32 UpdateSaveMenu(void) switch(saveStatus) { case SAVE_COMPLETED: - sub_8035CC0(sUnknown_203B364->unk148,0); + sub_8035CC0(&sUnknown_203B364->unk148,0); if (sUnknown_203B364->currMenu == MENU_DELETE_SAVE) { - SetMenuItems(sUnknown_203B364->unk8,sUnknown_203B364->unk148,0,&gUnknown_80E6F38, + SetMenuItems(sUnknown_203B364->unk8,&sUnknown_203B364->unk148,0,&gUnknown_80E6F38, gDeletedSaveMenuItems,FALSE,6,FALSE); } else { - SetMenuItems(sUnknown_203B364->unk8,sUnknown_203B364->unk148,0,&gUnknown_80E6F38, + SetMenuItems(sUnknown_203B364->unk8,&sUnknown_203B364->unk148,0,&gUnknown_80E6F38, gAdventureSavedMenuItems,FALSE,6,FALSE); } if (sUnknown_203B364->currMenu == 0x2d) { @@ -208,13 +208,13 @@ s32 UpdateSaveMenu(void) sUnknown_203B364->unk4 = 5; break; default: - sub_8035CC0(sUnknown_203B364->unk148,0); + sub_8035CC0(&sUnknown_203B364->unk148,0); if (sUnknown_203B364->currMenu == MENU_DELETE_SAVE) { - SetMenuItems(sUnknown_203B364->unk8,sUnknown_203B364->unk148,0,&gUnknown_80E6F38, + SetMenuItems(sUnknown_203B364->unk8,&sUnknown_203B364->unk148,0,&gUnknown_80E6F38, gAdventureCouldNotBeDeletedMenuItems,FALSE,6,FALSE); } else { - SetMenuItems(sUnknown_203B364->unk8,sUnknown_203B364->unk148,0,&gUnknown_80E6F38, + SetMenuItems(sUnknown_203B364->unk8,&sUnknown_203B364->unk148,0,&gUnknown_80E6F38, gAdventureCouldNotBeSavedMenuItems,FALSE,6,FALSE); } sub_8035CF4(sUnknown_203B364->unk8,0,TRUE); diff --git a/src/string_format.c b/src/string_format.c index 66c7dde8d..8b2d78dbf 100644 --- a/src/string_format.c +++ b/src/string_format.c @@ -59,41 +59,14 @@ u32 sub_8014140(void) } // This kinda looks like the 'true' beginning of the file -struct SubStruct_203B198 -{ - u8 unk0; - u32 unk4; // x34 - u16 unk8; // x38 - u16 unkA; // x3A - u16 unkC; // x3C - u16 unkE; // x3E - u16 unk10; // x40 - u8 fill12[6]; // x42 -}; - -struct UnkStruct_203B198 -{ - UnkTextStruct2 unk0; - u8 unk18; - u32 unk1C; - DungeonPos unk20; - u16 unk24; - u16 unk26; - u16 unk28; - u8 fill2A[4]; - struct SubStruct_203B198 unk30; - struct SubStruct_203B198 unk48; -}; - static const u32 gUnknown_80D48A0[] = {0x7, 0x2, 0x2}; -static const struct SubStruct_203B198 gUnknown_80D48AC = { - 0x00, - 0x03, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00 - +static const struct UnkTextStruct2 gUnknown_80D48AC = { + 0x00, + 0x00, 0x00, + 0x00, 0x03, + 0x00, 0x00, + 0x00, 0x00, + 0x00, 0x00, 0x00 }; static const UnkTextStruct2 gUnknown_80D48C4 = { @@ -176,7 +149,7 @@ static EWRAM_DATA s32 gUnknown_202EC1C = 0; // Only read, but never written to. Possibly used in Blue? struct NeverWrittenToStruct202EC20 { - struct SubStruct_203B198 unk0; + struct UnkTextStruct2 unk0; const u8 *unk18; }; static EWRAM_DATA struct NeverWrittenToStruct202EC20 *sNeverWrittenToUnknownStructPtr = NULL; @@ -184,20 +157,24 @@ static UNUSED EWRAM_DATA u8 sUnusedEwram1[4] = {0}; static EWRAM_DATA MenuInputStructSub gUnknown_202EC28 = {0}; -static EWRAM_INIT struct UnkStruct_203B198 sUnknown_203B198 = { - .unk0 = { - .unk8 = {2, 15}, - .unkC = 26, - .unkE = 5, - .unk10 = 7, - }, - .unk18 = 0x40, - .unk1C = 7, - .unk30 = { - .unk4 = 3, - }, - .unk48 = { - .unk4 = 3, +static EWRAM_INIT UnkTextStruct3 sUnknown_203B198 = { + .a0 = { + [0] = { + .unk8 = {2, 15}, + .unkC = 26, + .unkE = 5, + .unk10 = 7, + }, + [1] = { + .unk0 = 0x40, + .unk4 = 7 + }, + [2] = { + .unk4 = 3, + }, + [3] = { + .unk4 = 3, + } } }; @@ -250,41 +227,41 @@ void CreateMenuDialogueBoxAndPortrait(const u8 *text, void *a1, u32 r9, const Me gUnknown_202EC1C = r9; sub_801317C(&gUnknown_202EC28); if (flags & 0x10) { - sUnknown_203B198.unk0 = gUnknown_80D48DC; + sUnknown_203B198.a0[0] = gUnknown_80D48DC; } else { - sUnknown_203B198.unk0 = gUnknown_80D48C4; + sUnknown_203B198.a0[0] = gUnknown_80D48C4; } - sUnknown_203B198.unk24 = 0; - sUnknown_203B198.unk26 = 0; - sUnknown_203B198.unk28 = 0; - sUnknown_203B198.unk18 = 0x40; + sUnknown_203B198.a0[1].unkC = 0; + sUnknown_203B198.a0[1].unkE = 0; + sUnknown_203B198.a0[1].unk10 = 0; + sUnknown_203B198.a0[1].unk0 = 0x40; if (monPortraitPtr != NULL && monPortraitPtr->faceData != NULL && monPortraitPtr->faceData->sprites[monPortraitPtr->spriteId].gfx != 0) { s32 i; - sUnknown_203B198.unk20.x = monPortraitPtr->pos.x; - sUnknown_203B198.unk20.y = monPortraitPtr->pos.y; - sUnknown_203B198.unk24 = 5; - sUnknown_203B198.unk26 = 5; - sUnknown_203B198.unk28 = 5; + sUnknown_203B198.a0[1].unk8.unk0.arr[0] = monPortraitPtr->pos.x; + sUnknown_203B198.a0[1].unk8.unk0.arr[1] = monPortraitPtr->pos.y; + sUnknown_203B198.a0[1].unkC = 5; + sUnknown_203B198.a0[1].unkE = 5; + sUnknown_203B198.a0[1].unk10 = 5; for (i = 0; i < 16; i++) { SetBGPaletteBufferColorArray(224 + i, &monPortraitPtr->faceData->sprites[monPortraitPtr->spriteId].pal[i]); } portraitOn = TRUE; if (monPortraitPtr->unkE) { - sUnknown_203B198.unk1C = 7; + sUnknown_203B198.a0[1].unk4 = 7; } else { - sUnknown_203B198.unk1C = 5; + sUnknown_203B198.a0[1].unk4 = 5; } } - sUnknown_203B198.unk30 = gUnknown_80D48AC; - sUnknown_203B198.unk48 = gUnknown_80D48AC; + sUnknown_203B198.a0[2] = gUnknown_80D48AC; + sUnknown_203B198.a0[3] = gUnknown_80D48AC; ResetUnusedInputStruct(); - xxx_call_save_unk_text_struct_800641C(&sUnknown_203B198.unk0, TRUE, TRUE); + xxx_call_save_unk_text_struct_800641C(&sUnknown_203B198, TRUE, TRUE); gUnknown_202E748.unk0 = 4; gUnknown_202E748.unk2 = 4; gUnknown_202E748.unk8 = 0x70; @@ -644,21 +621,21 @@ static void sub_8014A88(void) if (r5 % 8) r2++; - sUnknown_203B198.unk30.unk4 = gUnknown_202EC10; + sUnknown_203B198.a0[2].unk4 = gUnknown_202EC10; r1 = r7 / 8; r1 += 2; - sUnknown_203B198.unk30.unkC = r1; - sUnknown_203B198.unk30.unk10 = r2; - sUnknown_203B198.unk30.unkE = r2; - sUnknown_203B198.unk30.unk8 = 28 - r1; - sUnknown_203B198.unk30.unkA = 14 - r2; - sUnknown_203B198.unk0.unk0 = 0x80; - sUnknown_203B198.unk18 = 0xC0; + sUnknown_203B198.a0[2].unkC = r1; + sUnknown_203B198.a0[2].unk10 = r2; + sUnknown_203B198.a0[2].unkE = r2; + sUnknown_203B198.a0[2].unk8.unk0.arr[0] = 28 - r1; + sUnknown_203B198.a0[2].unk8.unk0.arr[1] = 14 - r2; + sUnknown_203B198.a0[0].unk0 = 0x80; + sUnknown_203B198.a0[1].unk0 = 0xC0; if (sNeverWrittenToUnknownStructPtr != NULL) { - sUnknown_203B198.unk48 = sNeverWrittenToUnknownStructPtr->unk0; + sUnknown_203B198.a0[3] = sNeverWrittenToUnknownStructPtr->unk0; } ResetUnusedInputStruct(); - xxx_call_save_unk_text_struct_800641C(&sUnknown_203B198.unk0, TRUE, FALSE); + xxx_call_save_unk_text_struct_800641C(&sUnknown_203B198, TRUE, FALSE); sub_8012D60(&gUnknown_202EBC0, sDialogueMenuItems, gUnknown_80D48A0, gUnknown_202EC18, gUnknown_202EC1C, 2); if (sNeverWrittenToUnknownStructPtr != NULL) { sub_80073B8(3); diff --git a/src/text.c b/src/text.c index e1eae1003..2a1561e1e 100644 --- a/src/text.c +++ b/src/text.c @@ -38,7 +38,7 @@ EWRAM_DATA static s32 sCurrentCharmap = 0; EWRAM_DATA static vu32 sUnknown_20274B0 = 0; EWRAM_DATA static u32 sUnknown_20274B4[0xEC0] = {0}; EWRAM_DATA static OpenedFile *sCharmapFiles[3] = {NULL}; -EWRAM_DATA static UnkTextStruct2 sUnknown_202AFC0[4] = {0}; +EWRAM_DATA static UnkTextStruct3 sUnknown_202AFC0 = {0}; EWRAM_DATA static s32 sUnknown_202B020 = 0; EWRAM_DATA static s32 sUnknown_202B024 = 0; EWRAM_DATA static s32 sCharHeight[2] = {0}; @@ -64,7 +64,7 @@ EWRAM_INIT void (*gIwramTextFunc4)(s32 a0) = sub_8272A78; // This variable is only used in InitGraphics function, which may or may not belong to text.c EWRAM_INIT u8 gUnknown_203B090 = 0; -static void SaveUnkTextStructAndXXX_8006438(const UnkTextStruct2 *a0, bool8 a1, bool8 a2, UnkTextStruct2_sub *a3); +static void SaveUnkTextStructAndXXX_8006438(const UnkTextStruct3 *a0, bool8 a1, bool8 a2, UnkTextStruct2_sub *a3); static void sub_8006554(UnkTextStruct1 *a0, u32 *a1, u32 *a2, u16 *a3, u32 a4, const UnkTextStruct2 *a5, bool8 a6, u32 a7, UnkTextStruct2_sub *a8, u8 a9); static void sub_800677C(UnkTextStruct1 *a0, s32 a1, u16 *a2, u8 a3); static void sub_80069CC(UnkTextStruct1 *a0, s32 a1, s32 a2, s32 a3, u16 *a4); @@ -113,12 +113,14 @@ static const u32 gUnknown_80B853C[16] = 0xEEEEEEEE, }; -static const UnkTextStruct2 gUnknown_80B857C[4] = +static const UnkTextStruct3 gUnknown_80B857C = { - [0] = {.unk4 = 3}, - [1] = {.unk4 = 3}, - [2] = {.unk4 = 3}, - [3] = {.unk4 = 3}, + .a0 = { + [0] = {.unk4 = 3}, + [1] = {.unk4 = 3}, + [2] = {.unk4 = 3}, + [3] = {.unk4 = 3}, + } }; static const struct unkShiftData gCharMasksOffsets[8] = @@ -273,14 +275,14 @@ void SetCharacterMask(int a0) sTextShadowMask = retval; } -void xxx_call_save_unk_text_struct_800641C(const UnkTextStruct2 *a0, bool8 a1, bool8 a2) +void xxx_call_save_unk_text_struct_800641C(const UnkTextStruct3 *a0, bool8 a1, bool8 a2) { UnkTextStruct2_sub r3 = {0, 0}; SaveUnkTextStructAndXXX_8006438(a0, a1, a2, &r3); } // https://decomp.me/scratch/xF5Y1 -static void SaveUnkTextStructAndXXX_8006438(const UnkTextStruct2 *a0, bool8 a1, bool8 a2, UnkTextStruct2_sub *a3) +static void SaveUnkTextStructAndXXX_8006438(const UnkTextStruct3 *a0, bool8 a1, bool8 a2, UnkTextStruct2_sub *a3) { s32 i; u32 r9; @@ -288,19 +290,19 @@ static void SaveUnkTextStructAndXXX_8006438(const UnkTextStruct2 *a0, bool8 a1, r9 = 2; if (a0 == NULL) - a0 = gUnknown_80B857C; + a0 = &gUnknown_80B857C; if (a2) sub_8009388(); sub_800898C(); for (i = 0; i < 4; i++) { - sUnknown_202AFC0[i] = a0[i]; + sUnknown_202AFC0.a0[i] = a0->a0[i]; - if (a0[i].unkC) { - sub_8006554(gUnknown_2027370, (u32 *)VRAM, sUnknown_20274B4, &gUnknown_202B038[0][0][0], gUnknown_80B8804[i], a0 + i, a1, r9, a3, 0); - sub_80089AC(a0 + i, a3); - r9 += a0[i].unkC * a0[i].unk10; + if (a0->a0[i].unkC) { + sub_8006554(gUnknown_2027370, (u32 *)VRAM, sUnknown_20274B4, &gUnknown_202B038[0][0][0], gUnknown_80B8804[i], &a0->a0[i], a1, r9, a3, 0); + sub_80089AC(&a0->a0[i], a3); + r9 += a0->a0[i].unkC * a0->a0[i].unk10; } } @@ -317,11 +319,11 @@ UNUSED static void nullsub_152(void) { } -void RestoreUnkTextStruct_8006518(UnkTextStruct2 *unkData) +void RestoreUnkTextStruct_8006518(UnkTextStruct3 *unkData) { - s32 iVar2; - for (iVar2 = 0; iVar2 < 4; iVar2++) - unkData[iVar2] = sUnknown_202AFC0[iVar2]; + s32 i; + for (i = 0; i < 4; i++) + unkData->a0[i] = sUnknown_202AFC0.a0[i]; } UNUSED static void nullsub_153(void) diff --git a/src/thank_you_wonder_mail.c b/src/thank_you_wonder_mail.c index 7ee792b70..c944c2bf4 100644 --- a/src/thank_you_wonder_mail.c +++ b/src/thank_you_wonder_mail.c @@ -525,7 +525,7 @@ void sub_802A050(void) case 2: sub_8031E10(); ResetUnusedInputStruct(); - xxx_call_save_unk_text_struct_800641C(sUnknown_203B2C4->unk3BC, TRUE, TRUE); + xxx_call_save_unk_text_struct_800641C(&sUnknown_203B2C4->unk3BC, TRUE, TRUE); SetThankYouMailMenuState(0x1B); break; case 1: @@ -571,7 +571,7 @@ void sub_802A0C8(void) case 4: sUnknown_203B2C4->fallbackState = 0x10; sUnknown_203B2C4->mailIndex = sub_80307EC(); - RestoreUnkTextStruct_8006518(sUnknown_203B2C4->unk3BC); + RestoreUnkTextStruct_8006518(&sUnknown_203B2C4->unk3BC); ResetUnusedInputStruct(); xxx_call_save_unk_text_struct_800641C(NULL, TRUE, TRUE); sub_8030D40(sUnknown_203B2C4->mailIndex,0); @@ -607,7 +607,7 @@ void sub_802A174(void) break; case INFO_ACTION: sUnknown_203B2C4->fallbackState = 0x2b; - RestoreUnkTextStruct_8006518(sUnknown_203B2C4->unk3BC); + RestoreUnkTextStruct_8006518(&sUnknown_203B2C4->unk3BC); ResetUnusedInputStruct(); xxx_call_save_unk_text_struct_800641C(NULL, TRUE, TRUE); sub_8030D40(sUnknown_203B2C4->mailIndex,0); @@ -615,7 +615,7 @@ void sub_802A174(void) break; case CANCEL_ACTION: case 0xD: - sub_8035CC0(sUnknown_203B2C4->unk35C,2); + sub_8035CC0(&sUnknown_203B2C4->unk35C,2); sub_8030810(1); SetThankYouMailMenuState(0x10); default: @@ -631,7 +631,7 @@ void sub_802A230(void) case 3: sub_8030DE4(); ResetUnusedInputStruct(); - xxx_call_save_unk_text_struct_800641C(sUnknown_203B2C4->unk3BC, TRUE, TRUE); + xxx_call_save_unk_text_struct_800641C(&sUnknown_203B2C4->unk3BC, TRUE, TRUE); sub_803092C(); if (sUnknown_203B2C4->fallbackState == 0x2b) { sub_8035CF4(sUnknown_203B2C4->unk21C, 3, TRUE); @@ -666,7 +666,7 @@ void sub_802A28C(void) case 4: sUnknown_203B2C4->fallbackState = 0x13; sUnknown_203B2C4->unk41C.id = sub_801CB24(); - RestoreUnkTextStruct_8006518(sUnknown_203B2C4->unk3BC); + RestoreUnkTextStruct_8006518(&sUnknown_203B2C4->unk3BC); ResetUnusedInputStruct(); xxx_call_save_unk_text_struct_800641C(NULL, TRUE, TRUE); sub_801B3C0(&sUnknown_203B2C4->unk41C); @@ -683,7 +683,7 @@ void sub_802A33C(void) case 3: sub_801B450(); ResetUnusedInputStruct(); - xxx_call_save_unk_text_struct_800641C(sUnknown_203B2C4->unk3BC, TRUE, TRUE); + xxx_call_save_unk_text_struct_800641C(&sUnknown_203B2C4->unk3BC, TRUE, TRUE); sub_801CB5C(TRUE); if (sUnknown_203B2C4->fallbackState == 0x2b) { sub_8035CF4(sUnknown_203B2C4->unk21C,3,TRUE); @@ -717,7 +717,7 @@ void sub_802A39C(void) break; case INFO_ACTION: sUnknown_203B2C4->fallbackState = 0x2b; - RestoreUnkTextStruct_8006518(sUnknown_203B2C4->unk3BC); + RestoreUnkTextStruct_8006518(&sUnknown_203B2C4->unk3BC); ResetUnusedInputStruct(); xxx_call_save_unk_text_struct_800641C(NULL, TRUE, TRUE); sub_801B3C0(&sUnknown_203B2C4->unk41C); @@ -725,7 +725,7 @@ void sub_802A39C(void) break; case CANCEL_ACTION: case 0xD: - sub_8035CC0(sUnknown_203B2C4->unk35C, 3); + sub_8035CC0(&sUnknown_203B2C4->unk35C, 3); sub_801CCD8(); SetThankYouMailMenuState(0x13); default: @@ -832,7 +832,7 @@ void HandleThankYouMailPasswordMenu(void) case 2: sub_80155F0(); ResetUnusedInputStruct(); - xxx_call_save_unk_text_struct_800641C(sUnknown_203B2C4->unk3BC, TRUE, TRUE); + xxx_call_save_unk_text_struct_800641C(&sUnknown_203B2C4->unk3BC, TRUE, TRUE); SetThankYouMailMenuState(ANYTHING_ELSE_THANK_YOU_MAIN_MENU); break; } @@ -1273,8 +1273,8 @@ void UpdateThankYouMailText(void) sub_80306A8(WONDER_MAIL_TYPE_THANK_YOU,0,0,6); break; case 0x11: - RestoreUnkTextStruct_8006518(sUnknown_203B2C4->unk35C); - SetMenuItems(sUnknown_203B2C4->unk21C,sUnknown_203B2C4->unk35C,3,&gUnknown_80DED60,gUnknown_80DED78,TRUE,0,FALSE); + RestoreUnkTextStruct_8006518(&sUnknown_203B2C4->unk35C); + SetMenuItems(sUnknown_203B2C4->unk21C,&sUnknown_203B2C4->unk35C,3,&gUnknown_80DED60,gUnknown_80DED78,TRUE,0,FALSE); sub_803092C(); sub_8035CF4(sUnknown_203B2C4->unk21C,3,TRUE); break; @@ -1289,8 +1289,8 @@ void UpdateThankYouMailText(void) } break; case 0x14: - RestoreUnkTextStruct_8006518(sUnknown_203B2C4->unk35C); - SetMenuItems(sUnknown_203B2C4->unk21C,sUnknown_203B2C4->unk35C,3,&gUnknown_80DED48,gUnknown_80DED78,TRUE,0,FALSE); + RestoreUnkTextStruct_8006518(&sUnknown_203B2C4->unk35C); + SetMenuItems(sUnknown_203B2C4->unk21C,&sUnknown_203B2C4->unk35C,3,&gUnknown_80DED48,gUnknown_80DED78,TRUE,0,FALSE); sub_801CCD8(); sub_8035CF4(sUnknown_203B2C4->unk21C,3,TRUE); break; @@ -1336,13 +1336,13 @@ void UpdateThankYouMailText(void) CreateDialogueBoxAndPortrait(gUnknown_80DF380,0,&sUnknown_203B2C4->monPortrait,0x10d); break; case PROCESS_THANK_YOU_PASSWORD: - RestoreUnkTextStruct_8006518(sUnknown_203B2C4->unk3BC); + RestoreUnkTextStruct_8006518(&sUnknown_203B2C4->unk3BC); ResetUnusedInputStruct(); xxx_call_save_unk_text_struct_800641C(NULL, TRUE, TRUE); sub_80151C0(4,sUnknown_203B2C4->passwordBuffer); break; case 0x1a: - RestoreUnkTextStruct_8006518(sUnknown_203B2C4->unk3BC); + RestoreUnkTextStruct_8006518(&sUnknown_203B2C4->unk3BC); ResetUnusedInputStruct(); xxx_call_save_unk_text_struct_800641C(NULL, TRUE, TRUE); sub_8031D70(sUnknown_203B2C4->mailIndex,0); diff --git a/src/trade_items_menu.c b/src/trade_items_menu.c index fb0edf7d8..c35b4f2ac 100644 --- a/src/trade_items_menu.c +++ b/src/trade_items_menu.c @@ -176,7 +176,7 @@ void sub_80365AC(void) sTradeItemsMenu->fallbackState = TRADE_ITEMS_SEND_ITEM_SELECTION; sTradeItemsMenu->itemToSend.id = sub_801CB24(); sTradeItemsMenu->itemToSend.quantity = 1; - RestoreUnkTextStruct_8006518(sTradeItemsMenu->unk1E4); + RestoreUnkTextStruct_8006518(&sTradeItemsMenu->unk1E4); ResetUnusedInputStruct(); xxx_call_save_unk_text_struct_800641C(NULL, TRUE, TRUE); sub_801B3C0(&sTradeItemsMenu->itemToSend); @@ -200,7 +200,7 @@ void sub_8036674(void) break; case 4: // Info sTradeItemsMenu->fallbackState = 0x13; - RestoreUnkTextStruct_8006518(sTradeItemsMenu->unk1E4); + RestoreUnkTextStruct_8006518(&sTradeItemsMenu->unk1E4); ResetUnusedInputStruct(); xxx_call_save_unk_text_struct_800641C(NULL, TRUE, TRUE); sub_801B3C0(&sTradeItemsMenu->itemToSend); @@ -209,7 +209,7 @@ void sub_8036674(void) case 7: case 0: // Cancel - sub_8035CC0(sTradeItemsMenu->unk184, 3); + sub_8035CC0(&sTradeItemsMenu->unk184, 3); sub_801CCD8(); SetTradeItemMenu(TRADE_ITEMS_SEND_ITEM_SELECTION); break; @@ -224,7 +224,7 @@ void sub_8036728(void) case 3: sub_801B450(); ResetUnusedInputStruct(); - xxx_call_save_unk_text_struct_800641C(sTradeItemsMenu->unk1E4, TRUE, TRUE); + xxx_call_save_unk_text_struct_800641C(&sTradeItemsMenu->unk1E4, TRUE, TRUE); sub_801CB5C(TRUE); if (sTradeItemsMenu->fallbackState == 0x13) { sub_8035CF4(sTradeItemsMenu->unk44, 3, TRUE); @@ -252,7 +252,7 @@ void sub_8036788(void) break; case 2: // If you back out of the # selection - sub_8035CC0(sTradeItemsMenu->unk184, 2); + sub_8035CC0(&sTradeItemsMenu->unk184, 2); sub_801CCD8(); sub_8035CF4(sTradeItemsMenu->unk44, 3, TRUE); SetTradeItemMenu(TRADE_ITEMS_SEND_ITEM_POPUP_MENU); @@ -505,8 +505,8 @@ void sub_8036B28(void) } break; case TRADE_ITEMS_SEND_ITEM_POPUP_MENU: - RestoreUnkTextStruct_8006518(sTradeItemsMenu->unk184); - SetMenuItems(sTradeItemsMenu->unk44,sTradeItemsMenu->unk184,3,&sUnknown_80E60EC, + RestoreUnkTextStruct_8006518(&sTradeItemsMenu->unk184); + SetMenuItems(sTradeItemsMenu->unk44,&sTradeItemsMenu->unk184,3,&sUnknown_80E60EC, sUnknown_80E6104,TRUE,0,FALSE); sub_801CCD8(); sub_8035CF4(sTradeItemsMenu->unk44,3,TRUE); @@ -626,11 +626,11 @@ void sub_8036ECC(u32 index, u32 r1) sTradeItemsMenu->unk14.unk1C = 0x2c; sTradeItemsMenu->unk14.unk20 = 0x12; sTradeItemsMenu->unk14.unk14 = index; - sTradeItemsMenu->unk14.unk18 = &sTradeItemsMenu->unk184[index]; + sTradeItemsMenu->unk14.unk18 = &sTradeItemsMenu->unk184.a0[index]; sub_8013AA0(&sTradeItemsMenu->unk14); - sTradeItemsMenu->unk184[index] = sUnknown_80E6174; + sTradeItemsMenu->unk184.a0[index] = sUnknown_80E6174; ResetUnusedInputStruct(); - xxx_call_save_unk_text_struct_800641C(sTradeItemsMenu->unk184, TRUE, TRUE); + xxx_call_save_unk_text_struct_800641C(&sTradeItemsMenu->unk184, TRUE, TRUE); } void sub_8036F30(void) @@ -647,7 +647,7 @@ void sub_8036F30(void) void sub_8036F74(void) { - RestoreUnkTextStruct_8006518(sTradeItemsMenu->unk184); + RestoreUnkTextStruct_8006518(&sTradeItemsMenu->unk184); sub_8036ECC(2, gTeamInventoryRef->teamStorage[sTradeItemsMenu->itemToSend.id]); sub_801CCD8(); sub_8035CF4(sTradeItemsMenu->unk44, 3, FALSE); diff --git a/src/unk_menu_203B360.c b/src/unk_menu_203B360.c index 7b2e37de1..5b9a49ffc 100644 --- a/src/unk_menu_203B360.c +++ b/src/unk_menu_203B360.c @@ -15,7 +15,7 @@ typedef struct unkStruct_203B360 /* 0x0 */ u32 currMenu; u32 unk4; // state MenuStruct unk8[4]; - UnkTextStruct2 unk148[4]; + UnkTextStruct3 unk148; SpriteOAM unk1A8; u32 unk1B0; // sprite count? } unkStruct_203B360; @@ -68,15 +68,15 @@ void sub_80382E4(s32 currMenu) MemoryFill8(sUnknown_203B360, 0, sizeof(unkStruct_203B360)); } for(index = 0; index < 4; index++){ - sUnknown_203B360->unk148[index] = gUnknown_80E6E7C; + sUnknown_203B360->unk148.a0[index] = gUnknown_80E6E7C; } ResetUnusedInputStruct(); - xxx_call_save_unk_text_struct_800641C(sUnknown_203B360->unk148, TRUE, TRUE); + xxx_call_save_unk_text_struct_800641C(&sUnknown_203B360->unk148, TRUE, TRUE); if (currMenu == 0x25) { // Caution! // The storage space is empty! // Please check again. - SetMenuItems(sUnknown_203B360->unk8,sUnknown_203B360->unk148,0,&gUnknown_80E6E94,gUnknown_80E6EAC, + SetMenuItems(sUnknown_203B360->unk8,&sUnknown_203B360->unk148,0,&gUnknown_80E6E94,gUnknown_80E6EAC, FALSE,4,FALSE); } sub_8035CF4(sUnknown_203B360->unk8,0,TRUE); diff --git a/src/wigglytuff_shop1.c b/src/wigglytuff_shop1.c index 4a62baf7d..2b7eba6ec 100644 --- a/src/wigglytuff_shop1.c +++ b/src/wigglytuff_shop1.c @@ -30,12 +30,12 @@ bool8 sub_80211AC(u32 mode, u32 a1) sWigglytuffShop1Work = MemoryAlloc(sizeof(WigglytuffShop1Work), 8); sWigglytuffShop1Work->mode = mode; sWigglytuffShop1Work->s40.s0.unk34 = a1; - sWigglytuffShop1Work->s40.s0.unk38 = &sWigglytuffShop1Work->s40.s0.unk3C[sWigglytuffShop1Work->s40.s0.unk34]; - RestoreUnkTextStruct_8006518(sWigglytuffShop1Work->s40.s0.unk3C); - sWigglytuffShop1Work->s40.s0.unk3C[sWigglytuffShop1Work->s40.s0.unk34] = sUnknown_80DC47C; + sWigglytuffShop1Work->s40.s0.unk38 = &sWigglytuffShop1Work->s40.s0.unk3C.a0[sWigglytuffShop1Work->s40.s0.unk34]; + RestoreUnkTextStruct_8006518(&sWigglytuffShop1Work->s40.s0.unk3C); + sWigglytuffShop1Work->s40.s0.unk3C.a0[sWigglytuffShop1Work->s40.s0.unk34] = sUnknown_80DC47C; sWigglytuffShop1Work->s40.s0.unk38->unk14 = &sWigglytuffShop1Work->s40.unk9C; ResetUnusedInputStruct(); - xxx_call_save_unk_text_struct_800641C(sWigglytuffShop1Work->s40.s0.unk3C, TRUE, TRUE); + xxx_call_save_unk_text_struct_800641C(&sWigglytuffShop1Work->s40.s0.unk3C, TRUE, TRUE); sub_8013818(&sWigglytuffShop1Work->s40.s0.input, sub_8021664(), 10, a1); if (sUnknown_203B284 == sWigglytuffShop1Work->mode) { @@ -87,7 +87,7 @@ u8 sub_802132C(void) void sub_8021354(bool8 cursorSprite) { ResetUnusedInputStruct(); - xxx_call_save_unk_text_struct_800641C(sWigglytuffShop1Work->s40.s0.unk3C, FALSE, FALSE); + xxx_call_save_unk_text_struct_800641C(&sWigglytuffShop1Work->s40.s0.unk3C, FALSE, FALSE); sWigglytuffShop1Work->s40.s0.input.unk22 = sub_8021664(); sub_8013984(&sWigglytuffShop1Work->s40.s0.input); sub_8021410(); @@ -103,9 +103,9 @@ void sub_80213A0(void) sUnknown_203B284 = sWigglytuffShop1Work->mode; sUnknown_203B288 = sWigglytuffShop1Work->s40.s0.input.menuIndex; sUnknown_203B28A = sWigglytuffShop1Work->s40.s0.input.unk1E; - sWigglytuffShop1Work->s40.s0.unk3C[sWigglytuffShop1Work->s40.s0.unk34] = sUnknown_80DC464; + sWigglytuffShop1Work->s40.s0.unk3C.a0[sWigglytuffShop1Work->s40.s0.unk34] = sUnknown_80DC464; ResetUnusedInputStruct(); - xxx_call_save_unk_text_struct_800641C(sWigglytuffShop1Work->s40.s0.unk3C, TRUE, TRUE); + xxx_call_save_unk_text_struct_800641C(&sWigglytuffShop1Work->s40.s0.unk3C, TRUE, TRUE); MemoryFree(sWigglytuffShop1Work); sWigglytuffShop1Work = NULL; } @@ -118,7 +118,7 @@ static void sub_8021410(void) sWigglytuffShop1Work->s40.unk9C.f2 = 12; sWigglytuffShop1Work->s40.unk9C.f3 = 0; ResetUnusedInputStruct(); - xxx_call_save_unk_text_struct_800641C(sWigglytuffShop1Work->s40.s0.unk3C, TRUE, TRUE); + xxx_call_save_unk_text_struct_800641C(&sWigglytuffShop1Work->s40.s0.unk3C, TRUE, TRUE); SUB_80095E4_CALL(sWigglytuffShop1Work->s40.s0); } diff --git a/src/wigglytuff_shop2.c b/src/wigglytuff_shop2.c index da0764b3b..47131b4eb 100644 --- a/src/wigglytuff_shop2.c +++ b/src/wigglytuff_shop2.c @@ -31,9 +31,9 @@ bool8 CreateWigglytuffShopFriendAreaMenu(u8 friendArea, bool8 a1, s32 a2) sub_801317C(&sWigglytuffShop2Work->unk0); sub_8021A60(); sWigglytuffShop2Work->unk74 = a2; - sWigglytuffShop2Work->unk78 = &sWigglytuffShop2Work->unk7C[a2]; - RestoreUnkTextStruct_8006518(sWigglytuffShop2Work->unk7C); - sWigglytuffShop2Work->unk7C[sWigglytuffShop2Work->unk74] = sUnknown_80DC4D8; + sWigglytuffShop2Work->unk78 = &sWigglytuffShop2Work->unk7C.a0[a2]; + RestoreUnkTextStruct_8006518(&sWigglytuffShop2Work->unk7C); + sWigglytuffShop2Work->unk7C.a0[sWigglytuffShop2Work->unk74] = sUnknown_80DC4D8; sub_8021820(); return TRUE; } @@ -61,9 +61,9 @@ static void sub_8021820(void) void CleanWigglytuffShopFriendAreaInfoMenu(void) { if (sWigglytuffShop2Work) { - sWigglytuffShop2Work->unk7C[sWigglytuffShop2Work->unk74] = sUnknown_80DC4BC; + sWigglytuffShop2Work->unk7C.a0[sWigglytuffShop2Work->unk74] = sUnknown_80DC4BC; ResetUnusedInputStruct(); - xxx_call_save_unk_text_struct_800641C(sWigglytuffShop2Work->unk7C, TRUE, TRUE); + xxx_call_save_unk_text_struct_800641C(&sWigglytuffShop2Work->unk7C, TRUE, TRUE); MemoryFree(sWigglytuffShop2Work); sWigglytuffShop2Work = NULL; } @@ -72,7 +72,7 @@ void CleanWigglytuffShopFriendAreaInfoMenu(void) static void sub_8021878(void) { ResetUnusedInputStruct(); - xxx_call_save_unk_text_struct_800641C(sWigglytuffShop2Work->unk7C, TRUE, TRUE); + xxx_call_save_unk_text_struct_800641C(&sWigglytuffShop2Work->unk7C, TRUE, TRUE); } static void PopulateWigglytuffShopFriendAreaInfoScreen(void) diff --git a/src/wigglytuff_shop3.c b/src/wigglytuff_shop3.c index eabf966ef..00ebd2e15 100644 --- a/src/wigglytuff_shop3.c +++ b/src/wigglytuff_shop3.c @@ -140,26 +140,26 @@ static void sub_8021D5C(void) { s32 i; - RestoreUnkTextStruct_8006518(sWigglytuffShop3Work->unkD0); + RestoreUnkTextStruct_8006518(&sWigglytuffShop3Work->unkD0); switch (sWigglytuffShop3Work->state) { case WIGGLYTUFF_UNK9: case WIGGLYTUFF_UNKA: - sWigglytuffShop3Work->unkD0[0] = sUnknown_80DC534; - sWigglytuffShop3Work->unkD0[2] = sUnknown_80DC534; - sWigglytuffShop3Work->unkD0[1] = sUnknown_80DC564; + sWigglytuffShop3Work->unkD0.a0[0] = sUnknown_80DC534; + sWigglytuffShop3Work->unkD0.a0[2] = sUnknown_80DC534; + sWigglytuffShop3Work->unkD0.a0[1] = sUnknown_80DC564; break; case WIGGLYTUFF_UNKB: - sWigglytuffShop3Work->unkD0[2] = sUnknown_80DC54C; + sWigglytuffShop3Work->unkD0.a0[2] = sUnknown_80DC54C; break; default: for (i = 0; i < 4; i++) - sWigglytuffShop3Work->unkD0[i] = sUnknown_80DC534; + sWigglytuffShop3Work->unkD0.a0[i] = sUnknown_80DC534; break; } ResetUnusedInputStruct(); - xxx_call_save_unk_text_struct_800641C(sWigglytuffShop3Work->unkD0, TRUE, TRUE); + xxx_call_save_unk_text_struct_800641C(&sWigglytuffShop3Work->unkD0, TRUE, TRUE); } static void UpdateWigglytuffDialogue(void) diff --git a/src/wonder_mail.c b/src/wonder_mail.c index 87b2cf857..cba71c0df 100644 --- a/src/wonder_mail.c +++ b/src/wonder_mail.c @@ -420,7 +420,7 @@ void sub_8028348(void) switch(sUnknown_203B2C0->state) { case 0x3B: - RestoreUnkTextStruct_8006518(sUnknown_203B2C0->unk3BC); + RestoreUnkTextStruct_8006518(&sUnknown_203B2C0->unk3BC); ResetUnusedInputStruct(); xxx_call_save_unk_text_struct_800641C(NULL, TRUE, TRUE); sub_8031D70(sUnknown_203B2C0->mailIndex, 0); @@ -462,8 +462,8 @@ void sub_8028348(void) } break; case 0x34: - RestoreUnkTextStruct_8006518(sUnknown_203B2C0->unk35C); - SetMenuItems(sUnknown_203B2C0->unk21C, sUnknown_203B2C0->unk35C, 3, &gUnknown_80DDAE4, gUnknown_80DDAFC, TRUE, 0, FALSE); + RestoreUnkTextStruct_8006518(&sUnknown_203B2C0->unk35C); + SetMenuItems(sUnknown_203B2C0->unk21C, &sUnknown_203B2C0->unk35C, 3, &gUnknown_80DDAE4, gUnknown_80DDAFC, TRUE, 0, FALSE); sub_8023DA4(); sub_8035CF4(sUnknown_203B2C0->unk21C, 3, TRUE); break; @@ -572,7 +572,7 @@ void sub_8028348(void) CreateDialogueBoxAndPortrait(gUnknown_80DE124, 0, &sUnknown_203B2C0->monPortrait,0x10d); break; case 0x27: - RestoreUnkTextStruct_8006518(sUnknown_203B2C0->unk3BC); + RestoreUnkTextStruct_8006518(&sUnknown_203B2C0->unk3BC); ResetUnusedInputStruct(); xxx_call_save_unk_text_struct_800641C(NULL, TRUE, TRUE); sub_80151C0(4, sUnknown_203B2C0->passwordBuffer); @@ -617,8 +617,8 @@ void sub_8028348(void) break; case 0x20: case 0x2B: - RestoreUnkTextStruct_8006518(sUnknown_203B2C0->unk35C); - SetMenuItems(sUnknown_203B2C0->unk21C, sUnknown_203B2C0->unk35C, 3, &gUnknown_80DDACC, gUnknown_80DDAFC, TRUE, 0, FALSE); + RestoreUnkTextStruct_8006518(&sUnknown_203B2C0->unk35C); + SetMenuItems(sUnknown_203B2C0->unk21C, &sUnknown_203B2C0->unk35C, 3, &gUnknown_80DDACC, gUnknown_80DDAFC, TRUE, 0, FALSE); sub_803092C(); sub_8035CF4(sUnknown_203B2C0->unk21C, 3, TRUE); break; @@ -1114,7 +1114,7 @@ void sub_8029044(void) case 4: sUnknown_203B2C0->fallbackState = 0x1F; sUnknown_203B2C0->mailIndex = sub_80307EC(); - RestoreUnkTextStruct_8006518(sUnknown_203B2C0->unk3BC); + RestoreUnkTextStruct_8006518(&sUnknown_203B2C0->unk3BC); ResetUnusedInputStruct(); xxx_call_save_unk_text_struct_800641C(NULL, TRUE, TRUE); sub_8030D40(sUnknown_203B2C0->mailIndex, 0); @@ -1150,7 +1150,7 @@ void sub_80290F0(void) break; case INFO_ACTION: sUnknown_203B2C0->fallbackState = DEFAULT_FALLBACK_STATE; - RestoreUnkTextStruct_8006518(sUnknown_203B2C0->unk3BC); + RestoreUnkTextStruct_8006518(&sUnknown_203B2C0->unk3BC); ResetUnusedInputStruct(); xxx_call_save_unk_text_struct_800641C(NULL, TRUE, TRUE); sub_8030D40(sUnknown_203B2C0->mailIndex, 0); @@ -1158,7 +1158,7 @@ void sub_80290F0(void) break; case 4: case CANCEL_ACTION: - sub_8035CC0(sUnknown_203B2C0->unk35C, 2); + sub_8035CC0(&sUnknown_203B2C0->unk35C, 2); sub_8030810(1); SetFriendRescueCounterState(0x1F); break; @@ -1175,7 +1175,7 @@ void sub_80291AC(void) case 3: sub_8030DE4(); ResetUnusedInputStruct(); - xxx_call_save_unk_text_struct_800641C(sUnknown_203B2C0->unk3BC, TRUE, TRUE); + xxx_call_save_unk_text_struct_800641C(&sUnknown_203B2C0->unk3BC, TRUE, TRUE); sub_803092C(); if(sUnknown_203B2C0->fallbackState == DEFAULT_FALLBACK_STATE) { @@ -1392,7 +1392,7 @@ void sub_80293F4(void) case 2: sub_80155F0(); ResetUnusedInputStruct(); - xxx_call_save_unk_text_struct_800641C(sUnknown_203B2C0->unk3BC, TRUE, TRUE); + xxx_call_save_unk_text_struct_800641C(&sUnknown_203B2C0->unk3BC, TRUE, TRUE); SetFriendRescueCounterState(FRIEND_RESCUE_MAIN); break; default: @@ -1463,7 +1463,7 @@ void sub_80295D8(void) case 4: sUnknown_203B2C0->fallbackState = 0x2A; sUnknown_203B2C0->mailIndex = sub_80307EC(); - RestoreUnkTextStruct_8006518(sUnknown_203B2C0->unk3BC); + RestoreUnkTextStruct_8006518(&sUnknown_203B2C0->unk3BC); ResetUnusedInputStruct(); xxx_call_save_unk_text_struct_800641C(NULL, TRUE, TRUE); sub_8030D40(sUnknown_203B2C0->mailIndex, 0); @@ -1499,7 +1499,7 @@ void sub_8029684(void) break; case INFO_ACTION: sUnknown_203B2C0->fallbackState = DEFAULT_FALLBACK_STATE; - RestoreUnkTextStruct_8006518(sUnknown_203B2C0->unk3BC); + RestoreUnkTextStruct_8006518(&sUnknown_203B2C0->unk3BC); ResetUnusedInputStruct(); xxx_call_save_unk_text_struct_800641C(NULL, TRUE, TRUE); sub_8030D40(sUnknown_203B2C0->mailIndex, 0); @@ -1507,7 +1507,7 @@ void sub_8029684(void) break; case 0x4: case CANCEL_ACTION: - sub_8035CC0(sUnknown_203B2C0->unk35C,2); + sub_8035CC0(&sUnknown_203B2C0->unk35C,2); sub_8030810(1); SetFriendRescueCounterState(0x2A); break; @@ -1522,7 +1522,7 @@ void sub_8029740(void) case 3: sub_8030DE4(); ResetUnusedInputStruct(); - xxx_call_save_unk_text_struct_800641C(sUnknown_203B2C0->unk3BC, TRUE, TRUE); + xxx_call_save_unk_text_struct_800641C(&sUnknown_203B2C0->unk3BC, TRUE, TRUE); sub_803092C(); if(sUnknown_203B2C0->fallbackState == DEFAULT_FALLBACK_STATE) { @@ -1573,7 +1573,7 @@ void sub_80297D4(void) case 4: sUnknown_203B2C0->fallbackState = SELECT_HELPER_POKEMON; sUnknown_203B2C0->speciesNum = sub_8023B44(); - RestoreUnkTextStruct_8006518(sUnknown_203B2C0->unk3BC); + RestoreUnkTextStruct_8006518(&sUnknown_203B2C0->unk3BC); ResetUnusedInputStruct(); xxx_call_save_unk_text_struct_800641C(NULL, TRUE, TRUE); sub_8024458(sUnknown_203B2C0->speciesNum, 0); @@ -1599,7 +1599,7 @@ void sub_8029884(void) break; case INFO_ACTION: sUnknown_203B2C0->fallbackState = DEFAULT_FALLBACK_STATE; - RestoreUnkTextStruct_8006518(sUnknown_203B2C0->unk3BC); + RestoreUnkTextStruct_8006518(&sUnknown_203B2C0->unk3BC); ResetUnusedInputStruct(); xxx_call_save_unk_text_struct_800641C(NULL, TRUE, TRUE); sub_8024458(sUnknown_203B2C0->speciesNum, 0); @@ -1607,7 +1607,7 @@ void sub_8029884(void) break; case 0x4: case CANCEL_ACTION: - sub_8035CC0(sUnknown_203B2C0->unk35C, 3); + sub_8035CC0(&sUnknown_203B2C0->unk35C, 3); sub_8023B7C(1); SetFriendRescueCounterState(SELECT_HELPER_POKEMON); break; @@ -1631,7 +1631,7 @@ void sub_8029944(void) case 3: sub_802453C(); ResetUnusedInputStruct(); - xxx_call_save_unk_text_struct_800641C(sUnknown_203B2C0->unk3BC, TRUE, TRUE); + xxx_call_save_unk_text_struct_800641C(&sUnknown_203B2C0->unk3BC, TRUE, TRUE); sub_8023B7C(1); if(sUnknown_203B2C0->fallbackState == DEFAULT_FALLBACK_STATE) { @@ -1771,7 +1771,7 @@ void sub_8029AF4(void) case 3: sub_8031E10(); ResetUnusedInputStruct(); - xxx_call_save_unk_text_struct_800641C(sUnknown_203B2C0->unk3BC, TRUE, TRUE); + xxx_call_save_unk_text_struct_800641C(&sUnknown_203B2C0->unk3BC, TRUE, TRUE); SetFriendRescueCounterState(0x3C); break; case 1: diff --git a/src/wonder_mail_3_mid.c b/src/wonder_mail_3_mid.c index e344f72a1..0aadefc63 100644 --- a/src/wonder_mail_3_mid.c +++ b/src/wonder_mail_3_mid.c @@ -19,7 +19,7 @@ struct unkStruct_203B30C unkStruct_802C39C unk8; MenuStruct unk60; MenuItem unkB0[8]; - UnkTextStruct2 unkF0[4]; + UnkTextStruct3 unkF0; }; static EWRAM_INIT struct unkStruct_203B30C *gUnknown_203B30C = {NULL}; @@ -119,22 +119,22 @@ void sub_802F004(void) { s32 index; - RestoreUnkTextStruct_8006518(gUnknown_203B30C->unkF0); + RestoreUnkTextStruct_8006518(&gUnknown_203B30C->unkF0); switch(gUnknown_203B30C->state) { case 2: sub_802F108(); - gUnknown_203B30C->unkF0[2] = gUnknown_80E03F4; - sub_8012CAC(&gUnknown_203B30C->unkF0[2], gUnknown_203B30C->unkB0); + gUnknown_203B30C->unkF0.a0[2] = gUnknown_80E03F4; + sub_8012CAC(&gUnknown_203B30C->unkF0.a0[2], gUnknown_203B30C->unkB0); break; default: for(index = 0; index < 4; index++) { - gUnknown_203B30C->unkF0[index] = gUnknown_80E03C4; + gUnknown_203B30C->unkF0.a0[index] = gUnknown_80E03C4; } } ResetUnusedInputStruct(); - xxx_call_save_unk_text_struct_800641C(gUnknown_203B30C->unkF0, TRUE, TRUE); + xxx_call_save_unk_text_struct_800641C(&gUnknown_203B30C->unkF0, TRUE, TRUE); } void sub_802F088(void) diff --git a/src/wonder_mail_4.c b/src/wonder_mail_4.c index a7be19ec0..19f5d7c8e 100644 --- a/src/wonder_mail_4.c +++ b/src/wonder_mail_4.c @@ -86,18 +86,18 @@ u32 sub_80306A8(u32 wonderMailType, u32 r1, UnkTextStruct2_sub *r2, u32 r3) gUnknown_203B320->wonderMailType = wonderMailType; gUnknown_203B320->s28.s0.unk34 = r1; - gUnknown_203B320->s28.s0.unk38 = &gUnknown_203B320->s28.s0.unk3C[gUnknown_203B320->s28.s0.unk34]; - RestoreUnkTextStruct_8006518(gUnknown_203B320->s28.s0.unk3C); + gUnknown_203B320->s28.s0.unk38 = &gUnknown_203B320->s28.s0.unk3C.a0[gUnknown_203B320->s28.s0.unk34]; + RestoreUnkTextStruct_8006518(&gUnknown_203B320->s28.s0.unk3C); - gUnknown_203B320->s28.s0.unk3C[gUnknown_203B320->s28.s0.unk34] = gUnknown_80E0854; + gUnknown_203B320->s28.s0.unk3C.a0[gUnknown_203B320->s28.s0.unk34] = gUnknown_80E0854; gUnknown_203B320->s28.s0.unk38->unk14 = &gUnknown_203B320->s28.unk9C; if (r2 != 0) - gUnknown_203B320->s28.s0.unk3C[gUnknown_203B320->s28.s0.unk34].unk8 = *r2; + gUnknown_203B320->s28.s0.unk3C.a0[gUnknown_203B320->s28.s0.unk34].unk8 = *r2; sub_8012D08(gUnknown_203B320->s28.s0.unk38, r3); ResetUnusedInputStruct(); - xxx_call_save_unk_text_struct_800641C(gUnknown_203B320->s28.s0.unk3C, TRUE, TRUE); + xxx_call_save_unk_text_struct_800641C(&gUnknown_203B320->s28.s0.unk3C, TRUE, TRUE); sub_8013818(&gUnknown_203B320->s28.s0.input, sub_8030A74(), r3, r1); sub_80308A0(); sub_803092C(); @@ -154,9 +154,9 @@ void sub_803084C(void) { if(gUnknown_203B320 != NULL) { - gUnknown_203B320->s28.s0.unk3C[gUnknown_203B320->s28.s0.unk34] = gUnknown_80E083C; + gUnknown_203B320->s28.s0.unk3C.a0[gUnknown_203B320->s28.s0.unk34] = gUnknown_80E083C; ResetUnusedInputStruct(); - xxx_call_save_unk_text_struct_800641C(gUnknown_203B320->s28.s0.unk3C, TRUE, TRUE); + xxx_call_save_unk_text_struct_800641C(&gUnknown_203B320->s28.s0.unk3C, TRUE, TRUE); MemoryFree(gUnknown_203B320); gUnknown_203B320 = NULL; } @@ -174,7 +174,7 @@ void sub_80308A0(void) gUnknown_203B320->s28.unk9C.f2 = 12; gUnknown_203B320->s28.unk9C.f3 = 0; ResetUnusedInputStruct(); - xxx_call_save_unk_text_struct_800641C(gUnknown_203B320->s28.s0.unk3C, TRUE, TRUE); + xxx_call_save_unk_text_struct_800641C(&gUnknown_203B320->s28.s0.unk3C, TRUE, TRUE); SUB_80095E4_CALL(gUnknown_203B320->s28.s0); } diff --git a/src/wonder_mail_5.c b/src/wonder_mail_5.c index 9486643b0..bae544939 100644 --- a/src/wonder_mail_5.c +++ b/src/wonder_mail_5.c @@ -21,7 +21,7 @@ struct unkStruct_203B324 u8 mailIndex; u32 windowID; UnkTextStruct2 *unk14; - UnkTextStruct2 unk18[4]; + UnkTextStruct3 unk18; }; static EWRAM_INIT struct unkStruct_203B324 *gUnknown_203B324 = {NULL}; @@ -63,9 +63,9 @@ bool8 sub_8030D40(u8 mailIndex, s32 windowID) gUnknown_203B324->mailIndex = mailIndex; sub_801317C(&gUnknown_203B324->unk0); gUnknown_203B324->windowID = windowID; - gUnknown_203B324->unk14 = &gUnknown_203B324->unk18[windowID]; - RestoreUnkTextStruct_8006518(gUnknown_203B324->unk18); - gUnknown_203B324->unk18[gUnknown_203B324->windowID] = gUnknown_80E091C; + gUnknown_203B324->unk14 = &gUnknown_203B324->unk18.a0[windowID]; + RestoreUnkTextStruct_8006518(&gUnknown_203B324->unk18); + gUnknown_203B324->unk18.a0[gUnknown_203B324->windowID] = gUnknown_80E091C; sub_8030DD4(); return TRUE; } @@ -95,9 +95,9 @@ void sub_8030DE4(void) { if(gUnknown_203B324 != NULL) { - gUnknown_203B324->unk18[gUnknown_203B324->windowID] = gUnknown_80E0900; + gUnknown_203B324->unk18.a0[gUnknown_203B324->windowID] = gUnknown_80E0900; ResetUnusedInputStruct(); - xxx_call_save_unk_text_struct_800641C(gUnknown_203B324->unk18, TRUE, TRUE); + xxx_call_save_unk_text_struct_800641C(&gUnknown_203B324->unk18, TRUE, TRUE); MemoryFree(gUnknown_203B324); gUnknown_203B324 = NULL; } @@ -106,7 +106,7 @@ void sub_8030DE4(void) void sub_8030E2C(void) { ResetUnusedInputStruct(); - xxx_call_save_unk_text_struct_800641C(gUnknown_203B324->unk18, TRUE, TRUE); + xxx_call_save_unk_text_struct_800641C(&gUnknown_203B324->unk18, TRUE, TRUE); } void sub_8030E48(void) diff --git a/src/wonder_mail_6.c b/src/wonder_mail_6.c index 486d6316e..b85f3b88a 100644 --- a/src/wonder_mail_6.c +++ b/src/wonder_mail_6.c @@ -17,7 +17,7 @@ struct unkStruct_203B328 u8 mailIndex; MenuStruct unk8; MenuStruct unk58; - UnkTextStruct2 unkA8[4]; + UnkTextStruct3 unkA8; /* 0x108 */ struct MonPortraitMsg monPortrait; u32 wonderMailType; }; @@ -180,30 +180,30 @@ void sub_80310E4(u32 newState) static void sub_80310FC(void) { - RestoreUnkTextStruct_8006518(gUnknown_203B328->unkA8); + RestoreUnkTextStruct_8006518(&gUnknown_203B328->unkA8); switch(gUnknown_203B328->state) { case INIT_STATE: - gUnknown_203B328->unkA8[1] = gUnknown_80E0990; - gUnknown_203B328->unkA8[2] = gUnknown_80E0990; - gUnknown_203B328->unkA8[3] = gUnknown_80E0990; + gUnknown_203B328->unkA8.a0[1] = gUnknown_80E0990; + gUnknown_203B328->unkA8.a0[2] = gUnknown_80E0990; + gUnknown_203B328->unkA8.a0[3] = gUnknown_80E0990; break; case MAIN_MENU: - gUnknown_203B328->unkA8[1] = gUnknown_80E09A8; - gUnknown_203B328->unkA8[2] = gUnknown_80E0990; - gUnknown_203B328->unkA8[3] = gUnknown_80E0990; - sub_8012CAC(&gUnknown_203B328->unkA8[1], gUnknown_80E0968); + gUnknown_203B328->unkA8.a0[1] = gUnknown_80E09A8; + gUnknown_203B328->unkA8.a0[2] = gUnknown_80E0990; + gUnknown_203B328->unkA8.a0[3] = gUnknown_80E0990; + sub_8012CAC(&gUnknown_203B328->unkA8.a0[1], gUnknown_80E0968); break; case DELETE_SINGLE_MAIL_STATE: case DELETE_ALL_MAIL_STATE: - gUnknown_203B328->unkA8[2] = gUnknown_80E09C0; - sub_8012CAC(&gUnknown_203B328->unkA8[2], gUnknown_80E0948); + gUnknown_203B328->unkA8.a0[2] = gUnknown_80E09C0; + sub_8012CAC(&gUnknown_203B328->unkA8.a0[2], gUnknown_80E0948); break; case INFO_STATE: - gUnknown_203B328->unkA8[0] = gUnknown_80E0990; - gUnknown_203B328->unkA8[1] = gUnknown_80E0990; - gUnknown_203B328->unkA8[2] = gUnknown_80E0990; - gUnknown_203B328->unkA8[3] = gUnknown_80E0990; + gUnknown_203B328->unkA8.a0[0] = gUnknown_80E0990; + gUnknown_203B328->unkA8.a0[1] = gUnknown_80E0990; + gUnknown_203B328->unkA8.a0[2] = gUnknown_80E0990; + gUnknown_203B328->unkA8.a0[3] = gUnknown_80E0990; break; case 5: case 6: @@ -213,7 +213,7 @@ static void sub_80310FC(void) break; } ResetUnusedInputStruct(); - xxx_call_save_unk_text_struct_800641C(gUnknown_203B328->unkA8, TRUE, TRUE); + xxx_call_save_unk_text_struct_800641C(&gUnknown_203B328->unkA8, TRUE, TRUE); } static void sub_8031258(void) diff --git a/src/wonder_mail_802C10C.c b/src/wonder_mail_802C10C.c index 23f80463a..82b8f4a45 100644 --- a/src/wonder_mail_802C10C.c +++ b/src/wonder_mail_802C10C.c @@ -29,18 +29,18 @@ bool8 sub_802C10C(s32 a0, UnkTextStruct2_sub *a1, s32 a2) gUnknown_203B2E0 = MemoryAlloc(sizeof(struct unkStruct_203B2E0), 8); gUnknown_203B2E0->unk8.s0.unk34 = a0; - gUnknown_203B2E0->unk8.s0.unk38 = &gUnknown_203B2E0->unk8.s0.unk3C[a0]; - RestoreUnkTextStruct_8006518(gUnknown_203B2E0->unk8.s0.unk3C); + gUnknown_203B2E0->unk8.s0.unk38 = &gUnknown_203B2E0->unk8.s0.unk3C.a0[a0]; + RestoreUnkTextStruct_8006518(&gUnknown_203B2E0->unk8.s0.unk3C); - gUnknown_203B2E0->unk8.s0.unk3C[gUnknown_203B2E0->unk8.s0.unk34] = sUnknown_80DFCB4; + gUnknown_203B2E0->unk8.s0.unk3C.a0[gUnknown_203B2E0->unk8.s0.unk34] = sUnknown_80DFCB4; gUnknown_203B2E0->unk8.s0.unk38->unk14 = &gUnknown_203B2E0->unk8.unk9C; if (a1 != NULL) - gUnknown_203B2E0->unk8.s0.unk3C[gUnknown_203B2E0->unk8.s0.unk34].unk8 = *a1; + gUnknown_203B2E0->unk8.s0.unk3C.a0[gUnknown_203B2E0->unk8.s0.unk34].unk8 = *a1; sub_8012D34(gUnknown_203B2E0->unk8.s0.unk38, a2); ResetUnusedInputStruct(); - xxx_call_save_unk_text_struct_800641C(gUnknown_203B2E0->unk8.s0.unk3C, TRUE, TRUE); + xxx_call_save_unk_text_struct_800641C(&gUnknown_203B2E0->unk8.s0.unk3C, TRUE, TRUE); sub_8013848(&gUnknown_203B2E0->unk8.s0.input, CountPelipperBoardSlots(), a2, a0); gUnknown_203B2E0->unk8.s0.input.menuIndex = gUnknown_203B2E4; sub_8013984(&gUnknown_203B2E0->unk8.s0.input); @@ -84,7 +84,7 @@ u8 sub_802C26C(void) void sub_802C28C(bool8 cursorSprite) { ResetUnusedInputStruct(); - xxx_call_save_unk_text_struct_800641C(gUnknown_203B2E0->unk8.s0.unk3C, FALSE, FALSE); + xxx_call_save_unk_text_struct_800641C(&gUnknown_203B2E0->unk8.s0.unk3C, FALSE, FALSE); gUnknown_203B2E0->unk8.s0.input.unk22 = CountPelipperBoardSlots(); sub_8013984(&gUnknown_203B2E0->unk8.s0.input); sub_802C328(); @@ -98,9 +98,9 @@ void sub_802C2D4(void) { if (gUnknown_203B2E0 != NULL) { gUnknown_203B2E4 = gUnknown_203B2E0->unk8.s0.input.menuIndex; - gUnknown_203B2E0->unk8.s0.unk3C[gUnknown_203B2E0->unk8.s0.unk34] = sUnknown_80DFC9C; + gUnknown_203B2E0->unk8.s0.unk3C.a0[gUnknown_203B2E0->unk8.s0.unk34] = sUnknown_80DFC9C; ResetUnusedInputStruct(); - xxx_call_save_unk_text_struct_800641C(gUnknown_203B2E0->unk8.s0.unk3C, TRUE, TRUE); + xxx_call_save_unk_text_struct_800641C(&gUnknown_203B2E0->unk8.s0.unk3C, TRUE, TRUE); MemoryFree(gUnknown_203B2E0); gUnknown_203B2E0 = NULL; } diff --git a/src/wonder_mail_802C4C8.c b/src/wonder_mail_802C4C8.c index 4ecafc075..d6478dfbe 100644 --- a/src/wonder_mail_802C4C8.c +++ b/src/wonder_mail_802C4C8.c @@ -30,18 +30,18 @@ bool8 sub_802C4C8(s32 a0, UnkTextStruct2_sub *a1, u32 a2) gUnknown_203B2E8 = MemoryAlloc(sizeof(struct unkStruct_203B2E0), 8); gUnknown_203B2E8->unk8.s0.unk34 = a0; - gUnknown_203B2E8->unk8.s0.unk38 = &gUnknown_203B2E8->unk8.s0.unk3C[a0]; - RestoreUnkTextStruct_8006518(gUnknown_203B2E8->unk8.s0.unk3C); + gUnknown_203B2E8->unk8.s0.unk38 = &gUnknown_203B2E8->unk8.s0.unk3C.a0[a0]; + RestoreUnkTextStruct_8006518(&gUnknown_203B2E8->unk8.s0.unk3C); - gUnknown_203B2E8->unk8.s0.unk3C[gUnknown_203B2E8->unk8.s0.unk34] = sUnknown_80DFCFC; + gUnknown_203B2E8->unk8.s0.unk3C.a0[gUnknown_203B2E8->unk8.s0.unk34] = sUnknown_80DFCFC; gUnknown_203B2E8->unk8.s0.unk38->unk14 = &gUnknown_203B2E8->unk8.unk9C; if (a1 != NULL) - gUnknown_203B2E8->unk8.s0.unk3C[gUnknown_203B2E8->unk8.s0.unk34].unk8 = *a1; + gUnknown_203B2E8->unk8.s0.unk3C.a0[gUnknown_203B2E8->unk8.s0.unk34].unk8 = *a1; sub_8012D34(gUnknown_203B2E8->unk8.s0.unk38, a2); ResetUnusedInputStruct(); - xxx_call_save_unk_text_struct_800641C(gUnknown_203B2E8->unk8.s0.unk3C, TRUE, TRUE); + xxx_call_save_unk_text_struct_800641C(&gUnknown_203B2E8->unk8.s0.unk3C, TRUE, TRUE); sub_8013848(&gUnknown_203B2E8->unk8.s0.input, CountAcceptedJobs(), a2, a0); gUnknown_203B2E8->unk8.s0.input.menuIndex = gUnknown_203B2EC; sub_8013984(&gUnknown_203B2E8->unk8.s0.input); @@ -85,7 +85,7 @@ u8 GetPelipperBoardSlotIndex(void) void sub_802C640(bool8 cursorSprite) { ResetUnusedInputStruct(); - xxx_call_save_unk_text_struct_800641C(gUnknown_203B2E8->unk8.s0.unk3C, FALSE, FALSE); + xxx_call_save_unk_text_struct_800641C(&gUnknown_203B2E8->unk8.s0.unk3C, FALSE, FALSE); gUnknown_203B2E8->unk8.s0.input.unk22 = CountAcceptedJobs(); sub_8013984(&gUnknown_203B2E8->unk8.s0.input); sub_802C6DC(); @@ -99,9 +99,9 @@ void sub_802C688(void) { if (gUnknown_203B2E8 != NULL) { gUnknown_203B2EC = gUnknown_203B2E8->unk8.s0.input.menuIndex; - gUnknown_203B2E8->unk8.s0.unk3C[gUnknown_203B2E8->unk8.s0.unk34] = sUnknown_80DFCE4; + gUnknown_203B2E8->unk8.s0.unk3C.a0[gUnknown_203B2E8->unk8.s0.unk34] = sUnknown_80DFCE4; ResetUnusedInputStruct(); - xxx_call_save_unk_text_struct_800641C(gUnknown_203B2E8->unk8.s0.unk3C, TRUE, TRUE); + xxx_call_save_unk_text_struct_800641C(&gUnknown_203B2E8->unk8.s0.unk3C, TRUE, TRUE); MemoryFree(gUnknown_203B2E8); gUnknown_203B2E8 = NULL; } diff --git a/src/wonder_mail_802C860.c b/src/wonder_mail_802C860.c index a7c3beb22..b33c75dbc 100644 --- a/src/wonder_mail_802C860.c +++ b/src/wonder_mail_802C860.c @@ -82,25 +82,25 @@ static void sub_802C928(void) { s32 i; - RestoreUnkTextStruct_8006518(sUnknown_203B2F0->unk19C); + RestoreUnkTextStruct_8006518(&sUnknown_203B2F0->unk19C); switch (sUnknown_203B2F0->state) { case 2: sub_802CAA4(); - sUnknown_203B2F0->unk19C[2] = sUnknown_80DFD40; - sub_8012CAC(&sUnknown_203B2F0->unk19C[2], sUnknown_203B2F0->unk10C); + sUnknown_203B2F0->unk19C.a0[2] = sUnknown_80DFD40; + sub_8012CAC(&sUnknown_203B2F0->unk19C.a0[2], sUnknown_203B2F0->unk10C); break; case 3: - sUnknown_203B2F0->unk19C[3] = sUnknown_80DFD58; + sUnknown_203B2F0->unk19C.a0[3] = sUnknown_80DFD58; break; default: for (i = 0; i < 4; i++) - sUnknown_203B2F0->unk19C[i] = sUnknown_80DFD28; + sUnknown_203B2F0->unk19C.a0[i] = sUnknown_80DFD28; break; } ResetUnusedInputStruct(); - xxx_call_save_unk_text_struct_800641C(sUnknown_203B2F0->unk19C, TRUE, TRUE); + xxx_call_save_unk_text_struct_800641C(&sUnknown_203B2F0->unk19C, TRUE, TRUE); } static void sub_802C9D8(void) diff --git a/src/wonder_mail_802CDD4.c b/src/wonder_mail_802CDD4.c index 2cdb48b5b..ec85fe3f5 100644 --- a/src/wonder_mail_802CDD4.c +++ b/src/wonder_mail_802CDD4.c @@ -25,13 +25,13 @@ bool8 sub_802CDD4(u32 a0) sUnknown_203B2F4 = MemoryAlloc(sizeof(struct_Sub80095E4_2), 8); sUnknown_203B2F4->s0.unk34 = a0; - sUnknown_203B2F4->s0.unk38 = &sUnknown_203B2F4->s0.unk3C[sUnknown_203B2F4->s0.unk34]; - RestoreUnkTextStruct_8006518(sUnknown_203B2F4->s0.unk3C); - sUnknown_203B2F4->s0.unk3C[sUnknown_203B2F4->s0.unk34] = sUnknown_80DFDA4; + sUnknown_203B2F4->s0.unk38 = &sUnknown_203B2F4->s0.unk3C.a0[sUnknown_203B2F4->s0.unk34]; + RestoreUnkTextStruct_8006518(&sUnknown_203B2F4->s0.unk3C); + sUnknown_203B2F4->s0.unk3C.a0[sUnknown_203B2F4->s0.unk34] = sUnknown_80DFDA4; sUnknown_203B2F4->s0.unk38->unk14 = &sUnknown_203B2F4->unk9C; sub_8012D34(sUnknown_203B2F4->s0.unk38, 4); ResetUnusedInputStruct(); - xxx_call_save_unk_text_struct_800641C(sUnknown_203B2F4->s0.unk3C, TRUE, TRUE); + xxx_call_save_unk_text_struct_800641C(&sUnknown_203B2F4->s0.unk3C, TRUE, TRUE); sub_8013848(&sUnknown_203B2F4->s0.input, 5, 4, a0); sub_802CF5C(); sub_802CFD0(); @@ -69,7 +69,7 @@ u8 sub_802CEBC(void) void sub_802CED8(bool8 cursorSprite) { ResetUnusedInputStruct(); - xxx_call_save_unk_text_struct_800641C(sUnknown_203B2F4->s0.unk3C, FALSE, FALSE); + xxx_call_save_unk_text_struct_800641C(&sUnknown_203B2F4->s0.unk3C, FALSE, FALSE); sub_8013984(&sUnknown_203B2F4->s0.input); sub_802CF5C(); sub_802CFD0(); @@ -81,9 +81,9 @@ void sub_802CED8(bool8 cursorSprite) void sub_802CF14(void) { if (sUnknown_203B2F4 != NULL) { - sUnknown_203B2F4->s0.unk3C[sUnknown_203B2F4->s0.unk34] = sUnknown_80DFD8C; + sUnknown_203B2F4->s0.unk3C.a0[sUnknown_203B2F4->s0.unk34] = sUnknown_80DFD8C; ResetUnusedInputStruct(); - xxx_call_save_unk_text_struct_800641C(sUnknown_203B2F4->s0.unk3C, TRUE, TRUE); + xxx_call_save_unk_text_struct_800641C(&sUnknown_203B2F4->s0.unk3C, TRUE, TRUE); MemoryFree(sUnknown_203B2F4); sUnknown_203B2F4 = NULL; } diff --git a/src/wonder_mail_802D098.c b/src/wonder_mail_802D098.c index 4b6650dcc..5ed5a68fa 100644 --- a/src/wonder_mail_802D098.c +++ b/src/wonder_mail_802D098.c @@ -140,31 +140,31 @@ static void sub_802D1B8(void) { s32 i; - RestoreUnkTextStruct_8006518(sUnknown_203B2F8->unk1A8); + RestoreUnkTextStruct_8006518(&sUnknown_203B2F8->unk1A8); switch (sUnknown_203B2F8->state) { case 13: sub_802D5A4(); - sUnknown_203B2F8->unk1A8[2] = sUnknown_80DFE04; - sub_8012CAC(&sUnknown_203B2F8->unk1A8[2], sUnknown_203B2F8->unk118); - sUnknown_203B2F8->unk1A8[2].unkC = 6; + sUnknown_203B2F8->unk1A8.a0[2] = sUnknown_80DFE04; + sub_8012CAC(&sUnknown_203B2F8->unk1A8.a0[2], sUnknown_203B2F8->unk118); + sUnknown_203B2F8->unk1A8.a0[2].unkC = 6; break; case 14: sub_802D63C(); - sUnknown_203B2F8->unk1A8[3] = sUnknown_80DFE1C; - sub_8012CAC(&sUnknown_203B2F8->unk1A8[3], sUnknown_203B2F8->unk158); - sUnknown_203B2F8->unk1A8[3].unkC = 6; + sUnknown_203B2F8->unk1A8.a0[3] = sUnknown_80DFE1C; + sub_8012CAC(&sUnknown_203B2F8->unk1A8.a0[3], sUnknown_203B2F8->unk158); + sUnknown_203B2F8->unk1A8.a0[3].unkC = 6; break; default: for (i = 0; i < 4; i++) - sUnknown_203B2F8->unk1A8[i] = sUnknown_80DFDD4; + sUnknown_203B2F8->unk1A8.a0[i] = sUnknown_80DFDD4; break; case WONDER_MAIL_EXIT: break; } ResetUnusedInputStruct(); - xxx_call_save_unk_text_struct_800641C(sUnknown_203B2F8->unk1A8, TRUE, TRUE); + xxx_call_save_unk_text_struct_800641C(&sUnknown_203B2F8->unk1A8, TRUE, TRUE); } static void sub_802D2A8(void) diff --git a/src/wonder_mail_main_menu.c b/src/wonder_mail_main_menu.c index a1d2b2d1a..9ec2e5877 100644 --- a/src/wonder_mail_main_menu.c +++ b/src/wonder_mail_main_menu.c @@ -49,7 +49,7 @@ struct unkStruct_203B3E8 u8 unk38_u8[0x30]; // idk why it fills to 0x30 instead... } UNK38; u8 fill68[0x1EC - 0x68]; - UnkTextStruct2 unk1EC[4]; + UnkTextStruct3 unk1EC; u32 unk24C; /* 0x250 */ u32 wonderMailStatus; unkStruct_803B344 unk254; @@ -331,7 +331,7 @@ void HandlePasswordEntryScreen(void) case 3: sub_80155F0(); ResetUnusedInputStruct(); - xxx_call_save_unk_text_struct_800641C(gUnknown_203B3E8->unk1EC, TRUE, TRUE); + xxx_call_save_unk_text_struct_800641C(&gUnknown_203B3E8->unk1EC, TRUE, TRUE); if ( !DecodeWonderMailPassword(gUnknown_203B3E8->PasswordEntryBuffer, &gUnknown_203B3E8->UNK38.decodedMail) || !IsValidWonderMail(&gUnknown_203B3E8->UNK38.decodedMail) ) { // Invalid password @@ -349,7 +349,7 @@ void HandlePasswordEntryScreen(void) case 2: sub_80155F0(); ResetUnusedInputStruct(); - xxx_call_save_unk_text_struct_800641C(gUnknown_203B3E8->unk1EC, TRUE, TRUE); + xxx_call_save_unk_text_struct_800641C(&gUnknown_203B3E8->unk1EC, TRUE, TRUE); SetWonderMailMainMenuState(EXIT_TO_MAIN_MENU); break; } @@ -558,7 +558,7 @@ void WonderMailMainMenuCallback(void) CreateDialogueBoxAndPortrait(gUnknown_80E7C98,0,0,0x101); break; case PASSWORD_ENTRY_SCREEN: - RestoreUnkTextStruct_8006518(gUnknown_203B3E8->unk1EC); + RestoreUnkTextStruct_8006518(&gUnknown_203B3E8->unk1EC); ResetUnusedInputStruct(); xxx_call_save_unk_text_struct_800641C(NULL, TRUE, TRUE); sub_80151C0(5,gUnknown_203B3E8->PasswordEntryBuffer); From 45e7e74240d3039a79aaa25278218cf8ae5ce576 Mon Sep 17 00:00:00 2001 From: DizzyEggg Date: Wed, 19 Feb 2025 10:21:23 +0100 Subject: [PATCH 08/40] Get rid of UnkTextStruct2_sub --- include/code_801C8C4.h | 2 +- include/code_8023144.h | 2 +- include/kecleon_bros4.h | 2 +- include/makuhita_dojo2.h | 2 +- include/pokemon_news1.h | 2 +- include/pokemon_news3.h | 2 +- include/structs/str_text.h | 20 +++------------ include/wonder_mail_4.h | 2 +- include/wonder_mail_802C10C.h | 2 +- include/wonder_mail_802C4C8.h | 2 +- src/code_8010EF0.c | 4 +-- src/code_801C8C4.c | 4 +-- src/code_8023144.c | 4 +-- src/code_805D8C8_1.c | 22 ++++++++--------- src/code_8066D04.c | 8 +++--- src/code_8072F3C.c | 4 +-- src/friend_rescue.c | 2 +- src/kecleon_bros4.c | 4 +-- src/makuhita_dojo2.c | 4 +-- src/pokemon_news1.c | 4 +-- src/pokemon_news3.c | 4 +-- src/string_format.c | 10 ++++---- src/text.c | 46 +++++++++++++++++------------------ src/thank_you_wonder_mail.c | 2 +- src/trade_items_menu.c | 2 +- src/wonder_mail_4.c | 4 +-- src/wonder_mail_802C10C.c | 4 +-- src/wonder_mail_802C4C8.c | 4 +-- 28 files changed, 80 insertions(+), 94 deletions(-) diff --git a/include/code_801C8C4.h b/include/code_801C8C4.h index d9dabca81..94500c8be 100644 --- a/include/code_801C8C4.h +++ b/include/code_801C8C4.h @@ -15,7 +15,7 @@ struct unkStruct_203B244 /* 0x4B4 */ struct_Sub80095E4_2 unk4B4; }; -bool8 sub_801C8C4(s32, s32, UnkTextStruct2_sub *, u32); +bool8 sub_801C8C4(s32, s32, DungeonPos *, u32); u32 sub_801CA08(bool8); u8 sub_801CB24(void); void sub_801CB5C(bool8); diff --git a/include/code_8023144.h b/include/code_8023144.h index 6ede851d4..62b93bb71 100644 --- a/include/code_8023144.h +++ b/include/code_8023144.h @@ -19,7 +19,7 @@ typedef struct unkStruct_3001B5C /* 0x35C */ struct_Sub80095E4_2 s35C; } unkStruct_3001B5C; -bool8 sub_8023144(s32, s32 index, UnkTextStruct2_sub *sub, u32); +bool8 sub_8023144(s32, s32 index, DungeonPos *sub, u32); u32 sub_8023278(bool8); s16 sub_802331C(void); void sub_8023354(bool8 cursorSprite); diff --git a/include/kecleon_bros4.h b/include/kecleon_bros4.h index 3d0169f25..500cd3c03 100644 --- a/include/kecleon_bros4.h +++ b/include/kecleon_bros4.h @@ -13,7 +13,7 @@ typedef struct unkStruct_203B224 /* 0x54 */ struct_Sub80095E4_2 unk54; } unkStruct_203B224; -bool8 sub_801A5D8(u32, s32, UnkTextStruct2_sub *, u32); +bool8 sub_801A5D8(u32, s32, DungeonPos *, u32); u32 sub_801A6E8(bool8); s32 sub_801A8AC(void); void sub_801A8D0(bool8); diff --git a/include/makuhita_dojo2.h b/include/makuhita_dojo2.h index a7c1d32bb..12bef4ce5 100644 --- a/include/makuhita_dojo2.h +++ b/include/makuhita_dojo2.h @@ -15,7 +15,7 @@ typedef struct MakuhitaDojoWork2 bool8 MakuhitaDojo_ReturnFalse(void); -bool8 sub_80302E8(s32, UnkTextStruct2_sub *, u32); +bool8 sub_80302E8(s32, DungeonPos *, u32); u32 sub_80303AC(bool8); s16 sub_8030418(void); void sub_8030480(void); diff --git a/include/pokemon_news1.h b/include/pokemon_news1.h index 68458586b..893698879 100644 --- a/include/pokemon_news1.h +++ b/include/pokemon_news1.h @@ -16,7 +16,7 @@ struct unkStruct_203B2CC u8 GetPokemonNewsIndex(void); bool8 HasNoPKMNNews(void); -bool8 sub_802B640(u32, UnkTextStruct2_sub *, u32); +bool8 sub_802B640(u32, DungeonPos *, u32); u32 sub_802B720(bool8); void sub_802B7D0(bool8 cursorSprite); void sub_802B81C(void); diff --git a/include/pokemon_news3.h b/include/pokemon_news3.h index c808ff113..d14e07f10 100644 --- a/include/pokemon_news3.h +++ b/include/pokemon_news3.h @@ -14,7 +14,7 @@ struct unkStruct_203B2D8 void CreateMailMenu(void); bool8 HasNoMailinMailbox(void); -bool8 sub_802BD14(s32, UnkTextStruct2_sub *, u32); +bool8 sub_802BD14(s32, DungeonPos *, u32); u32 sub_802BDEC(bool8); u8 sub_802BE74(void); void sub_802BE94(bool8 cursorSprite); diff --git a/include/structs/str_text.h b/include/structs/str_text.h index 3b16a5863..61c0cd30f 100644 --- a/include/structs/str_text.h +++ b/include/structs/str_text.h @@ -28,22 +28,6 @@ typedef struct UnkTextStruct1 u8 unk46; } UnkTextStruct1; -// size: 0x4 -typedef struct UnkTextStruct2_sub -{ - // I haven't found a func that reads these separately yet, but simply making an arr[2] will cause assignments to break. - // Some funcs only match with this union for some reason even though they don't access the variables separately... - // The first func to break is currently sub_801A5D8 in kecleon_bros4.c - // The first func I matched that uses the array is sub_8006554 in text2.c (using the separated fields doesn't match or get even close) - union { - struct { - s16 unk0; - s16 unk2; - } separate; - s16 arr[2]; - } unk0; -} UnkTextStruct2_sub; - typedef struct UnkTextStruct2_sub2 { u8 f0; @@ -52,13 +36,15 @@ typedef struct UnkTextStruct2_sub2 u8 f3; } UnkTextStruct2_sub2; +#include "structs/str_position.h" + // size: 0x18 typedef struct UnkTextStruct2 { u8 unk0; u8 fill1[0x4 - 0x1]; s32 unk4; - UnkTextStruct2_sub unk8; + DungeonPos pos; s16 unkC; s16 unkE; s16 unk10; diff --git a/include/wonder_mail_4.h b/include/wonder_mail_4.h index e24e7f4b5..b04e337f6 100644 --- a/include/wonder_mail_4.h +++ b/include/wonder_mail_4.h @@ -3,7 +3,7 @@ #include "structs/str_text.h" -u32 sub_80306A8(u32 wonderMailType, u32 r1, UnkTextStruct2_sub *r2, u32 r3); +u32 sub_80306A8(u32 wonderMailType, u32 r1, DungeonPos *r2, u32 r3); u32 sub_8030768(u8 r0); u8 sub_80307EC(void); void sub_8030810(u8 r0); diff --git a/include/wonder_mail_802C10C.h b/include/wonder_mail_802C10C.h index fa6811345..f5fc66b23 100644 --- a/include/wonder_mail_802C10C.h +++ b/include/wonder_mail_802C10C.h @@ -15,7 +15,7 @@ struct unkStruct_203B2E0 void DrawPelipperBoardJobMenu(void); bool8 HasNoPelipperBoardJobs(void); -bool8 sub_802C10C(s32, UnkTextStruct2_sub *, s32); +bool8 sub_802C10C(s32, DungeonPos *, s32); u32 sub_802C1E4(bool8); u8 sub_802C26C(void); void sub_802C28C(bool8 cursorSprite); diff --git a/include/wonder_mail_802C4C8.h b/include/wonder_mail_802C4C8.h index 1fef8af13..2f313f2ca 100644 --- a/include/wonder_mail_802C4C8.h +++ b/include/wonder_mail_802C4C8.h @@ -7,7 +7,7 @@ void DrawJobListMenu(void); bool8 HasNoAcceptedJobs(void); u8 GetPelipperBoardSlotIndex(void); -bool8 sub_802C4C8(s32, UnkTextStruct2_sub *, u32); +bool8 sub_802C4C8(s32, DungeonPos *, u32); u32 sub_802C598(bool8); void sub_802C640(bool8 cursorSprite); void sub_802C688(void); diff --git a/src/code_8010EF0.c b/src/code_8010EF0.c index 0317597d8..92afa997e 100644 --- a/src/code_8010EF0.c +++ b/src/code_8010EF0.c @@ -7,14 +7,14 @@ EWRAM_INIT void *gUnknown_203B0E8 = NULL; // Pointer to some unknown struct EWRAM_INIT UnkTextStruct2 gUnknown_203B0EC[4] = { // Exact location of this variable is unknown. Find a better place for it once more code is decompiled. [0] = { .unk4 = 3, - .unk8 = {2, 10}, + .pos = {2, 10}, .unkC = 26, .unkE = 9, .unk10 = 9, }, [1] = { .unk4 = 3, - .unk8 = {23, 6}, + .pos = {23, 6}, .unkC = 5, .unkE = 3, .unk10 = 3, diff --git a/src/code_801C8C4.c b/src/code_801C8C4.c index d7070ab5c..833f7546b 100644 --- a/src/code_801C8C4.c +++ b/src/code_801C8C4.c @@ -18,7 +18,7 @@ static EWRAM_INIT u16 sUnknown_203B24E = {0}; static void sub_801CC38(void); static u32 sub_801CE58(void); -bool8 sub_801C8C4(s32 a0, s32 a1, UnkTextStruct2_sub *a2, u32 a3) +bool8 sub_801C8C4(s32 a0, s32 a1, DungeonPos *a2, u32 a3) { if (sub_801CF14(a0)) return FALSE; @@ -35,7 +35,7 @@ bool8 sub_801C8C4(s32 a0, s32 a1, UnkTextStruct2_sub *a2, u32 a3) sUnknown_203B244->unk4B4.s0.unk38->unk14 = &sUnknown_203B244->unk4B4.unk9C; if (a2 != NULL) - sUnknown_203B244->unk4B4.s0.unk3C.a0[sUnknown_203B244->unk4B4.s0.unk34].unk8 = *a2; + sUnknown_203B244->unk4B4.s0.unk3C.a0[sUnknown_203B244->unk4B4.s0.unk34].pos = *a2; sub_8012D08(sUnknown_203B244->unk4B4.s0.unk38, a3); ResetUnusedInputStruct(); diff --git a/src/code_8023144.c b/src/code_8023144.c index 860c49798..6be4b4f7d 100644 --- a/src/code_8023144.c +++ b/src/code_8023144.c @@ -33,7 +33,7 @@ static void sub_8023730(void); static void sub_8023758(void); static void sub_80237E0(void); -bool8 sub_8023144(s32 a0, s32 index, UnkTextStruct2_sub *sub, u32 a3) +bool8 sub_8023144(s32 a0, s32 index, DungeonPos *sub, u32 a3) { u8 param_1_u8 = a0; @@ -54,7 +54,7 @@ bool8 sub_8023144(s32 a0, s32 index, UnkTextStruct2_sub *sub, u32 a3) gUnknown_3001B5C->s35C.s0.unk38->unk14 = &gUnknown_3001B5C->s35C.unk9C; if (sub != NULL) - gUnknown_3001B5C->s35C.s0.unk3C.a0[gUnknown_3001B5C->s35C.s0.unk34].unk8 = *sub; + gUnknown_3001B5C->s35C.s0.unk3C.a0[gUnknown_3001B5C->s35C.s0.unk34].pos = *sub; sub_8012D08(gUnknown_3001B5C->s35C.s0.unk38, a3); ResetUnusedInputStruct(); diff --git a/src/code_805D8C8_1.c b/src/code_805D8C8_1.c index 6c35adaa6..1572cae31 100644 --- a/src/code_805D8C8_1.c +++ b/src/code_805D8C8_1.c @@ -1684,8 +1684,8 @@ static inline void sub_805FC30_SetUpTxtStruct(UnkTextStruct3 *src) memset(src, 0, sizeof(*src)); src->a0[0].unk4 = 3; src->a0[1].unk4 = 3; - src->a0[1].unk8.unk0.separate.unk0 = 0x16; - src->a0[1].unk8.unk0.separate.unk2 = 4; + src->a0[1].pos.x = 0x16; + src->a0[1].pos.y = 4; src->a0[1].unkC = 6; src->a0[1].unkE = 4; src->a0[1].unk10 = 4; @@ -1716,7 +1716,7 @@ void sub_805FC30(UnkTextStruct3 *a0, s32 a1) sub_801317C(&gUnknown_202EE10.unk28); - sp.a0[1].unk8.unk0.separate.unk0 = a1; + sp.a0[1].pos.x = a1; sp.a0[1].unkC = 28 - a1; sp.a0[1].unkE = sp.a0[1].unk10 = sub_80095E4(gUnknown_202EE10.unk1C, 0); sub_803ECB4(&sp, 0); @@ -1784,7 +1784,7 @@ bool8 sub_805FD74(Entity * a0, struct UnkMenuBitsStruct *a1) [0] = { .unk4 = 6, - .unk8 = {2, 2}, + .pos = {2, 2}, .unkC = 0x12, .unkE = 0x10, .unk10 = 0x10, @@ -2089,11 +2089,11 @@ static void CreateFieldItemMenu(s32 a0, Entity *a1, bool8 a2, bool8 a3, UnkTextS if (a2) { gUnknown_202EE10.unkC += 0x40; - a4->a0[0].unk8.unk0.separate.unk0 = 0xA; + a4->a0[0].pos.x = 0xA; a4->a0[1] = var_94; } else { - a4->a0[0].unk8.unk0.separate.unk0 = 2; + a4->a0[0].pos.x = 2; a4->a0[1] = a4->a0[3]; } @@ -2523,8 +2523,8 @@ bool8 sub_8060E38(Entity *a0) UnkTextStruct3 var_84 = {0}; var_84.a0[0].unk4 = 6; - var_84.a0[0].unk8.unk0.separate.unk0 = 2; - var_84.a0[0].unk8.unk0.separate.unk2 = 2; + var_84.a0[0].pos.x = 2; + var_84.a0[0].pos.y = 2; var_84.a0[0].unkC = 0xE; var_84.a0[0].unkE = 0x10; var_84.a0[0].unk10 = 0x10; @@ -2542,7 +2542,7 @@ bool8 sub_8060E38(Entity *a0) if (!gDungeon->unk644.unk17) { var_84.a0[0].unk4 = 3; - var_84.a0[0].unk8.unk0.arr[1]++; + var_84.a0[0].pos.y++; } while (1) { @@ -2876,8 +2876,8 @@ static inline void SetTxtStruct(UnkTextStruct3 *sp) { memset(sp, 0, sizeof(*sp)); sp->a0[0].unk4 = 6; - sp->a0[0].unk8.unk0.separate.unk0 = 2; - sp->a0[0].unk8.unk0.separate.unk2 = 2; + sp->a0[0].pos.x = 2; + sp->a0[0].pos.y = 2; sp->a0[0].unkC = 0x12; sp->a0[0].unkE = 0xE; sp->a0[0].unk10 = 0x12; diff --git a/src/code_8066D04.c b/src/code_8066D04.c index 211bbc2bf..90b04ae7d 100644 --- a/src/code_8066D04.c +++ b/src/code_8066D04.c @@ -931,7 +931,7 @@ static const UnkTextStruct3 gUnknown_8106DC8 = { { .unk0 = 0, .unk4 = 0x06, - .unk8 = {0x02, 0x02}, + .pos = {0x02, 0x02}, .unkC = 0x11, .unkE = 0x0E, .unk10 = 0x12, @@ -942,7 +942,7 @@ static const UnkTextStruct3 gUnknown_8106DC8 = { { .unk0 = 0, .unk4 = 0x03, - .unk8 = {0x15, 0x04}, + .pos = {0x15, 0x04}, .unkC = 0x07, .unkE = 0x04, .unk10 = 0x04, @@ -1261,8 +1261,8 @@ void sub_806806C(PokemonStruct1 *a0) s32 r7; spTxtStruct.a0[0].unk4 = 6; - spTxtStruct.a0[0].unk8.unk0.separate.unk0 = 2; - spTxtStruct.a0[0].unk8.unk0.separate.unk2 = 2; + spTxtStruct.a0[0].pos.x = 2; + spTxtStruct.a0[0].pos.y = 2; spTxtStruct.a0[0].unkC = 0x12; spTxtStruct.a0[0].unkE = 0xE; spTxtStruct.a0[0].unk10 = 0x12; diff --git a/src/code_8072F3C.c b/src/code_8072F3C.c index c4d281a63..2ba1a4abe 100644 --- a/src/code_8072F3C.c +++ b/src/code_8072F3C.c @@ -66,7 +66,7 @@ extern bool8 sub_802FCF0(void); s32 sub_802FBF4(void); extern u8 sub_8097384(s16); -u32 sub_802F73C(u32 r0, UnkTextStruct2_sub *r1, u32 r2, u8 r3) +u32 sub_802F73C(u32 r0, DungeonPos *r1, u32 r2, u8 r3) { if (sub_802FCF0()) return 0; @@ -87,7 +87,7 @@ u32 sub_802F73C(u32 r0, UnkTextStruct2_sub *r1, u32 r2, u8 r3) gUnknown_203B314->sBC.s0.unk38->unk14 = &gUnknown_203B314->sBC.unk9C; if (r1 != 0) - gUnknown_203B314->sBC.s0.unk3C.a0[gUnknown_203B314->sBC.s0.unk34].unk8 = *r1; + gUnknown_203B314->sBC.s0.unk3C.a0[gUnknown_203B314->sBC.s0.unk34].pos = *r1; sub_8012D08(gUnknown_203B314->sBC.s0.unk38, r2); ResetUnusedInputStruct(); diff --git a/src/friend_rescue.c b/src/friend_rescue.c index 519abcba1..6144736d8 100644 --- a/src/friend_rescue.c +++ b/src/friend_rescue.c @@ -1073,7 +1073,7 @@ void sub_8032828(void) ResetUnusedInputStruct(); xxx_call_save_unk_text_struct_800641C(NULL, TRUE, TRUE); { - UnkTextStruct2_sub local_x = {3, 2}; + DungeonPos local_x = {3, 2}; sub_801C8C4(0, 1, &local_x, 9); } } diff --git a/src/kecleon_bros4.c b/src/kecleon_bros4.c index d7d50d3b9..8e6487969 100644 --- a/src/kecleon_bros4.c +++ b/src/kecleon_bros4.c @@ -23,7 +23,7 @@ static void SortInventoryItems(void); static void sub_801A998(void); static s32 sub_801AE24(u32); -bool8 sub_801A5D8(u32 param_1, s32 param_2, UnkTextStruct2_sub *param_3, u32 param_4) +bool8 sub_801A5D8(u32 param_1, s32 param_2, DungeonPos *param_3, u32 param_4) { if (GetNumberOfFilledInventorySlots() == 0) return FALSE; @@ -41,7 +41,7 @@ bool8 sub_801A5D8(u32 param_1, s32 param_2, UnkTextStruct2_sub *param_3, u32 par gUnknown_203B224->unk54.s0.unk38->unk14 = &gUnknown_203B224->unk54.unk9C; if (param_3 != NULL) - gUnknown_203B224->unk54.s0.unk3C.a0[gUnknown_203B224->unk54.s0.unk34].unk8 = *param_3; + gUnknown_203B224->unk54.s0.unk3C.a0[gUnknown_203B224->unk54.s0.unk34].pos = *param_3; sub_8012D08(gUnknown_203B224->unk54.s0.unk38, param_4); sub_8099690(1); diff --git a/src/makuhita_dojo2.c b/src/makuhita_dojo2.c index a9e7fea41..3aed6c381 100644 --- a/src/makuhita_dojo2.c +++ b/src/makuhita_dojo2.c @@ -22,7 +22,7 @@ static void MakuhitaDojo_DrawCourseList(void); static void sub_80304C8(void); static s32 sub_8030668(void); -bool8 sub_80302E8(s32 param_1, UnkTextStruct2_sub *param_2, u32 param_3) +bool8 sub_80302E8(s32 param_1, DungeonPos *param_2, u32 param_3) { if (MakuhitaDojo_ReturnFalse()) return FALSE; @@ -37,7 +37,7 @@ bool8 sub_80302E8(s32 param_1, UnkTextStruct2_sub *param_2, u32 param_3) sMakuhitaDojoWork2->s30.s0.unk38->unk14 = &sMakuhitaDojoWork2->s30.unk9C; if (param_2 != NULL) - sMakuhitaDojoWork2->s30.s0.unk3C.a0[sMakuhitaDojoWork2->s30.s0.unk34].unk8 = *param_2; + sMakuhitaDojoWork2->s30.s0.unk3C.a0[sMakuhitaDojoWork2->s30.s0.unk34].pos = *param_2; sub_8012D08(sMakuhitaDojoWork2->s30.s0.unk38, param_3); ResetUnusedInputStruct(); diff --git a/src/pokemon_news1.c b/src/pokemon_news1.c index cc92deb6c..d2bb8ef6d 100644 --- a/src/pokemon_news1.c +++ b/src/pokemon_news1.c @@ -23,7 +23,7 @@ static s32 GetNumPKMNNews(void); static void sub_802B880(void); -bool8 sub_802B640(u32 a0, UnkTextStruct2_sub *a1, u32 a2) +bool8 sub_802B640(u32 a0, DungeonPos *a1, u32 a2) { if (HasNoPKMNNews()) return FALSE; @@ -39,7 +39,7 @@ bool8 sub_802B640(u32 a0, UnkTextStruct2_sub *a1, u32 a2) sUnknown_203B2CC->s38.unk3C.a0[sUnknown_203B2CC->s38.unk34] = sUnknown_80DFBEC; if (a1 != NULL) - sUnknown_203B2CC->s38.unk3C.a0[sUnknown_203B2CC->s38.unk34].unk8 = *a1; + sUnknown_203B2CC->s38.unk3C.a0[sUnknown_203B2CC->s38.unk34].pos = *a1; sub_8012D08(sUnknown_203B2CC->s38.unk38, a2); ResetUnusedInputStruct(); diff --git a/src/pokemon_news3.c b/src/pokemon_news3.c index f2acbe8f3..a3cdc8148 100644 --- a/src/pokemon_news3.c +++ b/src/pokemon_news3.c @@ -26,7 +26,7 @@ static s32 CountEmptyMailSlots(void); static void sub_802BF30(void); -bool8 sub_802BD14(s32 a0, UnkTextStruct2_sub *a1, u32 a2) +bool8 sub_802BD14(s32 a0, DungeonPos *a1, u32 a2) { if (HasNoMailinMailbox()) return FALSE; @@ -41,7 +41,7 @@ bool8 sub_802BD14(s32 a0, UnkTextStruct2_sub *a1, u32 a2) sUnknown_203B2D8->unk4.s0.unk38->unk14 = &sUnknown_203B2D8->unk4.unk9C; if (a1 != NULL) - sUnknown_203B2D8->unk4.s0.unk3C.a0[sUnknown_203B2D8->unk4.s0.unk34].unk8 = *a1; + sUnknown_203B2D8->unk4.s0.unk3C.a0[sUnknown_203B2D8->unk4.s0.unk34].pos = *a1; sub_8012D34(sUnknown_203B2D8->unk4.s0.unk38, a2); ResetUnusedInputStruct(); diff --git a/src/string_format.c b/src/string_format.c index 8b2d78dbf..c76c256ce 100644 --- a/src/string_format.c +++ b/src/string_format.c @@ -160,7 +160,7 @@ static EWRAM_DATA MenuInputStructSub gUnknown_202EC28 = {0}; static EWRAM_INIT UnkTextStruct3 sUnknown_203B198 = { .a0 = { [0] = { - .unk8 = {2, 15}, + .pos = {2, 15}, .unkC = 26, .unkE = 5, .unk10 = 7, @@ -241,8 +241,8 @@ void CreateMenuDialogueBoxAndPortrait(const u8 *text, void *a1, u32 r9, const Me if (monPortraitPtr != NULL && monPortraitPtr->faceData != NULL && monPortraitPtr->faceData->sprites[monPortraitPtr->spriteId].gfx != 0) { s32 i; - sUnknown_203B198.a0[1].unk8.unk0.arr[0] = monPortraitPtr->pos.x; - sUnknown_203B198.a0[1].unk8.unk0.arr[1] = monPortraitPtr->pos.y; + sUnknown_203B198.a0[1].pos.x = monPortraitPtr->pos.x; + sUnknown_203B198.a0[1].pos.y = monPortraitPtr->pos.y; sUnknown_203B198.a0[1].unkC = 5; sUnknown_203B198.a0[1].unkE = 5; sUnknown_203B198.a0[1].unk10 = 5; @@ -627,8 +627,8 @@ static void sub_8014A88(void) sUnknown_203B198.a0[2].unkC = r1; sUnknown_203B198.a0[2].unk10 = r2; sUnknown_203B198.a0[2].unkE = r2; - sUnknown_203B198.a0[2].unk8.unk0.arr[0] = 28 - r1; - sUnknown_203B198.a0[2].unk8.unk0.arr[1] = 14 - r2; + sUnknown_203B198.a0[2].pos.x = 28 - r1; + sUnknown_203B198.a0[2].pos.y = 14 - r2; sUnknown_203B198.a0[0].unk0 = 0x80; sUnknown_203B198.a0[1].unk0 = 0xC0; if (sNeverWrittenToUnknownStructPtr != NULL) { diff --git a/src/text.c b/src/text.c index 2a1561e1e..c5d72ce51 100644 --- a/src/text.c +++ b/src/text.c @@ -64,8 +64,8 @@ EWRAM_INIT void (*gIwramTextFunc4)(s32 a0) = sub_8272A78; // This variable is only used in InitGraphics function, which may or may not belong to text.c EWRAM_INIT u8 gUnknown_203B090 = 0; -static void SaveUnkTextStructAndXXX_8006438(const UnkTextStruct3 *a0, bool8 a1, bool8 a2, UnkTextStruct2_sub *a3); -static void sub_8006554(UnkTextStruct1 *a0, u32 *a1, u32 *a2, u16 *a3, u32 a4, const UnkTextStruct2 *a5, bool8 a6, u32 a7, UnkTextStruct2_sub *a8, u8 a9); +static void SaveUnkTextStructAndXXX_8006438(const UnkTextStruct3 *a0, bool8 a1, bool8 a2, DungeonPos *a3); +static void sub_8006554(UnkTextStruct1 *a0, u32 *a1, u32 *a2, u16 *a3, u32 a4, const UnkTextStruct2 *a5, bool8 a6, u32 a7, DungeonPos *a8, u8 a9); static void sub_800677C(UnkTextStruct1 *a0, s32 a1, u16 *a2, u8 a3); static void sub_80069CC(UnkTextStruct1 *a0, s32 a1, s32 a2, s32 a3, u16 *a4); static void sub_8006AC4(UnkTextStruct1 *a0, s32 a1, s32 a2, s32 a3, u16 *a4); @@ -86,7 +86,7 @@ static void sub_80084A4(UnkTextStruct1 *a0, u16 a1[32][32], u32 a2, s32 a3, s32 static void sub_8008818(UnkTextStruct1 *a0, s32 a1, s32 a2, s32 a3, s32 a4, s32 a5); static bool8 xxx_update_bg_vram(UnkTextStruct1 *a0); static void sub_800898C(void); -static void sub_80089AC(const UnkTextStruct2 *r4, UnkTextStruct2_sub *r5_Str); +static void sub_80089AC(const UnkTextStruct2 *r4, DungeonPos *r5_Str); static void PrepareTextbox_8008C6C(UnkTextStruct1 *strArr, u32 strId); static void xxx_draw_string(UnkTextStruct1 *strArr, s32 x, s32 y, const u8 *str, u32 windowId, u32 terminatingChr, s32 characterSpacing, s32 lineSpacing); static const u8 *HandleTextFormat(UnkTextStruct1 *strArr, const u8 *str, struct UnkDrawStringStruct *sp); @@ -277,12 +277,12 @@ void SetCharacterMask(int a0) void xxx_call_save_unk_text_struct_800641C(const UnkTextStruct3 *a0, bool8 a1, bool8 a2) { - UnkTextStruct2_sub r3 = {0, 0}; + DungeonPos r3 = {0, 0}; SaveUnkTextStructAndXXX_8006438(a0, a1, a2, &r3); } // https://decomp.me/scratch/xF5Y1 -static void SaveUnkTextStructAndXXX_8006438(const UnkTextStruct3 *a0, bool8 a1, bool8 a2, UnkTextStruct2_sub *a3) +static void SaveUnkTextStructAndXXX_8006438(const UnkTextStruct3 *a0, bool8 a1, bool8 a2, DungeonPos *a3) { s32 i; u32 r9; @@ -336,7 +336,7 @@ u32 sub_8006544(u32 index) } // a1 is a VRAM pointer -static void sub_8006554(UnkTextStruct1 *a0, u32 *a1, u32 *a2, u16 *a3, u32 a4, const UnkTextStruct2 *a5, bool8 a6, u32 a7, UnkTextStruct2_sub *a8, u8 a9) +static void sub_8006554(UnkTextStruct1 *a0, u32 *a1, u32 *a2, u16 *a3, u32 a4, const UnkTextStruct2 *a5, bool8 a6, u32 a7, DungeonPos *a8, u8 a9) { UnkTextStruct1 *t1; s32 iVar3; @@ -350,8 +350,8 @@ static void sub_8006554(UnkTextStruct1 *a0, u32 *a1, u32 *a2, u16 *a3, u32 a4, c s32 j; t1 = &a0[a4]; - iVar3 = a5->unk8.unk0.arr[0] + a8->unk0.arr[0]; - iVar5 = a5->unk8.unk0.arr[1] + a8->unk0.arr[1]; + iVar3 = a5->pos.x + a8->x; + iVar5 = a5->pos.y + a8->y; t1->unk0 = iVar3; t1->unk2 = iVar5; t1->unk4 = a5->unkC; @@ -2866,7 +2866,7 @@ static void sub_800898C(void) } } -static void sub_80089AC(const UnkTextStruct2 *r4, UnkTextStruct2_sub *r5_Str) +static void sub_80089AC(const UnkTextStruct2 *r4, DungeonPos *r5_Str) { u8 *r6; @@ -2875,10 +2875,10 @@ static void sub_80089AC(const UnkTextStruct2 *r4, UnkTextStruct2_sub *r5_Str) r6 = (void*) &gUnknown_3000E94; if (r4->unk4 == 1) { - s32 r12 = (r4->unk8.unk0.separate.unk0 + r5_Str->unk0.separate.unk0) * 8; - s32 r5 = (r4->unk8.unk0.separate.unk2 + r5_Str->unk0.separate.unk2) * 8; - s32 r7 = (r4->unk8.unk0.separate.unk0 + r5_Str->unk0.separate.unk0 + r4->unkC) * 8; - s32 r2 = (r4->unk8.unk0.separate.unk2 + r5_Str->unk0.separate.unk2 + r4->unkE) * 8; + s32 r12 = (r4->pos.x + r5_Str->x) * 8; + s32 r5 = (r4->pos.y + r5_Str->y) * 8; + s32 r7 = (r4->pos.x + r5_Str->x + r4->unkC) * 8; + s32 r2 = (r4->pos.y + r5_Str->y + r4->unkE) * 8; if (r4->unkE != 0) { if (r5 < 0) r5 = 0; @@ -2909,11 +2909,11 @@ static void sub_80089AC(const UnkTextStruct2 *r4, UnkTextStruct2_sub *r5_Str) } else if (r4->unk4 == 6) { s32 i; - s32 r9 = ((r4->unk8.unk0.separate.unk0 + r5_Str->unk0.separate.unk0) * 8) - 5; - s32 r5 = ((r4->unk8.unk0.separate.unk2 + r5_Str->unk0.separate.unk2) * 8) - 4; - s32 var_24 = ((r4->unk8.unk0.separate.unk0 + r5_Str->unk0.separate.unk0 + r4->unkC) * 8) + 5; - s32 r8 = ((r4->unk8.unk0.separate.unk2 + r5_Str->unk0.separate.unk2 + r4->unkE) * 8) + 5; - s32 r12 = ((r4->unk8.unk0.separate.unk0 + r5_Str->unk0.separate.unk0) * 8) + 3; + s32 r9 = ((r4->pos.x + r5_Str->x) * 8) - 5; + s32 r5 = ((r4->pos.y + r5_Str->y) * 8) - 4; + s32 var_24 = ((r4->pos.x + r5_Str->x + r4->unkC) * 8) + 5; + s32 r8 = ((r4->pos.y + r5_Str->y + r4->unkE) * 8) + 5; + s32 r12 = ((r4->pos.x + r5_Str->x) * 8) + 3; const UnkTextStruct2_sub2 *r2 = r4->unk14; s32 tmp = r2->f2 - 1; s32 r10 = (((tmp + r2->f0 + 2) * 8) + r12) - 4; @@ -2983,14 +2983,14 @@ static void sub_80089AC(const UnkTextStruct2 *r4, UnkTextStruct2_sub *r5_Str) } } else { - s32 r8 = ((r4->unk8.unk0.separate.unk0 + r5_Str->unk0.separate.unk0) * 8) - 5; - s32 r3 = ((r4->unk8.unk0.separate.unk2 + r5_Str->unk0.separate.unk2) * 8) - 5; - s32 r12 = ((r4->unk8.unk0.separate.unk0 + r5_Str->unk0.separate.unk0 + r4->unkC) * 8) + 5; - s32 r5 = ((r4->unk8.unk0.separate.unk2 + r5_Str->unk0.separate.unk2 + r4->unkE) * 8) + 5; + s32 r8 = ((r4->pos.x + r5_Str->x) * 8) - 5; + s32 r3 = ((r4->pos.y + r5_Str->y) * 8) - 5; + s32 r12 = ((r4->pos.x + r5_Str->x + r4->unkC) * 8) + 5; + s32 r5 = ((r4->pos.y + r5_Str->y + r4->unkE) * 8) + 5; if (r4->unkE != 0) { if (r4->unk4 == 0) { r3 += 8; - r5 = ((r4->unk8.unk0.separate.unk2 + r5_Str->unk0.separate.unk2 + r4->unkE) * 8) - 3; + r5 = ((r4->pos.y + r5_Str->y + r4->unkE) * 8) - 3; } if (r3 < 0) r3 = 0; diff --git a/src/thank_you_wonder_mail.c b/src/thank_you_wonder_mail.c index c944c2bf4..9870dc165 100644 --- a/src/thank_you_wonder_mail.c +++ b/src/thank_you_wonder_mail.c @@ -1284,7 +1284,7 @@ void UpdateThankYouMailText(void) ResetUnusedInputStruct(); xxx_call_save_unk_text_struct_800641C(NULL, TRUE, TRUE); { - UnkTextStruct2_sub local_x = {3, 2}; + DungeonPos local_x = {3, 2}; sub_801C8C4(0, 1, &local_x, 9); } break; diff --git a/src/trade_items_menu.c b/src/trade_items_menu.c index c35b4f2ac..2026e640e 100644 --- a/src/trade_items_menu.c +++ b/src/trade_items_menu.c @@ -499,7 +499,7 @@ void sub_8036B28(void) ResetUnusedInputStruct(); xxx_call_save_unk_text_struct_800641C(NULL, TRUE, TRUE); { - UnkTextStruct2_sub local_10 = {3, 2}; + DungeonPos local_10 = {3, 2}; sub_801C8C4(0,1,&local_10,9); } } diff --git a/src/wonder_mail_4.c b/src/wonder_mail_4.c index 19f5d7c8e..0a999c111 100644 --- a/src/wonder_mail_4.c +++ b/src/wonder_mail_4.c @@ -77,7 +77,7 @@ ALIGNED(4) const u8 SOSList[] = "SOS List"; s32 sub_8030A74(void); void sub_80308A0(void); -u32 sub_80306A8(u32 wonderMailType, u32 r1, UnkTextStruct2_sub *r2, u32 r3) +u32 sub_80306A8(u32 wonderMailType, u32 r1, DungeonPos *r2, u32 r3) { if (HasNoWonderMailType(wonderMailType)) return 0; @@ -93,7 +93,7 @@ u32 sub_80306A8(u32 wonderMailType, u32 r1, UnkTextStruct2_sub *r2, u32 r3) gUnknown_203B320->s28.s0.unk38->unk14 = &gUnknown_203B320->s28.unk9C; if (r2 != 0) - gUnknown_203B320->s28.s0.unk3C.a0[gUnknown_203B320->s28.s0.unk34].unk8 = *r2; + gUnknown_203B320->s28.s0.unk3C.a0[gUnknown_203B320->s28.s0.unk34].pos = *r2; sub_8012D08(gUnknown_203B320->s28.s0.unk38, r3); ResetUnusedInputStruct(); diff --git a/src/wonder_mail_802C10C.c b/src/wonder_mail_802C10C.c index 82b8f4a45..aea42f5c1 100644 --- a/src/wonder_mail_802C10C.c +++ b/src/wonder_mail_802C10C.c @@ -20,7 +20,7 @@ static s32 CountPelipperBoardSlots(void); static void sub_802C328(void); -bool8 sub_802C10C(s32 a0, UnkTextStruct2_sub *a1, s32 a2) +bool8 sub_802C10C(s32 a0, DungeonPos *a1, s32 a2) { if (HasNoPelipperBoardJobs()) return FALSE; @@ -36,7 +36,7 @@ bool8 sub_802C10C(s32 a0, UnkTextStruct2_sub *a1, s32 a2) gUnknown_203B2E0->unk8.s0.unk38->unk14 = &gUnknown_203B2E0->unk8.unk9C; if (a1 != NULL) - gUnknown_203B2E0->unk8.s0.unk3C.a0[gUnknown_203B2E0->unk8.s0.unk34].unk8 = *a1; + gUnknown_203B2E0->unk8.s0.unk3C.a0[gUnknown_203B2E0->unk8.s0.unk34].pos = *a1; sub_8012D34(gUnknown_203B2E0->unk8.s0.unk38, a2); ResetUnusedInputStruct(); diff --git a/src/wonder_mail_802C4C8.c b/src/wonder_mail_802C4C8.c index d6478dfbe..ef9653e16 100644 --- a/src/wonder_mail_802C4C8.c +++ b/src/wonder_mail_802C4C8.c @@ -23,7 +23,7 @@ static s32 CountAcceptedJobs(void); static void sub_802C6DC(void); -bool8 sub_802C4C8(s32 a0, UnkTextStruct2_sub *a1, u32 a2) +bool8 sub_802C4C8(s32 a0, DungeonPos *a1, u32 a2) { if (HasNoAcceptedJobs()) return FALSE; @@ -37,7 +37,7 @@ bool8 sub_802C4C8(s32 a0, UnkTextStruct2_sub *a1, u32 a2) gUnknown_203B2E8->unk8.s0.unk38->unk14 = &gUnknown_203B2E8->unk8.unk9C; if (a1 != NULL) - gUnknown_203B2E8->unk8.s0.unk3C.a0[gUnknown_203B2E8->unk8.s0.unk34].unk8 = *a1; + gUnknown_203B2E8->unk8.s0.unk3C.a0[gUnknown_203B2E8->unk8.s0.unk34].pos = *a1; sub_8012D34(gUnknown_203B2E8->unk8.s0.unk38, a2); ResetUnusedInputStruct(); From 99e965d538b51228b5617679737de059cdcfc988 Mon Sep 17 00:00:00 2001 From: DizzyEggg Date: Wed, 19 Feb 2025 10:51:51 +0100 Subject: [PATCH 09/40] fix nonmatching in sub_808BB3C --- src/dungeon_cutscenes.c | 20 +++++++++----------- 1 file changed, 9 insertions(+), 11 deletions(-) diff --git a/src/dungeon_cutscenes.c b/src/dungeon_cutscenes.c index 31d373ea0..87fa3e788 100644 --- a/src/dungeon_cutscenes.c +++ b/src/dungeon_cutscenes.c @@ -4203,20 +4203,18 @@ void JirachiWishGrantFlash(void) void sub_808BB3C(DungeonPos *pos1) { -#ifndef NONMATCHING - register s32 iVar1 asm("r0"); -#else - s32 iVar1; -#endif - DungeonPos newPos; + s32 x, y; + DungeonPos newPos; - iVar1 = pos1->x * 0x1800 + 0xc00; - newPos.x = iVar1 / 256; + x = (pos1->x * 3) << 11; + x += 0xC00; + newPos.x = x / 256; - iVar1 = pos1->y * 0x1800 + 0x1000; + y = (pos1->y * 3) << 11; + y += 0x1000; + newPos.y = y / 256; - newPos.y = iVar1 / 256; - sub_8085EC8(100,0,0,&newPos,0); + sub_8085EC8(100,0,0,&newPos,0); } void sub_808BBA8(Entity *jirachiEntity) From 5f956c0881816847611b13608e10f28ff0edd892 Mon Sep 17 00:00:00 2001 From: DizzyEggg Date: Wed, 19 Feb 2025 11:18:46 +0100 Subject: [PATCH 10/40] Match sub_806A3D4 --- src/code_8069E0C.c | 84 ++++++---------------------------------------- 1 file changed, 11 insertions(+), 73 deletions(-) diff --git a/src/code_8069E0C.c b/src/code_8069E0C.c index ee6411eee..930a6a081 100644 --- a/src/code_8069E0C.c +++ b/src/code_8069E0C.c @@ -356,94 +356,32 @@ void sub_806A390(Entity *pokemon) struct UnkTalkFileStruct { - const u8 *strings[10][4]; + const u8 *strings[4]; }; -// https://decomp.me/scratch/beUzw s16 memes again -#ifdef NONMATCHING -void sub_806A3D4(u8 *dst, s16 a1, s32 id, bool8 a3) +void sub_806A3D4(u8 *dst, s32 _a1, s32 id, bool32 _a3) { u8 fileName[12]; OpenedFile *file; - s32 strId; + s32 a1 = (s16) (_a1); + bool8 a3 = _a3; + s32 mod; + struct UnkTalkFileStruct *strPtr; if (a3) { - sprintf(fileName, gUnknown_8106EA8, a1 / 10); + sprintf(fileName, gUnknown_8106EA8, (s16) (a1 / 10)); } else { - sprintf(fileName, gUnknown_8106EB0, a1 / 10); + sprintf(fileName, gUnknown_8106EB0, (s16) (a1 / 10)); } file = OpenFileAndGetFileDataPtr(fileName, &gDungeonFileArchive); - strId = a1 % 10; - strcpy(dst, ((struct UnkTalkFileStruct *)(file->data))->strings[strId][id]); + mod = (s16)(a1 % 10); + strPtr = ((struct UnkTalkFileStruct *)(file->data)); + strcpy(dst, strPtr[mod].strings[id]); CloseFile(file); } -#else -NAKED void sub_806A3D4(u8 *dst, s16 a1, s32 id, bool8 a3) -{ - asm_unified("push {r4-r7,lr}\n" -" sub sp, 0xC\n" -" adds r7, r0, 0\n" -" adds r6, r2, 0\n" -" lsls r1, 16\n" -" asrs r5, r1, 16\n" -" lsls r3, 24\n" -" cmp r3, 0\n" -" beq _0806A404\n" -" ldr r4, _0806A400\n" -" adds r0, r5, 0\n" -" movs r1, 0xA\n" -" bl __divsi3\n" -" adds r2, r0, 0\n" -" lsls r2, 16\n" -" asrs r2, 16\n" -" mov r0, sp\n" -" adds r1, r4, 0\n" -" bl sprintf\n" -" b _0806A41C\n" -" .align 2, 0\n" -"_0806A400: .4byte gUnknown_8106EA8\n" -"_0806A404:\n" -" ldr r4, _0806A450\n" -" adds r0, r5, 0\n" -" movs r1, 0xA\n" -" bl __divsi3\n" -" adds r2, r0, 0\n" -" lsls r2, 16\n" -" asrs r2, 16\n" -" mov r0, sp\n" -" adds r1, r4, 0\n" -" bl sprintf\n" -"_0806A41C:\n" -" ldr r1, _0806A454\n" -" mov r0, sp\n" -" bl OpenFileAndGetFileDataPtr\n" -" adds r4, r0, 0\n" -" adds r0, r5, 0\n" -" movs r1, 0xA\n" -" bl __modsi3\n" -" lsls r0, 16\n" -" ldr r1, [r4, 0x4]\n" -" asrs r0, 12\n" -" adds r0, r1\n" -" lsls r1, r6, 2\n" -" adds r0, r1\n" -" ldr r1, [r0]\n" -" adds r0, r7, 0\n" -" bl strcpy\n" -" adds r0, r4, 0\n" -" bl CloseFile\n" -" add sp, 0xC\n" -" pop {r4-r7}\n" -" pop {r0}\n" -" bx r0\n" -" .align 2, 0\n" -"_0806A450: .4byte gUnknown_8106EB0\n" -"_0806A454: .4byte gDungeonFileArchive"); -} -#endif // NONMATCHING bool8 sub_806A458(Entity *pokemon) { From 8f621bbda1e50d41396c50d688891d049fd9bc61 Mon Sep 17 00:00:00 2001 From: DizzyEggg Date: Wed, 19 Feb 2025 12:10:45 +0100 Subject: [PATCH 11/40] (Fake)match sub_806BB6C --- src/code_8069E0C.c | 147 ++++----------------------------------------- 1 file changed, 13 insertions(+), 134 deletions(-) diff --git a/src/code_8069E0C.c b/src/code_8069E0C.c index ee6411eee..5fc85f24f 100644 --- a/src/code_8069E0C.c +++ b/src/code_8069E0C.c @@ -1486,31 +1486,35 @@ bool8 sub_806B8CC(s16 _species, s32 x, s32 y, PokemonStruct2 *monPtr, Entity **a return TRUE; } -// s16 species memes ughh https://decomp.me/scratch/jcfzb -#ifdef NONMATCHING -void sub_806BB6C(Entity *entity, s16 _species) +void sub_806BB6C(Entity *entity, s32 _species) { - s32 species = _species; + s32 species = (s16) _species; s16 speciesMatch; struct unkStruct_806B7F8 spStruct; EntityInfo *entInfo = GetEntInfo(entity); DeletePokemonDungeonSprite(entInfo->unk98); + // s16 memes... + spStruct.species = 0; speciesMatch = species; + ASM_MATCH_TRICK(species); spStruct.species = speciesMatch; + spStruct.level = 0; spStruct.unk2 = 0; spStruct.pos = entity->pos; spStruct.unk4 = 0; { s16 apparentSpeciesMatch; - s32 apparentSpecies = (GetMonsterApparentID(NULL, _species)); + s32 apparentSpecies = (s16) (GetMonsterApparentID(NULL, species)); + EntityInfo *entInfo; entity->unk22 = 0; + entInfo = GetEntInfo(entity); apparentSpeciesMatch = apparentSpecies; - GetEntInfo(entity)->apparentID = (apparentSpecies); - GetEntInfo(entity)->id = speciesMatch; - entity->axObj.spriteFile = GetSpriteData(apparentSpeciesMatch); + GetEntInfo(entity)->apparentID = (s16) (apparentSpeciesMatch); + GetEntInfo(entity)->id = speciesMatch; + entity->axObj.spriteFile = GetSpriteData(apparentSpecies); } entity->axObj.unk42_animId1 = 7; @@ -1518,7 +1522,7 @@ void sub_806BB6C(Entity *entity, s16 _species) entity->axObj.unk43_animId2 = 0xFF; entity->axObj.unk45_orientation = 1; entity->axObj.unk47 = 1; - entity->unk1C = 0; + entity->unk1C = IntToF248_2(0); if (entInfo->frozenClassStatus.status == STATUS_WRAP || entInfo->frozenClassStatus.status == STATUS_WRAPPED) { sub_8076CB4(entInfo->unk9C); @@ -1531,131 +1535,6 @@ void sub_806BB6C(Entity *entity, s16 _species) sub_80429E8(entity); EntityUpdateStatusSprites(entity); } -#else -NAKED void sub_806BB6C(Entity *entity, s16 _species) -{ - asm_unified("\n" -" push {r4-r7,lr}\n" -" mov r7, r10\n" -" mov r6, r9\n" -" mov r5, r8\n" -" push {r5-r7}\n" -" sub sp, 0x1C\n" -" adds r7, r0, 0\n" -" lsls r4, r1, 16\n" -" asrs r4, 16\n" -" ldr r0, [r7, 0x70]\n" -" mov r9, r0\n" -" mov r8, r9\n" -" adds r0, 0x98\n" -" ldr r0, [r0]\n" -" bl DeletePokemonDungeonSprite\n" -" add r0, sp, 0x8\n" -" movs r1, 0\n" -" mov r10, r1\n" -" movs r6, 0\n" -" lsls r5, r4, 16\n" -" lsrs r5, 16\n" -" strh r5, [r0]\n" -" strh r6, [r0, 0x8]\n" -" mov r2, r10\n" -" strb r2, [r0, 0x2]\n" -" ldr r0, [r7, 0x4]\n" -" str r0, [sp, 0x14]\n" -" str r6, [sp, 0xC]\n" -" movs r0, 0\n" -" adds r1, r4, 0\n" -" bl GetMonsterApparentID\n" -" lsls r0, 16\n" -" adds r1, r7, 0\n" -" adds r1, 0x22\n" -" mov r2, r10\n" -" strb r2, [r1]\n" -" ldr r1, [r7, 0x70]\n" -" asrs r2, r0, 16\n" -" lsrs r0, 16\n" -" strh r0, [r1, 0x4]\n" -" ldr r0, [r7, 0x70]\n" -" strh r5, [r0, 0x2]\n" -" adds r0, r2, 0\n" -" bl GetSpriteData\n" -" str r0, [r7, 0x64]\n" -" adds r1, r7, 0\n" -" adds r1, 0x6A\n" -" movs r0, 0x7\n" -" strb r0, [r1]\n" -" adds r0, r7, 0\n" -" adds r0, 0x6C\n" -" mov r5, r10\n" -" strb r5, [r0]\n" -" adds r1, 0x1\n" -" movs r0, 0xFF\n" -" strb r0, [r1]\n" -" adds r1, 0x2\n" -" movs r0, 0x1\n" -" strb r0, [r1]\n" -" adds r1, 0x2\n" -" strb r0, [r1]\n" -" str r6, [r7, 0x1C]\n" -" mov r0, r9\n" -" adds r0, 0xB0\n" -" ldrb r0, [r0]\n" -" subs r0, 0x3\n" -" lsls r0, 24\n" -" lsrs r0, 24\n" -" cmp r0, 0x1\n" -" bhi _0806BC08\n" -" mov r0, r9\n" -" adds r0, 0x9C\n" -" ldr r0, [r0]\n" -" bl sub_8076CB4\n" -"_0806BC08:\n" -" movs r1, 0\n" -" mov r6, r9\n" -" ldrb r0, [r6, 0x6]\n" -" cmp r0, 0\n" -" bne _0806BC14\n" -" movs r1, 0x1\n" -"_0806BC14:\n" -" adds r0, r1, 0\n" -" adds r1, r7, 0\n" -" add r2, sp, 0x8\n" -" movs r3, 0\n" -" bl sub_806BC68\n" -" movs r0, 0x8C\n" -" lsls r0, 1\n" -" add r0, r8\n" -" mov r1, r8\n" -" adds r1, 0x10\n" -" mov r2, r8\n" -" adds r2, 0x14\n" -" mov r3, r8\n" -" adds r3, 0x16\n" -" mov r5, r8\n" -" movs r6, 0x2\n" -" ldrsh r4, [r5, r6]\n" -" str r4, [sp]\n" -" ldrb r4, [r5, 0x9]\n" -" str r4, [sp, 0x4]\n" -" bl sub_806AED8\n" -" ldrh r0, [r5, 0x10]\n" -" strh r0, [r5, 0xE]\n" -" mov r0, r10\n" -" strb r0, [r5, 0x8]\n" -" adds r0, r7, 0\n" -" bl sub_80429E8\n" -" adds r0, r7, 0\n" -" bl EntityUpdateStatusSprites\n" -" add sp, 0x1C\n" -" pop {r3-r5}\n" -" mov r8, r3\n" -" mov r9, r4\n" -" mov r10, r5\n" -" pop {r4-r7}\n" -" pop {r0}\n" -" bx r0"); -} -#endif // NONMATCHING void sub_806BC68(bool8 a0, Entity *entity, struct unkStruct_806B7F8 *structPtr, DungeonPos *pos) { From 719776628a20e34ba9b88024162f51a52e8b813a Mon Sep 17 00:00:00 2001 From: DizzyEggg Date: Wed, 19 Feb 2025 12:29:25 +0100 Subject: [PATCH 12/40] Fix nonmatching in sub_8044D90 --- src/code_8044CC8.c | 15 ++++++--------- 1 file changed, 6 insertions(+), 9 deletions(-) diff --git a/src/code_8044CC8.c b/src/code_8044CC8.c index b9a560d87..1de1a7fde 100644 --- a/src/code_8044CC8.c +++ b/src/code_8044CC8.c @@ -36,7 +36,7 @@ extern u8 GetFloorType(void); void sub_80460F8(DungeonPos *, Item *, u32); bool8 sub_80461C8(DungeonPos *, u32); -Item * sub_8044CC8(Entity *param_1, ActionParameter *param_2) +Item * sub_8044CC8(Entity *param_1, ActionParameter *param_2, UNUSED s32 a3) { const Tile *tile; Item *item; @@ -54,7 +54,8 @@ Item * sub_8044CC8(Entity *param_1, ActionParameter *param_2) info = GetEntInfo(param_1); } else { - if (3 < (u8)(param_2->actionUseIndex + 0x70)) { + u8 id = param_2->actionUseIndex - 0x90; + if (3 < id) { return NULL; } info = GetEntInfo(gDungeon->teamPokemon[param_2->actionUseIndex - 0x90]); @@ -86,14 +87,10 @@ bool8 sub_8044D40(ActionContainer *param_1,s32 index) return TRUE; } -Item *sub_8044D90(Entity *entity, s32 index, s32 unused) { +Item *sub_8044D90(Entity *entity, s32 index, s32 unused) +{ EntityInfo *info = GetEntInfo(entity); -#ifdef NONMATCHING - ActionParameter *puVar1 = &info->action.actionParameters[index]; -#else - register ActionParameter *puVar1 asm("r3") = &info->action.actionParameters[index]; -#endif - return sub_8044CC8(entity, puVar1); + return sub_8044CC8(entity, &info->action.actionParameters[index], unused); } Entity *sub_8044DA4(Entity *entity, s32 index) From 68cf3b53b07ed3a865f62fd921b3a54a3a6db850 Mon Sep 17 00:00:00 2001 From: DizzyEggg Date: Wed, 19 Feb 2025 23:01:30 +0100 Subject: [PATCH 13/40] Match functions in other_menus2.c --- src/other_menus2.c | 328 +++++++++++++++++++++------------------------ 1 file changed, 153 insertions(+), 175 deletions(-) diff --git a/src/other_menus2.c b/src/other_menus2.c index fcbaffe3e..c8e9717bd 100644 --- a/src/other_menus2.c +++ b/src/other_menus2.c @@ -22,6 +22,7 @@ extern s32 gCommsTimeout; // Counts to 100 and then errors if other player hasn' extern s32 gUnknown_202EC40[2]; extern s32 gUnknown_202EC48; +extern s32 gUnknown_202EC38; extern struct UnkStruct_203B184 *gUnknown_203B184; @@ -34,10 +35,12 @@ extern void sub_800D510(void); extern void sub_800D520(void); extern void sub_800D570(void); extern u8 sub_800D588(void); -extern void sub_800D59C(s32 *, u32); +extern void sub_800D59C(void *, u32); extern u8 sub_800D600(void); extern void sub_800D670(s32 idx, void *dst, s32 size); extern void sub_800D68C(u32); +void sub_800D414(void); +s32 sub_8012AE8(void); // Inline needed for 8-bit return cast static inline bool8 IsNotChunsoft(unkStruct_800D670 *unk) @@ -61,7 +64,7 @@ bool8 sub_8037A48(void) gUnknown_202EC40[0] = stack.unk10; gUnknown_202EC40[1] = stack_1.unk10; - + if (IsNotChunsoft(&stack) || IsNotChunsoft(&stack_1)) return FALSE; @@ -92,113 +95,85 @@ bool8 sub_8037A48(void) return found; } -// https://decomp.me/scratch/IJ9zV (inverted loop, try to match without gotos...) -NAKED s32 sub_8037B28(s32 mode) +static inline void InitUnk(unkStruct_800D670 *dst, const u8 *chunsoft, s32 mode) { - asm_unified("push {r4,r5,lr}\n" -" sub sp, 0x14\n" -" adds r4, r0, 0\n" -" movs r5, 0\n" -" bl sub_800D414\n" -" ldr r0, _08037B58\n" -" str r5, [r0]\n" -" ldr r5, _08037B5C\n" -" mov r0, sp\n" -" movs r1, 0\n" -" movs r2, 0x14\n" -" bl MemoryFill8\n" -" mov r0, sp\n" -" adds r1, r5, 0\n" -" bl strcpy\n" -" str r4, [sp, 0x10]\n" -" mov r0, sp\n" -" movs r1, 0x14\n" -" bl sub_800D59C\n" -" b _08037B7A\n" -" .align 2, 0\n" -"_08037B58: .4byte gUnknown_202EC38\n" -"_08037B5C: .4byte sChunsoft\n" -"_08037B60:\n" -" cmp r5, 0x3\n" -" beq _08037BCC\n" -" cmp r5, 0x4\n" -" beq _08037BD8\n" -" cmp r5, 0x5\n" -" beq _08037BF0\n" -" ldr r2, _08037BC0\n" -" ldr r1, [r2]\n" -" ldr r0, _08037BC4\n" -" cmp r1, r0\n" -" bgt _08037BE4\n" -" adds r0, r1, 0x1\n" -" str r0, [r2]\n" -"_08037B7A:\n" -" movs r4, 0\n" -"_08037B7C:\n" -" bl sub_80373C4\n" -" bl sub_8012AE8\n" -" cmp r0, 0x3\n" -" bgt _08037B8C\n" -" cmp r0, 0x2\n" -" bge _08037BF0\n" -"_08037B8C:\n" -" adds r4, 0x1\n" -" cmp r4, 0\n" -" ble _08037B7C\n" -" bl sub_800D33C\n" -" adds r5, r0, 0\n" -" bl sub_800D570\n" -" cmp r5, 0x2\n" -" bne _08037B60\n" -" bl sub_800D600\n" -" lsls r0, 24\n" -" cmp r0, 0\n" -" beq _08037BFC\n" -" bl sub_8037A48\n" -" lsls r0, 24\n" -" cmp r0, 0\n" -" bne _08037BC8\n" -" movs r4, 0x4\n" -" bl sub_800D520\n" -" bl sub_800D510\n" -" b _08037C06\n" -" .align 2, 0\n" -"_08037BC0: .4byte gUnknown_202EC38\n" -"_08037BC4: .4byte 0x00000707\n" -"_08037BC8:\n" -" movs r4, 0\n" -" b _08037C06\n" -"_08037BCC:\n" -" bl sub_800D520\n" -" bl sub_800D510\n" -" movs r0, 0x2\n" -" b _08037C08\n" -"_08037BD8:\n" -" bl sub_800D520\n" -" bl sub_800D510\n" -" movs r0, 0x3\n" -" b _08037C08\n" -"_08037BE4:\n" -" bl sub_800D520\n" -" bl sub_800D510\n" -" movs r0, 0xF\n" -" b _08037C08\n" -"_08037BF0:\n" -" bl sub_800D520\n" -" bl sub_800D510\n" -" movs r0, 0x1\n" -" b _08037C08\n" -"_08037BFC:\n" -" movs r4, 0x5\n" -" bl sub_800D520\n" -" bl sub_800D510\n" -"_08037C06:\n" -" adds r0, r4, 0\n" -"_08037C08:\n" -" add sp, 0x14\n" -" pop {r4,r5}\n" -" pop {r1}\n" -" bx r1"); + MemoryFill8(dst, 0, sizeof(unkStruct_800D670)); + strcpy(dst->buffer, chunsoft); + dst->unk10 = mode; +} + +s32 sub_8037B28(s32 mode) +{ + s32 i; + s32 ret; + unkStruct_800D670 stack; + s32 r5 = 0; + + sub_800D414(); + gUnknown_202EC38 = 0; + InitUnk(&stack, sChunsoft, mode); + sub_800D59C(&stack, sizeof(unkStruct_800D670)); + + while (TRUE) { + for (i = 0; i < 1; i++) { + sub_80373C4(); + switch (sub_8012AE8()) { + case 2: + case 3: + sub_800D520(); + sub_800D510(); + return 1; + } + } + + r5 = sub_800D33C(); + sub_800D570(); + + if (r5 == 2) { + break; + } + else if (r5 == 3) { + sub_800D520(); + sub_800D510(); + return 2; + } + else if (r5 == 4) { + sub_800D520(); + sub_800D510(); + return 3; + } + else if (r5 == 5) { + sub_800D520(); + sub_800D510(); + return 1; + } + + if (gUnknown_202EC38 < 1800) { + gUnknown_202EC38++; + } + else { + sub_800D520(); + sub_800D510(); + return COMMS_NOT_READY; + } + } + + if (sub_800D600() != 0) { + if (sub_8037A48() == 0) { + ret = 4; + sub_800D520(); + sub_800D510(); + } + else { + ret = 0; + } + } + else { + ret = 5; + sub_800D520(); + sub_800D510(); + } + return ret; } s32 sub_8037C10(bool8 a0) @@ -278,48 +253,50 @@ static void sub_8037CC4(s32 mode, void *param_2, void *param_3) } } -// TODO: same as sub_80381F4. Try to fix this fakematch https://decomp.me/scratch/vkGqo -s32 sub_8037D64(u32 mode, void *param_2, void *param_3) +s32 sub_8037D64(u32 mode, void * param_2, void *param_3) { - u32 iVar2; - s32 linkStatus; + s32 iVar2 = 0; + s32 linkStatus = 0; - iVar2 = 0; - linkStatus = COMMS_GOOD; gUnknown_202EC48 = 0; sub_800D494(); sub_8037C44(mode, param_2); - goto _first; -_start: - while (iVar2 - 3 > 2) { - if (99 < gUnknown_202EC48) { - sub_800D520(); - sub_800D510(); - return COMMS_NOT_READY; - } - gUnknown_202EC48++; - _first: + + while (1) { sub_80373C4(); iVar2 = sub_800D33C(); sub_800D570(); + if (iVar2 == 2) { - if (sub_800D600() == 0) { + break; + } + + if (iVar2 == 3 || iVar2 == 4 || iVar2 == 5) { + sub_800D520(); + sub_800D510(); + return 1; + } + else { + + if (gUnknown_202EC48 < 100) + gUnknown_202EC48++; + else { sub_800D520(); sub_800D510(); - linkStatus = 5; + return COMMS_NOT_READY; } - else { - linkStatus = COMMS_GOOD; - } - goto _end; } - else - goto _start; } - sub_800D520(); - sub_800D510(); - return 1; -_end: + + if (sub_800D600() != 0) { + linkStatus = 0; + } + else { + sub_800D520(); + sub_800D510(); + linkStatus = 5; + } + sub_8037CC4(mode, param_2, param_3); return linkStatus; } @@ -382,7 +359,7 @@ static void sub_8037EBC(WonderMailStruct_203B2C0_sub *param_1, WonderMailStruct { unkStruct_203B480 *mail; WonderMailStruct_203B2C0_sub *puVar2; - + if(sub_800D588() == 0) { puVar2 = param_1; @@ -592,55 +569,56 @@ UNUSED static s32 sub_80381E8(u32 mode, void * param_2, void * param_3) return sub_803815C(mode, param_2, param_3); } -// TODO: clean this up... fix fakematch without gotos. see above funcs https://decomp.me/scratch/JGv2m s32 sub_80381F4(u32 mode, void *param_2, void *param_3) { - u32 iVar2; - s32 linkStatus; - - iVar2 = 0; - linkStatus = sub_803815C(mode, param_2, param_3); + s32 iVar2 = 0; + s32 linkStatus = sub_803815C(mode, param_2, param_3); gCommsTimeout = 0; sub_800D494(); sub_800D59C(&linkStatus, 4); - goto _first; -_start: - while (iVar2 - 3 > 2) { - if (99 < gCommsTimeout) { - sub_800D520(); - sub_800D510(); - return COMMS_NOT_READY; - } - gCommsTimeout++; - _first: + + while (1) { sub_80373C4(); iVar2 = sub_800D33C(); sub_800D570(); if (iVar2 == 2) { - if (sub_800D600() != 0) { - linkStatus = sub_8037DF0(); - } - else { - sub_800D520(); - sub_800D510(); - linkStatus = 5; - } - if (linkStatus != COMMS_GOOD) { - sub_800D520(); - sub_800D510(); - } - else { - sub_8037F9C(mode, param_2, param_3); - } - goto _end; + break; + } + + if (iVar2 == 3 || iVar2 == 4 || iVar2 == 5) { + sub_800D520(); + sub_800D510(); + return 1; + } + + if (gCommsTimeout < 100) { + gCommsTimeout++; } else - goto _start; + { + sub_800D520(); + sub_800D510(); + return COMMS_NOT_READY; + } } - sub_800D520(); - sub_800D510(); - return 1; -_end: + + if (sub_800D600() != 0) { + linkStatus = sub_8037DF0(); + } + else { + sub_800D520(); + sub_800D510(); + linkStatus = 5; + } + + if (linkStatus == COMMS_GOOD) { + sub_8037F9C(mode, param_2, param_3); + } + else { + sub_800D520(); + sub_800D510(); + } + sub_800D520(); return linkStatus; -} \ No newline at end of file +} From f9242c4ef657bf86da43fc2a18f5102ecdeb4389 Mon Sep 17 00:00:00 2001 From: DizzyEggg Date: Thu, 20 Feb 2025 11:16:26 +0100 Subject: [PATCH 14/40] Struggle --- src/code_8066D04.c | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/code_8066D04.c b/src/code_8066D04.c index 90b04ae7d..5a6c20b04 100644 --- a/src/code_8066D04.c +++ b/src/code_8066D04.c @@ -858,13 +858,13 @@ void sub_8067904(Entity *entity, u16 moveId) } else { s32 i; - bool32 isStrugle; + bool32 isStruggle; if (moveId == MOVE_STRUGGLE) { - isStrugle = TRUE; + isStruggle = TRUE; } else { - isStrugle = FALSE; + isStruggle = FALSE; } i = 0; @@ -873,7 +873,7 @@ void sub_8067904(Entity *entity, u16 moveId) move.moveFlags |= 8; move.moveFlags |= 4; move.PP = 10; - TryUseChosenMove(entity, isStrugle, 0, 0, FALSE, &move); + TryUseChosenMove(entity, isStruggle, 0, 0, FALSE, &move); if (!EntityIsValid(entity) || info->unk159 != 0) { break; From 500b486b33f897e767ae80195848a4d4ae37687d Mon Sep 17 00:00:00 2001 From: DizzyEggg Date: Thu, 20 Feb 2025 12:44:18 +0100 Subject: [PATCH 15/40] Rename xxx_dungeon_8042F6C to RunDungeon --- include/structs/str_dungeon_8042F6C.h | 4 ++-- src/code.c | 10 +++++----- src/code_8042B34.c | 9 +++++---- 3 files changed, 12 insertions(+), 11 deletions(-) diff --git a/include/structs/str_dungeon_8042F6C.h b/include/structs/str_dungeon_8042F6C.h index 536d093e4..394c17a1e 100644 --- a/include/structs/str_dungeon_8042F6C.h +++ b/include/structs/str_dungeon_8042F6C.h @@ -6,7 +6,7 @@ #include "structs/str_pokemon.h" #include "structs/str_wonder_mail.h" -struct UnkStruct_xxx_dungeon_8042F6C +struct UnkStruct_RunDungeon { u8 unk0; DungeonLocation unk4; @@ -30,7 +30,7 @@ struct UnkStruct_xxx_dungeon_8042F6C WonderMailSub unk84; }; -void xxx_dungeon_8042F6C(struct UnkStruct_xxx_dungeon_8042F6C *r8); +void RunDungeon(struct UnkStruct_RunDungeon *r8); #endif // GUARD_STR_DUNGEON_8042F6C_H diff --git a/src/code.c b/src/code.c index 4ec706dd0..fbd216401 100644 --- a/src/code.c +++ b/src/code.c @@ -31,7 +31,7 @@ extern void sub_808ED00(); extern void SetDungeonLocationInfo(DungeonLocation *dl); extern void sub_808CE74(s16, bool32, u8*); -void xxx_dungeon_8001340(struct UnkStruct_xxx_dungeon_8042F6C *r0); +void xxx_dungeon_8001340(struct UnkStruct_RunDungeon *r0); void sub_80011E8(u8 *param_1); void sub_809542C(WonderMailSub *param_1); @@ -53,7 +53,7 @@ EWRAM_INIT struct PersonalityRelated gPersonalityRelated_203B040 = { .PartnerNick = {""}, }; -void SaveLoadRelated_8000EDC(struct UnkStruct_xxx_dungeon_8042F6C *param_1) +void SaveLoadRelated_8000EDC(struct UnkStruct_RunDungeon *param_1) { u8 quickSaveValid; s32 quickSaveStatus; @@ -267,7 +267,7 @@ void NDS_LoadOverlay_GroundMain() } -void nullsub_2(struct UnkStruct_xxx_dungeon_8042F6C *r0) +void nullsub_2(struct UnkStruct_RunDungeon *r0) { } @@ -277,10 +277,10 @@ u32 xxx_script_related_8001334(u32 r0) return xxx_script_related_8098468(r0); } -void xxx_dungeon_8001340(struct UnkStruct_xxx_dungeon_8042F6C *r0) +void xxx_dungeon_8001340(struct UnkStruct_RunDungeon *r0) { nullsub_2(r0); - xxx_dungeon_8042F6C(r0); + RunDungeon(r0); NDS_LoadOverlay_GroundMain(); } diff --git a/src/code_8042B34.c b/src/code_8042B34.c index 5fb1dcf9e..fcee722dd 100644 --- a/src/code_8042B34.c +++ b/src/code_8042B34.c @@ -345,7 +345,7 @@ extern s32 gDungeonBrightness; extern Entity *gLeaderPointer; void EnforceMaxItemsAndMoney(void); -void sub_8043FD0(void); +static void sub_8043FD0(void); void sub_806B404(void); u8 GetFloorType(void); @@ -362,7 +362,8 @@ extern const s16 gUnknown_80F6850[4]; extern OpenedFile *gDungeonNameBannerPalette; -void xxx_dungeon_8042F6C(struct UnkStruct_xxx_dungeon_8042F6C *r8) +// This functions is the main 'loop' when the player is in a Dungeon. It runs from the moment the player enters a dungeon, until they leave(by completing or by fainting). +void RunDungeon(struct UnkStruct_RunDungeon *r8) { bool8 check; Entity *leader; @@ -1074,10 +1075,10 @@ bool8 sub_8043ED0(bool8 a0) return ret; } -void sub_8043FD0(void) +static void sub_8043FD0(void) { s32 level; - for (level = 2; level < 6; level++) { + for (level = 2; level <= 5; level++) { s32 i, monId, movesCount; for (monId = 0; monId < NUM_MONSTERS; monId++) { PokemonStruct1 *monStruct = &gRecruitedPokemonRef->pokemon[monId]; From d3e14d476785e70ba5034893026ac881518c63a3 Mon Sep 17 00:00:00 2001 From: DizzyEggg Date: Thu, 20 Feb 2025 15:45:11 +0100 Subject: [PATCH 16/40] sub_8010F28 --- asm/code_8010F28.s | 187 ----------------------------------------- include/code_8004AA0.h | 33 +++++++- include/sprite.h | 3 +- ld_script.txt | 1 + src/code_800558C.c | 22 ----- src/code_8010F28.c | 49 +++++++++++ src/code_80118A4.c | 4 +- src/code_8069E0C.c | 23 +++-- src/sprite.c | 73 ++++++++++------ 9 files changed, 142 insertions(+), 253 deletions(-) create mode 100644 src/code_8010F28.c diff --git a/asm/code_8010F28.s b/asm/code_8010F28.s index 77e7b5004..9f9cb3c05 100644 --- a/asm/code_8010F28.s +++ b/asm/code_8010F28.s @@ -5,193 +5,6 @@ .text - thumb_func_start sub_8010F28 -sub_8010F28: - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - sub sp, 0x18 - add r0, sp, 0x8 - bl sub_8004E8C - add r1, sp, 0x8 - ldr r0, _08011080 - strh r0, [r1, 0x4] - movs r0, 0x80 - lsls r0, 4 - strh r0, [r1, 0xA] - ldr r6, _08011084 - ldr r0, [r6] - ldr r2, _08011088 - adds r1, r0, r2 - ldr r1, [r1] - mov r8, r1 - ldr r4, _0801108C - adds r0, r4 - bl RunAxAnimationFrame - ldr r3, [r6] - adds r4, r3, r4 - ldr r7, _08011090 - adds r0, r3, r7 - movs r2, 0 - ldrsh r1, [r0, r2] - mov r7, r8 - lsls r5, r7, 16 - asrs r5, 16 - subs r1, r5 - ldr r2, _08011094 - adds r0, r3, r2 - movs r7, 0 - ldrsh r2, [r0, r7] - mov r7, r8 - asrs r0, r7, 16 - subs r2, r0 - ldr r0, _08011098 - adds r3, r0 - ldr r0, [r3] - str r0, [sp] - add r3, sp, 0x8 - str r3, [sp, 0x4] - adds r0, r4, 0 - movs r3, 0x3 - bl DoAxFrame_800558C - movs r7, 0 - mov r10, r6 - ldr r6, _0801109C - mov r9, r5 -_08010F98: - mov r4, r10 - ldr r0, [r4] - adds r4, r0, r6 - ldr r1, _080110A0 - adds r0, r1 - lsls r1, r7, 5 - ldr r0, [r0] - adds r5, r0, r1 - ldrb r0, [r4] - cmp r0, 0 - beq _08010FD8 - adds r4, 0x14 - adds r0, r4, 0 - bl RunAxAnimationFrame - movs r2, 0x4 - ldrsh r1, [r5, r2] - mov r3, r9 - subs r1, r3 - movs r0, 0x6 - ldrsh r2, [r5, r0] - mov r3, r8 - asrs r0, r3, 16 - subs r2, r0 - movs r0, 0 - str r0, [sp] - add r0, sp, 0x8 - str r0, [sp, 0x4] - adds r0, r4, 0 - movs r3, 0x1 - bl DoAxFrame_800558C -_08010FD8: - adds r6, 0x50 - adds r7, 0x1 - cmp r7, 0x1F - ble _08010F98 - movs r5, 0 - ldr r1, _08011084 - mov r9, r1 - ldr r6, _080110A4 - movs r2, 0 - str r2, [sp, 0x14] -_08010FEC: - mov r3, r9 - ldr r1, [r3] - ldr r4, [sp, 0x14] - adds r0, r4, r1 - ldr r7, _080110A4 - adds r0, r7 - ldrh r0, [r0] - lsrs r0, 15 - cmp r0, 0 - beq _08011062 - adds r0, r1, r6 - bl RunAxAnimationFrame - ldr r0, _080110A8 - ldrh r0, [r0] - movs r2, 0x80 - lsls r2, 1 - adds r1, r2, 0 - ands r0, r1 - cmp r0, 0 - beq _0801101E - movs r0, 0x1 - ands r0, r5 - cmp r0, 0 - beq _08011062 -_0801101E: - mov r3, r9 - ldr r4, [r3] - adds r0, r4, r6 - ldr r1, _080110AC - lsls r3, r5, 2 - adds r3, r1 - movs r7, 0 - ldrsh r1, [r3, r7] - ldr r7, _08011090 - adds r2, r4, r7 - movs r7, 0 - ldrsh r2, [r2, r7] - adds r1, r2 - mov r7, r8 - lsls r2, r7, 16 - asrs r2, 16 - subs r1, r2 - movs r7, 0x2 - ldrsh r2, [r3, r7] - ldr r3, _08011094 - adds r3, r4 - movs r4, 0 - ldrsh r3, [r3, r4] - adds r2, r3 - mov r7, r8 - asrs r3, r7, 16 - subs r2, r3 - movs r3, 0 - str r3, [sp] - add r3, sp, 0x8 - str r3, [sp, 0x4] - movs r3, 0x2 - bl DoAxFrame_800558C -_08011062: - adds r6, 0x3C - ldr r4, [sp, 0x14] - adds r4, 0x3C - str r4, [sp, 0x14] - adds r5, 0x1 - cmp r5, 0x7 - ble _08010FEC - add sp, 0x18 - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_08011080: .4byte 0x0000f3ff -_08011084: .4byte gUnknown_203B0E4 -_08011088: .4byte 0x00004dd4 -_0801108C: .4byte 0x00004c10 -_08011090: .4byte 0x00004dd8 -_08011094: .4byte 0x00004dda -_08011098: .4byte 0x00004dd0 -_0801109C: .4byte 0x00004018 -_080110A0: .4byte 0x00004014 -_080110A4: .4byte 0x00004a30 -_080110A8: .4byte gRealInputs -_080110AC: .4byte gUnknown_80D40C4 - thumb_func_end sub_8010F28 - thumb_func_start sub_80110B0 sub_80110B0: push {r4-r7,lr} diff --git a/include/code_8004AA0.h b/include/code_8004AA0.h index 8c6d517b7..a232a085b 100644 --- a/include/code_8004AA0.h +++ b/include/code_8004AA0.h @@ -3,6 +3,8 @@ #include "file_system.h" #include "structs/rgb.h" +#include "structs/axdata.h" +#include "structs/str_position.h" // size: 0x18 typedef struct unkStruct_202EE8C @@ -18,16 +20,41 @@ typedef struct unkStruct_202EE8C extern unkStruct_202EE8C gUnknown_202EE8C[32]; +struct UnkStruct_4014Ptr +{ + u8 fill0[4]; + DungeonPos unk4; + u8 fill8[0x20-8]; +}; + +struct UnkStruct_4014Ptr2 +{ + struct UnkStruct_4014Ptr array[0]; +}; + +struct UnkStruct_4018 +{ + u8 unk4018; + u8 padding[0x14 - 0x2]; + axdata unk14; +}; + // size: 0x4DD8 struct UnkBgStruct { OpenedFile *unk0[5]; - u8 padding[0x4C4C - 0x14]; + u8 padding[0x4014 - 0x14]; + struct UnkStruct_4014Ptr2 *unk4014; + struct UnkStruct_4018 unk4018[32]; + u8 pad4A18[0x4A30-0x4A18]; + axdata unk4A30[8]; + axdata unk4C10; unkStruct_202EE8C unk4C4C[16]; u32 unk4DCC; u32 unk4DD0; - /* 0x4DD4 */ s16 xoffset; - /* 0x4DD6 */ s16 yoffset; + DungeonPos unk4DD4; + s16 unk4DD8; + s16 unk4DDA; }; extern struct UnkBgStruct *gUnknown_203B0E4; diff --git a/include/sprite.h b/include/sprite.h index db7c37490..674802db1 100644 --- a/include/sprite.h +++ b/include/sprite.h @@ -41,6 +41,7 @@ void sub_800533C(ax_pose **, UnkSpriteMem **, axdata1 *, unkStruct_2039DB0 *, bo void AxResInitFile(axdata *, OpenedFile *, u32, u32, u32, u32, bool8); void AxResInit(axdata *, axmain *, u32, u32, u32, u32, bool8); void AxResInitUnorientedFile(axdata *, OpenedFile *, u32, u32, u32, bool8); -void RunAxAnimationFrame(struct axObject *); +void RunAxAnimationFrame(struct axdata *); +void DoAxFrame_800558C(struct axdata *a0, s32 spriteX, s32 spriteY, u32 a3, u32 paletteNum, unkStruct_2039DB0 *spriteMasks); #endif // GUARD_SPRITE_H diff --git a/ld_script.txt b/ld_script.txt index 0f655209b..98ce03ae5 100755 --- a/ld_script.txt +++ b/ld_script.txt @@ -91,6 +91,7 @@ SECTIONS { src/code_800F958.o(.text); asm/code_800F990.o(.text); src/code_8010EF0.o(.text); + src/code_8010F28.o(.text); asm/code_8010F28.o(.text); src/code_80118A4.o(.text); src/debug.o(.text); diff --git a/src/code_800558C.c b/src/code_800558C.c index c7935f7cf..f75046090 100644 --- a/src/code_800558C.c +++ b/src/code_800558C.c @@ -31,28 +31,6 @@ extern const s16 gUnknown_80B83EA[16 * 10]; static void sub_800561C(struct axMapSprite *, s32, s32, const RGB *); const RGB *sub_8005674(struct axMapSprite *, s32); -void DoAxFrame_800558C(struct axObject *a0, s32 spriteX, s32 spriteY, u32 a3, u32 paletteNum, unkStruct_2039DB0 *spriteMasks) -{ - if (!(a0->axdata.flags >> 15)) - return; - - if (a0->axdata.sub1.poseId < 0) - RunAxAnimationFrame(a0); - - if (!(a0->axdata.flags >> 15)) - return; - - a0->axdata.sub1.pos.x = a0->axdata.sub1.offset.x + spriteX; - a0->axdata.sub1.pos.y = a0->axdata.sub1.offset.y + spriteY; - a0->axdata.sub1.paletteNum = paletteNum; - a0->axdata.sub1.unk16 = a3; - sub_800533C(a0->axdata.poseData, a0->axdata.spriteData, &a0->axdata.sub1, spriteMasks, !!(a0->axdata.sub1.lastPoseId ^ a0->axdata.sub1.poseId)); - a0->axdata.sub1.lastPoseId = a0->axdata.sub1.poseId; - - if (a0->axdata.flags & 0x800) - a0->axdata.flags &= 0xF7FF; -} - void sub_8005610(OpenedFile *a0, s32 vramIdx, s32 brightness, const RGB *ramp) { sub_800561C((struct axMapSprite *)a0->data, vramIdx, brightness, ramp); diff --git a/src/code_8010F28.c b/src/code_8010F28.c new file mode 100644 index 000000000..d5001c99b --- /dev/null +++ b/src/code_8010F28.c @@ -0,0 +1,49 @@ +#include "global.h" +#include "sprite.h" +#include "code_8004AA0.h" +#include "input.h" + +static inline bool8 CheckAxFlag8000(axdata *ptr) +{ + return (ptr->flags & 0x8000) != 0; +} + +extern const DungeonPos gUnknown_80D40C4[]; + +void sub_8010F28(void) +{ + s32 i; + unkStruct_2039DB0 var_30; + DungeonPos pos; + + sub_8004E8C(&var_30); + var_30.unk4 = 0xF3FF; + var_30.unkA = 0x800; + pos = gUnknown_203B0E4->unk4DD4; + RunAxAnimationFrame(&gUnknown_203B0E4->unk4C10); + DoAxFrame_800558C(&gUnknown_203B0E4->unk4C10, gUnknown_203B0E4->unk4DD8 - pos.x, gUnknown_203B0E4->unk4DDA - pos.y, 3, gUnknown_203B0E4->unk4DD0, &var_30); + + for (i = 0; i < 32; i++) { + struct UnkStruct_4018 *r0 = &gUnknown_203B0E4->unk4018[i]; + struct UnkStruct_4014Ptr *r5 = &gUnknown_203B0E4->unk4014->array[i]; + if (r0->unk4018 != 0) { + RunAxAnimationFrame(&r0->unk14); + DoAxFrame_800558C(&r0->unk14, r5->unk4.x - pos.x, r5->unk4.y- pos.y, 1, 0, &var_30); + } + } + +{ + s32 i; + for (i = 0; i < 8; i++) { + if (CheckAxFlag8000(&gUnknown_203B0E4->unk4A30[i])) { + RunAxAnimationFrame(&gUnknown_203B0E4->unk4A30[i]); + if (!(gRealInputs.held & R_BUTTON) || (i % 2) != 0) { + DoAxFrame_800558C(&gUnknown_203B0E4->unk4A30[i], + (gUnknown_80D40C4[i].x + gUnknown_203B0E4->unk4DD8) - pos.x, + (gUnknown_80D40C4[i].y + gUnknown_203B0E4->unk4DDA) - pos.y, + 2, 0, &var_30); + } + } + } +} +} diff --git a/src/code_80118A4.c b/src/code_80118A4.c index e0e0d7069..bfe7b9d07 100644 --- a/src/code_80118A4.c +++ b/src/code_80118A4.c @@ -30,8 +30,8 @@ extern void sub_8010F28(); void sub_801169C(void) { - SetBG2RegOffsets(gUnknown_203B0E4->xoffset, gUnknown_203B0E4->yoffset); - SetBG3RegOffsets(gUnknown_203B0E4->xoffset, gUnknown_203B0E4->yoffset); + SetBG2RegOffsets(gUnknown_203B0E4->unk4DD4.x, gUnknown_203B0E4->unk4DD4.y); + SetBG3RegOffsets(gUnknown_203B0E4->unk4DD4.x, gUnknown_203B0E4->unk4DD4.y); sub_8010F28(); sub_8004AF0(sub_80111C4(), gUnknown_203B0E4->unk4C4C, 0xB0, 16, gUnknown_203B0E4->unk4DCC, NULL); sub_8005838(NULL, 0); diff --git a/src/code_8069E0C.c b/src/code_8069E0C.c index 6fa34ec74..7181cc058 100644 --- a/src/code_8069E0C.c +++ b/src/code_8069E0C.c @@ -77,7 +77,6 @@ extern void sub_8005700(DungeonPos *a0, struct axObject *a1); u32 EntityGetStatusSprites(Entity *entity); void UpdateDungeonPokemonSprite(int id, short species, int status, char visible); extern void sub_8042EC8(Entity *a0, s32 a1); -void DoAxFrame_800558C(struct axObject *a0, s32 spriteX, s32 spriteY, u32 a3, u32 paletteNum, unkStruct_2039DB0 *spriteMasks); extern Entity *sub_804550C(s16 a); extern Entity *sub_80453AC(s16 id); extern void sub_803F580(s32); @@ -1957,30 +1956,30 @@ void sub_806C51C(Entity *entity) if (entInfo->unk15C != 0) { if (entInfo->unk160 == 0) { if (entInfo->unk15F != 0) { - RunAxAnimationFrame(&entity->axObj); - RunAxAnimationFrame(&entity->axObj); - RunAxAnimationFrame(&entity->axObj); + RunAxAnimationFrame(&entity->axObj.axdata); + RunAxAnimationFrame(&entity->axObj.axdata); + RunAxAnimationFrame(&entity->axObj.axdata); } else { - RunAxAnimationFrame(&entity->axObj); + RunAxAnimationFrame(&entity->axObj.axdata); } } } else { - RunAxAnimationFrame(&entity->axObj); + RunAxAnimationFrame(&entity->axObj.axdata); } } } else { if (entInfo->frozenClassStatus.status != STATUS_FROZEN && entInfo->frozenClassStatus.status != STATUS_PETRIFIED) { if (gDungeon->unk644.unk28 != 0 && gDungeon->unk1BDD4.unk1C05F == 0) { - RunAxAnimationFrame(&entity->axObj); - RunAxAnimationFrame(&entity->axObj); + RunAxAnimationFrame(&entity->axObj.axdata); + RunAxAnimationFrame(&entity->axObj.axdata); } else if ((entity->axObj.unk43_animId2 == 0 || entity->axObj.unk43_animId2 == 7) && GetEntInfo(entity)->speedStage > 1) { - RunAxAnimationFrame(&entity->axObj); + RunAxAnimationFrame(&entity->axObj.axdata); } - RunAxAnimationFrame(&entity->axObj); + RunAxAnimationFrame(&entity->axObj.axdata); } } @@ -2092,10 +2091,10 @@ void sub_806C51C(Entity *entity) } if (entity->unk22 == 0) { - DoAxFrame_800558C(&entity->axObj, x, y, y2, overworldPal, &spriteMasks); + DoAxFrame_800558C(&entity->axObj.axdata, x, y, y2, overworldPal, &spriteMasks); } else if (entity->unk22 == 1 && (gUnknown_202EDCC & 1)) { - DoAxFrame_800558C(&entity->axObj, x, y, y2, overworldPal, &spriteMasks); + DoAxFrame_800558C(&entity->axObj.axdata, x, y, y2, overworldPal, &spriteMasks); } } diff --git a/src/sprite.c b/src/sprite.c index 5b6f433d7..60e5b987d 100644 --- a/src/sprite.c +++ b/src/sprite.c @@ -519,50 +519,71 @@ static inline s16 check_flag_for_80054BC(u16 flags) { return flags >> 15; } - -void RunAxAnimationFrame(struct axObject *a0) +void RunAxAnimationFrame(struct axdata *a0) { ax_anim *aData; - if (!check_flag_for_80054BC(a0->axdata.flags)) + if (!check_flag_for_80054BC(a0->flags)) return; - if (a0->axdata.sub1.poseId >= 0) { - if (a0->axdata.flags & 0x4000) + if (a0->sub1.poseId >= 0) { + if (a0->flags & 0x4000) return; - if (a0->axdata.totalFrames < 30000) - a0->axdata.totalFrames++; + if (a0->totalFrames < 30000) + a0->totalFrames++; - if (a0->axdata.animWaitFrames != 0) { - a0->axdata.animWaitFrames--; + if (a0->animWaitFrames != 0) { + a0->animWaitFrames--; return; } - if (a0->axdata.animFrames != 0 && --a0->axdata.animFrames > 0) + if (a0->animFrames != 0 && --a0->animFrames > 0) return; } - if (a0->axdata.activeAnimData->frames == 0) { - if (!(a0->axdata.flags & 0x1000)) { - a0->axdata.flags |= 0x2000; + if (a0->activeAnimData->frames == 0) { + if (!(a0->flags & 0x1000)) { + a0->flags |= 0x2000; return; } - a0->axdata.activeAnimData = a0->axdata.nextAnimData; - a0->axdata.animWaitFrames = Rand32Bit() & 1; + a0->activeAnimData = a0->nextAnimData; + a0->animWaitFrames = Rand32Bit() & 1; } - a0->axdata.flags |= 0x800; + a0->flags |= 0x800; - aData = a0->axdata.activeAnimData; - a0->axdata.animFrames = aData->frames; - a0->axdata.sub1.poseId = aData->poseId; - a0->axdata.sub1.offset.x = aData->offset.x; - a0->axdata.sub1.offset.y = aData->offset.y; - a0->axdata.sub1.shadow.x = aData->shadow.x; - a0->axdata.sub1.shadow.y = aData->shadow.y; - a0->axdata.sub1.unkC = aData->unkFlags; - a0->axdata.sub1.unk10 |= aData->unkFlags; - a0->axdata.activeAnimData = aData + 1; + aData = a0->activeAnimData; + a0->animFrames = aData->frames; + a0->sub1.poseId = aData->poseId; + a0->sub1.offset.x = aData->offset.x; + a0->sub1.offset.y = aData->offset.y; + a0->sub1.shadow.x = aData->shadow.x; + a0->sub1.shadow.y = aData->shadow.y; + a0->sub1.unkC = aData->unkFlags; + a0->sub1.unk10 |= aData->unkFlags; + a0->activeAnimData = aData + 1; +} + +void DoAxFrame_800558C(struct axdata *a0, s32 spriteX, s32 spriteY, u32 a3, u32 paletteNum, unkStruct_2039DB0 *spriteMasks) +{ + if (!(a0->flags >> 15)) + return; + + if (a0->sub1.poseId < 0) + RunAxAnimationFrame(a0); + + if (!(a0->flags >> 15)) + return; + + a0->sub1.pos.x = a0->sub1.offset.x + spriteX; + a0->sub1.pos.y = a0->sub1.offset.y + spriteY; + a0->sub1.paletteNum = paletteNum; + a0->sub1.unk16 = a3; + sub_800533C(a0->poseData, a0->spriteData, &a0->sub1, spriteMasks, !!(a0->sub1.lastPoseId ^ a0->sub1.poseId)); + a0->sub1.lastPoseId = a0->sub1.poseId; + + if (a0->flags & 0x800) + a0->flags &= 0xF7FF; } From 15ac8eb00dcf08de1fdc5e60b12a02d0264143c5 Mon Sep 17 00:00:00 2001 From: DizzyEggg Date: Fri, 21 Feb 2025 00:34:47 +0100 Subject: [PATCH 17/40] sub_8011300 --- asm/code_8010F28.s | 386 ----------------------------------------- include/code_8004AA0.h | 14 +- src/code_8010F28.c | 122 +++++++++++++ 3 files changed, 132 insertions(+), 390 deletions(-) diff --git a/asm/code_8010F28.s b/asm/code_8010F28.s index 9f9cb3c05..3235734a8 100644 --- a/asm/code_8010F28.s +++ b/asm/code_8010F28.s @@ -4,392 +4,6 @@ .syntax unified .text - - thumb_func_start sub_80110B0 -sub_80110B0: - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - sub sp, 0x4 - ldr r0, _08011150 - ldr r1, [r0] - ldr r2, _08011154 - adds r1, r2 - ldrh r1, [r1] - lsls r1, 16 - asrs r6, r1, 19 - adds r2, r6, 0 - movs r3, 0 - mov r10, r0 - movs r0, 0x1F - mov r9, r0 -_080110D4: - mov r1, r10 - ldr r0, [r1] - ldr r1, _08011158 - adds r0, r1 - ldrh r0, [r0] - lsls r0, 16 - asrs r4, r0, 19 - lsls r1, r2, 7 - adds r2, 0x1 - mov r12, r2 - adds r3, 0x1 - mov r8, r3 - movs r7, 0x1E - lsls r0, r4, 1 - adds r5, r0, r1 -_080110F2: - mov r2, r9 - ands r4, r2 - ands r6, r2 - lsls r2, r4, 1 - lsls r0, r6, 6 - adds r2, r0 - ldr r3, _0801115C - adds r3, r2, r3 - str r3, [sp] - mov r0, r10 - ldr r1, [r0] - ldr r3, _08011160 - adds r0, r1, r3 - adds r0, r5 - ldrh r0, [r0] - ldr r3, [sp] - strh r0, [r3] - ldr r0, _08011164 - adds r2, r0 - adds r1, 0x14 - adds r1, r5 - ldrh r0, [r1] - strh r0, [r2] - adds r5, 0x2 - adds r4, 0x1 - subs r7, 0x1 - cmp r7, 0 - bge _080110F2 - mov r2, r12 - adds r6, 0x1 - mov r3, r8 - cmp r3, 0x14 - ble _080110D4 - movs r0, 0x2 - bl sub_80098F8 - movs r0, 0x3 - bl sub_80098F8 - 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 -_08011150: .4byte gUnknown_203B0E4 -_08011154: .4byte 0x00004dd6 -_08011158: .4byte 0x00004dd4 -_0801115C: .4byte gUnknown_202B038 + 0x1000 -_08011160: .4byte 0x00002014 -_08011164: .4byte gUnknown_202B038 + 0x1800 - thumb_func_end sub_80110B0 - - thumb_func_start sub_8011168 -sub_8011168: - push {r4,r5,lr} - movs r0, 0 - movs r1, 0x1 - movs r2, 0x1 - bl xxx_call_save_unk_text_struct_800641C - ldr r3, _080111B0 - ldr r1, [r3] - ldr r2, _080111B4 - adds r0, r1, r2 - movs r2, 0 - str r2, [r0] - ldr r4, _080111B8 - adds r0, r1, r4 - str r2, [r0] - adds r4, 0x4 - adds r0, r1, r4 - str r2, [r0] - ldr r0, _080111BC - adds r1, r0 - str r2, [r1] - adds r5, r3, 0 - ldr r4, _080111C0 - movs r3, 0 - movs r1, 0x7 -_0801119A: - ldr r0, [r5] - adds r0, r2, r0 - adds r0, r4 - strh r3, [r0] - adds r2, 0x3C - subs r1, 0x1 - cmp r1, 0 - bge _0801119A - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_080111B0: .4byte gUnknown_203B0E4 -_080111B4: .4byte 0x00004ddc -_080111B8: .4byte 0x00004de0 -_080111BC: .4byte 0x00004de8 -_080111C0: .4byte 0x00004a30 - thumb_func_end sub_8011168 - - thumb_func_start sub_80111C4 -sub_80111C4: - push {r4-r6,lr} - movs r3, 0 - ldr r6, _08011238 - ldr r0, [r6] - ldr r2, _0801123C - adds r1, r0, r2 - ldr r2, [r1] - cmp r2, 0x1E - bgt _0801122E - ldr r0, [r0] - ldr r5, [r0, 0x4] - adds r0, r2, 0x1 - str r0, [r1] - cmp r0, 0x1E - ble _080111E6 - movs r0, 0x1F - str r0, [r1] -_080111E6: - movs r4, 0 -_080111E8: - ldr r0, [r6] - ldr r1, _0801123C - adds r0, r1 - ldr r2, [r0] - adds r0, r4, 0 - adds r1, r5, 0 - movs r3, 0 - bl SetBGPaletteBufferColorRGB - adds r5, 0x4 - adds r4, 0x1 - cmp r4, 0xDF - ble _080111E8 - ldr r0, _08011238 - ldr r0, [r0] - ldr r0, [r0, 0x4] - ldr r5, [r0, 0x4] - movs r4, 0 -_0801120C: - movs r2, 0x80 - lsls r2, 1 - adds r0, r4, r2 - ldr r1, _08011238 - ldr r1, [r1] - ldr r2, _0801123C - adds r1, r2 - ldr r2, [r1] - adds r1, r5, 0 - movs r3, 0 - bl SetBGPaletteBufferColorRGB - adds r5, 0x4 - adds r4, 0x1 - cmp r4, 0xEF - ble _0801120C - movs r3, 0x1 -_0801122E: - adds r0, r3, 0 - pop {r4-r6} - pop {r1} - bx r1 - .align 2, 0 -_08011238: .4byte gUnknown_203B0E4 -_0801123C: .4byte 0x00004dcc - thumb_func_end sub_80111C4 - - thumb_func_start sub_8011240 -sub_8011240: - push {r4-r6,lr} - ldr r2, _08011264 - ldr r0, [r2] - ldr r1, _08011268 - adds r3, r0, r1 - movs r4, 0 - ldrsh r1, [r3, r4] - ldr r5, _0801126C - adds r4, r0, r5 - movs r6, 0 - ldrsh r0, [r4, r6] - subs r1, r0 - adds r5, r2, 0 - cmp r1, 0x2F - bgt _08011270 - ldrh r0, [r3] - subs r0, 0x30 - b _08011278 - .align 2, 0 -_08011264: .4byte gUnknown_203B0E4 -_08011268: .4byte 0x00004dd8 -_0801126C: .4byte 0x00004dd4 -_08011270: - cmp r1, 0xC0 - ble _0801127A - ldrh r0, [r3] - subs r0, 0xC0 -_08011278: - strh r0, [r4] -_0801127A: - ldr r0, [r5] - ldr r1, _08011298 - adds r3, r0, r1 - movs r2, 0 - ldrsh r1, [r3, r2] - ldr r4, _0801129C - adds r2, r0, r4 - movs r6, 0 - ldrsh r0, [r2, r6] - subs r1, r0 - cmp r1, 0x2F - bgt _080112A0 - ldrh r0, [r3] - subs r0, 0x30 - b _080112A8 - .align 2, 0 -_08011298: .4byte 0x00004dda -_0801129C: .4byte 0x00004dd6 -_080112A0: - cmp r1, 0x70 - ble _080112AA - ldrh r0, [r3] - subs r0, 0x70 -_080112A8: - strh r0, [r2] -_080112AA: - adds r3, r5, 0 - ldr r0, [r3] - ldr r4, _080112F8 - adds r1, r0, r4 - movs r2, 0 - ldrsh r0, [r1, r2] - cmp r0, 0 - bge _080112BE - movs r0, 0 - strh r0, [r1] -_080112BE: - ldr r0, [r3] - ldr r2, _080112FC - adds r1, r0, r2 - movs r6, 0 - ldrsh r0, [r1, r6] - cmp r0, 0 - bge _080112D0 - movs r0, 0 - strh r0, [r1] -_080112D0: - ldr r0, [r3] - adds r1, r0, r4 - movs r3, 0 - ldrsh r0, [r1, r3] - cmp r0, 0xEF - ble _080112E0 - movs r0, 0xEF - strh r0, [r1] -_080112E0: - ldr r0, [r5] - adds r2, r0, r2 - movs r4, 0 - ldrsh r0, [r2, r4] - cmp r0, 0x97 - ble _080112F0 - movs r0, 0x97 - strh r0, [r2] -_080112F0: - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_080112F8: .4byte 0x00004dd4 -_080112FC: .4byte 0x00004dd6 - thumb_func_end sub_8011240 - - thumb_func_start sub_8011300 -sub_8011300: - push {r4-r7,lr} - mov r7, r9 - mov r6, r8 - push {r6,r7} - sub sp, 0xC - ldr r0, _08011388 - ldr r2, [r0] - ldr r1, _0801138C - adds r0, r2, r1 - ldr r1, [r0] - lsls r0, r1, 2 - adds r0, r1 - lsls r0, 4 - ldr r3, _08011390 - adds r0, r3 - adds r2, r0 - mov r9, r2 - movs r4, 0 - ldr r0, _08011394 - mov r8, r0 - movs r7, 0 - mov r6, r8 - movs r5, 0 -_0801132E: - ldr r0, _08011388 - ldr r2, [r0] - adds r0, r5, r2 - add r0, r8 - strh r7, [r0] - lsls r1, r4, 1 - mov r0, r9 - adds r0, 0x2 - adds r1, r0, r1 - movs r3, 0 - ldrsh r0, [r1, r3] - cmp r0, 0 - blt _08011370 - lsls r1, r0, 2 - adds r1, r0 - lsls r1, 4 - ldr r0, _08011390 - adds r1, r0 - adds r1, r2, r1 - ldrb r0, [r1] - cmp r0, 0 - beq _08011370 - adds r0, r2, r6 - ldr r1, [r2, 0x8] - adds r2, r4, 0x4 - movs r3, 0x40 - str r3, [sp] - str r7, [sp, 0x4] - movs r3, 0x1 - str r3, [sp, 0x8] - movs r3, 0 - bl AxResInitFile -_08011370: - adds r6, 0x3C - adds r5, 0x3C - adds r4, 0x1 - cmp r4, 0x7 - ble _0801132E - add sp, 0xC - pop {r3,r4} - mov r8, r3 - mov r9, r4 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_08011388: .4byte gUnknown_203B0E4 -_0801138C: .4byte 0x00004a18 -_08011390: .4byte 0x00004018 -_08011394: .4byte 0x00004a30 - thumb_func_end sub_8011300 thumb_func_start sub_8011398 sub_8011398: diff --git a/include/code_8004AA0.h b/include/code_8004AA0.h index a232a085b..fb9a5690f 100644 --- a/include/code_8004AA0.h +++ b/include/code_8004AA0.h @@ -35,7 +35,7 @@ struct UnkStruct_4014Ptr2 struct UnkStruct_4018 { u8 unk4018; - u8 padding[0x14 - 0x2]; + s16 unk2[8]; axdata unk14; }; @@ -43,18 +43,24 @@ struct UnkStruct_4018 struct UnkBgStruct { OpenedFile *unk0[5]; - u8 padding[0x4014 - 0x14]; + u16 unk14[64][64]; + u16 unk2014[64][64]; struct UnkStruct_4014Ptr2 *unk4014; struct UnkStruct_4018 unk4018[32]; - u8 pad4A18[0x4A30-0x4A18]; + s32 unk4A18; + u8 pad4A1C[0x4A30-0x4A1C]; axdata unk4A30[8]; axdata unk4C10; unkStruct_202EE8C unk4C4C[16]; - u32 unk4DCC; + s32 unk4DCC; u32 unk4DD0; DungeonPos unk4DD4; s16 unk4DD8; s16 unk4DDA; + s32 unk4DDC; + s32 unk4DE0; + s32 unk4DE4; + s32 unk4DE8; }; extern struct UnkBgStruct *gUnknown_203B0E4; diff --git a/src/code_8010F28.c b/src/code_8010F28.c index d5001c99b..e1ead6871 100644 --- a/src/code_8010F28.c +++ b/src/code_8010F28.c @@ -2,12 +2,20 @@ #include "sprite.h" #include "code_8004AA0.h" #include "input.h" +#include "text.h" +#include "code_8009804.h" +#include "bg_palette_buffer.h" static inline bool8 CheckAxFlag8000(axdata *ptr) { return (ptr->flags & 0x8000) != 0; } +static inline bool8 ResetFlags(axdata *ptr) +{ + return ptr->flags = 0; +} + extern const DungeonPos gUnknown_80D40C4[]; void sub_8010F28(void) @@ -47,3 +55,117 @@ void sub_8010F28(void) } } } + +void sub_80110B0(void) +{ + s32 i, j; + s32 y1 = gUnknown_203B0E4->unk4DD4.y >> 3; + s32 y2 = y1; + + for (i = 0; i < 21; i++) { + s32 x1 = gUnknown_203B0E4->unk4DD4.x >> 3; + s32 x2 = x1; + + for (j = 0; j < 31; j++) { + x1 &= 0x1F; + y1 &= 0x1F; + + gUnknown_202B038[2][y1][x1] = gUnknown_203B0E4->unk2014[y2][x2]; + gUnknown_202B038[3][y1][x1] = gUnknown_203B0E4->unk14[y2][x2]; + x2++; + x1++; + } + y2++; + y1++; + } + + sub_80098F8(2); + sub_80098F8(3); +} + +void sub_8011168(void) +{ + s32 i; + + xxx_call_save_unk_text_struct_800641C(NULL, TRUE, TRUE); + gUnknown_203B0E4->unk4DDC = 0; + gUnknown_203B0E4->unk4DE0 = 0; + gUnknown_203B0E4->unk4DE4 = 0; + gUnknown_203B0E4->unk4DE8 = 0; + for (i = 0; i < 8; i++) { + ResetFlags(&gUnknown_203B0E4->unk4A30[i]); + } +} + +bool8 sub_80111C4(void) +{ + bool8 ret = FALSE; + + if (gUnknown_203B0E4->unk4DCC < 31) { + s32 i; + RGB *color = (void *) gUnknown_203B0E4->unk0[0]->data; + + if (++gUnknown_203B0E4->unk4DCC >= 31) { + gUnknown_203B0E4->unk4DCC = 31; + } + + for (i = 0; i < 224; color++, i++) { + SetBGPaletteBufferColorRGB(i, color, gUnknown_203B0E4->unk4DCC, NULL); + } + + color = (void *) gUnknown_203B0E4->unk0[1]->data; + for (i = 0; i < 240; color++, i++) { + SetBGPaletteBufferColorRGB(i + 256, color, gUnknown_203B0E4->unk4DCC, NULL); + } + + ret = TRUE; + } + + return ret; +} + +void sub_8011240(void) +{ + if (gUnknown_203B0E4->unk4DD8 - gUnknown_203B0E4->unk4DD4.x < 48) { + gUnknown_203B0E4->unk4DD4.x = gUnknown_203B0E4->unk4DD8 - 48; + } + else if (gUnknown_203B0E4->unk4DD8 - gUnknown_203B0E4->unk4DD4.x > 192) { + gUnknown_203B0E4->unk4DD4.x = gUnknown_203B0E4->unk4DD8 - 192; + } + + if (gUnknown_203B0E4->unk4DDA - gUnknown_203B0E4->unk4DD4.y < 48) { + gUnknown_203B0E4->unk4DD4.y = gUnknown_203B0E4->unk4DDA - 48; + } + else if (gUnknown_203B0E4->unk4DDA - gUnknown_203B0E4->unk4DD4.y > 112) { + gUnknown_203B0E4->unk4DD4.y = gUnknown_203B0E4->unk4DDA - 112; + } + + if (gUnknown_203B0E4->unk4DD4.x < 0) { + gUnknown_203B0E4->unk4DD4.x = 0; + } + if (gUnknown_203B0E4->unk4DD4.y < 0) { + gUnknown_203B0E4->unk4DD4.y = 0; + } + if (gUnknown_203B0E4->unk4DD4.x > 239) { + gUnknown_203B0E4->unk4DD4.x = 239; + } + if (gUnknown_203B0E4->unk4DD4.y > 151) { + gUnknown_203B0E4->unk4DD4.y = 151; + } +} + +void sub_8011300(void) +{ + s32 i; + struct UnkStruct_4018 *r9 = &gUnknown_203B0E4->unk4018[gUnknown_203B0E4->unk4A18]; + + for (i = 0; i < 8; i++) { + ResetFlags(&gUnknown_203B0E4->unk4A30[i]); + if (r9->unk2[i] >= 0) { + struct UnkStruct_4018 *ptr = &gUnknown_203B0E4->unk4018[r9->unk2[i]]; + if (ptr->unk4018 != 0) { + AxResInitFile(&gUnknown_203B0E4->unk4A30[i], gUnknown_203B0E4->unk0[2], i + 4, 0, 0x40, 0, TRUE); + } + } + } +} From aef4bcf76f24466460bd02baa662cd1743042b7f Mon Sep 17 00:00:00 2001 From: DizzyEggg Date: Fri, 21 Feb 2025 11:01:54 +0100 Subject: [PATCH 18/40] code_8010F28 clean-up --- asm/code_8010F28.s | 365 ----------------------------------------- include/code_8004AA0.h | 12 +- ld_script.txt | 2 - src/code_8010EF0.c | 37 ----- src/code_8010F28.c | 200 ++++++++++++++++++++++ src/code_80118A4.c | 32 ---- sym_ewram_init.txt | 2 +- 7 files changed, 210 insertions(+), 440 deletions(-) delete mode 100644 asm/code_8010F28.s delete mode 100644 src/code_8010EF0.c diff --git a/asm/code_8010F28.s b/asm/code_8010F28.s deleted file mode 100644 index 3235734a8..000000000 --- a/asm/code_8010F28.s +++ /dev/null @@ -1,365 +0,0 @@ - #include "asm/constants/gba_constants.inc" - #include "asm/macros.inc" - - .syntax unified - - .text - - thumb_func_start sub_8011398 -sub_8011398: - push {r4-r6,lr} - sub sp, 0x12C - ldr r5, _080113F4 - ldr r0, [r5] - ldr r2, _080113F8 - adds r1, r0, r2 - ldr r1, [r1] - ldr r3, _080113FC - adds r0, r3 - lsls r1, 5 - ldr r0, [r0] - adds r6, r0, r1 - add r4, sp, 0xCC - adds r0, r4, 0 - movs r1, 0 - movs r2, 0x60 - bl memset - movs r2, 0x3 - str r2, [r4, 0x4] - movs r0, 0x7 - strh r0, [r4, 0x8] - movs r1, 0x2 - strh r1, [r4, 0xA] - movs r0, 0x15 - strh r0, [r4, 0xC] - strh r1, [r4, 0xE] - strh r1, [r4, 0x10] - str r2, [r4, 0x1C] - str r2, [r4, 0x34] - str r2, [r4, 0x4C] - ldr r0, [r5] - ldr r2, _08011400 - adds r1, r0, r2 - movs r3, 0 - ldrsh r1, [r1, r3] - subs r2, 0x4 - adds r0, r2 - movs r3, 0 - ldrsh r0, [r0, r3] - subs r1, r0 - cmp r1, 0x50 - bgt _08011404 - movs r0, 0x11 - b _08011406 - .align 2, 0 -_080113F4: .4byte gUnknown_203B0E4 -_080113F8: .4byte 0x00004a18 -_080113FC: .4byte 0x00004014 -_08011400: .4byte 0x00004dda -_08011404: - movs r0, 0x1 -_08011406: - strh r0, [r4, 0xA] - adds r0, r4, 0 - movs r1, 0x1 - movs r2, 0x1 - bl xxx_call_save_unk_text_struct_800641C - movs r0, 0 - bl sub_80073B8 - ldr r1, _0801147C - ldr r2, [r6] - add r0, sp, 0x4 - bl sprintfStatic - movs r0, 0 - str r0, [sp] - movs r0, 0xC - movs r1, 0x2 - add r2, sp, 0x4 - movs r3, 0 - bl PrintFormattedStringOnWindow - movs r0, 0 - bl sub_80073E0 - ldr r0, _08011480 - ldr r1, [r0] - ldr r0, _08011484 - adds r2, r1, r0 - movs r3, 0x8 - ldrsh r0, [r4, r3] - lsls r0, 3 - subs r0, 0x5 - str r0, [r2] - ldr r0, _08011488 - adds r2, r1, r0 - movs r3, 0xA - ldrsh r0, [r4, r3] - lsls r0, 3 - adds r0, 0x5 - str r0, [r2] - ldr r0, _0801148C - adds r2, r1, r0 - movs r3, 0xC - ldrsh r0, [r4, r3] - lsls r0, 3 - adds r0, 0xA - str r0, [r2] - ldr r0, _08011490 - adds r1, r0 - movs r2, 0xE - ldrsh r0, [r4, r2] - lsls r0, 3 - adds r0, 0xA - str r0, [r1] - add sp, 0x12C - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_0801147C: .4byte gUnknown_80D40FC -_08011480: .4byte gUnknown_203B0E4 -_08011484: .4byte 0x00004ddc -_08011488: .4byte 0x00004de0 -_0801148C: .4byte 0x00004de4 -_08011490: .4byte 0x00004de8 - thumb_func_end sub_8011398 - - thumb_func_start sub_8011494 -sub_8011494: - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - sub sp, 0xC8 - ldr r0, _08011610 - ldr r2, [r0] - ldr r1, _08011614 - adds r0, r2, r1 - ldr r0, [r0] - ldr r3, _08011618 - adds r1, r2, r3 - lsls r0, 5 - ldr r1, [r1] - adds r1, r0 - mov r8, r1 - ldr r0, _0801161C - adds r7, r2, r0 - add r4, sp, 0x64 - adds r0, r4, 0 - movs r1, 0 - movs r2, 0x60 - bl memset - movs r0, 0x6 - str r0, [sp, 0x68] - add r1, sp, 0x6C - movs r0, 0x7 - strh r0, [r1] - movs r2, 0x2 - strh r2, [r1, 0x2] - add r1, sp, 0x70 - movs r0, 0x15 - strh r0, [r1] - mov r0, sp - adds r0, 0x72 - strh r2, [r0] - add r0, sp, 0x74 - strh r2, [r0] - add r5, sp, 0xC4 - str r5, [sp, 0x78] - movs r1, 0x3 - str r1, [sp, 0x80] - add r0, sp, 0x94 - str r1, [r0, 0x4] - add r0, sp, 0xAC - str r1, [r0, 0x4] - add r0, sp, 0x4 - adds r1, r4, 0 - movs r2, 0x60 - bl memcpy - movs r1, 0 - mov r9, r1 - movs r6, 0 - mov r10, r5 -_08011506: - mov r0, r8 - adds r0, 0x8 - adds r4, r0, r6 - ldrb r0, [r4] - bl sub_800FFE8 - lsls r0, 24 - cmp r0, 0 - beq _0801152A - ldr r0, _08011610 - ldr r0, [r0] - ldr r2, _08011620 - adds r0, r2 - add r0, r9 - ldrb r1, [r4] - strb r1, [r0] - movs r3, 0x1 - add r9, r3 -_0801152A: - adds r6, 0x1 - cmp r6, 0x7 - ble _08011506 - ldr r5, _08011610 - ldr r0, [r5] - ldr r1, _08011624 - adds r0, r1 - mov r2, r9 - str r2, [r0] - movs r4, 0 - movs r0, 0x1 - mov r3, r10 - strb r0, [r3] - add r0, sp, 0xC4 - strb r4, [r0, 0x1] - movs r1, 0x12 - strb r1, [r0, 0x2] - strb r4, [r0, 0x3] - strh r4, [r7, 0x18] - strh r2, [r7, 0x1A] - mov r0, r9 - strh r0, [r7, 0x1C] - strh r4, [r7, 0x1E] - strh r4, [r7, 0x20] - strh r4, [r7, 0x4] - movs r0, 0x10 - strh r0, [r7, 0x6] - str r4, [r7] - strh r4, [r7, 0xC] - strh r4, [r7, 0xE] - strh r4, [r7, 0x14] - strh r4, [r7, 0x16] - movs r0, 0x8 - strh r0, [r7, 0x8] - strh r0, [r7, 0xA] - adds r0, r7, 0 - adds r0, 0x28 - bl sub_801317C - movs r1, 0x1C - ldrsh r0, [r7, r1] - movs r1, 0 - bl sub_80095E4 - adds r1, r0, 0 - add r3, sp, 0x4 - adds r2, r3, 0 - adds r0, r1, 0x2 - strh r0, [r2, 0xE] - strh r0, [r3, 0x10] - lsls r1, 3 - adds r0, r7, 0 - bl sub_80137B0 - add r0, sp, 0x4 - movs r1, 0x1 - movs r2, 0x1 - bl xxx_call_save_unk_text_struct_800641C - ldr r1, [r5] - ldr r2, _08011628 - adds r0, r1, r2 - str r4, [r0] - ldr r3, _0801162C - adds r0, r1, r3 - str r4, [r0] - adds r2, 0x8 - adds r0, r1, r2 - str r4, [r0] - adds r3, 0x8 - adds r1, r3 - str r4, [r1] - movs r0, 0 - bl sub_80073B8 - ldr r2, _08011630 - str r4, [sp] - movs r0, 0x10 - movs r1, 0 - movs r3, 0 - bl PrintFormattedStringOnWindow - movs r6, 0 - cmp r6, r9 - bge _08011678 - add r0, sp, 0x64 - mov r8, r0 - ldr r1, _08011634 - mov r10, r1 -_080115DC: - adds r0, r7, 0 - adds r1, r6, 0 - bl sub_8013800 - adds r4, r0, 0 - ldr r2, _08011610 - ldr r0, [r2] - ldr r3, _08011620 - adds r0, r3 - adds r0, r6 - ldrb r5, [r0] - ldr r0, _08011638 - adds r1, r5, 0 - bl sub_80101F8 - cmp r5, 0 - bne _08011640 - str r5, [sp] - movs r0, 0xC - adds r1, r4, 0 - ldr r2, _0801163C - movs r3, 0 - bl PrintFormattedStringOnWindow - b _08011672 - .align 2, 0 -_08011610: .4byte gUnknown_203B0E4 -_08011614: .4byte 0x00004a18 -_08011618: .4byte 0x00004014 -_0801161C: .4byte 0x00004dfc -_08011620: .4byte 0x00004dec -_08011624: .4byte 0x00004df8 -_08011628: .4byte 0x00004ddc -_0801162C: .4byte 0x00004de0 -_08011630: .4byte gUnknown_80D4104 -_08011634: .4byte gFormatArgs -_08011638: .4byte gFormatBuffer_Items -_0801163C: .4byte gUnknown_80D4120 -_08011640: - ldr r1, _08011690 - ldr r0, [r1] - ldr r2, _08011694 - adds r0, r2 - ldrb r2, [r0] - adds r0, r5, 0 - mov r1, r8 - bl sub_80926F8 - mov r3, r8 - movs r1, 0x2 - ldrsh r0, [r3, r1] - mov r2, r10 - str r0, [r2] - movs r1, 0 - ldrsh r0, [r3, r1] - str r0, [r2, 0x4] - movs r0, 0 - str r0, [sp] - movs r0, 0xC - adds r1, r4, 0 - ldr r2, _08011698 - movs r3, 0 - bl PrintFormattedStringOnWindow -_08011672: - adds r6, 0x1 - cmp r6, r9 - blt _080115DC -_08011678: - movs r0, 0 - bl sub_80073E0 - add sp, 0xC8 - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_08011690: .4byte gUnknown_203B0E4 -_08011694: .4byte 0x00004a2c -_08011698: .4byte gUnknown_80D4124 - thumb_func_end sub_8011494 - - .align 2,0 diff --git a/include/code_8004AA0.h b/include/code_8004AA0.h index fb9a5690f..edd9f9901 100644 --- a/include/code_8004AA0.h +++ b/include/code_8004AA0.h @@ -2,6 +2,7 @@ #define GUARD_CODE_8004AA0_H #include "file_system.h" +#include "menu_input.h" #include "structs/rgb.h" #include "structs/axdata.h" #include "structs/str_position.h" @@ -22,9 +23,10 @@ extern unkStruct_202EE8C gUnknown_202EE8C[32]; struct UnkStruct_4014Ptr { - u8 fill0[4]; + s32 unk0; DungeonPos unk4; - u8 fill8[0x20-8]; + u8 unk8[8]; + u8 fill8[0x20-0x10]; }; struct UnkStruct_4014Ptr2 @@ -48,7 +50,8 @@ struct UnkBgStruct struct UnkStruct_4014Ptr2 *unk4014; struct UnkStruct_4018 unk4018[32]; s32 unk4A18; - u8 pad4A1C[0x4A30-0x4A1C]; + u8 pad4A1C[0x4A2c-0x4A1C]; + u8 unk4A2C; axdata unk4A30[8]; axdata unk4C10; unkStruct_202EE8C unk4C4C[16]; @@ -61,6 +64,9 @@ struct UnkBgStruct s32 unk4DE0; s32 unk4DE4; s32 unk4DE8; + u8 unk4DEC[12]; + s32 unk4DF8; + MenuInputStruct unk4DFC; }; extern struct UnkBgStruct *gUnknown_203B0E4; diff --git a/ld_script.txt b/ld_script.txt index c60fa0241..6c573d9d0 100755 --- a/ld_script.txt +++ b/ld_script.txt @@ -90,9 +90,7 @@ SECTIONS { src/code_800F034.o(.text); src/code_800F958.o(.text); asm/code_800F990.o(.text); - src/code_8010EF0.o(.text); src/code_8010F28.o(.text); - asm/code_8010F28.o(.text); src/code_80118A4.o(.text); src/debug.o(.text); src/save.o(.text); diff --git a/src/code_8010EF0.c b/src/code_8010EF0.c deleted file mode 100644 index 92afa997e..000000000 --- a/src/code_8010EF0.c +++ /dev/null @@ -1,37 +0,0 @@ -#include "global.h" -#include "code_8004AA0.h" -#include "text.h" - -EWRAM_INIT struct UnkBgStruct *gUnknown_203B0E4 = NULL; -EWRAM_INIT void *gUnknown_203B0E8 = NULL; // Pointer to some unknown struct -EWRAM_INIT UnkTextStruct2 gUnknown_203B0EC[4] = { // Exact location of this variable is unknown. Find a better place for it once more code is decompiled. - [0] = { - .unk4 = 3, - .pos = {2, 10}, - .unkC = 26, - .unkE = 9, - .unk10 = 9, - }, - [1] = { - .unk4 = 3, - .pos = {23, 6}, - .unkC = 5, - .unkE = 3, - .unk10 = 3, - }, - [2] = { - .unk4 = 3, - }, - [3] = { - .unk4 = 3, - }, -}; - -void sub_8010EF0(void) -{ - CloseFile(gUnknown_203B0E4->unk0[4]); - CloseFile(gUnknown_203B0E4->unk0[2]); - CloseFile(gUnknown_203B0E4->unk0[3]); - CloseFile(gUnknown_203B0E4->unk0[0]); - CloseFile(gUnknown_203B0E4->unk0[1]); -} diff --git a/src/code_8010F28.c b/src/code_8010F28.c index e1ead6871..7a1448710 100644 --- a/src/code_8010F28.c +++ b/src/code_8010F28.c @@ -5,6 +5,45 @@ #include "text.h" #include "code_8009804.h" #include "bg_palette_buffer.h" +#include "string_format.h" +#include "code_800D090.h" +#include "friend_area.h" +#include "bg_control.h" +#include "code_800558C.h" +#include "game_options.h" +#include "play_time.h" +#include "code_80118A4.h" +#include "code_800C9CC.h" + +extern void sub_800CB20(void); +extern void xxx_call_update_bg_sound_input(void); +extern bool8 sub_800FFE8(u8); +extern void sub_80101F8(u8 *, u8); + +EWRAM_INIT struct UnkBgStruct *gUnknown_203B0E4 = NULL; +EWRAM_INIT void *gUnknown_203B0E8 = NULL; // Pointer to some unknown struct +EWRAM_INIT UnkTextStruct2 gUnknown_203B0EC[4] = { + [0] = { + .unk4 = 3, + .pos = {2, 10}, + .unkC = 26, + .unkE = 9, + .unk10 = 9, + }, + [1] = { + .unk4 = 3, + .pos = {23, 6}, + .unkC = 5, + .unkE = 3, + .unk10 = 3, + }, + [2] = { + .unk4 = 3, + }, + [3] = { + .unk4 = 3, + }, +}; static inline bool8 CheckAxFlag8000(axdata *ptr) { @@ -17,6 +56,19 @@ static inline bool8 ResetFlags(axdata *ptr) } extern const DungeonPos gUnknown_80D40C4[]; +extern const u8 gUnknown_80D40FC[]; +extern const u8 gUnknown_80D4104[]; +extern const u8 gUnknown_80D4120[]; +extern const u8 gUnknown_80D4124[]; + +void sub_8010EF0(void) +{ + CloseFile(gUnknown_203B0E4->unk0[4]); + CloseFile(gUnknown_203B0E4->unk0[2]); + CloseFile(gUnknown_203B0E4->unk0[3]); + CloseFile(gUnknown_203B0E4->unk0[0]); + CloseFile(gUnknown_203B0E4->unk0[1]); +} void sub_8010F28(void) { @@ -169,3 +221,151 @@ void sub_8011300(void) } } } + +void sub_8011398(void) +{ + u8 txt[200]; + s32 id = gUnknown_203B0E4->unk4A18; + struct UnkStruct_4014Ptr *r6 = &gUnknown_203B0E4->unk4014->array[id]; + UnkTextStruct3 spTxtStruct = {0}; + + spTxtStruct.a0[0].unk4 = 3; + spTxtStruct.a0[0].pos.x = 7; + spTxtStruct.a0[0].pos.y = 2; + spTxtStruct.a0[0].unkC = 21; + spTxtStruct.a0[0].unkE = 2; + spTxtStruct.a0[0].unk10 = 2; + spTxtStruct.a0[1].unk4 = 3; + spTxtStruct.a0[2].unk4 = 3; + spTxtStruct.a0[3].unk4 = 3; + + if (gUnknown_203B0E4->unk4DDA - gUnknown_203B0E4->unk4DD4.y <= 80) { + spTxtStruct.a0[0].pos.y = 17; + } + else { + spTxtStruct.a0[0].pos.y = 1; + } + + xxx_call_save_unk_text_struct_800641C(&spTxtStruct, TRUE, TRUE); + sub_80073B8(0); + sprintfStatic(txt, gUnknown_80D40FC, r6->unk0); + PrintFormattedStringOnWindow(12, 2, txt, 0, '\0'); + sub_80073E0(0); + gUnknown_203B0E4->unk4DDC = (spTxtStruct.a0[0].pos.x * 8) - 5; + gUnknown_203B0E4->unk4DE0 = (spTxtStruct.a0[0].pos.y * 8) + 5; + gUnknown_203B0E4->unk4DE4 = (spTxtStruct.a0[0].unkC * 8) + 10; + gUnknown_203B0E4->unk4DE8 = (spTxtStruct.a0[0].unkE * 8) + 10; +} + +void sub_8011494(void) +{ + s32 i, count, var; + s32 id = gUnknown_203B0E4->unk4A18; + struct UnkStruct_4014Ptr *r8 = &gUnknown_203B0E4->unk4014->array[id]; + MenuInputStruct *menuInput = &gUnknown_203B0E4->unk4DFC; + UnkTextStruct2_sub2 subTxt; + UnkTextStruct3 spTxtStruct = { + .a0 = { + [0] = { + .unk4 = 6, + .pos = {7, 2}, + .unkC = 21, + .unkE = 2, + .unk10 = 2, + .unk14 = &subTxt, + }, + [1] = { + .unk4 = 3, + }, + [2] = { + .unk4 = 3, + }, + [3] = { + .unk4 = 3, + }, + } + }; + + count = 0; + for (i = 0; i < 8; i++) { + if (sub_800FFE8(r8->unk8[i])) { + gUnknown_203B0E4->unk4DEC[count] = r8->unk8[i]; + count++; + } + } + + gUnknown_203B0E4->unk4DF8 = count; + subTxt.f0 = 1; + subTxt.f1 = 0; + subTxt.f2 = 18; + subTxt.f3 = 0; + menuInput->menuIndex = 0; + menuInput->unk1A = count; + menuInput->unk1C = count; + menuInput->unk1E = 0; + menuInput->unk20 = 0; + menuInput->unk4 = 0; + menuInput->unk6 = 16; + menuInput->unk0 = 0; + menuInput->unkC = 0; + menuInput->unkE = 0; + menuInput->unk14.x = 0; + menuInput->unk14.y = 0; + menuInput->unk8.x = 8; + menuInput->unk8.y = 8; + sub_801317C(&menuInput->unk28); + var = sub_80095E4(menuInput->unk1C, 0); + spTxtStruct.a0[0].unk10 = spTxtStruct.a0[0].unkE = var + 2; + sub_80137B0(menuInput, var * 8); + + xxx_call_save_unk_text_struct_800641C(&spTxtStruct, TRUE, TRUE); + + gUnknown_203B0E4->unk4DDC = 0; + gUnknown_203B0E4->unk4DE0 = 0; + gUnknown_203B0E4->unk4DE4 = 0; + gUnknown_203B0E4->unk4DE8 = 0; + sub_80073B8(0); + PrintFormattedStringOnWindow(16, 0, gUnknown_80D4104, 0, '\0'); + + for (i = 0; i < count; i++) { + unkStruct_8092638 unkFriendAreaStruct; + s32 r4 = sub_8013800(menuInput, i); + u8 r5 = gUnknown_203B0E4->unk4DEC[i]; + + sub_80101F8(gFormatBuffer_Items[0], r5); + if (r5 == 0) { + PrintFormattedStringOnWindow(12, r4, gUnknown_80D4120, 0, '\0'); + } + else { + sub_80926F8(r5, &unkFriendAreaStruct, gUnknown_203B0E4->unk4A2C); // TODO FIX R8 + gFormatArgs[0] = unkFriendAreaStruct.unk2; + gFormatArgs[1] = unkFriendAreaStruct.numPokemon; + PrintFormattedStringOnWindow(12, r4, gUnknown_80D4124, 0, '\0'); + } + } + + sub_80073E0(0); +} + +void sub_801169C(void) +{ + SetBG2RegOffsets(gUnknown_203B0E4->unk4DD4.x, gUnknown_203B0E4->unk4DD4.y); + SetBG3RegOffsets(gUnknown_203B0E4->unk4DD4.x, gUnknown_203B0E4->unk4DD4.y); + sub_8010F28(); + sub_8004AF0(sub_80111C4(), gUnknown_203B0E4->unk4C4C, 0xB0, 16, gUnknown_203B0E4->unk4DCC, NULL); + sub_8005838(NULL, 0); + nullsub_8(gGameOptionsRef->unkA); + sub_8005180(); + sub_80060EC(); + IncrementPlayTime(gPlayTimeRef); + sub_800CB20(); + LoadBufferedInputs(); + CopySpritesToOam(); + sub_8005304(); + TransferBGPaletteBuffer(); + xxx_call_update_bg_vram(); + sub_8009908(); + xxx_call_update_bg_sound_input(); + sub_8011860(); + ResetSprites(FALSE); +} diff --git a/src/code_80118A4.c b/src/code_80118A4.c index bfe7b9d07..9a9993696 100644 --- a/src/code_80118A4.c +++ b/src/code_80118A4.c @@ -1,18 +1,10 @@ -#include -#include #include "global.h" -#include "bg_palette_buffer.h" -#include "code_8004AA0.h" #include "code_800558C.h" #include "code_8009804.h" -#include "code_800C9CC.h" #include "code_80118A4.h" #include "music.h" #include "constants/bg_music.h" -#include "play_time.h" -#include "bg_control.h" #include "config.h" -#include "game_options.h" #include "sprite.h" #include "event_flag.h" #include "file_system.h" @@ -24,33 +16,9 @@ EWRAM_DATA s16 gUnknown_202DE20 = {0}; EWRAM_DATA s16 gUnknown_202DE22 = {0}; EWRAM_DATA s16 gUnknown_202DE24 = {0}; -extern void xxx_call_update_bg_vram(void); extern bool8 sub_80111C4(); extern void sub_8010F28(); -void sub_801169C(void) -{ - SetBG2RegOffsets(gUnknown_203B0E4->unk4DD4.x, gUnknown_203B0E4->unk4DD4.y); - SetBG3RegOffsets(gUnknown_203B0E4->unk4DD4.x, gUnknown_203B0E4->unk4DD4.y); - sub_8010F28(); - sub_8004AF0(sub_80111C4(), gUnknown_203B0E4->unk4C4C, 0xB0, 16, gUnknown_203B0E4->unk4DCC, NULL); - sub_8005838(NULL, 0); - nullsub_8(gGameOptionsRef->unkA); - sub_8005180(); - sub_80060EC(); - IncrementPlayTime(gPlayTimeRef); - sub_800CB20(); - LoadBufferedInputs(); - CopySpritesToOam(); - sub_8005304(); - TransferBGPaletteBuffer(); - xxx_call_update_bg_vram(); - sub_8009908(); - xxx_call_update_bg_sound_input(); - sub_8011860(); - ResetSprites(FALSE); -} - void sub_8011760(void) { if (sub_80023E4(13)) diff --git a/sym_ewram_init.txt b/sym_ewram_init.txt index 140588feb..07ae580a0 100644 --- a/sym_ewram_init.txt +++ b/sym_ewram_init.txt @@ -15,7 +15,7 @@ .include "src/cpu.o" .include "src/code_800DAC0.o" .include "src/code_800ED38.o" -.include "src/code_8010EF0.o" +.include "src/code_8010F28.o" .include "src/debug.o" .include "src/save.o" .include "src/save_read.o" From 8c21c7935a2e930468a5d20b7c7977400c88090c Mon Sep 17 00:00:00 2001 From: DizzyEggg Date: Fri, 21 Feb 2025 14:25:35 +0100 Subject: [PATCH 19/40] sub_8010A88 --- asm/code_800F990.s | 527 --------------------------------------------- src/code_8010F28.c | 268 +++++++++++++++++++++-- 2 files changed, 246 insertions(+), 549 deletions(-) diff --git a/asm/code_800F990.s b/asm/code_800F990.s index 7288a737f..d0eed6f5f 100644 --- a/asm/code_800F990.s +++ b/asm/code_800F990.s @@ -2122,532 +2122,5 @@ _08010A80: .4byte 0x000052d0 _08010A84: .4byte 0x00001104 thumb_func_end sub_8010A00 - thumb_func_start sub_8010A88 -sub_8010A88: - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - sub sp, 0x14 - lsls r0, 24 - lsrs r0, 24 - mov r9, r0 - add r0, sp, 0x8 - bl sub_8004E8C - add r1, sp, 0x8 - ldr r0, _08010B58 - strh r0, [r1, 0x4] - movs r0, 0x80 - lsls r0, 4 - strh r0, [r1, 0xA] - ldr r6, _08010B5C - ldr r0, [r6] - ldr r2, _08010B60 - adds r1, r0, r2 - ldr r5, [r1] - ldr r3, _08010B64 - adds r0, r3 - bl RunAxAnimationFrame - mov r0, r9 - cmp r0, 0 - beq _08010AF6 - ldr r4, [r6] - ldr r1, _08010B64 - adds r0, r4, r1 - ldr r2, _08010B68 - adds r1, r4, r2 - movs r3, 0 - ldrsh r1, [r1, r3] - lsls r2, r5, 16 - asrs r2, 16 - subs r1, r2 - ldr r3, _08010B6C - adds r2, r4, r3 - movs r3, 0 - ldrsh r2, [r2, r3] - asrs r3, r5, 16 - subs r2, r3 - ldr r3, _08010B70 - adds r4, r3 - ldr r3, [r4] - str r3, [sp] - add r3, sp, 0x8 - str r3, [sp, 0x4] - movs r3, 0x3 - bl DoAxFrame_800558C -_08010AF6: - lsls r0, r5, 16 - asrs r0, 16 - mov r10, r0 - movs r7, 0 - asrs r5, 16 - mov r8, r5 - movs r6, 0x3F -_08010B04: - ldr r1, _08010B5C - ldr r0, [r1] - adds r4, r0, r7 - ldrb r0, [r4] - cmp r0, 0 - beq _08010B40 - adds r5, r4, 0 - adds r5, 0x8 - adds r0, r5, 0 - bl RunAxAnimationFrame - mov r2, r9 - cmp r2, 0 - beq _08010B40 - movs r3, 0x4 - ldrsh r1, [r4, r3] - mov r0, r10 - subs r1, r0 - movs r3, 0x6 - ldrsh r2, [r4, r3] - mov r0, r8 - subs r2, r0 - movs r0, 0 - str r0, [sp] - add r3, sp, 0x8 - str r3, [sp, 0x4] - adds r0, r5, 0 - movs r3, 0x1 - bl DoAxFrame_800558C -_08010B40: - adds r7, 0x44 - subs r6, 0x1 - cmp r6, 0 - bge _08010B04 - add sp, 0x14 - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_08010B58: .4byte 0x0000f3ff -_08010B5C: .4byte gUnknown_203B0E8 -_08010B60: .4byte 0x000052d8 -_08010B64: .4byte 0x00005114 -_08010B68: .4byte 0x000052dc -_08010B6C: .4byte 0x000052de -_08010B70: .4byte 0x000052d4 - thumb_func_end sub_8010A88 - - thumb_func_start sub_8010B74 -sub_8010B74: - push {r4,r5,lr} - sub sp, 0x64 - adds r5, r0, 0 - add r4, sp, 0x4 - adds r0, r4, 0 - movs r1, 0 - movs r2, 0x60 - bl memset - movs r2, 0x3 - str r2, [sp, 0x8] - movs r0, 0xC - strh r0, [r4, 0x8] - movs r1, 0x2 - strh r1, [r4, 0xA] - movs r0, 0x10 - strh r0, [r4, 0xC] - strh r1, [r4, 0xE] - strh r1, [r4, 0x10] - str r2, [sp, 0x20] - str r2, [sp, 0x38] - str r2, [sp, 0x50] - ldr r0, _08010BC0 - ldr r0, [r0] - ldr r2, _08010BC4 - adds r1, r0, r2 - movs r2, 0 - ldrsh r1, [r1, r2] - ldr r2, _08010BC8 - adds r0, r2 - movs r2, 0 - ldrsh r0, [r0, r2] - subs r1, r0 - cmp r1, 0x50 - bgt _08010BCC - add r1, sp, 0x4 - movs r0, 0x11 - b _08010BD0 - .align 2, 0 -_08010BC0: .4byte gUnknown_203B0E8 -_08010BC4: .4byte 0x000052de -_08010BC8: .4byte 0x000052da -_08010BCC: - add r1, sp, 0x4 - movs r0, 0x1 -_08010BD0: - strh r0, [r1, 0xA] - add r0, sp, 0x4 - movs r1, 0x1 - movs r2, 0x1 - bl xxx_call_save_unk_text_struct_800641C - movs r0, 0 - bl sub_80073B8 - ldr r0, _08010C08 - adds r1, r5, 0 - bl CopyDungeonName1toBuffer - ldr r2, _08010C0C - movs r0, 0 - str r0, [sp] - movs r0, 0xC - movs r1, 0x2 - movs r3, 0 - bl PrintFormattedStringOnWindow - movs r0, 0 - bl sub_80073E0 - add sp, 0x64 - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_08010C08: .4byte gFormatBuffer_Monsters -_08010C0C: .4byte gUnknown_80D4074 - thumb_func_end sub_8010B74 - - thumb_func_start sub_8010C10 -sub_8010C10: - push {r4,lr} - sub sp, 0x18 - movs r2, 0 - str r2, [sp] - movs r1, 0x3 - str r1, [sp, 0x4] - str r2, [sp, 0x8] - str r2, [sp, 0xC] - ldr r1, _08010C54 - str r1, [sp, 0x10] - movs r1, 0 - movs r3, 0 - bl CreateMenuDialogueBoxAndPortrait -_08010C2C: - bl DrawDialogueBoxString - bl sub_8010960 - add r0, sp, 0x14 - bl sub_80144A4 - cmp r0, 0 - bne _08010C2C - movs r4, 0x9 -_08010C40: - bl sub_8010960 - subs r4, 0x1 - cmp r4, 0 - bge _08010C40 - add sp, 0x18 - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_08010C54: .4byte 0x00000301 - thumb_func_end sub_8010C10 - - thumb_func_start sub_8010C58 -sub_8010C58: - push {r4-r6,lr} - sub sp, 0x38 - adds r5, r0, 0 - movs r2, 0 - ldrb r0, [r5] - ldr r3, _08010D70 - add r6, sp, 0x2C - cmp r0, 0 - beq _08010C7C - adds r1, r5, 0 -_08010C6C: - ldrb r0, [r1] - cmp r0, 0xA - bne _08010C74 - adds r2, 0xC -_08010C74: - adds r1, 0x1 - ldrb r0, [r1] - cmp r0, 0 - bne _08010C6C -_08010C7C: - adds r2, 0xB - adds r0, r2, 0 - cmp r2, 0 - bge _08010C86 - adds r0, r2, 0x7 -_08010C86: - asrs r2, r0, 3 - movs r0, 0x13 - subs r0, r2 - movs r4, 0 - strh r0, [r3, 0xA] - strh r2, [r3, 0x10] - strh r2, [r3, 0xE] - movs r0, 0xE - subs r0, r2 - strh r0, [r3, 0x22] - adds r0, r3, 0 - movs r1, 0x1 - movs r2, 0x1 - bl xxx_call_save_unk_text_struct_800641C - movs r0, 0 - bl sub_80073B8 - str r4, [sp] - movs r0, 0x4 - movs r1, 0 - adds r2, r5, 0 - movs r3, 0 - bl PrintFormattedStringOnWindow - movs r0, 0 - bl sub_80073E0 - movs r0, 0x1 - bl sub_80073B8 - ldr r2, _08010D74 - str r4, [sp] - movs r0, 0xA - movs r1, 0 - movs r3, 0x1 - bl PrintFormattedStringOnWindow - ldr r2, _08010D78 - str r4, [sp] - movs r0, 0xA - movs r1, 0xC - movs r3, 0x1 - bl PrintFormattedStringOnWindow - movs r0, 0x1 - bl sub_80073E0 - add r0, sp, 0x4 - movs r2, 0x1 - strh r2, [r0, 0x18] - movs r1, 0x2 - strh r1, [r0, 0x1A] - strh r1, [r0, 0x1C] - strh r4, [r0, 0x1E] - strh r4, [r0, 0x20] - strh r4, [r0, 0x4] - strh r4, [r0, 0x6] - str r2, [sp, 0x4] - strh r4, [r0, 0xC] - strh r4, [r0, 0xE] - strh r4, [r0, 0x14] - strh r4, [r0, 0x16] - movs r1, 0x8 - strh r1, [r0, 0x8] - strh r1, [r0, 0xA] - movs r1, 0x18 - bl sub_80137B0 - adds r0, r6, 0 - bl sub_801317C - ldr r4, _08010D7C -_08010D18: - add r0, sp, 0x4 - bl AddMenuCursorSprite - bl sub_8010960 - ldrh r1, [r4, 0x4] - movs r0, 0x80 - ands r0, r1 - cmp r0, 0 - beq _08010D36 - add r0, sp, 0x4 - bl MoveMenuCursorDown - bl PlayCursorUpDownSoundEffect -_08010D36: - ldrh r1, [r4, 0x4] - movs r0, 0x40 - ands r0, r1 - cmp r0, 0 - beq _08010D4A - add r0, sp, 0x4 - bl MoveMenuCursorUp - bl PlayCursorUpDownSoundEffect -_08010D4A: - ldrh r1, [r4, 0x2] - movs r0, 0x1 - ands r0, r1 - cmp r0, 0 - bne _08010D5E - mov r0, sp - adds r0, 0x2D - ldrb r0, [r0] - cmp r0, 0 - beq _08010D18 -_08010D5E: - bl PlayAcceptSoundEffect - add r0, sp, 0x4 - movs r1, 0x18 - ldrsh r0, [r0, r1] - cmp r0, 0 - beq _08010D80 - movs r0, 0 - b _08010D82 - .align 2, 0 -_08010D70: .4byte gUnknown_203B0EC -_08010D74: .4byte gUnknown_80D407C -_08010D78: .4byte gUnknown_80D4080 -_08010D7C: .4byte gRealInputs -_08010D80: - movs r0, 0x1 -_08010D82: - add sp, 0x38 - pop {r4-r6} - pop {r1} - bx r1 - thumb_func_end sub_8010C58 - - thumb_func_start sub_8010D8C -sub_8010D8C: - lsls r0, 24 - ldr r2, _08010DA0 - lsrs r0, 22 - adds r0, r2 - ldrh r2, [r0] - strh r2, [r1] - ldrh r0, [r0, 0x2] - strh r0, [r1, 0x2] - bx lr - .align 2, 0 -_08010DA0: .4byte gDungeonCoordinates - thumb_func_end sub_8010D8C - - thumb_func_start sub_8010DA4 -sub_8010DA4: - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - sub sp, 0xC - bl GetPlayerPokemonStruct - mov r9, r0 - ldr r6, _08010EBC - ldr r0, [r6] - ldr r5, _08010EC0 - adds r1, r5, 0 - bl OpenFileAndGetFileDataPtr - mov r10, r0 - ldr r0, [r6, 0x4] - adds r1, r5, 0 - bl OpenFileAndGetFileDataPtr - adds r7, r0, 0 - ldr r1, _08010EC4 - mov r0, r9 - movs r3, 0x8 - ldrsh r2, [r0, r3] - mov r0, sp - bl sprintf - ldr r0, _08010EC8 - mov r8, r0 - mov r0, sp - mov r1, r8 - bl OpenFileAndGetFileDataPtr - ldr r4, _08010ECC - ldr r1, [r4] - str r0, [r1, 0xC] - ldr r0, _08010ED0 - adds r1, r5, 0 - bl OpenFileAndGetFileDataPtr - ldr r1, [r4] - str r0, [r1, 0x8] - ldr r0, [r6, 0x8] - adds r1, r5, 0 - bl OpenFileAndGetFileDataPtr - ldr r1, [r4] - str r0, [r1, 0x10] - ldr r0, _08010ED4 - mov r1, r8 - bl OpenFileAndGetFileDataPtr - ldr r1, [r4] - str r0, [r1, 0x4] - ldr r0, [r6, 0xC] - adds r1, r5, 0 - bl OpenFileAndGetFileDataPtr - ldr r1, [r4] - str r0, [r1] - mov r1, r9 - movs r2, 0x8 - ldrsh r0, [r1, r2] - movs r1, 0 - bl GetPokemonOverworldPalette - ldr r2, [r4] - ldr r3, _08010ED8 - adds r1, r2, r3 - lsls r0, 24 - lsrs r0, 24 - str r0, [r1] - ldr r0, [r2, 0x8] - movs r1, 0x40 - movs r2, 0x1F - movs r3, 0 - bl sub_8005610 - ldr r0, _08010EDC - movs r1, 0 - mov r2, r10 - bl DecompressATGlobalFile - ldr r1, [r4] - ldr r2, _08010EE0 - adds r0, r1, r2 - ldr r1, [r1, 0x10] - movs r2, 0x10 - bl sub_8004AA4 - movs r1, 0x80 - lsls r1, 7 - ldr r0, [r4] - adds r0, 0x14 - adds r2, r7, 0 - bl DecompressATFile - ldr r1, [r4] - ldr r3, _08010EE4 - adds r0, r1, r3 - movs r2, 0 - str r2, [r0] - adds r3, 0x8 - adds r0, r1, r3 - strh r2, [r0] - ldr r0, _08010EE8 - adds r1, r0 - strh r2, [r1] - ldr r5, _08010EEC - movs r3, 0 - movs r1, 0x7 -_08010E84: - ldr r0, [r4] - adds r0, r2, r0 - adds r0, r5 - strh r3, [r0] - adds r2, 0x3C - subs r1, 0x1 - cmp r1, 0 - bge _08010E84 - mov r0, r10 - bl CloseFile - adds r0, r7, 0 - bl CloseFile - movs r0, 0 - movs r1, 0x1 - movs r2, 0x1 - bl xxx_call_save_unk_text_struct_800641C - add sp, 0xC - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_08010EBC: .4byte gUnknown_80D408C -_08010EC0: .4byte gTitleMenuFileArchive -_08010EC4: .4byte gUnknown_80D40E4 -_08010EC8: .4byte gMonsterFileArchive -_08010ECC: .4byte gUnknown_203B0E4 -_08010ED0: .4byte gUnknown_80D40EC -_08010ED4: .4byte gUnknown_80D40F4 -_08010ED8: .4byte 0x00004dd0 -_08010EDC: .4byte 0x06008000 -_08010EE0: .4byte 0x00004c4c -_08010EE4: .4byte 0x00004dcc -_08010EE8: .4byte 0x00004dd6 -_08010EEC: .4byte 0x00004a30 - thumb_func_end sub_8010DA4 .align 2,0 diff --git a/src/code_8010F28.c b/src/code_8010F28.c index 7a1448710..d7f2ed3e5 100644 --- a/src/code_8010F28.c +++ b/src/code_8010F28.c @@ -14,35 +14,62 @@ #include "play_time.h" #include "code_80118A4.h" #include "code_800C9CC.h" +#include "pokemon.h" +#include "decompress.h" +extern void PlayAcceptSoundEffect(void); +extern void PlayCursorUpDownSoundEffect(void); +extern s32 sprintf(char *, const char *, ...); extern void sub_800CB20(void); extern void xxx_call_update_bg_sound_input(void); extern bool8 sub_800FFE8(u8); extern void sub_80101F8(u8 *, u8); +extern void CopyDungeonName1toBuffer(u8 *buffer, DungeonLocation *dungeonLocation); + +struct UnkStruct_Sub1 +{ + u8 unk0; + DungeonPos unk4; + axdata unk8; +}; + +struct UnkStruct_203B0E8 +{ + struct UnkStruct_Sub1 unk0[64]; + u8 pad1[0x4014]; + axdata unk5114; + u8 pad2[0x184]; + s32 unk52D4; + DungeonPos unk52D8; + s16 unk52DC; + s16 unk52DE; +}; EWRAM_INIT struct UnkBgStruct *gUnknown_203B0E4 = NULL; -EWRAM_INIT void *gUnknown_203B0E8 = NULL; // Pointer to some unknown struct -EWRAM_INIT UnkTextStruct2 gUnknown_203B0EC[4] = { - [0] = { - .unk4 = 3, - .pos = {2, 10}, - .unkC = 26, - .unkE = 9, - .unk10 = 9, - }, - [1] = { - .unk4 = 3, - .pos = {23, 6}, - .unkC = 5, - .unkE = 3, - .unk10 = 3, - }, - [2] = { - .unk4 = 3, - }, - [3] = { - .unk4 = 3, - }, +EWRAM_INIT struct UnkStruct_203B0E8 *gUnknown_203B0E8 = NULL; +EWRAM_INIT UnkTextStruct3 gUnknown_203B0EC = { + .a0 = { + [0] = { + .unk4 = 3, + .pos = {2, 10}, + .unkC = 26, + .unkE = 9, + .unk10 = 9, + }, + [1] = { + .unk4 = 3, + .pos = {23, 6}, + .unkC = 5, + .unkE = 3, + .unk10 = 3, + }, + [2] = { + .unk4 = 3, + }, + [3] = { + .unk4 = 3, + }, + } }; static inline bool8 CheckAxFlag8000(axdata *ptr) @@ -55,11 +82,208 @@ static inline bool8 ResetFlags(axdata *ptr) return ptr->flags = 0; } +extern u8 *const gUnknown_80D408C[]; +extern const FileArchive gTitleMenuFileArchive; +extern const FileArchive gMonsterFileArchive; +extern const u8 gUnknown_80D40E4[]; +extern const u8 gUnknown_80D40EC[]; extern const DungeonPos gUnknown_80D40C4[]; extern const u8 gUnknown_80D40FC[]; extern const u8 gUnknown_80D4104[]; extern const u8 gUnknown_80D4120[]; extern const u8 gUnknown_80D4124[]; +extern const u8 gUnknown_80D40F4[]; +extern const u8 gUnknown_80D407C[]; +extern const u8 gUnknown_80D4080[]; +extern const u8 gUnknown_80D4074[]; +extern const DungeonPos gDungeonCoordinates[]; + +void sub_8010960(void); + +void sub_8010A88(bool8 a0) +{ + s32 i; + unkStruct_2039DB0 var_2C; + DungeonPos pos; + + sub_8004E8C(&var_2C); + var_2C.unk4 = 0xF3FF; + var_2C.unkA = 0x800; + pos = gUnknown_203B0E8->unk52D8; + RunAxAnimationFrame(&gUnknown_203B0E8->unk5114); + if (a0) { + DoAxFrame_800558C(&gUnknown_203B0E8->unk5114, gUnknown_203B0E8->unk52DC - pos.x, gUnknown_203B0E8->unk52DE - pos.y, 3, gUnknown_203B0E8->unk52D4, &var_2C); + } + + for (i = 0; i < 64; i++) { + struct UnkStruct_Sub1 *structPtr = &gUnknown_203B0E8->unk0[i]; + if (structPtr->unk0) { + axdata *axPtr = &structPtr->unk8; + + RunAxAnimationFrame(axPtr); + if (a0) { + DoAxFrame_800558C(axPtr, structPtr->unk4.x - pos.x, structPtr->unk4.y - pos.y, 1, 0, &var_2C); + } + } + } +} + +void sub_8010B74(DungeonLocation *dungLocation) +{ + const s32 x = 12; + UnkTextStruct3 spTxtStruct = { + .a0 = { + [0] = { + .unk4 = 3, + .pos = {x, 2}, + .unkC = 16, + .unkE = 2, + .unk10 = 2, + }, + [1] = {.unk4 = 3}, + [2] = {.unk4 = 3}, + [3] = {.unk4 = 3}, + } + }; + + if (gUnknown_203B0E8->unk52DE - gUnknown_203B0E8->unk52D8.y <= 80) { + spTxtStruct.a0[0].pos.y = 17; + } + else { + spTxtStruct.a0[0].pos.y = 1; + } + + xxx_call_save_unk_text_struct_800641C(&spTxtStruct, TRUE, TRUE); + sub_80073B8(0); + CopyDungeonName1toBuffer(gFormatBuffer_Monsters[0], dungLocation); + PrintFormattedStringOnWindow(12, 2, gUnknown_80D4074, 0, '\0'); + sub_80073E0(0); +} + +void sub_8010C10(const u8 *text) +{ + s32 i, a; + CreateMenuDialogueBoxAndPortrait(text, NULL, 0, NULL, NULL, 3, 0, NULL, 0x301); + do { + DrawDialogueBoxString(); + sub_8010960(); + } while (sub_80144A4(&a) != 0); + + for (i = 0; i < 10; i++) { + sub_8010960(); + } +} + +bool8 sub_8010C58(u8 *str) +{ + s32 r2, i; + MenuInputStruct menuInput; + + r2 = 0; + for (i = 0; str[i] != '\0'; i++) { + if (str[i] == '\n') { + r2 += 12; + } + } + r2 += 11; + r2 /= 8; + + gUnknown_203B0EC.a0[0].pos.y = 19 - r2; + gUnknown_203B0EC.a0[0].unk10 = r2; + gUnknown_203B0EC.a0[0].unkE = r2; + gUnknown_203B0EC.a0[1].pos.y = 14 - r2; + xxx_call_save_unk_text_struct_800641C(&gUnknown_203B0EC, TRUE, TRUE); + sub_80073B8(0); + PrintFormattedStringOnWindow(4, 0, str, 0, '\0'); + sub_80073E0(0); + sub_80073B8(1); + PrintFormattedStringOnWindow(10, 0, gUnknown_80D407C, 1, '\0'); + PrintFormattedStringOnWindow(10, 12, gUnknown_80D4080, 1, '\0'); + sub_80073E0(1); + + menuInput.menuIndex = 1; + menuInput.unk1A = 2; + menuInput.unk1C = 2; + menuInput.unk1E = 0; + menuInput.unk20 = 0; + menuInput.unk4 = 0; + menuInput.unk6 = 0; + menuInput.unk0 = 1; + menuInput.unkC = 0; + menuInput.unkE = 0; + menuInput.unk14.x = 0; + menuInput.unk14.y = 0; + menuInput.unk8.x = 8; + menuInput.unk8.y = 8; + sub_80137B0(&menuInput, 24); + sub_801317C(&menuInput.unk28); + while (1) { + AddMenuCursorSprite(&menuInput); + sub_8010960(); + if (gRealInputs.repeated & DPAD_DOWN) { + MoveMenuCursorDown(&menuInput); + PlayCursorUpDownSoundEffect(); + } + if (gRealInputs.repeated & DPAD_UP) { + MoveMenuCursorUp(&menuInput); + PlayCursorUpDownSoundEffect(); + } + if ((gRealInputs.pressed & A_BUTTON) || menuInput.unk28.a_button) { + PlayAcceptSoundEffect(); + break; + } + } + + if (menuInput.menuIndex == 0) { + return TRUE; + } + else { + return FALSE; + } +} + +void sub_8010D8C(u8 id, DungeonPos *pos) +{ + pos->x = gDungeonCoordinates[id].x; + pos->y = gDungeonCoordinates[id].y; +} + +void sub_8010DA4(void) +{ + u8 filename[0xC]; + s32 i, size; + + PokemonStruct1 *pokeStruct = GetPlayerPokemonStruct(); + OpenedFile *file = OpenFileAndGetFileDataPtr(gUnknown_80D408C[0], &gTitleMenuFileArchive); + OpenedFile *file2 = OpenFileAndGetFileDataPtr(gUnknown_80D408C[1], &gTitleMenuFileArchive); + + sprintf(filename, gUnknown_80D40E4, pokeStruct->speciesNum); + gUnknown_203B0E4->unk0[3] = OpenFileAndGetFileDataPtr(filename, &gMonsterFileArchive); + gUnknown_203B0E4->unk0[2] = OpenFileAndGetFileDataPtr(gUnknown_80D40EC, &gTitleMenuFileArchive); + gUnknown_203B0E4->unk0[4] = OpenFileAndGetFileDataPtr(gUnknown_80D408C[2], &gTitleMenuFileArchive); + gUnknown_203B0E4->unk0[1] = OpenFileAndGetFileDataPtr(gUnknown_80D40F4, &gMonsterFileArchive); + gUnknown_203B0E4->unk0[0] = OpenFileAndGetFileDataPtr(gUnknown_80D408C[3], &gTitleMenuFileArchive); + gUnknown_203B0E4->unk4DD0 = GetPokemonOverworldPalette(pokeStruct->speciesNum, 0); + + sub_8005610(gUnknown_203B0E4->unk0[2], 0x40, 0x1F, 0); + + DecompressATGlobalFile((u32 *)(VRAM + 0x8000), 0x0, file); + sub_8004AA4(gUnknown_203B0E4->unk4C4C, gUnknown_203B0E4->unk0[4], 0x10); + size = 0x4000; + DecompressATFile((u8 *) &gUnknown_203B0E4->unk14, size, file2); + + gUnknown_203B0E4->unk4DCC = 0; + gUnknown_203B0E4->unk4DD4.x = 0; + gUnknown_203B0E4->unk4DD4.y = 0; + + for (i = 0; i < 8; i++) { + ResetFlags(&gUnknown_203B0E4->unk4A30[i]); + } + + CloseFile(file); + CloseFile(file2); + xxx_call_save_unk_text_struct_800641C(NULL, 1, 1); +} void sub_8010EF0(void) { From 00f3dbfccc5ffb3063d5b7950c10ee7e0dc0a7db Mon Sep 17 00:00:00 2001 From: DizzyEggg Date: Sun, 23 Feb 2025 12:48:06 +0100 Subject: [PATCH 20/40] decompile code_800F990 --- asm/code_800F990.s | 2126 ---------------------------------------- include/code_8004AA0.h | 24 +- ld_script.txt | 1 - src/code_8010F28.c | 828 +++++++++++++++- 4 files changed, 806 insertions(+), 2173 deletions(-) delete mode 100644 asm/code_800F990.s diff --git a/asm/code_800F990.s b/asm/code_800F990.s deleted file mode 100644 index d0eed6f5f..000000000 --- a/asm/code_800F990.s +++ /dev/null @@ -1,2126 +0,0 @@ - #include "asm/constants/gba_constants.inc" - #include "asm/macros.inc" - - .syntax unified - - .text - - thumb_func_start sub_800F990 -sub_800F990: - push {r4-r7,lr} - sub sp, 0x8 - adds r6, r0, 0 - ldr r4, _0800FA20 - ldr r0, [r6, 0x8] - str r0, [r4] - ldr r1, _0800FA24 - ldr r2, _0800FA28 - adds r0, r2, 0 - strh r0, [r1] - movs r0, 0 - movs r1, 0x14 - bl sub_80095CC - movs r0, 0x2 - bl UpdateFadeInTile - ldr r1, [r4] - ldr r0, _0800FA2C - adds r2, r1, r0 - ldr r0, _0800FA30 - str r0, [r2] - ldrb r0, [r6, 0x5] - ldr r2, _0800FA34 - adds r1, r2 - movs r5, 0 - strb r0, [r1] - bl sub_8010DA4 - ldr r0, [r4] - ldr r2, _0800FA38 - adds r1, r0, r2 - movs r2, 0x1 - negs r2, r2 - str r2, [r1] - ldr r1, _0800FA3C - adds r0, r1 - str r2, [r0] - ldrb r0, [r6, 0x4] - bl sub_800FC5C - ldr r0, [r4] - ldr r2, _0800FA40 - adds r1, r0, r2 - adds r2, 0x4 - adds r0, r2 - ldr r0, [r0] - str r0, [r1] - ldr r1, _0800FA44 - movs r0, 0xFF - strb r0, [r1] - ldr r0, _0800FA48 - strb r5, [r0] - bl sub_8011760 - add r7, sp, 0x4 -_0800FA00: - movs r5, 0 - str r5, [sp] - str r5, [sp, 0x4] - mov r0, sp - adds r1, r7, 0 - bl sub_800FAA8 - cmp r0, 0x1 - bne _0800FA4C - ldr r0, [sp] - ldr r1, [sp, 0x4] - movs r2, 0x32 - bl sub_80100C0 - b _0800FA00 - .align 2, 0 -_0800FA20: .4byte gUnknown_203B0E4 -_0800FA24: .4byte gUnknown_2026E4E -_0800FA28: .4byte 0x00001010 -_0800FA2C: .4byte 0x00004014 -_0800FA30: .4byte gFriendAreaLocations -_0800FA34: .4byte 0x00004a2c -_0800FA38: .4byte 0x00004a28 -_0800FA3C: .4byte 0x00004a1c -_0800FA40: .4byte 0x00004a20 -_0800FA44: .4byte gUnknown_202DE18 -_0800FA48: .4byte gUnknown_202DE19 -_0800FA4C: - cmp r0, 0x2 - bne _0800FA6C - bl sub_800FB6C - lsls r0, 24 - cmp r0, 0 - beq _0800FA00 - ldr r0, [r4] - ldr r1, _0800FA68 - adds r0, r1 - ldrb r0, [r0] - strb r0, [r6, 0xC] - b _0800FA92 - .align 2, 0 -_0800FA68: .4byte 0x00004df4 -_0800FA6C: - cmp r0, 0x3 - bne _0800FA00 - ldr r0, [r4] - ldr r2, _0800FA8C - adds r1, r0, r2 - adds r2, 0x8 - adds r0, r2 - ldr r1, [r1] - ldr r0, [r0] - cmp r1, r0 - beq _0800FA90 - movs r1, 0 - movs r2, 0xA - bl sub_80100C0 - b _0800FA00 - .align 2, 0 -_0800FA8C: .4byte 0x00004a18 -_0800FA90: - strb r5, [r6, 0xC] -_0800FA92: - bl sub_800FC28 - bl sub_8010EF0 - bl nullsub_16 - add sp, 0x8 - pop {r4-r7} - pop {r0} - bx r0 - thumb_func_end sub_800F990 - - thumb_func_start sub_800FAA8 -sub_800FAA8: - push {r4-r7,lr} - mov r7, r9 - mov r6, r8 - push {r6,r7} - mov r8, r0 - mov r9, r1 - movs r5, 0 - bl sub_8011300 - bl sub_8011398 -_0800FABE: - bl sub_801169C - bl sub_8010014 - lsls r0, 24 - lsrs r3, r0, 24 - cmp r3, 0xFF - beq _0800FB1C - ldr r6, _0800FB50 - ldr r2, [r6] - ldr r1, _0800FB54 - adds r0, r2, r1 - ldr r4, [r0] - lsls r0, r4, 2 - adds r0, r4 - lsls r0, 4 - adds r0, r2 - lsls r1, r3, 1 - ldr r7, _0800FB58 - adds r0, r7 - adds r1, r0, r1 - movs r7, 0 - ldrsh r0, [r1, r7] - cmp r0, 0 - blt _0800FB1C - adds r1, r0, 0 - lsls r0, r1, 2 - adds r0, r1 - lsls r0, 4 - ldr r7, _0800FB5C - adds r0, r7 - adds r0, r2, r0 - ldrb r0, [r0] - cmp r0, 0 - beq _0800FB1C - movs r5, 0x1 - mov r0, r8 - str r1, [r0] - mov r1, r9 - str r3, [r1] - ldr r1, [r6] - ldr r2, _0800FB60 - adds r0, r1, r2 - str r3, [r0] - ldr r7, _0800FB64 - adds r1, r7 - str r4, [r1] -_0800FB1C: - ldr r4, _0800FB68 - ldrh r1, [r4, 0x2] - movs r0, 0x1 - ands r0, r1 - cmp r0, 0 - beq _0800FB2E - bl PlayAcceptSoundEffect - movs r5, 0x2 -_0800FB2E: - ldrh r1, [r4, 0x2] - movs r0, 0x2 - ands r0, r1 - cmp r0, 0 - beq _0800FB3E - bl PlayCancelSoundEffect - movs r5, 0x3 -_0800FB3E: - cmp r5, 0 - beq _0800FABE - adds r0, r5, 0 - pop {r3,r4} - mov r8, r3 - mov r9, r4 - pop {r4-r7} - pop {r1} - bx r1 - .align 2, 0 -_0800FB50: .4byte gUnknown_203B0E4 -_0800FB54: .4byte 0x00004a18 -_0800FB58: .4byte 0x0000401a -_0800FB5C: .4byte 0x00004018 -_0800FB60: .4byte 0x00004a28 -_0800FB64: .4byte 0x00004a1c -_0800FB68: .4byte gRealInputs - thumb_func_end sub_800FAA8 - - thumb_func_start sub_800FB6C -sub_800FB6C: - push {r4-r7,lr} - mov r7, r8 - push {r7} - movs r0, 0 - mov r8, r0 - bl sub_8011494 - ldr r7, _0800FBE8 - ldr r6, _0800FBEC -_0800FB7E: - ldr r5, [r7] - ldr r1, _0800FBF0 - adds r4, r5, r1 - adds r0, r4, 0 - bl AddMenuCursorSprite - bl sub_801169C - ldrh r1, [r6, 0x4] - movs r0, 0x80 - ands r0, r1 - cmp r0, 0 - beq _0800FBA2 - adds r0, r4, 0 - bl MoveMenuCursorDown - bl PlayCursorUpDownSoundEffect -_0800FBA2: - ldrh r1, [r6, 0x4] - movs r0, 0x40 - ands r0, r1 - cmp r0, 0 - beq _0800FBB6 - adds r0, r4, 0 - bl MoveMenuCursorUp - bl PlayCursorUpDownSoundEffect -_0800FBB6: - ldrh r1, [r6, 0x2] - movs r0, 0x1 - ands r0, r1 - cmp r0, 0 - bne _0800FBCA - ldr r2, _0800FBF4 - adds r0, r5, r2 - ldrb r0, [r0] - cmp r0, 0 - beq _0800FC00 -_0800FBCA: - bl PlayAcceptSoundEffect - ldr r1, [r7] - movs r3, 0x18 - ldrsh r2, [r4, r3] - ldr r3, _0800FBF8 - adds r0, r1, r3 - adds r0, r2 - ldrb r0, [r0] - ldr r2, _0800FBFC - adds r1, r2 - strb r0, [r1] - movs r3, 0x1 - mov r8, r3 - b _0800FC16 - .align 2, 0 -_0800FBE8: .4byte gUnknown_203B0E4 -_0800FBEC: .4byte gRealInputs -_0800FBF0: .4byte 0x00004dfc -_0800FBF4: .4byte 0x00004e25 -_0800FBF8: .4byte 0x00004dec -_0800FBFC: .4byte 0x00004df4 -_0800FC00: - movs r0, 0x2 - ands r0, r1 - cmp r0, 0 - bne _0800FC12 - ldr r1, _0800FC24 - adds r0, r5, r1 - ldrb r0, [r0] - cmp r0, 0 - beq _0800FB7E -_0800FC12: - bl PlayCancelSoundEffect -_0800FC16: - mov r0, r8 - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r1} - bx r1 - .align 2, 0 -_0800FC24: .4byte 0x00004e26 - thumb_func_end sub_800FB6C - - thumb_func_start sub_800FC28 -sub_800FC28: - push {r4,r5,lr} - bl sub_8011168 - bl sub_80117AC - ldr r5, _0800FC54 - movs r4, 0x3B -_0800FC36: - ldr r1, [r5] - ldr r0, _0800FC58 - adds r1, r0 - ldr r0, [r1] - subs r0, 0x2 - str r0, [r1] - bl sub_801169C - subs r4, 0x1 - cmp r4, 0 - bge _0800FC36 - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_0800FC54: .4byte gUnknown_203B0E4 -_0800FC58: .4byte 0x00004dcc - thumb_func_end sub_800FC28 - - thumb_func_start sub_800FC5C -sub_800FC5C: - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - sub sp, 0x40 - lsls r0, 24 - lsrs r0, 24 - str r0, [sp, 0x14] - movs r0, 0 - str r0, [sp, 0x18] - mov r8, r0 - ldr r1, _0800FD1C - mov r9, r1 - ldr r2, _0800FD20 - str r2, [sp, 0x38] -_0800FC7C: - movs r7, 0 - movs r3, 0 - mov r10, r3 - mov r4, r9 - ldr r0, [r4] - ldr r1, [sp, 0x38] - adds r6, r0, r1 - ldr r2, _0800FD24 - adds r0, r2 - mov r3, r8 - lsls r1, r3, 5 - ldr r0, [r0] - adds r2, r0, r1 - adds r1, r6, 0x2 - movs r5, 0x7 -_0800FC9A: - ldrh r0, [r1] - ldr r4, _0800FD28 - orrs r0, r4 - strh r0, [r1] - adds r1, 0x2 - subs r5, 0x1 - cmp r5, 0 - bge _0800FC9A - movs r5, 0 - adds r1, r2, 0 - adds r1, 0x8 -_0800FCB0: - adds r4, r1, r5 - ldrb r0, [r4] - str r1, [sp, 0x3C] - bl sub_800FFE8 - lsls r0, 24 - ldr r1, [sp, 0x3C] - cmp r0, 0 - beq _0800FCE4 - ldrb r0, [r4] - ldr r7, [sp, 0x14] - cmp r0, r7 - bne _0800FCCE - mov r2, r8 - str r2, [sp, 0x18] -_0800FCCE: - cmp r0, 0 - bne _0800FCE2 - mov r3, r9 - ldr r0, [r3] - ldr r4, _0800FD2C - adds r0, r4 - mov r7, r8 - str r7, [r0] - movs r0, 0x1 - mov r10, r0 -_0800FCE2: - movs r7, 0x1 -_0800FCE4: - adds r5, 0x1 - cmp r5, 0x7 - ble _0800FCB0 - cmp r7, 0 - beq _0800FD30 - movs r5, 0 - movs r4, 0x1 - strb r4, [r6] - adds r3, r6, 0 - adds r3, 0x14 - mov r1, r9 - ldr r0, [r1] - ldr r1, [r0, 0x8] - movs r2, 0x1 - mov r7, r10 - cmp r7, 0 - beq _0800FD08 - movs r2, 0xC -_0800FD08: - movs r0, 0x40 - str r0, [sp] - str r5, [sp, 0x4] - str r4, [sp, 0x8] - adds r0, r3, 0 - movs r3, 0 - bl AxResInitFile - b _0800FD32 - .align 2, 0 -_0800FD1C: .4byte gUnknown_203B0E4 -_0800FD20: .4byte 0x00004018 -_0800FD24: .4byte 0x00004014 -_0800FD28: .4byte 0x0000ffff -_0800FD2C: .4byte 0x00004a24 -_0800FD30: - strb r7, [r6] -_0800FD32: - ldr r0, [sp, 0x38] - adds r0, 0x50 - str r0, [sp, 0x38] - movs r1, 0x1 - add r8, r1 - mov r2, r8 - cmp r2, 0x1F - ble _0800FC7C - movs r3, 0 - mov r8, r3 - ldr r4, [sp, 0x18] - lsls r4, 5 - str r4, [sp, 0x34] -_0800FD4C: - mov r7, r8 - lsls r0, r7, 2 - add r0, r8 - lsls r0, 4 - ldr r1, _0800FEDC - adds r0, r1 - ldr r2, _0800FEE0 - ldr r1, [r2] - adds r3, r1, r0 - ldr r4, _0800FEE4 - adds r1, r4 - lsls r2, r7, 5 - ldr r0, [r1] - adds r0, r2 - str r0, [sp, 0x1C] - ldrb r0, [r3] - adds r7, 0x1 - str r7, [sp, 0x28] - cmp r0, 0 - bne _0800FD76 - b _0800FF56 -_0800FD76: - movs r5, 0 - adds r3, 0x2 - mov r10, r3 - ldr r4, [sp, 0x1C] - adds r4, 0x10 - ldr r6, _0800FEE0 -_0800FD82: - lsls r0, r5, 1 - mov r1, r10 - adds r2, r1, r0 - ldr r1, _0800FEE8 - strh r1, [r2] - adds r1, r4, r0 - ldrh r3, [r1] - movs r7, 0 - ldrsh r0, [r1, r7] - cmp r0, 0 - blt _0800FDB0 - adds r1, r0, 0 - lsls r0, r1, 2 - adds r0, r1 - lsls r0, 4 - ldr r1, _0800FEDC - adds r0, r1 - ldr r1, [r6] - adds r1, r0 - ldrb r0, [r1] - cmp r0, 0 - beq _0800FDB0 - strh r3, [r2] -_0800FDB0: - adds r5, 0x1 - cmp r5, 0x7 - ble _0800FD82 - ldr r3, _0800FEE0 - ldr r2, [r3] - ldr r4, _0800FEEC - adds r0, r2, r4 - ldr r1, [r0] - ldr r7, _0800FEF0 - adds r0, r2, r7 - ldr r3, [r0] - cmp r1, 0 - blt _0800FDEC - cmp r3, 0 - blt _0800FDEC - lsls r0, r3, 2 - adds r0, r3 - lsls r0, 4 - ldr r4, _0800FEDC - adds r0, r4 - adds r0, r2, r0 - ldrb r0, [r0] - cmp r0, 0 - beq _0800FDEC - adds r1, 0x4 - movs r0, 0x7 - ands r1, r0 - lsls r0, r1, 1 - add r0, r10 - strh r3, [r0] -_0800FDEC: - movs r5, 0 -_0800FDEE: - movs r7, 0x1 - negs r7, r7 - str r7, [sp, 0x20] - ldr r0, _0800FEF4 - str r0, [sp, 0x24] - lsls r0, r5, 1 - mov r2, r10 - adds r1, r2, r0 - movs r3, 0 - ldrsh r1, [r1, r3] - str r0, [sp, 0x30] - adds r4, r5, 0x1 - str r4, [sp, 0x2C] - cmp r1, 0 - blt _0800FE0E - b _0800FF4E -_0800FE0E: - movs r6, 0 -_0800FE10: - lsls r0, r6, 2 - adds r0, r6 - lsls r0, 4 - ldr r7, _0800FEDC - adds r0, r7 - ldr r2, _0800FEE0 - ldr r1, [r2] - adds r3, r1, r0 - ldr r4, _0800FEE4 - adds r1, r4 - lsls r2, r6, 5 - ldr r0, [r1] - adds r2, r0, r2 - adds r7, r6, 0x1 - mov r9, r7 - cmp r6, r8 - bne _0800FE34 - b _0800FF3A -_0800FE34: - ldrb r0, [r3] - cmp r0, 0 - bne _0800FE3C - b _0800FF3A -_0800FE3C: - movs r1, 0x4 - ldrsh r0, [r2, r1] - ldr r3, [sp, 0x1C] - movs r4, 0x4 - ldrsh r1, [r3, r4] - subs r0, r1 - lsls r0, 8 - str r0, [sp, 0xC] - movs r7, 0x6 - ldrsh r0, [r2, r7] - movs r2, 0x6 - ldrsh r1, [r3, r2] - subs r0, r1 - lsls r0, 8 - str r0, [sp, 0x10] - add r0, sp, 0xC - bl Atan2_4096 - adds r2, r0, 0 - ldr r0, [sp, 0xC] - cmp r0, 0 - bge _0800FE6A - adds r0, 0x3 -_0800FE6A: - asrs r1, r0, 2 - str r1, [sp, 0xC] - ldr r0, [sp, 0x10] - cmp r0, 0 - bge _0800FE76 - adds r0, 0x3 -_0800FE76: - asrs r0, 2 - str r0, [sp, 0x10] - cmp r1, 0 - bge _0800FE80 - adds r1, 0xFF -_0800FE80: - asrs r1, 8 - str r1, [sp, 0xC] - cmp r0, 0 - bge _0800FE8A - adds r0, 0xFF -_0800FE8A: - asrs r0, 8 - str r0, [sp, 0x10] - cmp r1, 0 - bne _0800FE96 - movs r0, 0x1 - str r0, [sp, 0xC] -_0800FE96: - ldr r0, [sp, 0x10] - cmp r0, 0 - bne _0800FEA0 - movs r0, 0x1 - str r0, [sp, 0x10] -_0800FEA0: - movs r7, 0 - cmp r5, 0x2 - bne _0800FF04 - ldr r1, _0800FEF8 - ldr r4, _0800FEFC - movs r3, 0x8 - cmp r2, r1 - ble _0800FEB8 - ldr r0, _0800FF00 -_0800FEB2: - adds r2, r0 - cmp r2, r1 - bgt _0800FEB2 -_0800FEB8: - cmp r2, 0 - bge _0800FEC6 - movs r0, 0x80 - lsls r0, 5 -_0800FEC0: - adds r2, r0 - cmp r2, 0 - blt _0800FEC0 -_0800FEC6: - adds r1, r3, r4 - movs r3, 0 - ldrsh r0, [r1, r3] - cmp r0, r2 - blt _0800FF20 - movs r4, 0x2 - ldrsh r0, [r1, r4] - cmp r0, r2 - ble _0800FF1C - b _0800FF20 - .align 2, 0 -_0800FEDC: .4byte 0x00004018 -_0800FEE0: .4byte gUnknown_203B0E4 -_0800FEE4: .4byte 0x00004014 -_0800FEE8: .4byte 0x0000ffff -_0800FEEC: .4byte 0x00004a28 -_0800FEF0: .4byte 0x00004a1c -_0800FEF4: .4byte 0x000f423f -_0800FEF8: .4byte 0x00000fff -_0800FEFC: .4byte gUnknown_80D3EBC -_0800FF00: .4byte 0xfffff000 -_0800FF04: - ldr r0, _0800FFC8 - lsls r1, r5, 2 - adds r1, r0 - movs r3, 0 - ldrsh r0, [r1, r3] - cmp r0, r2 - bgt _0800FF1C - movs r4, 0x2 - ldrsh r0, [r1, r4] - cmp r0, r2 - ble _0800FF1C - movs r7, 0x1 -_0800FF1C: - cmp r7, 0 - beq _0800FF3A -_0800FF20: - ldr r0, [sp, 0xC] - adds r1, r0, 0 - muls r1, r0 - ldr r0, [sp, 0x10] - adds r7, r0, 0 - muls r7, r0 - adds r0, r7, 0 - adds r1, r0 - ldr r0, [sp, 0x24] - cmp r0, r1 - ble _0800FF3A - str r1, [sp, 0x24] - str r6, [sp, 0x20] -_0800FF3A: - mov r6, r9 - cmp r6, 0x1F - bgt _0800FF42 - b _0800FE10 -_0800FF42: - ldr r1, [sp, 0x20] - cmp r1, 0 - blt _0800FF4E - ldr r0, [sp, 0x30] - add r0, r10 - strh r1, [r0] -_0800FF4E: - ldr r5, [sp, 0x2C] - cmp r5, 0x7 - bgt _0800FF56 - b _0800FDEE -_0800FF56: - ldr r3, [sp, 0x28] - mov r8, r3 - cmp r3, 0x1F - bgt _0800FF60 - b _0800FD4C -_0800FF60: - ldr r4, _0800FFCC - ldr r1, [r4] - ldr r7, _0800FFD0 - adds r0, r1, r7 - ldr r1, [r1, 0xC] - movs r2, 0 - str r2, [sp] - str r2, [sp, 0x4] - movs r2, 0x1 - str r2, [sp, 0x8] - movs r2, 0 - movs r3, 0 - bl AxResInitFile - ldr r2, [r4] - ldr r1, _0800FFD4 - adds r0, r2, r1 - ldr r3, [sp, 0x18] - str r3, [r0] - ldr r4, _0800FFD8 - adds r1, r2, r4 - ldr r7, _0800FFDC - adds r0, r2, r7 - ldr r0, [r0] - ldr r3, [sp, 0x34] - adds r0, r3, r0 - ldr r0, [r0, 0x4] - str r0, [r1] - ldrh r0, [r1] - subs r0, 0x78 - subs r4, 0x4 - adds r1, r2, r4 - strh r0, [r1] - ldr r7, _0800FFE0 - adds r0, r2, r7 - ldrh r0, [r0] - subs r0, 0x50 - ldr r1, _0800FFE4 - adds r2, r1 - strh r0, [r2] - bl sub_8011240 - bl sub_80110B0 - add sp, 0x40 - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_0800FFC8: .4byte gUnknown_80D3EBC -_0800FFCC: .4byte gUnknown_203B0E4 -_0800FFD0: .4byte 0x00004c10 -_0800FFD4: .4byte 0x00004a18 -_0800FFD8: .4byte 0x00004dd8 -_0800FFDC: .4byte 0x00004014 -_0800FFE0: .4byte 0x00004dda -_0800FFE4: .4byte 0x00004dd6 - thumb_func_end sub_800FC5C - - thumb_func_start sub_800FFE8 -sub_800FFE8: - push {lr} - lsls r0, 24 - lsrs r0, 24 - adds r1, r0, 0 - cmp r0, 0x39 - bhi _08010004 - cmp r0, 0 - beq _0801000C - ldr r0, _08010008 - ldr r0, [r0] - adds r0, r1 - ldrb r0, [r0] - cmp r0, 0 - bne _0801000C -_08010004: - movs r0, 0 - b _0801000E - .align 2, 0 -_08010008: .4byte gFriendAreas -_0801000C: - movs r0, 0x1 -_0801000E: - pop {r1} - bx r1 - thumb_func_end sub_800FFE8 - - thumb_func_start sub_8010014 -sub_8010014: - push {r4,r5,lr} - sub sp, 0x20 - ldr r1, _08010094 - mov r0, sp - movs r2, 0x10 - bl memcpy - add r4, sp, 0x10 - ldr r1, _08010098 - adds r0, r4, 0 - movs r2, 0x10 - bl memcpy - movs r2, 0 - ldr r0, _0801009C - ldrh r3, [r0] - movs r0, 0x80 - lsls r0, 1 - ands r0, r3 - mov r5, sp - cmp r0, 0 - beq _08010042 - adds r5, r4, 0 -_08010042: - adds r1, r3, 0 - movs r0, 0x80 - ands r0, r1 - cmp r0, 0 - beq _0801004E - movs r2, 0x1 -_0801004E: - movs r0, 0x10 - ands r0, r1 - cmp r0, 0 - beq _0801005A - movs r0, 0x2 - orrs r2, r0 -_0801005A: - movs r0, 0x40 - ands r0, r1 - cmp r0, 0 - beq _08010066 - movs r0, 0x4 - orrs r2, r0 -_08010066: - movs r0, 0x20 - ands r0, r3 - cmp r0, 0 - beq _08010072 - movs r0, 0x8 - orrs r2, r0 -_08010072: - ldr r3, _080100A0 - adds r2, r5, r2 - ldrb r1, [r2] - ldrb r0, [r3] - cmp r0, r1 - bne _080100A8 - ldr r1, _080100A4 - ldrb r0, [r1] - adds r0, 0x1 - strb r0, [r1] - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x2 - bls _080100B0 - ldrb r0, [r2] - b _080100B2 - .align 2, 0 -_08010094: .4byte gUnknown_80D3EDC -_08010098: .4byte gUnknown_80D3EEC -_0801009C: .4byte gRealInputs -_080100A0: .4byte gUnknown_202DE18 -_080100A4: .4byte gUnknown_202DE19 -_080100A8: - strb r1, [r3] - ldr r1, _080100BC - movs r0, 0 - strb r0, [r1] -_080100B0: - movs r0, 0xFF -_080100B2: - add sp, 0x20 - pop {r4,r5} - pop {r1} - bx r1 - .align 2, 0 -_080100BC: .4byte gUnknown_202DE19 - thumb_func_end sub_8010014 - - thumb_func_start sub_80100C0 -sub_80100C0: - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - sub sp, 0x18 - str r0, [sp, 0xC] - mov r8, r2 - ldr r4, _080101E0 - ldr r2, [r4] - ldr r3, _080101E4 - adds r0, r2, r3 - ldr r2, [r2, 0xC] - movs r3, 0x7 - ands r3, r1 - movs r1, 0 - str r1, [sp] - str r1, [sp, 0x4] - movs r1, 0x1 - str r1, [sp, 0x8] - adds r1, r2, 0 - movs r2, 0 - bl AxResInitFile - bl sub_8011168 - ldr r0, [r4] - ldr r2, _080101E8 - adds r1, r0, r2 - ldr r1, [r1] - ldr r3, _080101EC - adds r0, r3 - ldr r2, [r0] - lsls r1, 5 - adds r1, r2 - ldr r1, [r1, 0x4] - mov r9, r1 - ldr r1, [sp, 0xC] - lsls r0, r1, 5 - adds r0, r2 - ldr r0, [r0, 0x4] - str r0, [sp, 0x10] - bl PlayCursorUpDownSoundEffect - movs r7, 0 - cmp r7, r8 - bge _0801018A - ldr r2, [sp, 0x10] - lsls r1, r2, 16 - asrs r1, 16 - mov r3, r9 - lsls r0, r3, 16 - asrs r0, 16 - subs r1, r0 - str r1, [sp, 0x14] - movs r0, 0 - mov r10, r0 -_08010132: - ldr r0, _080101E0 - ldr r6, [r0] - lsls r5, r7, 8 - mov r0, r10 - mov r1, r8 - bl __divsi3 - cmp r0, 0 - bge _08010146 - adds r0, 0xFF -_08010146: - asrs r0, 8 - add r0, r9 - ldr r2, _080101F0 - adds r1, r6, r2 - strh r0, [r1] - ldr r3, [sp, 0x10] - asrs r0, r3, 16 - mov r1, r9 - asrs r4, r1, 16 - subs r0, r4 - muls r0, r5 - mov r1, r8 - bl __divsi3 - cmp r0, 0 - bge _08010168 - adds r0, 0xFF -_08010168: - asrs r0, 8 - adds r0, r4 - ldr r2, _080101F4 - adds r1, r6, r2 - strh r0, [r1] - bl sub_8011240 - bl sub_80110B0 - bl sub_801169C - ldr r3, [sp, 0x14] - lsls r0, r3, 8 - add r10, r0 - adds r7, 0x1 - cmp r7, r8 - blt _08010132 -_0801018A: - ldr r4, _080101E0 - ldr r0, [r4] - ldr r2, _080101E8 - adds r1, r0, r2 - ldr r3, [sp, 0xC] - str r3, [r1] - ldr r1, _080101F0 - adds r2, r0, r1 - ldr r3, _080101EC - adds r0, r3 - ldr r1, [r0] - ldr r3, [sp, 0xC] - lsls r0, r3, 5 - adds r0, r1 - ldr r0, [r0, 0x4] - str r0, [r2] - bl sub_8011240 - bl sub_80110B0 - bl sub_801169C - ldr r1, [r4] - ldr r2, _080101E4 - adds r0, r1, r2 - ldr r1, [r1, 0xC] - movs r2, 0 - str r2, [sp] - str r2, [sp, 0x4] - movs r2, 0x1 - str r2, [sp, 0x8] - movs r2, 0 - movs r3, 0 - bl AxResInitFile - add sp, 0x18 - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_080101E0: .4byte gUnknown_203B0E4 -_080101E4: .4byte 0x00004c10 -_080101E8: .4byte 0x00004a18 -_080101EC: .4byte 0x00004014 -_080101F0: .4byte 0x00004dd8 -_080101F4: .4byte 0x00004dda - thumb_func_end sub_80100C0 - - thumb_func_start sub_80101F8 -sub_80101F8: - push {lr} - adds r3, r0, 0 - lsls r1, 24 - lsrs r1, 24 - cmp r1, 0 - bne _08010218 - ldr r0, _08010214 - adds r2, r3, 0 - adds r2, 0x50 - adds r1, r3, 0 - movs r3, 0 - bl FormatString - b _08010220 - .align 2, 0 -_08010214: .4byte gUnknown_80D3EFC -_08010218: - adds r0, r3, 0 - movs r2, 0 - bl WriteFriendAreaName -_08010220: - pop {r0} - bx r0 - thumb_func_end sub_80101F8 - - thumb_func_start sub_8010224 -sub_8010224: - push {r4-r7,lr} - lsls r0, 24 - lsrs r6, r0, 24 - movs r7, 0 - ldr r0, _08010248 - adds r4, r0, 0x4 - adds r5, r0, 0 - adds r5, 0x8 -_08010234: - movs r2, 0 - adds r3, r5, 0 -_08010238: - adds r0, r3, r2 - ldrb r0, [r0] - cmp r0, r6 - bne _0801024C - ldrh r0, [r4] - strh r0, [r1] - ldrh r0, [r4, 0x2] - b _08010260 - .align 2, 0 -_08010248: .4byte gFriendAreaLocations -_0801024C: - adds r2, 0x1 - cmp r2, 0x7 - ble _08010238 - adds r4, 0x20 - adds r5, 0x20 - adds r7, 0x1 - cmp r7, 0x1F - ble _08010234 - movs r0, 0 - strh r0, [r1] -_08010260: - strh r0, [r1, 0x2] - pop {r4-r7} - pop {r0} - bx r0 - thumb_func_end sub_8010224 - - thumb_func_start sub_8010268 -sub_8010268: - push {r4-r6,lr} - ldr r4, _080102D4 - add sp, r4 - adds r5, r0, 0 - ldr r1, _080102D8 - adds r0, 0xB0 - ldr r0, [r0] - str r0, [r1] - ldr r1, _080102DC - ldr r2, _080102E0 - adds r0, r2, 0 - strh r0, [r1] - movs r0, 0 - movs r1, 0x14 - bl sub_80095CC - movs r0, 0x2 - bl UpdateFadeInTile - bl sub_801059C - adds r0, r5, 0x4 - bl sub_8010494 - bl sub_801178C - movs r4, 0x3B -_0801029E: - bl sub_8010960 - subs r4, 0x1 - cmp r4, 0 - bge _0801029E - ldrb r0, [r5, 0x4] - ldrb r1, [r5, 0x8] - bl sub_8010344 - adds r0, r5, 0 - adds r0, 0x8 - bl sub_8010B74 - adds r6, r5, 0 - adds r6, 0x70 - movs r4, 0x3B -_080102BE: - bl sub_8010960 - subs r4, 0x1 - cmp r4, 0 - bge _080102BE - ldrb r0, [r5, 0x14] - cmp r0, 0 - beq _080102E4 - movs r0, 0x20 - ldrsh r1, [r5, r0] - b _080102E6 - .align 2, 0 -_080102D4: .4byte 0xfffffc14 -_080102D8: .4byte gUnknown_203B0E8 -_080102DC: .4byte gUnknown_2026E4E -_080102E0: .4byte 0x00000a06 -_080102E4: - movs r1, 0 -_080102E6: - ldrb r0, [r5, 0x8] - ldrb r3, [r6] - movs r4, 0 - str r4, [sp] - add r2, sp, 0x4 - bl sub_809034C - cmp r0, 0 - beq _0801031C - cmp r0, 0x1 - bne _0801030A - add r0, sp, 0x4 - bl sub_8010C10 - adds r0, r5, 0 - adds r0, 0xB4 - strb r4, [r0] - b _0801032C -_0801030A: - cmp r0, 0x2 - bne _0801032C - add r0, sp, 0x4 - bl sub_8010C58 - lsls r0, 24 - lsrs r1, r0, 24 - cmp r1, 0 - beq _08010326 -_0801031C: - adds r1, r5, 0 - adds r1, 0xB4 - movs r0, 0x1 - strb r0, [r1] - b _0801032C -_08010326: - adds r0, r5, 0 - adds r0, 0xB4 - strb r1, [r0] -_0801032C: - bl sub_801091C - bl sub_801073C - bl nullsub_16 - movs r3, 0xFB - lsls r3, 2 - add sp, r3 - pop {r4-r6} - pop {r0} - bx r0 - thumb_func_end sub_8010268 - - thumb_func_start sub_8010344 -sub_8010344: - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - sub sp, 0x1C - lsls r0, 24 - lsls r1, 24 - ldr r2, _08010470 - lsrs r0, 22 - adds r0, r2 - lsrs r1, 22 - adds r1, r2 - ldr r2, [r1] - str r2, [sp, 0x14] - movs r3, 0 - ldrsh r5, [r1, r3] - ldr r1, [r0] - mov r9, r1 - movs r2, 0 - ldrsh r6, [r0, r2] - subs r2, r5, r6 - cmp r2, 0 - bge _08010376 - negs r2, r2 -_08010376: - ldr r3, [sp, 0x14] - asrs r0, r3, 16 - mov r3, r9 - asrs r1, r3, 16 - subs r4, r0, r1 - adds r3, r4, 0 - str r0, [sp, 0x18] - mov r8, r1 - cmp r4, 0 - bge _0801038C - negs r4, r4 -_0801038C: - cmp r4, r2 - bge _08010392 - adds r4, r2, 0 -_08010392: - lsrs r0, r4, 31 - adds r0, r4, r0 - asrs r4, r0, 1 - subs r0, r6, r5 - str r0, [sp, 0xC] - str r3, [sp, 0x10] - add r0, sp, 0xC - bl Atan2_4096 - ldr r1, _08010474 - adds r3, r0, r1 - cmp r3, 0 - bge _080103B0 - ldr r2, _08010478 - adds r3, r0, r2 -_080103B0: - asrs r3, 9 - movs r0, 0x7 - ands r3, r0 - ldr r0, _0801047C - ldr r1, [r0] - ldr r2, _08010480 - adds r0, r1, r2 - ldr r2, _08010484 - adds r1, r2 - ldr r1, [r1] - movs r2, 0 - str r2, [sp] - str r2, [sp, 0x4] - movs r2, 0x1 - str r2, [sp, 0x8] - movs r2, 0 - bl AxResInitFile - movs r7, 0 - cmp r7, r4 - bge _08010448 - mov r10, r5 -_080103DC: - ldr r0, _0801047C - ldr r6, [r0] - mov r3, r9 - lsls r0, r3, 16 - asrs r0, 16 - mov r1, r10 - subs r0, r1, r0 - lsls r5, r7, 8 - muls r0, r5 - adds r1, r4, 0 - bl __divsi3 - cmp r0, 0 - bge _080103FA - adds r0, 0xFF -_080103FA: - asrs r0, 8 - add r0, r9 - ldr r2, _08010488 - adds r1, r6, r2 - strh r0, [r1] - ldr r3, [sp, 0x18] - mov r1, r8 - subs r0, r3, r1 - muls r0, r5 - adds r1, r4, 0 - bl __divsi3 - cmp r0, 0 - bge _08010418 - adds r0, 0xFF -_08010418: - asrs r0, 8 - add r0, r8 - ldr r2, _0801048C - adds r1, r6, r2 - strh r0, [r1] - bl sub_8010798 - bl sub_8010858 - bl sub_8010960 - ldr r0, _08010490 - ldrh r1, [r0, 0x2] - movs r0, 0x1 - ands r0, r1 - cmp r0, 0 - bne _08010448 - movs r0, 0x2 - ands r0, r1 - cmp r0, 0 - bne _08010448 - adds r7, 0x1 - cmp r7, r4 - blt _080103DC -_08010448: - ldr r0, _0801047C - ldr r0, [r0] - ldr r3, _08010488 - adds r0, r3 - ldr r1, [sp, 0x14] - str r1, [r0] - bl sub_8010798 - bl sub_8010858 - bl sub_8010960 - 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 -_08010470: .4byte gDungeonCoordinates -_08010474: .4byte 0xfffffc00 -_08010478: .4byte 0xfffffdff -_0801047C: .4byte gUnknown_203B0E8 -_08010480: .4byte 0x00005114 -_08010484: .4byte 0x0000110c -_08010488: .4byte 0x000052dc -_0801048C: .4byte 0x000052de -_08010490: .4byte gRealInputs - thumb_func_end sub_8010344 - - thumb_func_start sub_8010494 -sub_8010494: - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - sub sp, 0xC - mov r9, r0 - movs r5, 0 - ldr r0, _080104C0 - mov r10, r0 - mov r8, r5 -_080104AA: - mov r1, r10 - ldr r0, [r1] - mov r3, r8 - adds r4, r0, r3 - cmp r5, 0x3E - bgt _080104C4 - mov r0, r9 - adds r0, 0x6D - adds r0, r5 - ldrb r0, [r0] - b _080104C6 - .align 2, 0 -_080104C0: .4byte gUnknown_203B0E8 -_080104C4: - movs r0, 0x1 -_080104C6: - cmp r0, 0 - beq _0801050C - movs r7, 0 - movs r6, 0x1 - strb r6, [r4] - adds r3, r4, 0 - adds r3, 0x8 - mov r1, r10 - ldr r0, [r1] - ldr r1, _08010504 - adds r0, r1 - ldr r1, [r0] - movs r2, 0x1 - cmp r5, 0x3F - bne _080104E6 - movs r2, 0xC -_080104E6: - movs r0, 0x40 - str r0, [sp] - str r7, [sp, 0x4] - str r6, [sp, 0x8] - adds r0, r3, 0 - movs r3, 0 - bl AxResInitFile - ldr r1, _08010508 - lsls r0, r5, 2 - adds r0, r1 - ldr r0, [r0] - str r0, [r4, 0x4] - b _0801050E - .align 2, 0 -_08010504: .4byte 0x00001108 -_08010508: .4byte gDungeonCoordinates -_0801050C: - strb r0, [r4] -_0801050E: - movs r3, 0x44 - add r8, r3 - adds r5, 0x1 - cmp r5, 0x3F - ble _080104AA - movs r2, 0 - ldr r4, _0801057C - ldr r1, [r4] - ldr r3, _08010580 - adds r0, r1, r3 - ldr r3, _08010584 - adds r1, r3 - ldr r1, [r1] - str r2, [sp] - str r2, [sp, 0x4] - movs r2, 0x1 - str r2, [sp, 0x8] - movs r2, 0 - movs r3, 0 - bl AxResInitFile - ldr r2, [r4] - ldr r4, _08010588 - adds r3, r2, r4 - ldr r1, _0801058C - mov r4, r9 - ldrb r0, [r4] - lsls r0, 2 - adds r0, r1 - ldr r0, [r0] - str r0, [r3] - ldrh r0, [r3] - subs r0, 0x78 - ldr r3, _08010590 - adds r1, r2, r3 - strh r0, [r1] - ldr r4, _08010594 - adds r0, r2, r4 - ldrh r0, [r0] - subs r0, 0x50 - ldr r1, _08010598 - adds r2, r1 - strh r0, [r2] - bl sub_8010798 - bl sub_8010858 - add sp, 0xC - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_0801057C: .4byte gUnknown_203B0E8 -_08010580: .4byte 0x00005114 -_08010584: .4byte 0x0000110c -_08010588: .4byte 0x000052dc -_0801058C: .4byte gDungeonCoordinates -_08010590: .4byte 0x000052d8 -_08010594: .4byte 0x000052de -_08010598: .4byte 0x000052da - thumb_func_end sub_8010494 - - thumb_func_start sub_801059C -sub_801059C: - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - sub sp, 0x14 - bl GetPlayerPokemonStruct - adds r7, r0, 0 - ldr r6, _080106E4 - ldr r0, [r6] - ldr r5, _080106E8 - adds r1, r5, 0 - bl OpenFileAndGetFileDataPtr - str r0, [sp, 0xC] - ldr r0, [r6, 0x4] - adds r1, r5, 0 - bl OpenFileAndGetFileDataPtr - str r0, [sp, 0x10] - ldr r1, _080106EC - movs r0, 0x8 - ldrsh r2, [r7, r0] - mov r0, sp - bl sprintf - ldr r1, _080106F0 - mov r8, r1 - mov r0, sp - bl OpenFileAndGetFileDataPtr - ldr r4, _080106F4 - ldr r1, [r4] - ldr r2, _080106F8 - adds r1, r2 - str r0, [r1] - ldr r0, _080106FC - adds r1, r5, 0 - bl OpenFileAndGetFileDataPtr - ldr r1, [r4] - ldr r3, _08010700 - mov r9, r3 - add r1, r9 - str r0, [r1] - ldr r0, [r6, 0x8] - adds r1, r5, 0 - bl OpenFileAndGetFileDataPtr - ldr r1, [r4] - ldr r2, _08010704 - mov r10, r2 - add r1, r10 - str r0, [r1] - ldr r0, _08010708 - mov r1, r8 - bl OpenFileAndGetFileDataPtr - ldr r1, [r4] - ldr r3, _0801070C - adds r1, r3 - str r0, [r1] - ldr r0, [r6, 0xC] - adds r1, r5, 0 - bl OpenFileAndGetFileDataPtr - ldr r1, [r4] - movs r2, 0x88 - lsls r2, 5 - adds r1, r2 - str r0, [r1] - movs r3, 0x8 - ldrsh r0, [r7, r3] - movs r1, 0 - bl GetPokemonOverworldPalette - ldr r1, [r4] - ldr r3, _08010710 - adds r2, r1, r3 - lsls r0, 24 - lsrs r0, 24 - str r0, [r2] - add r1, r9 - ldr r0, [r1] - movs r1, 0x40 - movs r2, 0x1F - movs r3, 0 - bl sub_8005610 - ldr r0, _08010714 - movs r1, 0 - ldr r2, [sp, 0xC] - bl DecompressATGlobalFile - ldr r1, [r4] - ldr r2, _08010718 - adds r0, r1, r2 - add r1, r10 - ldr r1, [r1] - movs r2, 0x10 - bl sub_8004AA4 - movs r1, 0x80 - lsls r1, 7 - ldr r0, [r4] - ldr r3, _0801071C - adds r0, r3 - ldr r2, [sp, 0x10] - bl DecompressATFile - ldr r1, [r4] - ldr r2, _08010720 - adds r0, r1, r2 - movs r2, 0 - str r2, [r0] - ldr r3, _08010724 - adds r0, r1, r3 - strh r2, [r0] - ldr r0, _08010728 - adds r1, r0 - strh r2, [r1] - movs r3, 0 - ldr r1, _0801072C - mov r9, r1 - mov r8, r4 - ldr r7, _08010730 - ldr r2, _08010734 - adds r4, r2, 0 - ldr r6, _08010738 - movs r5, 0 -_080106A2: - mov r0, r8 - ldr r2, [r0] - lsls r0, r3, 1 - adds r1, r2, r7 - adds r1, r0 - ldrh r0, [r1] - orrs r0, r4 - strh r0, [r1] - adds r2, r6 - adds r2, r3 - strb r5, [r2] - adds r3, 0x1 - cmp r3, r9 - ble _080106A2 - ldr r0, [sp, 0xC] - bl CloseFile - ldr r0, [sp, 0x10] - bl CloseFile - movs r0, 0 - movs r1, 0x1 - movs r2, 0x1 - bl xxx_call_save_unk_text_struct_800641C - add sp, 0x14 - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_080106E4: .4byte gUnknown_80D4014 -_080106E8: .4byte gTitleMenuFileArchive -_080106EC: .4byte gUnknown_80D405C -_080106F0: .4byte gMonsterFileArchive -_080106F4: .4byte gUnknown_203B0E8 -_080106F8: .4byte 0x0000110c -_080106FC: .4byte gUnknown_80D4064 -_08010700: .4byte 0x00001108 -_08010704: .4byte 0x00001110 -_08010708: .4byte gUnknown_80D406C -_0801070C: .4byte 0x00001104 -_08010710: .4byte 0x000052d4 -_08010714: .4byte 0x06008000 -_08010718: .4byte 0x00005150 -_0801071C: .4byte 0x00001114 -_08010720: .4byte 0x000052d0 -_08010724: .4byte 0x000052d8 -_08010728: .4byte 0x000052da -_0801072C: .4byte 0x000005db -_08010730: .4byte 0x000052e0 -_08010734: .4byte 0x0000ffff -_08010738: .4byte 0x00005e98 - thumb_func_end sub_801059C - - thumb_func_start sub_801073C -sub_801073C: - push {r4,lr} - ldr r4, _08010784 - ldr r0, [r4] - ldr r1, _08010788 - adds r0, r1 - ldr r0, [r0] - bl CloseFile - ldr r0, [r4] - ldr r1, _0801078C - adds r0, r1 - ldr r0, [r0] - bl CloseFile - ldr r0, [r4] - ldr r1, _08010790 - adds r0, r1 - ldr r0, [r0] - bl CloseFile - ldr r0, [r4] - movs r1, 0x88 - lsls r1, 5 - adds r0, r1 - ldr r0, [r0] - bl CloseFile - ldr r0, [r4] - ldr r1, _08010794 - adds r0, r1 - ldr r0, [r0] - bl CloseFile - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_08010784: .4byte gUnknown_203B0E8 -_08010788: .4byte 0x00001110 -_0801078C: .4byte 0x0000110c -_08010790: .4byte 0x00001108 -_08010794: .4byte 0x00001104 - thumb_func_end sub_801073C - - thumb_func_start sub_8010798 -sub_8010798: - push {r4-r6,lr} - ldr r2, _080107BC - ldr r0, [r2] - ldr r1, _080107C0 - adds r3, r0, r1 - movs r4, 0 - ldrsh r1, [r3, r4] - ldr r5, _080107C4 - adds r4, r0, r5 - movs r6, 0 - ldrsh r0, [r4, r6] - subs r1, r0 - adds r5, r2, 0 - cmp r1, 0x2F - bgt _080107C8 - ldrh r0, [r3] - subs r0, 0x30 - b _080107D0 - .align 2, 0 -_080107BC: .4byte gUnknown_203B0E8 -_080107C0: .4byte 0x000052dc -_080107C4: .4byte 0x000052d8 -_080107C8: - cmp r1, 0xC0 - ble _080107D2 - ldrh r0, [r3] - subs r0, 0xC0 -_080107D0: - strh r0, [r4] -_080107D2: - ldr r0, [r5] - ldr r1, _080107F0 - adds r3, r0, r1 - movs r2, 0 - ldrsh r1, [r3, r2] - ldr r4, _080107F4 - adds r2, r0, r4 - movs r6, 0 - ldrsh r0, [r2, r6] - subs r1, r0 - cmp r1, 0x2F - bgt _080107F8 - ldrh r0, [r3] - subs r0, 0x30 - b _08010800 - .align 2, 0 -_080107F0: .4byte 0x000052de -_080107F4: .4byte 0x000052da -_080107F8: - cmp r1, 0x70 - ble _08010802 - ldrh r0, [r3] - subs r0, 0x70 -_08010800: - strh r0, [r2] -_08010802: - adds r3, r5, 0 - ldr r0, [r3] - ldr r4, _08010850 - adds r1, r0, r4 - movs r2, 0 - ldrsh r0, [r1, r2] - cmp r0, 0 - bge _08010816 - movs r0, 0 - strh r0, [r1] -_08010816: - ldr r0, [r3] - ldr r2, _08010854 - adds r1, r0, r2 - movs r6, 0 - ldrsh r0, [r1, r6] - cmp r0, 0 - bge _08010828 - movs r0, 0 - strh r0, [r1] -_08010828: - ldr r0, [r3] - adds r1, r0, r4 - movs r3, 0 - ldrsh r0, [r1, r3] - cmp r0, 0xEF - ble _08010838 - movs r0, 0xF0 - strh r0, [r1] -_08010838: - ldr r0, [r5] - adds r2, r0, r2 - movs r4, 0 - ldrsh r0, [r2, r4] - cmp r0, 0x9F - ble _08010848 - movs r0, 0xA0 - strh r0, [r2] -_08010848: - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_08010850: .4byte 0x000052d8 -_08010854: .4byte 0x000052da - thumb_func_end sub_8010798 - - thumb_func_start sub_8010858 -sub_8010858: - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - sub sp, 0x4 - ldr r0, _080108FC - ldr r1, [r0] - ldr r2, _08010900 - adds r1, r2 - ldrh r1, [r1] - lsls r1, 16 - asrs r6, r1, 19 - adds r2, r6, 0 - movs r3, 0 - mov r10, r0 - movs r0, 0x1F - mov r9, r0 -_0801087C: - mov r1, r10 - ldr r0, [r1] - ldr r1, _08010904 - adds r0, r1 - ldrh r0, [r0] - lsls r0, 16 - asrs r4, r0, 19 - lsls r1, r2, 7 - adds r2, 0x1 - mov r12, r2 - adds r3, 0x1 - mov r8, r3 - movs r7, 0x1E - lsls r0, r4, 1 - adds r5, r0, r1 -_0801089A: - mov r2, r9 - ands r4, r2 - ands r6, r2 - lsls r2, r4, 1 - lsls r0, r6, 6 - adds r2, r0 - ldr r3, _08010908 - adds r3, r2, r3 - str r3, [sp] - mov r0, r10 - ldr r1, [r0] - ldr r3, _0801090C - adds r0, r1, r3 - adds r0, r5 - ldrh r0, [r0] - ldr r3, [sp] - strh r0, [r3] - ldr r0, _08010910 - adds r2, r0 - ldr r3, _08010914 - adds r1, r3 - adds r1, r5 - ldrh r0, [r1] - strh r0, [r2] - adds r5, 0x2 - adds r4, 0x1 - subs r7, 0x1 - cmp r7, 0 - bge _0801089A - mov r2, r12 - adds r6, 0x1 - mov r3, r8 - cmp r3, 0x14 - ble _0801087C - movs r0, 0x2 - bl sub_80098F8 - movs r0, 0x3 - bl sub_80098F8 - 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 -_080108FC: .4byte gUnknown_203B0E8 -_08010900: .4byte 0x000052da -_08010904: .4byte 0x000052d8 -_08010908: .4byte gUnknown_202B038 + 0x1000 -_0801090C: .4byte 0x00003114 -_08010910: .4byte gUnknown_202B038 + 0x1800 -_08010914: .4byte 0x00001114 - thumb_func_end sub_8010858 - - thumb_func_start nullsub_24 -nullsub_24: - bx lr - thumb_func_end nullsub_24 - - thumb_func_start sub_801091C -sub_801091C: - push {r4,r5,lr} - bl sub_8010950 - bl sub_80117C4 - ldr r5, _08010948 - movs r4, 0x3B -_0801092A: - ldr r1, [r5] - ldr r0, _0801094C - adds r1, r0 - ldr r0, [r1] - subs r0, 0x2 - str r0, [r1] - bl sub_8010960 - subs r4, 0x1 - cmp r4, 0 - bge _0801092A - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_08010948: .4byte gUnknown_203B0E8 -_0801094C: .4byte 0x000052d0 - thumb_func_end sub_801091C - - thumb_func_start sub_8010950 -sub_8010950: - push {lr} - movs r0, 0 - movs r1, 0x1 - movs r2, 0x1 - bl xxx_call_save_unk_text_struct_800641C - pop {r0} - bx r0 - thumb_func_end sub_8010950 - - thumb_func_start sub_8010960 -sub_8010960: - push {r4-r6,lr} - ldr r6, _080109EC - ldr r1, [r6] - ldr r4, _080109F0 - adds r0, r1, r4 - movs r2, 0 - ldrsh r0, [r0, r2] - ldr r5, _080109F4 - adds r1, r5 - movs r2, 0 - ldrsh r1, [r1, r2] - bl SetBG2RegOffsets - ldr r1, [r6] - adds r4, r1, r4 - movs r2, 0 - ldrsh r0, [r4, r2] - adds r1, r5 - movs r2, 0 - ldrsh r1, [r1, r2] - bl SetBG3RegOffsets - movs r0, 0x1 - bl sub_8010A88 - bl sub_8010A00 - movs r0, 0 - movs r1, 0 - bl sub_8005838 - ldr r0, _080109F8 - ldr r0, [r0] - ldrb r0, [r0, 0xA] - bl nullsub_8 - bl sub_8005180 - bl sub_80060EC - ldr r0, _080109FC - ldr r0, [r0] - bl IncrementPlayTime - bl sub_800CB20 - bl LoadBufferedInputs - bl CopySpritesToOam - bl sub_8005304 - bl TransferBGPaletteBuffer - bl xxx_call_update_bg_vram - bl nullsub_24 - bl sub_8009908 - bl xxx_call_update_bg_sound_input - bl sub_8011860 - movs r0, 0 - bl ResetSprites - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_080109EC: .4byte gUnknown_203B0E8 -_080109F0: .4byte 0x000052d8 -_080109F4: .4byte 0x000052da -_080109F8: .4byte gGameOptionsRef -_080109FC: .4byte gPlayTimeRef - thumb_func_end sub_8010960 - - thumb_func_start sub_8010A00 -sub_8010A00: - push {r4-r6,lr} - movs r3, 0 - ldr r6, _08010A7C - ldr r0, [r6] - ldr r2, _08010A80 - adds r1, r0, r2 - ldr r2, [r1] - cmp r2, 0x1E - bgt _08010A74 - movs r3, 0x88 - lsls r3, 5 - adds r0, r3 - ldr r0, [r0] - ldr r5, [r0, 0x4] - adds r0, r2, 0x1 - str r0, [r1] - cmp r0, 0x1E - ble _08010A28 - movs r0, 0x1F - str r0, [r1] -_08010A28: - movs r4, 0 -_08010A2A: - ldr r0, [r6] - ldr r1, _08010A80 - adds r0, r1 - ldr r2, [r0] - adds r0, r4, 0 - adds r1, r5, 0 - movs r3, 0 - bl SetBGPaletteBufferColorRGB - adds r5, 0x4 - adds r4, 0x1 - cmp r4, 0xDF - ble _08010A2A - ldr r0, _08010A7C - ldr r0, [r0] - ldr r2, _08010A84 - adds r0, r2 - ldr r0, [r0] - ldr r5, [r0, 0x4] - movs r4, 0 -_08010A52: - movs r3, 0x80 - lsls r3, 1 - adds r0, r4, r3 - ldr r1, _08010A7C - ldr r1, [r1] - ldr r2, _08010A80 - adds r1, r2 - ldr r2, [r1] - adds r1, r5, 0 - movs r3, 0 - bl SetBGPaletteBufferColorRGB - adds r5, 0x4 - adds r4, 0x1 - cmp r4, 0xEF - ble _08010A52 - movs r3, 0x1 -_08010A74: - adds r0, r3, 0 - pop {r4-r6} - pop {r1} - bx r1 - .align 2, 0 -_08010A7C: .4byte gUnknown_203B0E8 -_08010A80: .4byte 0x000052d0 -_08010A84: .4byte 0x00001104 - thumb_func_end sub_8010A00 - - - .align 2,0 diff --git a/include/code_8004AA0.h b/include/code_8004AA0.h index edd9f9901..7195b948f 100644 --- a/include/code_8004AA0.h +++ b/include/code_8004AA0.h @@ -21,17 +21,12 @@ typedef struct unkStruct_202EE8C extern unkStruct_202EE8C gUnknown_202EE8C[32]; -struct UnkStruct_4014Ptr +struct FiendArea { - s32 unk0; + const u8 *name; DungeonPos unk4; u8 unk8[8]; - u8 fill8[0x20-0x10]; -}; - -struct UnkStruct_4014Ptr2 -{ - struct UnkStruct_4014Ptr array[0]; + s16 unk10[8]; }; struct UnkStruct_4018 @@ -47,10 +42,13 @@ struct UnkBgStruct OpenedFile *unk0[5]; u16 unk14[64][64]; u16 unk2014[64][64]; - struct UnkStruct_4014Ptr2 *unk4014; + const struct FiendArea *unk4014; struct UnkStruct_4018 unk4018[32]; s32 unk4A18; - u8 pad4A1C[0x4A2c-0x4A1C]; + s32 unk4A1C; + s32 unk4A20; + s32 unk4A24; + s32 unk4A28; u8 unk4A2C; axdata unk4A30[8]; axdata unk4C10; @@ -58,13 +56,13 @@ struct UnkBgStruct s32 unk4DCC; u32 unk4DD0; DungeonPos unk4DD4; - s16 unk4DD8; - s16 unk4DDA; + DungeonPos unk4DD8; s32 unk4DDC; s32 unk4DE0; s32 unk4DE4; s32 unk4DE8; - u8 unk4DEC[12]; + u8 unk4DEC[8]; + u8 unk4DF4; s32 unk4DF8; MenuInputStruct unk4DFC; }; diff --git a/ld_script.txt b/ld_script.txt index 6c573d9d0..9540f7c96 100755 --- a/ld_script.txt +++ b/ld_script.txt @@ -89,7 +89,6 @@ SECTIONS { asm/code_800ED38.o(.text); src/code_800F034.o(.text); src/code_800F958.o(.text); - asm/code_800F990.o(.text); src/code_8010F28.o(.text); src/code_80118A4.o(.text); src/debug.o(.text); diff --git a/src/code_8010F28.c b/src/code_8010F28.c index d7f2ed3e5..3a57ef1de 100644 --- a/src/code_8010F28.c +++ b/src/code_8010F28.c @@ -17,14 +17,19 @@ #include "pokemon.h" #include "decompress.h" +extern u32 sub_809034C(u8 dungeonIndex, s32 speciesId_, u8 *buffer, bool32 param_4_, bool32 param_5_); +extern void sub_801178C(void); +extern void sub_80117C4(void); +extern void PlayCancelSoundEffect(void); extern void PlayAcceptSoundEffect(void); extern void PlayCursorUpDownSoundEffect(void); extern s32 sprintf(char *, const char *, ...); extern void sub_800CB20(void); extern void xxx_call_update_bg_sound_input(void); -extern bool8 sub_800FFE8(u8); -extern void sub_80101F8(u8 *, u8); extern void CopyDungeonName1toBuffer(u8 *buffer, DungeonLocation *dungeonLocation); +extern s32 Atan2_4096(PixelPos *a); +extern void sub_80117AC(void); +extern void sub_8011760(void); struct UnkStruct_Sub1 { @@ -36,13 +41,17 @@ struct UnkStruct_Sub1 struct UnkStruct_203B0E8 { struct UnkStruct_Sub1 unk0[64]; - u8 pad1[0x4014]; + OpenedFile *unk1100[5]; + u16 unk1114[64][64]; + u16 unk3114[64][64]; axdata unk5114; - u8 pad2[0x184]; + unkStruct_202EE8C unk5150[16]; + s32 unk52D0; s32 unk52D4; DungeonPos unk52D8; - s16 unk52DC; - s16 unk52DE; + DungeonPos unk52DC; + u16 unk52E0[1500]; + u8 unk5E98[1500]; }; EWRAM_INIT struct UnkBgStruct *gUnknown_203B0E4 = NULL; @@ -63,12 +72,8 @@ EWRAM_INIT UnkTextStruct3 gUnknown_203B0EC = { .unkE = 3, .unk10 = 3, }, - [2] = { - .unk4 = 3, - }, - [3] = { - .unk4 = 3, - }, + [2] = { .unk4 = 3,}, + [3] = { .unk4 = 3,}, } }; @@ -83,24 +88,781 @@ static inline bool8 ResetFlags(axdata *ptr) } extern u8 *const gUnknown_80D408C[]; +extern u8 *const gUnknown_80D4014[]; extern const FileArchive gTitleMenuFileArchive; extern const FileArchive gMonsterFileArchive; extern const u8 gUnknown_80D40E4[]; extern const u8 gUnknown_80D40EC[]; +extern const u8 gUnknown_80D405C[]; extern const DungeonPos gUnknown_80D40C4[]; extern const u8 gUnknown_80D40FC[]; extern const u8 gUnknown_80D4104[]; extern const u8 gUnknown_80D4120[]; extern const u8 gUnknown_80D4124[]; +extern const u8 gUnknown_80D3EFC[]; extern const u8 gUnknown_80D40F4[]; +extern const u8 gUnknown_80D4064[]; +extern const u8 gUnknown_80D406C[]; extern const u8 gUnknown_80D407C[]; extern const u8 gUnknown_80D4080[]; extern const u8 gUnknown_80D4074[]; extern const DungeonPos gDungeonCoordinates[]; -void sub_8010960(void); +struct UnkStruct_sub_8010494 +{ + DungeonLocation unk0; + DungeonLocation unk4; + u8 pad1[8]; + u8 unk10; + u8 pad2[0xA]; + s16 unk1C; + u8 pad3[0x6E - 0x20]; + u8 unk6C; + u8 unk6D[63]; +}; -void sub_8010A88(bool8 a0) +struct UnkStruct_sub_8010268 +{ + u8 fill0[4]; + struct UnkStruct_sub_8010494 unk4; + struct UnkStruct_203B0E8 *unkB0; + u8 unkB4; +}; + +static void sub_8010950(void); +static void sub_8010A88(bool8 a0); +static bool8 sub_8010A00(void); +static void nullsub_24(void); +void sub_8011494(void); +void sub_8010960(void); +void sub_8010798(void); +void sub_8010858(void); +void sub_8010494(struct UnkStruct_sub_8010494 *r9); +void sub_8010344(u8 id1, u8 id2); +void sub_801059C(void); +bool8 sub_8010C58(u8 *str); +void sub_8010C10(const u8 *text); +void sub_801091C(void); +void sub_8011398(void); +void sub_801073C(void); +void sub_8010B74(DungeonLocation *dungLocation); +void sub_801169C(void); +void sub_80110B0(void); +void sub_8010EF0(void); +void sub_8011300(void); +void sub_8011240(void); +bool8 sub_800FFE8(u8 friendAreaId); +void sub_8011168(void); +void sub_80100C0(s32 a0, s32 a1, s32 count); +u8 sub_8010014(void); +s32 sub_800FAA8(s32 *a0, s32 *a1); +bool8 sub_800FB6C(void); +void sub_800FC28(void); +void sub_800FC5C(u8 a0); +void sub_8010DA4(void); + +extern u16 gUnknown_2026E4E; +extern u8 gUnknown_202DE18; +extern u8 gUnknown_202DE19; + +extern const struct FiendArea gFriendAreaLocations[]; + +extern const u8 gUnknown_80D3EDC[]; +extern const u8 gUnknown_80D3EEC[]; + +struct TestStruct +{ + s16 max; + s16 min; +}; + +extern const struct TestStruct gUnknown_80D3EBC[]; + +struct struct_unk800F990 +{ + u32 unk0; + u8 unk4; + u8 unk5; + struct UnkBgStruct *unk8; + u8 unkC; +}; + +void sub_800F990(struct struct_unk800F990 *param_1) +{ + gUnknown_203B0E4 = param_1->unk8; + gUnknown_2026E4E = 0x1010; + sub_80095CC(0,0x14); + UpdateFadeInTile(2); + gUnknown_203B0E4->unk4014 = gFriendAreaLocations; + gUnknown_203B0E4->unk4A2C = param_1->unk5; + sub_8010DA4(); + gUnknown_203B0E4->unk4A28 = -1; + gUnknown_203B0E4->unk4A1C = -1; + sub_800FC5C(param_1->unk4); + gUnknown_203B0E4->unk4A20 = gUnknown_203B0E4->unk4A24; + gUnknown_202DE18 = 0xff; + gUnknown_202DE19 = 0; + sub_8011760(); + while (1) { + s32 local_1c = 0; + s32 local_18 = 0; + s32 iVar2 = sub_800FAA8(&local_1c, &local_18); + + if (iVar2 == 1) { + sub_80100C0(local_1c, local_18, 0x32); + } + else if (iVar2 == 2) { + if (!sub_800FB6C()) + continue; + param_1->unkC = gUnknown_203B0E4->unk4DF4; + break; + } + else if (iVar2 == 3) { + if (gUnknown_203B0E4->unk4A18 == gUnknown_203B0E4->unk4A20) { + param_1->unkC = 0; + break; + } + sub_80100C0(gUnknown_203B0E4->unk4A20,0,10); + } + } + + sub_800FC28(); + sub_8010EF0(); + nullsub_16(); +} + +s32 sub_800FAA8(s32 *a0, s32 *a1) +{ + s32 ret = 0; + + sub_8011300(); + sub_8011398(); + while (ret == 0) { + s32 r3; + + sub_801169C(); + r3 = sub_8010014(); + if (r3 != 0xFF) { + s32 r4 = gUnknown_203B0E4->unk4A18; + struct UnkStruct_4018 *ptr = &gUnknown_203B0E4->unk4018[r4]; + + if (ptr->unk2[r3] >= 0) { + s32 id = ptr->unk2[r3]; + struct UnkStruct_4018 *ptr2 = &gUnknown_203B0E4->unk4018[id]; + + if (ptr2->unk4018 != 0) { + ret = 1; + *a0 = id; + *a1 = r3; + gUnknown_203B0E4->unk4A28 = r3; + gUnknown_203B0E4->unk4A1C = r4; + } + } + } + + if (gRealInputs.pressed & A_BUTTON) { + PlayAcceptSoundEffect(); + ret = 2; + } + if (gRealInputs.pressed & B_BUTTON) { + PlayCancelSoundEffect(); + ret = 3; + } + } + return ret; +} + +bool8 sub_800FB6C(void) +{ + bool8 ret = FALSE; + + sub_8011494(); + while (1) { + MenuInputStruct *menuPtr = &gUnknown_203B0E4->unk4DFC; + + AddMenuCursorSprite(menuPtr); + sub_801169C(); + if (gRealInputs.repeated & DPAD_DOWN) { + MoveMenuCursorDown(menuPtr); + PlayCursorUpDownSoundEffect(); + } + if (gRealInputs.repeated & DPAD_UP) { + MoveMenuCursorUp(menuPtr); + PlayCursorUpDownSoundEffect(); + } + + if ((gRealInputs.pressed & A_BUTTON) || menuPtr->unk28.a_button) { + PlayAcceptSoundEffect(); + gUnknown_203B0E4->unk4DF4 = gUnknown_203B0E4->unk4DEC[menuPtr->menuIndex]; + ret = TRUE; + break; + } + if ((gRealInputs.pressed & B_BUTTON) || menuPtr->unk28.b_button) { + PlayCancelSoundEffect(); + break; + } + } + + return ret; +} + +void sub_800FC28(void) +{ + s32 i; + + sub_8011168(); + sub_80117AC(); + for (i = 0; i < 60; i++) { + gUnknown_203B0E4->unk4DCC -= 2; + sub_801169C(); + } +} + +void sub_800FC5C(u8 a0) +{ + s32 var_48 = 0; + s32 i, j, k; + + for (i = 0; i < 32; i++) { + bool8 r7 = FALSE; + bool8 r10 = FALSE; + struct UnkStruct_4018 *r6 = &gUnknown_203B0E4->unk4018[i]; + const struct FiendArea *r2 = &gUnknown_203B0E4->unk4014[i]; + + for (j = 0; j < 8; j++) { + r6->unk2[j] = 0xFFFF; + } + for (j = 0; j < 8; j++) { + if (sub_800FFE8(r2->unk8[j])) { + if (r2->unk8[j] == a0) { + var_48 = i; + } + if (r2->unk8[j] == 0) { + gUnknown_203B0E4->unk4A24 = i; + r10 = TRUE; + } + r7 = TRUE; + } + } + + if (r7) { + r6->unk4018 = 1; + AxResInitFile(&r6->unk14, gUnknown_203B0E4->unk0[2], (r10) ? 12 : 1, 0, 0x40, 0, 1); + } + else { + r6->unk4018 = 0; + } + } + + for (i = 0; i < 32; i++) { + s32 var1, var2; + struct UnkStruct_4018 *r3 = &gUnknown_203B0E4->unk4018[i]; + const struct FiendArea *var_44 = &gUnknown_203B0E4->unk4014[i]; + + if (!r3->unk4018) { + continue; + } + + for (j = 0; j < 8; j++) { + r3->unk2[j] = 0xFFFF; + if (var_44->unk10[j] >= 0) { + struct UnkStruct_4018 *ptr = &gUnknown_203B0E4->unk4018[var_44->unk10[j]]; + if (ptr->unk4018) { + r3->unk2[j] = var_44->unk10[j]; + } + } + } + + var1 = gUnknown_203B0E4->unk4A28; + var2 = gUnknown_203B0E4->unk4A1C; + if (var1 >= 0 && var2 >= 0) { + struct UnkStruct_4018 *ptr = &gUnknown_203B0E4->unk4018[var2]; + if (ptr->unk4018) { + var1 += 4; + var1 &= 7; + r3->unk2[var1] = var2; + } + } + + for (j = 0; j < 8; j++) { + s32 var_40 = -1; + s32 var_3C = 999999; + + if (r3->unk2[j] >= 0) + continue; + + for (k = 0; k < 32; k++) { + bool8 r7; + PixelPos pixelPos; + s32 atanVal; + struct UnkStruct_4018 *ptr2_18 = &gUnknown_203B0E4->unk4018[k]; + const struct FiendArea *ptr2_14 = &gUnknown_203B0E4->unk4014[k]; + + if (k == i) + continue; + if (ptr2_18->unk4018 == 0) + continue; + + pixelPos.x = (ptr2_14->unk4.x - var_44->unk4.x) << 8; + pixelPos.y = (ptr2_14->unk4.y - var_44->unk4.y) << 8; + atanVal = Atan2_4096(&pixelPos); + pixelPos.x /= 4; + pixelPos.y /= 4; + pixelPos.x /= 256; + pixelPos.y /= 256; + if (pixelPos.x == 0) { + pixelPos.x = 1; + } + if (pixelPos.y == 0) { + pixelPos.y = 1; + } + + r7 = FALSE; + if (j == 2) { + while (atanVal >= 0x1000) { + atanVal -= 0x1000; + } + while (atanVal < 0) { + atanVal += 0x1000; + } + if (gUnknown_80D3EBC[j].max < atanVal || gUnknown_80D3EBC[j].min > atanVal) { + r7 = TRUE; + } + } + else { + if (gUnknown_80D3EBC[j].max <= atanVal && gUnknown_80D3EBC[j].min > atanVal) { + r7 = TRUE; + } + } + + if (r7) { + s32 sum = (pixelPos.x * pixelPos.x) + (pixelPos.y * pixelPos.y); + if (var_3C > sum) { + var_3C = sum; + var_40 = k; + } + } + } + + if (var_40 >= 0) { + r3->unk2[j] = var_40; + } + } + } + + AxResInitFile(&gUnknown_203B0E4->unk4C10, gUnknown_203B0E4->unk0[3], 0, 0, 0, 0, TRUE); + gUnknown_203B0E4->unk4A18 = var_48; + gUnknown_203B0E4->unk4DD8 = gUnknown_203B0E4->unk4014[var_48].unk4; + gUnknown_203B0E4->unk4DD4.x = gUnknown_203B0E4->unk4DD8.x - 120; + gUnknown_203B0E4->unk4DD4.y = gUnknown_203B0E4->unk4DD8.y - 80; + sub_8011240(); + sub_80110B0(); +} + +bool8 sub_800FFE8(u8 friendAreaId) +{ + if (friendAreaId > 57) return FALSE; + if (friendAreaId == 0) return TRUE; + if (gFriendAreas[friendAreaId]) return TRUE; + + return FALSE; +} + +u8 sub_8010014(void) +{ + u8 sp1[16]; + u8 sp2[16]; + u8 *table; + u32 flag; + + memcpy(sp1, gUnknown_80D3EDC, 16); + memcpy(sp2, gUnknown_80D3EEC, 16); + flag = 0; + table = (gRealInputs.held & R_BUTTON) ? sp2 : sp1; + + if (gRealInputs.held & DPAD_DOWN) { + flag |= 1; + } + if (gRealInputs.held & DPAD_RIGHT) { + flag |= 2; + } + if (gRealInputs.held & DPAD_UP) { + flag |= 4; + } + if (gRealInputs.held & DPAD_LEFT) { + flag |= 8; + } + + if (gUnknown_202DE18 == table[flag]) { + if (++gUnknown_202DE19 >= 3) { + return table[flag]; + } + } + else { + gUnknown_202DE18 = table[flag]; + gUnknown_202DE19 = 0; + } + return 0xFF; +} + +void sub_80100C0(s32 a0, s32 a1, s32 count) +{ + s32 i, arrayId; + DungeonPos pos1, pos2; + + AxResInitFile(&gUnknown_203B0E4->unk4C10, gUnknown_203B0E4->unk0[3], 0, a1 & 7, 0, 0, TRUE); + sub_8011168(); + + arrayId = gUnknown_203B0E4->unk4A18; + pos1 = gUnknown_203B0E4->unk4014[arrayId].unk4; + pos2 = gUnknown_203B0E4->unk4014[a0].unk4; + + PlayCursorUpDownSoundEffect(); + for (i = 0; i < count; i++) { + gUnknown_203B0E4->unk4DD8.x = ((((pos2.x - pos1.x) * (i << 8)) / count) / 256) + pos1.x; + gUnknown_203B0E4->unk4DD8.y = ((((pos2.y - pos1.y) * (i << 8)) / count) / 256) + pos1.y; + + sub_8011240(); + sub_80110B0(); + sub_801169C(); + } + + gUnknown_203B0E4->unk4A18 = a0; + gUnknown_203B0E4->unk4DD8 = gUnknown_203B0E4->unk4014[a0].unk4; + sub_8011240(); + sub_80110B0(); + sub_801169C(); + AxResInitFile(&gUnknown_203B0E4->unk4C10, gUnknown_203B0E4->unk0[3], 0, 0, 0, 0, TRUE); +} + +void sub_80101F8(u8 *strBuffer, u8 index) +{ + if (index == 0) { + FormatString(gUnknown_80D3EFC, strBuffer, strBuffer + 0x50, 0); + } + else { + WriteFriendAreaName(strBuffer, index, FALSE); + } +} + +void sub_8010224(u8 unk8, DungeonPos *dst) +{ + s32 i, j; + + for (i = 0; i < 32; i++) { + const struct FiendArea *friendArea = &gFriendAreaLocations[i]; + for (j = 0; j < 8; j++) { + if (friendArea->unk8[j] == unk8) { + dst->x = friendArea->unk4.x; + dst->y = friendArea->unk4.y; + return; + } + } + } + dst->x = 0; + dst->y = 0; +} + +void sub_8010268(struct UnkStruct_sub_8010268 *r5) +{ + s32 i, speciesId, var; + u8 text[1000]; + + gUnknown_203B0E8 = r5->unkB0; + gUnknown_2026E4E = 2566; + sub_80095CC(0, 0x14); + UpdateFadeInTile(2); + sub_801059C(); + sub_8010494(&r5->unk4); + sub_801178C(); + for (i = 0; i < 60; i++) { + sub_8010960(); + } + sub_8010344(r5->unk4.unk0.id, r5->unk4.unk4.id); + sub_8010B74(&r5->unk4.unk4); + for (i = 0; i < 60; i++) { + sub_8010960(); + } + + if (r5->unk4.unk10) { + speciesId = r5->unk4.unk1C; + ASM_MATCH_TRICK(speciesId); + } + else { + speciesId = 0; + } + + var = sub_809034C(r5->unk4.unk4.id, speciesId, text, r5->unk4.unk6C, FALSE); + if (var == 0) { + r5->unkB4 = 1; + } + else if (var == 1) { + sub_8010C10(text); + r5->unkB4 = 0; + } + else if (var == 2) { + if (sub_8010C58(text)) { + r5->unkB4 = 1; + } + else { + r5->unkB4 = 0; + } + } + + sub_801091C(); + sub_801073C(); + nullsub_16(); +} + +// Heavy math function. +void sub_8010344(u8 id1, u8 id2) +{ + s32 i, valMax, r3; + PixelPos pixelPos; + DungeonPos pos1 = gDungeonCoordinates[id1]; + DungeonPos pos2 = gDungeonCoordinates[id2]; + + valMax = max(abs(pos2.x - pos1.x), abs(pos2.y - pos1.y)); + valMax /= 2; + + pixelPos.x = pos1.x - pos2.x; + pixelPos.y = pos2.y - pos1.y; + r3 = Atan2_4096(&pixelPos) - 1024; + if (r3 < 0) { + r3 += 511; + } + r3 >>= 9; + r3 &= 7; + AxResInitFile(&gUnknown_203B0E8->unk5114, gUnknown_203B0E8->unk1100[3], 0, r3, 0, 0, TRUE); + + for (i = 0; i < valMax; i++) { + gUnknown_203B0E8->unk52DC.x = ((((pos2.x - pos1.x) * (i << 8)) / valMax) / 256) + pos1.x; + gUnknown_203B0E8->unk52DC.y = ((((pos2.y - pos1.y) * (i << 8)) / valMax) / 256) + pos1.y; + sub_8010798(); + sub_8010858(); + sub_8010960(); + if (gRealInputs.pressed & A_BUTTON) + break; + if (gRealInputs.pressed & B_BUTTON) + break; + } + + gUnknown_203B0E8->unk52DC = pos2; + sub_8010798(); + sub_8010858(); + sub_8010960(); +} + +void sub_8010494(struct UnkStruct_sub_8010494 *r9) +{ + s32 i; + for (i = 0; i < 64; i++) { + struct UnkStruct_Sub1 *structPtr = &gUnknown_203B0E8->unk0[i]; + u8 r0; + + if (i < 63) { + r0 = r9->unk6D[i]; + } + else { + r0 = 1; + } + + if (r0) { + structPtr->unk0 = 1; + AxResInitFile(&structPtr->unk8, gUnknown_203B0E8->unk1100[2], (i == 63) ? 12 : 1, 0, 0x40, 0, 1); + structPtr->unk4 = gDungeonCoordinates[i]; + } + else { + structPtr->unk0 = 0; + } + } + + AxResInitFile(&gUnknown_203B0E8->unk5114, gUnknown_203B0E8->unk1100[3], 0, 0, 0, 0, TRUE); + gUnknown_203B0E8->unk52DC = gDungeonCoordinates[r9->unk0.id]; + gUnknown_203B0E8->unk52D8.x = gUnknown_203B0E8->unk52DC.x - 120; + gUnknown_203B0E8->unk52D8.y = gUnknown_203B0E8->unk52DC.y - 80; + sub_8010798(); + sub_8010858(); +} + +void sub_801059C(void) +{ + u8 filename[0xC]; + s32 i, size; + + PokemonStruct1 *pokeStruct = GetPlayerPokemonStruct(); + OpenedFile *file = OpenFileAndGetFileDataPtr(gUnknown_80D4014[0], &gTitleMenuFileArchive); + OpenedFile *file2 = OpenFileAndGetFileDataPtr(gUnknown_80D4014[1], &gTitleMenuFileArchive); + + sprintf(filename, gUnknown_80D405C, pokeStruct->speciesNum); + gUnknown_203B0E8->unk1100[3] = OpenFileAndGetFileDataPtr(filename, &gMonsterFileArchive); + gUnknown_203B0E8->unk1100[2] = OpenFileAndGetFileDataPtr(gUnknown_80D4064, &gTitleMenuFileArchive); + gUnknown_203B0E8->unk1100[4] = OpenFileAndGetFileDataPtr(gUnknown_80D4014[2], &gTitleMenuFileArchive); + gUnknown_203B0E8->unk1100[1] = OpenFileAndGetFileDataPtr(gUnknown_80D406C, &gMonsterFileArchive); + gUnknown_203B0E8->unk1100[0] = OpenFileAndGetFileDataPtr(gUnknown_80D4014[3], &gTitleMenuFileArchive); + gUnknown_203B0E8->unk52D4 = GetPokemonOverworldPalette(pokeStruct->speciesNum, 0); + + sub_8005610(gUnknown_203B0E8->unk1100[2], 0x40, 0x1F, 0); + + DecompressATGlobalFile((u32 *)(VRAM + 0x8000), 0x0, file); + sub_8004AA4(gUnknown_203B0E8->unk5150, gUnknown_203B0E8->unk1100[4], 0x10); + size = 0x4000; + DecompressATFile((u8 *) &gUnknown_203B0E8->unk1114, size, file2); + + gUnknown_203B0E8->unk52D0 = 0; + gUnknown_203B0E8->unk52D8.x = 0; + gUnknown_203B0E8->unk52D8.y = 0; + + for (i = 0; i < 1500; i++) { + gUnknown_203B0E8->unk52E0[i] |= 0xFFFF; + gUnknown_203B0E8->unk5E98[i] = 0; + } + + CloseFile(file); + CloseFile(file2); + xxx_call_save_unk_text_struct_800641C(NULL, 1, 1); +} + +void sub_801073C(void) +{ + CloseFile(gUnknown_203B0E8->unk1100[4]); + CloseFile(gUnknown_203B0E8->unk1100[3]); + CloseFile(gUnknown_203B0E8->unk1100[2]); + CloseFile(gUnknown_203B0E8->unk1100[0]); + CloseFile(gUnknown_203B0E8->unk1100[1]); +} + +void sub_8010798(void) +{ + if (gUnknown_203B0E8->unk52DC.x - gUnknown_203B0E8->unk52D8.x < 48) { + gUnknown_203B0E8->unk52D8.x = gUnknown_203B0E8->unk52DC.x - 48; + } + else if (gUnknown_203B0E8->unk52DC.x - gUnknown_203B0E8->unk52D8.x > 192) { + gUnknown_203B0E8->unk52D8.x = gUnknown_203B0E8->unk52DC.x - 192; + } + + if (gUnknown_203B0E8->unk52DC.y - gUnknown_203B0E8->unk52D8.y < 48) { + gUnknown_203B0E8->unk52D8.y = gUnknown_203B0E8->unk52DC.y - 48; + } + else if (gUnknown_203B0E8->unk52DC.y - gUnknown_203B0E8->unk52D8.y > 112) { + gUnknown_203B0E8->unk52D8.y = gUnknown_203B0E8->unk52DC.y - 112; + } + + if (gUnknown_203B0E8->unk52D8.x < 0) { + gUnknown_203B0E8->unk52D8.x = 0; + } + if (gUnknown_203B0E8->unk52D8.y < 0) { + gUnknown_203B0E8->unk52D8.y = 0; + } + if (gUnknown_203B0E8->unk52D8.x >= 240) { + gUnknown_203B0E8->unk52D8.x = 240; + } + if (gUnknown_203B0E8->unk52D8.y >= 160) { + gUnknown_203B0E8->unk52D8.y = 160; + } +} + +void sub_8010858(void) +{ + s32 i, j; + s32 y1 = gUnknown_203B0E8->unk52D8.y >> 3; + s32 y2 = y1; + + for (i = 0; i < 21; i++) { + s32 x1 = gUnknown_203B0E8->unk52D8.x >> 3; + s32 x2 = x1; + + for (j = 0; j < 31; j++) { + x1 &= 0x1F; + y1 &= 0x1F; + + gUnknown_202B038[2][y1][x1] = gUnknown_203B0E8->unk3114[y2][x2]; + gUnknown_202B038[3][y1][x1] = gUnknown_203B0E8->unk1114[y2][x2]; + x2++; + x1++; + } + y2++; + y1++; + } + + sub_80098F8(2); + sub_80098F8(3); +} + +static void nullsub_24(void) +{ + +} + +void sub_801091C(void) +{ + s32 i; + + sub_8010950(); + sub_80117C4(); + for (i = 0; i < 60; i++) { + gUnknown_203B0E8->unk52D0 -= 2; + sub_8010960(); + } +} + +static void sub_8010950(void) +{ + xxx_call_save_unk_text_struct_800641C(NULL, TRUE, TRUE); +} + +void sub_8010960(void) +{ + SetBG2RegOffsets(gUnknown_203B0E8->unk52D8.x, gUnknown_203B0E8->unk52D8.y); + SetBG3RegOffsets(gUnknown_203B0E8->unk52D8.x, gUnknown_203B0E8->unk52D8.y); + sub_8010A88(TRUE); + sub_8010A00(); + sub_8005838(NULL, 0); + nullsub_8(gGameOptionsRef->unkA); + sub_8005180(); + sub_80060EC(); + IncrementPlayTime(gPlayTimeRef); + sub_800CB20(); + LoadBufferedInputs(); + CopySpritesToOam(); + sub_8005304(); + TransferBGPaletteBuffer(); + xxx_call_update_bg_vram(); + nullsub_24(); + sub_8009908(); + xxx_call_update_bg_sound_input(); + sub_8011860(); + ResetSprites(FALSE); +} + +static bool8 sub_8010A00(void) +{ + bool8 ret = FALSE; + + if (gUnknown_203B0E8->unk52D0 < 31) { + s32 i; + RGB *color = (void *) gUnknown_203B0E8->unk1100[0]->data; + + if (++gUnknown_203B0E8->unk52D0 >= 31) { + gUnknown_203B0E8->unk52D0 = 31; + } + + for (i = 0; i < 224; color++, i++) { + SetBGPaletteBufferColorRGB(i, color, gUnknown_203B0E8->unk52D0, NULL); + } + + color = (void *) gUnknown_203B0E8->unk1100[1]->data; + for (i = 0; i < 240; color++, i++) { + SetBGPaletteBufferColorRGB(i + 256, color, gUnknown_203B0E8->unk52D0, NULL); + } + + ret = TRUE; + } + + return ret; +} + +static void sub_8010A88(bool8 a0) { s32 i; unkStruct_2039DB0 var_2C; @@ -112,7 +874,7 @@ void sub_8010A88(bool8 a0) pos = gUnknown_203B0E8->unk52D8; RunAxAnimationFrame(&gUnknown_203B0E8->unk5114); if (a0) { - DoAxFrame_800558C(&gUnknown_203B0E8->unk5114, gUnknown_203B0E8->unk52DC - pos.x, gUnknown_203B0E8->unk52DE - pos.y, 3, gUnknown_203B0E8->unk52D4, &var_2C); + DoAxFrame_800558C(&gUnknown_203B0E8->unk5114, gUnknown_203B0E8->unk52DC.x - pos.x, gUnknown_203B0E8->unk52DC.y - pos.y, 3, gUnknown_203B0E8->unk52D4, &var_2C); } for (i = 0; i < 64; i++) { @@ -146,7 +908,7 @@ void sub_8010B74(DungeonLocation *dungLocation) } }; - if (gUnknown_203B0E8->unk52DE - gUnknown_203B0E8->unk52D8.y <= 80) { + if (gUnknown_203B0E8->unk52DC.y - gUnknown_203B0E8->unk52D8.y <= 80) { spTxtStruct.a0[0].pos.y = 17; } else { @@ -305,11 +1067,11 @@ void sub_8010F28(void) var_30.unkA = 0x800; pos = gUnknown_203B0E4->unk4DD4; RunAxAnimationFrame(&gUnknown_203B0E4->unk4C10); - DoAxFrame_800558C(&gUnknown_203B0E4->unk4C10, gUnknown_203B0E4->unk4DD8 - pos.x, gUnknown_203B0E4->unk4DDA - pos.y, 3, gUnknown_203B0E4->unk4DD0, &var_30); + DoAxFrame_800558C(&gUnknown_203B0E4->unk4C10, gUnknown_203B0E4->unk4DD8.x - pos.x, gUnknown_203B0E4->unk4DD8.y - pos.y, 3, gUnknown_203B0E4->unk4DD0, &var_30); for (i = 0; i < 32; i++) { struct UnkStruct_4018 *r0 = &gUnknown_203B0E4->unk4018[i]; - struct UnkStruct_4014Ptr *r5 = &gUnknown_203B0E4->unk4014->array[i]; + const struct FiendArea *r5 = &gUnknown_203B0E4->unk4014[i]; if (r0->unk4018 != 0) { RunAxAnimationFrame(&r0->unk14); DoAxFrame_800558C(&r0->unk14, r5->unk4.x - pos.x, r5->unk4.y- pos.y, 1, 0, &var_30); @@ -323,8 +1085,8 @@ void sub_8010F28(void) RunAxAnimationFrame(&gUnknown_203B0E4->unk4A30[i]); if (!(gRealInputs.held & R_BUTTON) || (i % 2) != 0) { DoAxFrame_800558C(&gUnknown_203B0E4->unk4A30[i], - (gUnknown_80D40C4[i].x + gUnknown_203B0E4->unk4DD8) - pos.x, - (gUnknown_80D40C4[i].y + gUnknown_203B0E4->unk4DDA) - pos.y, + (gUnknown_80D40C4[i].x + gUnknown_203B0E4->unk4DD8.x) - pos.x, + (gUnknown_80D40C4[i].y + gUnknown_203B0E4->unk4DD8.y) - pos.y, 2, 0, &var_30); } } @@ -402,18 +1164,18 @@ bool8 sub_80111C4(void) void sub_8011240(void) { - if (gUnknown_203B0E4->unk4DD8 - gUnknown_203B0E4->unk4DD4.x < 48) { - gUnknown_203B0E4->unk4DD4.x = gUnknown_203B0E4->unk4DD8 - 48; + if (gUnknown_203B0E4->unk4DD8.x - gUnknown_203B0E4->unk4DD4.x < 48) { + gUnknown_203B0E4->unk4DD4.x = gUnknown_203B0E4->unk4DD8.x - 48; } - else if (gUnknown_203B0E4->unk4DD8 - gUnknown_203B0E4->unk4DD4.x > 192) { - gUnknown_203B0E4->unk4DD4.x = gUnknown_203B0E4->unk4DD8 - 192; + else if (gUnknown_203B0E4->unk4DD8.x - gUnknown_203B0E4->unk4DD4.x > 192) { + gUnknown_203B0E4->unk4DD4.x = gUnknown_203B0E4->unk4DD8.x - 192; } - if (gUnknown_203B0E4->unk4DDA - gUnknown_203B0E4->unk4DD4.y < 48) { - gUnknown_203B0E4->unk4DD4.y = gUnknown_203B0E4->unk4DDA - 48; + if (gUnknown_203B0E4->unk4DD8.y - gUnknown_203B0E4->unk4DD4.y < 48) { + gUnknown_203B0E4->unk4DD4.y = gUnknown_203B0E4->unk4DD8.y - 48; } - else if (gUnknown_203B0E4->unk4DDA - gUnknown_203B0E4->unk4DD4.y > 112) { - gUnknown_203B0E4->unk4DD4.y = gUnknown_203B0E4->unk4DDA - 112; + else if (gUnknown_203B0E4->unk4DD8.y - gUnknown_203B0E4->unk4DD4.y > 112) { + gUnknown_203B0E4->unk4DD4.y = gUnknown_203B0E4->unk4DD8.y - 112; } if (gUnknown_203B0E4->unk4DD4.x < 0) { @@ -450,7 +1212,7 @@ void sub_8011398(void) { u8 txt[200]; s32 id = gUnknown_203B0E4->unk4A18; - struct UnkStruct_4014Ptr *r6 = &gUnknown_203B0E4->unk4014->array[id]; + const struct FiendArea *r6 = &gUnknown_203B0E4->unk4014[id]; UnkTextStruct3 spTxtStruct = {0}; spTxtStruct.a0[0].unk4 = 3; @@ -463,7 +1225,7 @@ void sub_8011398(void) spTxtStruct.a0[2].unk4 = 3; spTxtStruct.a0[3].unk4 = 3; - if (gUnknown_203B0E4->unk4DDA - gUnknown_203B0E4->unk4DD4.y <= 80) { + if (gUnknown_203B0E4->unk4DD8.y - gUnknown_203B0E4->unk4DD4.y <= 80) { spTxtStruct.a0[0].pos.y = 17; } else { @@ -472,7 +1234,7 @@ void sub_8011398(void) xxx_call_save_unk_text_struct_800641C(&spTxtStruct, TRUE, TRUE); sub_80073B8(0); - sprintfStatic(txt, gUnknown_80D40FC, r6->unk0); + sprintfStatic(txt, gUnknown_80D40FC, r6->name); PrintFormattedStringOnWindow(12, 2, txt, 0, '\0'); sub_80073E0(0); gUnknown_203B0E4->unk4DDC = (spTxtStruct.a0[0].pos.x * 8) - 5; @@ -485,7 +1247,7 @@ void sub_8011494(void) { s32 i, count, var; s32 id = gUnknown_203B0E4->unk4A18; - struct UnkStruct_4014Ptr *r8 = &gUnknown_203B0E4->unk4014->array[id]; + const struct FiendArea *r8 = &gUnknown_203B0E4->unk4014[id]; MenuInputStruct *menuInput = &gUnknown_203B0E4->unk4DFC; UnkTextStruct2_sub2 subTxt; UnkTextStruct3 spTxtStruct = { @@ -561,7 +1323,7 @@ void sub_8011494(void) PrintFormattedStringOnWindow(12, r4, gUnknown_80D4120, 0, '\0'); } else { - sub_80926F8(r5, &unkFriendAreaStruct, gUnknown_203B0E4->unk4A2C); // TODO FIX R8 + sub_80926F8(r5, &unkFriendAreaStruct, gUnknown_203B0E4->unk4A2C); gFormatArgs[0] = unkFriendAreaStruct.unk2; gFormatArgs[1] = unkFriendAreaStruct.numPokemon; PrintFormattedStringOnWindow(12, r4, gUnknown_80D4124, 0, '\0'); From b4cdd4b10ef5ae7f71c24256b3c716bd46420039 Mon Sep 17 00:00:00 2001 From: DizzyEggg Date: Sun, 23 Feb 2025 15:45:00 +0100 Subject: [PATCH 21/40] start documenting windows --- data/data_80CE77C.s | 122 ---------- data/data_80CE77C_2.s | 36 +++ include/code_8004AA0.h | 48 ---- include/code_801B3C0.h | 2 +- include/code_801B60C.h | 2 +- include/code_801D014.h | 2 +- include/code_801EE10.h | 2 +- include/code_80227B8.h | 2 +- include/code_8024458.h | 6 +- include/code_802DB28.h | 2 +- include/code_802DE84.h | 4 +- include/credits1.h | 2 +- include/debug_menu1.h | 2 +- include/debug_menu2.h | 2 +- include/debug_menu3.h | 2 +- include/debug_menu4.h | 2 +- include/felicity_bank.h | 2 +- include/friend_area_action_menu.h | 2 +- include/friend_list_menu.h | 2 +- include/friend_rescue.h | 4 +- include/gulpin_shop.h | 2 +- include/gulpin_shop_801FB50.h | 2 +- include/iq_skill_info_menu.h | 2 +- include/iq_skill_menu.h | 2 +- include/kangaskhan_storage1.h | 2 +- include/kangaskhan_storage2.h | 2 +- include/kecleon_bros1.h | 2 +- include/luminous_cave.h | 2 +- include/mailbox.h | 2 +- include/main_menu1.h | 4 +- include/main_menu2.h | 2 +- include/makuhita_dojo1.h | 2 +- include/menu_input.h | 8 +- include/options_menu1.h | 2 +- include/options_menu2.h | 4 +- include/other_menus1.h | 2 +- include/party_list_menu.h | 2 +- include/pelipper_board.h | 2 +- include/pokemon_news2.h | 2 +- include/post_office_guide2.h | 4 +- include/rescue_password_menu.h | 4 +- include/save_menu.h | 2 +- include/structs/menu.h | 2 +- include/structs/str_text.h | 30 ++- include/structs/struct_sub80095e4.h | 14 +- include/text.h | 4 +- include/thank_you_wonder_mail.h | 4 +- include/trade_items_menu.h | 4 +- include/wigglytuff_shop2.h | 4 +- include/wigglytuff_shop3.h | 2 +- include/wonder_mail.h | 4 +- include/wonder_mail_802C860.h | 2 +- include/wonder_mail_802D098.h | 2 +- ld_script.txt | 2 + src/code_8010F28.c | 365 ++++++++++++++++------------ src/code_8015080.c | 18 +- src/code_801C8C4.c | 4 +- src/code_801D014.c | 8 +- src/code_801EE10.c | 8 +- src/code_801F428.c | 4 +- src/code_801F808.c | 8 +- src/code_80227B8.c | 2 +- src/code_8031D70.c | 10 +- src/code_803E724.c | 10 +- src/code_805D8C8_1.c | 98 ++++---- src/code_8066D04.c | 40 +-- src/code_8072F3C.c | 6 +- src/credits1.c | 4 +- src/data/adventure_log.h | 4 +- src/data/code_801602C.h | 2 +- src/data/code_801B60C.h | 6 +- src/data/code_801C8C4.h | 4 +- src/data/code_801D014.h | 8 +- src/data/code_801D9E4.h | 4 +- src/data/code_80227B8.h | 6 +- src/data/code_8023144.h | 4 +- src/data/code_8023868.h | 4 +- src/data/code_8024458.h | 4 +- src/data/code_802DB28.h | 2 +- src/data/code_802DE84.h | 6 +- src/data/debug_menu1.h | 4 +- src/data/debug_menu2.h | 6 +- src/data/debug_menu3.h | 4 +- src/data/debug_menu4.h | 6 +- src/data/felicity_bank.h | 6 +- src/data/friend_area_action_menu.h | 10 +- src/data/friend_list_menu.h | 8 +- src/data/friend_rescue_menus.h | 8 +- src/data/gulpin_shop.h | 6 +- src/data/gulpin_shop_801FB50.h | 10 +- src/data/hints_menu1.h | 6 +- src/data/hints_menu2.h | 4 +- src/data/iq_skill_list_menu.h | 4 +- src/data/iq_skill_menu.h | 4 +- src/data/kangaskhan_storage1.h | 8 +- src/data/kangaskhan_storage2.h | 10 +- src/data/kecleon_bros1.h | 8 +- src/data/kecleon_bros2.h | 4 +- src/data/kecleon_bros3.h | 4 +- src/data/kecleon_bros4.h | 4 +- src/data/luminous_cave.h | 4 +- src/data/main_menu1.h | 2 +- src/data/main_menu2.h | 18 +- src/data/makuhita_dojo1.h | 2 +- src/data/makuhita_dojo2.h | 4 +- src/data/options_menu1.h | 6 +- src/data/options_menu2.h | 6 +- src/data/other_menus1.h | 36 +-- src/data/party_list_menu.h | 10 +- src/data/personality_test1.h | 2 +- src/data/personality_test2.h | 6 +- src/data/pokemon_news1.h | 6 +- src/data/pokemon_news2.h | 6 +- src/data/pokemon_news3.h | 4 +- src/data/post_office_guide2.h | 6 +- src/data/trade_items_menu.h | 6 +- src/data/wigglytuff_shop1.h | 4 +- src/data/wigglytuff_shop2.h | 6 +- src/data/wigglytuff_shop3.h | 6 +- src/data/wonder_mail_1.h | 4 +- src/data/wonder_mail_802C10C.h | 4 +- src/data/wonder_mail_802C4C8.h | 4 +- src/data/wonder_mail_802C860.h | 6 +- src/data/wonder_mail_802CDD4.h | 4 +- src/data/wonder_mail_802D098.h | 10 +- src/friend_rescue.c | 2 +- src/kecleon_bros4.c | 2 +- src/load_screen.c | 10 +- src/mailbox.c | 10 +- src/main_menu1.c | 8 +- src/menu_input.c | 26 +- src/mission_reward.c | 4 +- src/options_menu1.c | 4 +- src/other_menus1.c | 2 +- src/party_list_menu.c | 4 +- src/pelipper_board.c | 10 +- src/personality_test1.c | 2 +- src/rescue_password_menu.c | 22 +- src/save_menu.c | 4 +- src/string_format.c | 38 +-- src/text.c | 70 +++--- src/thank_you_wonder_mail.c | 6 +- src/unk_menu_203B360.c | 6 +- src/wonder_mail_3_mid.c | 8 +- src/wonder_mail_4.c | 4 +- src/wonder_mail_5.c | 10 +- src/wonder_mail_6.c | 8 +- src/wonder_mail_802D098.c | 4 +- src/wonder_mail_main_menu.c | 2 +- 149 files changed, 761 insertions(+), 820 deletions(-) create mode 100644 data/data_80CE77C_2.s diff --git a/data/data_80CE77C.s b/data/data_80CE77C.s index 33d1b0155..ebb0ab148 100644 --- a/data/data_80CE77C.s +++ b/data/data_80CE77C.s @@ -477,127 +477,5 @@ gUnknown_80D406C: @ 80D406C .string "palet\0" .align 2,0 - .global gUnknown_80D4074 -gUnknown_80D4074: @ 80D4074 - .string "{CENTER_ALIGN}{POKEMON_0}\0" - .align 2,0 - .global gUnknown_80D407C -gUnknown_80D407C: @ 80D4074 - .string "Yes\0" - .align 2,0 - .global gUnknown_80D4080 -gUnknown_80D4080: @ 80D4080 - .string "No\0" - .align 2,0 - .string "pksdir0\0" - .align 2,0 - - .global gUnknown_80D408C -gUnknown_80D408C: @ 80D408C - .4byte wmapfont_text - .4byte wmapmcc_text - .4byte wmapcani_text - .4byte wmappal_text - - .global wmappal_text - wmappal_text: - .string "wmappal\0" - .align 2,0 - - .global wmapcani_text - wmapcani_text: - .string "wmapcani\0" - .align 2,0 - - .global wmapmcc_text - wmapmcc_text: - .string "wmapmcc\0" - .align 2,0 - - .global wmapfont_text - wmapfont_text: - .string "wmapfont\0" - .align 2,0 - - .global gUnknown_80D40C4 -gUnknown_80D40C4: @ 80D40C4 - .byte 0x00, 0x00, 0x18, 0x00 - .byte 0x18, 0x00, 0x18, 0x00 - .byte 0x18, 0x00, 0x00, 0x00 - .byte 0x18, 0x00, 0xE8, 0xFF - .byte 0x00, 0x00, 0xE8, 0xFF - .byte 0xE8, 0xFF, 0xE8, 0xFF - .byte 0xE8, 0xFF, 0x00, 0x00 - .byte 0xE8, 0xFF, 0x18, 0x00 - - .global gUnknown_80D40E4 -gUnknown_80D40E4: @ 80D40E4 - .string "ax%03d\0" - .align 2,0 - - .global gUnknown_80D40EC -gUnknown_80D40EC: @ 80D40EC - .string "wmapspr\0" - .align 2,0 - - .global gUnknown_80D40F4 -gUnknown_80D40F4: @ 80D40F4 - .string "palet\0" - .align 2,0 - - .global gUnknown_80D40FC -gUnknown_80D40FC: @ 80D40FC - .string "{CENTER_ALIGN}%s\0" - .align 2,0 - - .global gUnknown_80D4104 -gUnknown_80D4104: @ 80D4104 - .string "Where would you like to go?\0" - .align 2,0 - - .global gUnknown_80D4120 -gUnknown_80D4120: @ 80D4120 - .string "{MOVE_ITEM_0}\0" - .align 2,0 - - .global gUnknown_80D4124 -gUnknown_80D4124: @ 80D4124 - .string "{MOVE_ITEM_0}($v02" - .byte 0x81, 0x5E - .asciz "$v12)" - .align 2,0 - - .asciz "pksdir0" - .asciz "pksdir0" - - .global gUnknown_80D4144 -gUnknown_80D4144: @ 80D4144 - .2byte 302 - .2byte 303 - .2byte 303 - .2byte 301 - .2byte 304 - .2byte 306 - .2byte 307 - .2byte 0 - - .string "pksdir0\0" - .string "pksdir0\0" - .4byte noneText - .byte 0xff, 0xff, 0xff, 0xff - .4byte noneText - - .global noneText - noneText: - .string "none\0" - .align 2,0 - - .4byte defaultText - .byte 0xff, 0xff, 0xff, 0xff - .4byte noneText - - .global defaultText - defaultText: - .string "default\0" diff --git a/data/data_80CE77C_2.s b/data/data_80CE77C_2.s new file mode 100644 index 000000000..4812dafbd --- /dev/null +++ b/data/data_80CE77C_2.s @@ -0,0 +1,36 @@ + .section .rodata + + .align 2,0 + + .asciz "pksdir0" + .asciz "pksdir0" + + .global gUnknown_80D4144 +gUnknown_80D4144: @ 80D4144 + .2byte 302 + .2byte 303 + .2byte 303 + .2byte 301 + .2byte 304 + .2byte 306 + .2byte 307 + .2byte 0 + + .string "pksdir0\0" + .string "pksdir0\0" + .4byte noneText + .byte 0xff, 0xff, 0xff, 0xff + .4byte noneText + + .global noneText + noneText: + .string "none\0" + .align 2,0 + + .4byte defaultText + .byte 0xff, 0xff, 0xff, 0xff + .4byte noneText + + .global defaultText + defaultText: + .string "default\0" diff --git a/include/code_8004AA0.h b/include/code_8004AA0.h index 7195b948f..82c7138f0 100644 --- a/include/code_8004AA0.h +++ b/include/code_8004AA0.h @@ -21,54 +21,6 @@ typedef struct unkStruct_202EE8C extern unkStruct_202EE8C gUnknown_202EE8C[32]; -struct FiendArea -{ - const u8 *name; - DungeonPos unk4; - u8 unk8[8]; - s16 unk10[8]; -}; - -struct UnkStruct_4018 -{ - u8 unk4018; - s16 unk2[8]; - axdata unk14; -}; - -// size: 0x4DD8 -struct UnkBgStruct -{ - OpenedFile *unk0[5]; - u16 unk14[64][64]; - u16 unk2014[64][64]; - const struct FiendArea *unk4014; - struct UnkStruct_4018 unk4018[32]; - s32 unk4A18; - s32 unk4A1C; - s32 unk4A20; - s32 unk4A24; - s32 unk4A28; - u8 unk4A2C; - axdata unk4A30[8]; - axdata unk4C10; - unkStruct_202EE8C unk4C4C[16]; - s32 unk4DCC; - u32 unk4DD0; - DungeonPos unk4DD4; - DungeonPos unk4DD8; - s32 unk4DDC; - s32 unk4DE0; - s32 unk4DE4; - s32 unk4DE8; - u8 unk4DEC[8]; - u8 unk4DF4; - s32 unk4DF8; - MenuInputStruct unk4DFC; -}; - -extern struct UnkBgStruct *gUnknown_203B0E4; - // size: Variable typedef struct unkDataFor8004AA4 { diff --git a/include/code_801B3C0.h b/include/code_801B3C0.h index 43612b262..116f9816e 100644 --- a/include/code_801B3C0.h +++ b/include/code_801B3C0.h @@ -17,7 +17,7 @@ typedef struct unkStruct_203B230 u8 fill18[0x20 - 0x18]; u32 unk20; u32 unk24; - UnkTextStruct3 unk28; + Windows unk28; MenuInputStructSub unk88; } unkStruct_203B230; diff --git a/include/code_801B60C.h b/include/code_801B60C.h index 1a1b52bc7..7bf96f589 100644 --- a/include/code_801B60C.h +++ b/include/code_801B60C.h @@ -20,7 +20,7 @@ typedef struct unkStruct_203B234 MenuStruct unk78; /* 0xC8 */ u32 menuAction; MenuItem unkCC[5]; - UnkTextStruct3 unkF4; + Windows unkF4; } unkStruct_203B234; bool8 sub_801B60C(u32, u8 id, u8 quantity); diff --git a/include/code_801D014.h b/include/code_801D014.h index 878fde93a..828478b68 100644 --- a/include/code_801D014.h +++ b/include/code_801D014.h @@ -21,7 +21,7 @@ struct unk_203B250 MenuStruct unk18; MenuItem unk68[8]; u16 unkA8[8]; - UnkTextStruct3 unkB8; + Windows unkB8; }; // size: 0x8 diff --git a/include/code_801EE10.h b/include/code_801EE10.h index 2c5bd155b..c49df9c1b 100644 --- a/include/code_801EE10.h +++ b/include/code_801EE10.h @@ -21,7 +21,7 @@ typedef struct unkStruct_203B270 /* 0x1C */ MenuInputStruct input; u32 unk50; u32 unk54; - UnkTextStruct3 unk58; + Windows unk58; const u8 *text; } unkStruct_203B270; diff --git a/include/code_80227B8.h b/include/code_80227B8.h index 8cba3a418..0d42198f8 100644 --- a/include/code_80227B8.h +++ b/include/code_80227B8.h @@ -26,7 +26,7 @@ typedef struct unkStruct_203B294 /* 0xF4 */ u32 menuAction; MenuItem unkF8[8]; u16 unk138[8]; - UnkTextStruct3 unk148; + Windows unk148; } unkStruct_203B294; bool8 sub_80227B8(PokemonStruct1 *pkmn); diff --git a/include/code_8024458.h b/include/code_8024458.h index 8d69e6492..24b1faf71 100644 --- a/include/code_8024458.h +++ b/include/code_8024458.h @@ -16,9 +16,9 @@ struct unkStruct_203B2AC u32 unkB0; u8 fillB4[0xE0 - 0xB4]; u32 unkE0; - UnkTextStruct2 *unkE4; - UnkTextStruct3 unkE8; - UnkTextStruct2_sub2 unk148; + Window *unkE4; + Windows unkE8; + WindowHeader unk148; }; bool8 sub_8024458(s16 speciesNum, s32); diff --git a/include/code_802DB28.h b/include/code_802DB28.h index 07cc7283b..e9f040ce9 100644 --- a/include/code_802DB28.h +++ b/include/code_802DB28.h @@ -15,7 +15,7 @@ struct unkStruct_203B2FC /* 0x30 */ u8 jobSlotIndex; /* 0x34 */ WonderMail *jobInfo; /* 0x38 */ struct MonPortraitMsg monPortrait; - UnkTextStruct3 unk48; + Windows unk48; }; bool8 sub_802DB28(u8 jobSlotIndex, u8 dungeon); diff --git a/include/code_802DE84.h b/include/code_802DE84.h index a16d463f9..efe8f24ed 100644 --- a/include/code_802DE84.h +++ b/include/code_802DE84.h @@ -11,8 +11,8 @@ struct unkStruct_203B300 MenuInputStructSub unk0; /* 0xC */ unkStruct_802C39C *mail; u32 unk10; - UnkTextStruct2 *unk14; - UnkTextStruct3 unk18; + Window *unk14; + Windows unk18; u8 unk78[4]; }; diff --git a/include/credits1.h b/include/credits1.h index 14c91fa68..39c029595 100644 --- a/include/credits1.h +++ b/include/credits1.h @@ -6,7 +6,7 @@ // size: 0x6C typedef struct Credits1Work { - UnkTextStruct3 unk0; + Windows unk0; s32 unk60; s32 unk64; /* 0x68 */ s32 creditsCategoryIndex; diff --git a/include/debug_menu1.h b/include/debug_menu1.h index 7417ac18b..0fec0caaf 100644 --- a/include/debug_menu1.h +++ b/include/debug_menu1.h @@ -8,7 +8,7 @@ struct DebugMenu { MenuStruct unk0[4]; - UnkTextStruct3 unk140; + Windows unk140; u32 fill1A0; }; diff --git a/include/debug_menu2.h b/include/debug_menu2.h index b56610cbe..39cbed18c 100644 --- a/include/debug_menu2.h +++ b/include/debug_menu2.h @@ -14,7 +14,7 @@ typedef struct unkStruct_203B3F0 MenuStruct unk4C; unkStructFor8013AA0 unk9C; u8 fillCC[0xD8 - 0xCC]; - UnkTextStruct3 unkD8; + Windows unkD8; } unkStruct_203B3F0; #endif // GUARD_DEBUG_MENU2_H diff --git a/include/debug_menu3.h b/include/debug_menu3.h index 3c64aec0e..a5851b53a 100644 --- a/include/debug_menu3.h +++ b/include/debug_menu3.h @@ -12,7 +12,7 @@ typedef struct unkStruct_203B3F4 /* 0x8 */ u32 menuAction; /* 0xC */ MenuItem menuItems[8]; MenuStruct unk4C; - UnkTextStruct3 unk9C; + Windows unk9C; } unkStruct_203B3F4; #endif // GUARD_DEBUG_MENU3_H diff --git a/include/debug_menu4.h b/include/debug_menu4.h index 25b605659..7a886483a 100644 --- a/include/debug_menu4.h +++ b/include/debug_menu4.h @@ -17,7 +17,7 @@ typedef struct unkStruct_203B3F8 unkStructFor8013AA0 unk60; MenuItem unk90[8]; u16 unkD0[8]; - UnkTextStruct3 unkE0; + Windows unkE0; } unkStruct_203B3F8; #endif // GUARD_DEBUG_MENU4_H diff --git a/include/felicity_bank.h b/include/felicity_bank.h index a2ad63ba1..c4044d49d 100644 --- a/include/felicity_bank.h +++ b/include/felicity_bank.h @@ -22,7 +22,7 @@ typedef struct FelicityBankWork unkStructFor8013AA0 unk64; /* 0x94 */ struct MonPortraitMsg monPortrait; struct MonPortraitMsg *monPortraitPtr; - UnkTextStruct3 unkA8; + Windows unkA8; } FelicityBankWork; bool8 CreateFelicityBank(s32 mode); diff --git a/include/friend_area_action_menu.h b/include/friend_area_action_menu.h index 7cdf7c193..132d5d898 100644 --- a/include/friend_area_action_menu.h +++ b/include/friend_area_action_menu.h @@ -65,7 +65,7 @@ struct unkStruct_203B2BC MenuItem menuItems[4]; u8 fill120[0x16C - 0x13C]; u16 unk16C[10]; - UnkTextStruct3 unk180; + Windows unk180; }; u32 sub_8027074(void); diff --git a/include/friend_list_menu.h b/include/friend_list_menu.h index eb5485477..a4c6d619f 100644 --- a/include/friend_list_menu.h +++ b/include/friend_list_menu.h @@ -31,7 +31,7 @@ typedef struct unkStruct_203B2B4 MenuStruct unk78; MenuItem unkC8[8]; u16 unk108[8]; - UnkTextStruct3 unk118; + Windows unk118; } unkStruct_203B2B4; bool8 CreateFriendListMenu(s32 param_1); diff --git a/include/friend_rescue.h b/include/friend_rescue.h index 78f4f4c65..a349b7fad 100644 --- a/include/friend_rescue.h +++ b/include/friend_rescue.h @@ -23,8 +23,8 @@ typedef struct WonderMailStruct_203B33C unkStruct_203B480 unk1E8; u8 unk218; MenuStruct unk21C[4]; - UnkTextStruct3 unk35C; - UnkTextStruct3 unk3BC; + Windows unk35C; + Windows unk3BC; /* 0x41C */ Item item; u32 unk420; // Is this supposed to be a File like 203B2C4? u8 unk424[0x100]; diff --git a/include/gulpin_shop.h b/include/gulpin_shop.h index e18eba9fd..4f5ef9b9d 100644 --- a/include/gulpin_shop.h +++ b/include/gulpin_shop.h @@ -27,7 +27,7 @@ typedef struct GulpinShopWork u8 fillC8[0x118 - 0xC8]; /* 0x118 */ struct MonPortraitMsg monPortrait; struct MonPortraitMsg *monPortraitPtr; - UnkTextStruct3 unk12C; + Windows unk12C; } GulpinShopWork; bool8 CreateGulpinShop(u32 mode, s16 pokeSpecies, Move *moves); diff --git a/include/gulpin_shop_801FB50.h b/include/gulpin_shop_801FB50.h index 179573e6b..f0237f115 100644 --- a/include/gulpin_shop_801FB50.h +++ b/include/gulpin_shop_801FB50.h @@ -35,7 +35,7 @@ typedef struct unkStruct_203B27C u8 fill11C[0x16C - 0x11C]; /* 0x16C */ struct MonPortraitMsg monPortrait; struct MonPortraitMsg *monPortraitPtr; - UnkTextStruct3 unk180; + Windows unk180; } unkStruct_203B27C; bool8 sub_801FB50(u32 mode); diff --git a/include/iq_skill_info_menu.h b/include/iq_skill_info_menu.h index 8a09588df..d6f9dd661 100644 --- a/include/iq_skill_info_menu.h +++ b/include/iq_skill_info_menu.h @@ -16,7 +16,7 @@ struct IQSkillInfoMenu u8 fill14[0x20 - 0x18]; u32 unk20; u32 unk24; - UnkTextStruct3 unk28; + Windows unk28; MenuInputStructSub unk88; }; diff --git a/include/iq_skill_menu.h b/include/iq_skill_menu.h index ab3102f5e..6a39ff357 100644 --- a/include/iq_skill_menu.h +++ b/include/iq_skill_menu.h @@ -19,7 +19,7 @@ struct IQSkillMenu /* 0x30 */ s32 menuAction; MenuItem unk34[8]; MenuStruct unk74; - UnkTextStruct3 unkC4; + Windows unkC4; }; bool8 CreateIQSkillMenu(s16 species); diff --git a/include/kangaskhan_storage1.h b/include/kangaskhan_storage1.h index d9fd833d7..ecb31853d 100644 --- a/include/kangaskhan_storage1.h +++ b/include/kangaskhan_storage1.h @@ -47,7 +47,7 @@ struct KangaskhanStorageWork unkStructFor8013AA0 unkA8; /* 0xD8 */ struct MonPortraitMsg monPortrait; struct MonPortraitMsg *monPortraitPtr; - UnkTextStruct3 unkEC; + Windows unkEC; }; bool8 CreateKangaskhanStorage(u32 mode); diff --git a/include/kangaskhan_storage2.h b/include/kangaskhan_storage2.h index 97b8e82e0..8fea21f32 100644 --- a/include/kangaskhan_storage2.h +++ b/include/kangaskhan_storage2.h @@ -27,7 +27,7 @@ typedef struct unkStruct_203B20C u16 unk60[8]; MenuStruct unk70; unkStructFor8013AA0 unkC0; - UnkTextStruct3 unkF0; + Windows unkF0; } unkStruct_203B20C; bool8 sub_8017E1C(void); diff --git a/include/kecleon_bros1.h b/include/kecleon_bros1.h index eb05faa75..054ad9a75 100644 --- a/include/kecleon_bros1.h +++ b/include/kecleon_bros1.h @@ -65,7 +65,7 @@ typedef struct KecleonBrosWork1 /* 0x84 */ MenuStruct menu; /* 0xD4 */ struct MonPortraitMsg monPortrait; struct MonPortraitMsg *monPortraitPtr; - UnkTextStruct3 unkE8; + Windows unkE8; } KecleonBrosWork1; // mode corresponds to the enum: KecleonBrosMode diff --git a/include/luminous_cave.h b/include/luminous_cave.h index 683421305..811046487 100644 --- a/include/luminous_cave.h +++ b/include/luminous_cave.h @@ -33,7 +33,7 @@ typedef struct LuminousCaveWork u8 unk110; u8 unk111; u8 unk112; - UnkTextStruct3 unk114; + Windows unk114; } LuminousCaveWork; void CleanLuminousCave(void); diff --git a/include/mailbox.h b/include/mailbox.h index 22f97b44d..6c181fd09 100644 --- a/include/mailbox.h +++ b/include/mailbox.h @@ -19,7 +19,7 @@ struct unkStruct_203B304 MenuStruct unk6C; MenuItem menuItems[8]; u16 unkFC[8]; - UnkTextStruct3 unk10C; + Windows unk10C; }; extern void SetMailboxState(u32); diff --git a/include/main_menu1.h b/include/main_menu1.h index 1b419b438..1ebc93f99 100644 --- a/include/main_menu1.h +++ b/include/main_menu1.h @@ -38,12 +38,12 @@ void CleanUpMenu(void); void DeleteMainMenu(void); MainMenu1Work *GetMainMenu(void); void InitMainMenu(void); -void SetMenuItems(MenuStruct *, UnkTextStruct3 *, s32 index, const UnkTextStruct2 *, const MenuItem *menuItems, bool8, u32 menuAction, bool8 unused); +void SetMenuItems(MenuStruct *, Windows *, s32 index, const Window *, const MenuItem *menuItems, bool8, u32 menuAction, bool8 unused); void SetUpMenu(void); s32 UpdateMenu(void); void sub_8035C1C(void); -void sub_8035CC0(UnkTextStruct3 *dataArray, u32 index); +void sub_8035CC0(Windows *dataArray, u32 index); void sub_8035CF4(MenuStruct *menu, u32 index, bool8); void sub_8035D1C(void); s16 sub_8035D3C(void); diff --git a/include/main_menu2.h b/include/main_menu2.h index 9267e578c..d53af187c 100644 --- a/include/main_menu2.h +++ b/include/main_menu2.h @@ -9,7 +9,7 @@ typedef struct MainMenu2Work { u32 unk0; MenuStruct unk4[4]; - UnkTextStruct3 unk144; + Windows unk144; /* 0x1A4 */ u32 currMenuChoice; } MainMenu2Work; diff --git a/include/makuhita_dojo1.h b/include/makuhita_dojo1.h index 088ccb009..8c1301bb5 100644 --- a/include/makuhita_dojo1.h +++ b/include/makuhita_dojo1.h @@ -30,7 +30,7 @@ typedef struct MakuhitaDojoWork1 u8 fill38[0x58 - 0x38]; /* 0x58 */ struct MonPortraitMsg monPortrait; struct MonPortraitMsg *monPortraitPtr; - UnkTextStruct3 unk6C; + Windows unk6C; } MakuhitaDojoWork1; void MakuhitaDojo_Delete(void); diff --git a/include/menu_input.h b/include/menu_input.h index 9eee9ac5f..158b098f9 100644 --- a/include/menu_input.h +++ b/include/menu_input.h @@ -9,9 +9,9 @@ s32 GetKeyPress(MenuInputStruct *r0); s32 sub_8012AE8(void); void sub_8012BC4(u32 x, u32 y, s32 n, s32 len, u32 color, u32 param_6); void sub_8012C60(u32 x, u32 y, u32 param_3, u32 color, u32 param_5); -void sub_8012CAC(UnkTextStruct2 *param_1, const MenuItem *param_2); -void sub_8012D08(UnkTextStruct2 *param_1, s32 param_2); -void sub_8012D34(UnkTextStruct2 *param_1, s32 param_2); +void sub_8012CAC(Window *param_1, const MenuItem *param_2); +void sub_8012D08(Window *param_1, s32 param_2); +void sub_8012D34(Window *param_1, s32 param_2); void sub_8012D60(MenuStruct *param_1, const MenuItem *menuItems, const u32 *colorArray, u16 *param_4, s32 menuAction, s32 index); void sub_8012E04(MenuStruct *param_1, const MenuItem *menuItems, const u32 *colorArray, u16 *param_4, s32 menuAction, s32 index); void sub_8012EA4(MenuStruct *param_1, bool8 r1); @@ -49,7 +49,7 @@ void sub_8013C68(unkStructFor8013AA0 *); void sub_8013D10(unkStructFor8013AA0 *); void sub_8013E54(void); void sub_8013F84(void); -void sub_80140B4(UnkTextStruct3 *); +void sub_80140B4(Windows *); #endif // GUARD_MENU_INPUT_H diff --git a/include/options_menu1.h b/include/options_menu1.h index 46f64b54c..10247f132 100644 --- a/include/options_menu1.h +++ b/include/options_menu1.h @@ -14,7 +14,7 @@ struct unkStruct_203B25C /* 0x1C */ MenuStruct menu; /* 0x6C */ MenuItem menuItems[8]; u16 unkAC[8]; - UnkTextStruct3 unkBC; + Windows unkBC; }; bool8 sub_801DCC4(void); diff --git a/include/options_menu2.h b/include/options_menu2.h index f0ddf18cb..f326e23b8 100644 --- a/include/options_menu2.h +++ b/include/options_menu2.h @@ -11,8 +11,8 @@ struct unkStruct_203B260 /* 0x4 */ MenuInputStructSub unk4; /* 0x10 */ MenuInputStruct input; u32 unk44; - UnkTextStruct2 *unk48; - UnkTextStruct3 unk4C; + Window *unk48; + Windows unk4C; }; bool8 sub_801E198(GameOptions *optionsMenu); diff --git a/include/other_menus1.h b/include/other_menus1.h index 0c35d485e..ad0e478f8 100644 --- a/include/other_menus1.h +++ b/include/other_menus1.h @@ -18,7 +18,7 @@ typedef struct unkStruct_203B35C u32 unk14; u8 fill18[0x1C - 0x18]; MenuStruct unk1C[4]; - UnkTextStruct3 unk15C; + Windows unk15C; unkStruct_8035D94 unk1BC[2]; unkStruct_203B480 unk1CC; unkStruct_203B480 unk1FC; diff --git a/include/party_list_menu.h b/include/party_list_menu.h index 0ed0d2c83..f4ad8476e 100644 --- a/include/party_list_menu.h +++ b/include/party_list_menu.h @@ -32,7 +32,7 @@ typedef struct unkStruct_203B2B8 MenuItem unk16C[10]; MenuItem unk1BC[10]; u16 unk20C[10]; - UnkTextStruct3 unk220; + Windows unk220; } unkStruct_203B2B8; bool8 CreatePartyListMenu(PokemonStruct1 *pokeStruct); diff --git a/include/pelipper_board.h b/include/pelipper_board.h index f29272503..fc4892d72 100644 --- a/include/pelipper_board.h +++ b/include/pelipper_board.h @@ -17,7 +17,7 @@ struct unkStruct_203B308 MenuStruct unk6C; MenuItem menuItems[8]; u16 unkFC[8]; - UnkTextStruct3 unk10C; + Windows unk10C; }; extern struct unkStruct_203B308 *gPelipperBoard; diff --git a/include/pokemon_news2.h b/include/pokemon_news2.h index 5d72cd208..d019d67e4 100644 --- a/include/pokemon_news2.h +++ b/include/pokemon_news2.h @@ -14,7 +14,7 @@ struct unkStruct_203B2D4 const u8 *unk10[4]; u32 unk20; u32 unk24; - UnkTextStruct3 unk28; + Windows unk28; MenuInputStructSub unk88; }; diff --git a/include/post_office_guide2.h b/include/post_office_guide2.h index 82159926c..a30bb5f71 100644 --- a/include/post_office_guide2.h +++ b/include/post_office_guide2.h @@ -11,8 +11,8 @@ typedef struct unkStruct_203B330 u8 unkC; /* 0xD */ u8 dungeonIndex; u32 unk10; - UnkTextStruct2 *unk14; - UnkTextStruct3 unk18; + Window *unk14; + Windows unk18; } unkStruct_203B330; bool8 sub_80319A4(u8, u8 dungeon, s32); diff --git a/include/rescue_password_menu.h b/include/rescue_password_menu.h index 0a2520827..7c3563a94 100644 --- a/include/rescue_password_menu.h +++ b/include/rescue_password_menu.h @@ -12,8 +12,8 @@ struct RescuePasswordMenu u32 currMenu; u32 state; MenuStruct unk8[4]; - UnkTextStruct3 unk148; - UnkTextStruct3 unk1A8; + Windows unk148; + Windows unk1A8; SpriteOAM unk208; u32 unk210; }; diff --git a/include/save_menu.h b/include/save_menu.h index 427e5c584..00bad9724 100644 --- a/include/save_menu.h +++ b/include/save_menu.h @@ -9,7 +9,7 @@ typedef struct SaveMenuWork /* 0x0 */ u32 currMenu; u32 unk4; MenuStruct unk8[4]; - UnkTextStruct3 unk148; + Windows unk148; SpriteOAM unk1A8; u32 unk1B0; // Sprite count? } SaveMenuWork; diff --git a/include/structs/menu.h b/include/structs/menu.h index 6a2ae4bcd..9c49bfc89 100644 --- a/include/structs/menu.h +++ b/include/structs/menu.h @@ -72,7 +72,7 @@ typedef struct unkStructFor8013AA0 s32 unkC; // maxInclusive? s32 unk10; s32 unk14; // index of unk18? But read as chosenValue..? - UnkTextStruct2 *unk18; + Window *unk18; s32 unk1C; // width of prompt? s32 unk20; // height of prompt? u8 unk24; // related to unk10 diff --git a/include/structs/str_text.h b/include/structs/str_text.h index 61c0cd30f..2468a4aed 100644 --- a/include/structs/str_text.h +++ b/include/structs/str_text.h @@ -28,36 +28,42 @@ typedef struct UnkTextStruct1 u8 unk46; } UnkTextStruct1; -typedef struct UnkTextStruct2_sub2 +typedef struct WindowHeader { u8 f0; u8 f1; u8 f2; u8 f3; -} UnkTextStruct2_sub2; +} WindowHeader; #include "structs/str_position.h" // size: 0x18 -typedef struct UnkTextStruct2 +typedef struct Window { u8 unk0; u8 fill1[0x4 - 0x1]; - s32 unk4; + s32 type; DungeonPos pos; - s16 unkC; - s16 unkE; - s16 unk10; + s16 width; + s16 height; + s16 unk10; // In most cases it's the same as height. If it's smaller than height, the window may look glitchy. Maybe something with tile allocation/how the window is filled? s16 unk12; - const UnkTextStruct2_sub2 *unk14; // Pointer to 4 bytes which may be x-coord related. Could be window's header? -} UnkTextStruct2; + const WindowHeader *unk14; +} Window; -typedef struct UnkTextStruct3 { - UnkTextStruct2 a0[4]; +#define WINDOW_TYPE_WITHOUT_BORDER 1 +#define WINDOW_TYPE_NORMAL 3 +#define WINDOW_TYPE_FILL_TRANSPARENT 5 +#define WINDOW_TYPE_WITH_HEADER 6 +#define WINDOW_TYPE_7 7 + +typedef struct Windows { + Window id[4]; // Something ugly, so that sub_805FD74 could match weird compiler memcpy/stack initialization #ifndef NONMATCHING u8 fakeMatch[0]; #endif // NONMATCHING -} UnkTextStruct3; +} Windows; #endif // GUARD_STR_TEXT_H diff --git a/include/structs/struct_sub80095e4.h b/include/structs/struct_sub80095e4.h index a38dfac93..9b5c3318b 100644 --- a/include/structs/struct_sub80095e4.h +++ b/include/structs/struct_sub80095e4.h @@ -12,8 +12,8 @@ typedef struct struct_Sub80095E4 { /* 0x0 */ MenuInputStruct input; u32 unk34; - UnkTextStruct2 *unk38; - UnkTextStruct3 unk3C; + Window *unk38; + Windows unk3C; // size: 0x9C } struct_Sub80095E4; @@ -22,7 +22,7 @@ typedef struct struct_Sub80095E4 typedef struct struct_Sub80095E4_2 { /* 0x0 */ struct_Sub80095E4 s0; // s as in 'struct' ; decided to go against unk as to not have `->unk0->unk3C` - UnkTextStruct2_sub2 unk9C; + WindowHeader unk9C; } struct_Sub80095E4_2; // Note: In order to get matching ASM, this macro had to be created. @@ -33,12 +33,12 @@ typedef struct struct_Sub80095E4_2 s16 newE; \ s16 a0 = (_a0); \ UNUSED s32 a0_ = a0; \ - UNUSED s16 oldE = (ptr).unk3C.a0[(ptr).unk34].unkE; \ + UNUSED s16 oldE = (ptr).unk3C.a0[(ptr).unk34].height; \ a0_ = 0; \ new10 = a0 + 2; \ newE = a0; \ \ - (ptr).unk3C.a0[(ptr).unk34].unkE = newE; \ + (ptr).unk3C.a0[(ptr).unk34].height = newE; \ (ptr).unk3C.a0[(ptr).unk34].unk10 = a0 + 2; \ \ ResetUnusedInputStruct(); \ @@ -54,10 +54,10 @@ typedef struct struct_Sub80095E4_2 #define SUB_80095E4_CALL_2(ptr) \ { \ s32 a0 = sub_80095E4((ptr).input.unk1A, 12) + 2; \ - UNUSED s16 oldE = (ptr).unk3C.a0[(ptr).unk34].unkE; \ + UNUSED s16 oldE = (ptr).unk3C.a0[(ptr).unk34].height; \ s16 newE = a0; \ \ - (ptr).unk3C.a0[(ptr).unk34].unkE = newE; \ + (ptr).unk3C.a0[(ptr).unk34].height = newE; \ (ptr).unk3C.a0[(ptr).unk34].unk10 = newE; \ \ ResetUnusedInputStruct(); \ diff --git a/include/text.h b/include/text.h index 02059816a..a1bb8165c 100644 --- a/include/text.h +++ b/include/text.h @@ -63,8 +63,8 @@ u32 UpdateFadeInTile(u32 a0); u32 sub_80063B0(void); void SelectCharmap(u32 a0); void SetCharacterMask(int a0); -void xxx_call_save_unk_text_struct_800641C(const UnkTextStruct3 *a0, bool8 a1, bool8 a2); -void RestoreUnkTextStruct_8006518(UnkTextStruct3 *unkData); +void xxx_call_save_unk_text_struct_800641C(const Windows *a0, bool8 a1, bool8 a2); +void RestoreUnkTextStruct_8006518(Windows *unkData); u32 sub_8006544(u32 index); void sub_8007334(s32 a0); void sub_80073B8(s32 a0); diff --git a/include/thank_you_wonder_mail.h b/include/thank_you_wonder_mail.h index 7c683e2c7..8761e25dc 100644 --- a/include/thank_you_wonder_mail.h +++ b/include/thank_you_wonder_mail.h @@ -22,8 +22,8 @@ typedef struct WonderMailStruct_203B2C4 unkStruct_203B480 unk1E8; /* 0x218 */ s8 mailIndex; MenuStruct unk21C[4]; - UnkTextStruct3 unk35C; - UnkTextStruct3 unk3BC; + Windows unk35C; + Windows unk3BC; Item unk41C; /* 0x420 */ struct MonPortraitMsg monPortrait; u32 unk430; diff --git a/include/trade_items_menu.h b/include/trade_items_menu.h index 912979441..6fa5cc386 100644 --- a/include/trade_items_menu.h +++ b/include/trade_items_menu.h @@ -47,8 +47,8 @@ struct TradeItemsMenu u32 unk10; unkStructFor8013AA0 unk14; MenuStruct unk44[4]; - UnkTextStruct3 unk184; - UnkTextStruct3 unk1E4; + Windows unk184; + Windows unk1E4; // TODO These might be structs... struct TradeItem unk244; diff --git a/include/wigglytuff_shop2.h b/include/wigglytuff_shop2.h index 1eac49f85..b3477fd49 100644 --- a/include/wigglytuff_shop2.h +++ b/include/wigglytuff_shop2.h @@ -13,8 +13,8 @@ typedef struct WigglytuffShop2Work u32 pokemonStatus[0x10]; /* 0x70 */ s32 numPokemoninFriendArea; s32 unk74; - UnkTextStruct2 *unk78; - UnkTextStruct3 unk7C; + Window *unk78; + Windows unk7C; u8 unkDC[4]; } WigglytuffShop2Work; diff --git a/include/wigglytuff_shop3.h b/include/wigglytuff_shop3.h index 866591260..59ae014c2 100644 --- a/include/wigglytuff_shop3.h +++ b/include/wigglytuff_shop3.h @@ -54,7 +54,7 @@ typedef struct WigglytuffShop3Work MenuStruct unk6C; /* 0xBC */ struct MonPortraitMsg monPortrait; struct MonPortraitMsg *monPortraitPtr; - UnkTextStruct3 unkD0; + Windows unkD0; u32 unk130; u32 unk134; } WigglytuffShop3Work; diff --git a/include/wonder_mail.h b/include/wonder_mail.h index 944f2b769..04690941d 100644 --- a/include/wonder_mail.h +++ b/include/wonder_mail.h @@ -22,8 +22,8 @@ typedef struct WonderMailStruct_203B2C0 u8 fill16A[0x218 - 0x1B8]; /* 0x218 */ u8 mailIndex; MenuStruct unk21C[4]; - UnkTextStruct3 unk35C; - UnkTextStruct3 unk3BC; + Windows unk35C; + Windows unk3BC; /* 0x41C */ u32 unkfill; // ItemSlot? /* 0x420 */ struct MonPortraitMsg monPortrait; /* 0x430 */ u8 padding3[0x534 - 0x430]; diff --git a/include/wonder_mail_802C860.h b/include/wonder_mail_802C860.h index 387a4594a..c4436fc70 100644 --- a/include/wonder_mail_802C860.h +++ b/include/wonder_mail_802C860.h @@ -19,7 +19,7 @@ struct unkStruct_203B2F0 MenuItem unk10C[8]; MenuItem unk14C[8]; u8 fill18C[0x19C - 0x18C]; - UnkTextStruct3 unk19C; + Windows unk19C; }; bool8 InitializeJobListMenu(u32); diff --git a/include/wonder_mail_802D098.h b/include/wonder_mail_802D098.h index 892320027..85fb329d9 100644 --- a/include/wonder_mail_802D098.h +++ b/include/wonder_mail_802D098.h @@ -34,7 +34,7 @@ typedef struct unkStruct_203B2F8 MenuItem unk118[8]; MenuItem unk158[8]; u16 unk198[8]; - UnkTextStruct3 unk1A8; + Windows unk1A8; } unkStruct_203B2F8; bool8 GetWonderMailAccepted(void); diff --git a/ld_script.txt b/ld_script.txt index 9540f7c96..196fc52bb 100755 --- a/ld_script.txt +++ b/ld_script.txt @@ -417,6 +417,8 @@ SECTIONS { src/code_800F034.o(.rodata); src/code_800F958.o(.rodata); data/data_80CE77C.o(.rodata); + src/code_8010F28.o(.rodata); + data/data_80CE77C_2.o(.rodata); src/debug.o(.rodata); src/save.o(.rodata); src/save_read.o(.rodata); diff --git a/src/code_8010F28.c b/src/code_8010F28.c index 3a57ef1de..9ee18f126 100644 --- a/src/code_8010F28.c +++ b/src/code_8010F28.c @@ -16,6 +16,7 @@ #include "code_800C9CC.h" #include "pokemon.h" #include "decompress.h" +#include "constants/direction.h" extern u32 sub_809034C(u8 dungeonIndex, s32 speciesId_, u8 *buffer, bool32 param_4_, bool32 param_5_); extern void sub_801178C(void); @@ -54,26 +55,72 @@ struct UnkStruct_203B0E8 u8 unk5E98[1500]; }; +struct FiendArea +{ + const u8 *name; + DungeonPos unk4; + u8 unk8[8]; + s16 unk10[8]; +}; + +struct UnkStruct_4018 +{ + u8 unk4018; + s16 unk2[8]; + axdata unk14; +}; + +// size: 0x4DD8 +struct UnkBgStruct +{ + OpenedFile *unk0[5]; + u16 unk14[64][64]; + u16 unk2014[64][64]; + const struct FiendArea *unk4014; + struct UnkStruct_4018 unk4018[32]; + s32 unk4A18; + s32 unk4A1C; + s32 unk4A20; + s32 unk4A24; + s32 unk4A28; + u8 unk4A2C; + axdata arrowSprites[NUM_DIRECTIONS]; + axdata unk4C10; + unkStruct_202EE8C unk4C4C[16]; + s32 unk4DCC; + u32 unk4DD0; + DungeonPos bgPos; + DungeonPos monSpritePos; + s32 unk4DDC; + s32 unk4DE0; + s32 unk4DE4; + s32 unk4DE8; + u8 unk4DEC[8]; + u8 unk4DF4; + s32 unk4DF8; + MenuInputStruct menu; +}; + EWRAM_INIT struct UnkBgStruct *gUnknown_203B0E4 = NULL; EWRAM_INIT struct UnkStruct_203B0E8 *gUnknown_203B0E8 = NULL; -EWRAM_INIT UnkTextStruct3 gUnknown_203B0EC = { +EWRAM_INIT Windows gUnknown_203B0EC = { .a0 = { [0] = { - .unk4 = 3, + .type = WINDOW_TYPE_NORMAL, .pos = {2, 10}, - .unkC = 26, - .unkE = 9, + .width = 26, + .height = 9, .unk10 = 9, }, [1] = { - .unk4 = 3, + .type = WINDOW_TYPE_NORMAL, .pos = {23, 6}, - .unkC = 5, - .unkE = 3, + .width = 5, + .height = 3, .unk10 = 3, }, - [2] = { .unk4 = 3,}, - [3] = { .unk4 = 3,}, + [2] = { .type = WINDOW_TYPE_NORMAL,}, + [3] = { .type = WINDOW_TYPE_NORMAL,}, } }; @@ -87,18 +134,16 @@ static inline bool8 ResetFlags(axdata *ptr) return ptr->flags = 0; } -extern u8 *const gUnknown_80D408C[]; + extern u8 *const gUnknown_80D4014[]; extern const FileArchive gTitleMenuFileArchive; extern const FileArchive gMonsterFileArchive; extern const u8 gUnknown_80D40E4[]; extern const u8 gUnknown_80D40EC[]; extern const u8 gUnknown_80D405C[]; -extern const DungeonPos gUnknown_80D40C4[]; extern const u8 gUnknown_80D40FC[]; extern const u8 gUnknown_80D4104[]; extern const u8 gUnknown_80D4120[]; -extern const u8 gUnknown_80D4124[]; extern const u8 gUnknown_80D3EFC[]; extern const u8 gUnknown_80D40F4[]; extern const u8 gUnknown_80D4064[]; @@ -133,7 +178,7 @@ static void sub_8010950(void); static void sub_8010A88(bool8 a0); static bool8 sub_8010A00(void); static void nullsub_24(void); -void sub_8011494(void); +void PrintAvailableSubAreas(void); void sub_8010960(void); void sub_8010798(void); void sub_8010858(void); @@ -143,20 +188,20 @@ void sub_801059C(void); bool8 sub_8010C58(u8 *str); void sub_8010C10(const u8 *text); void sub_801091C(void); -void sub_8011398(void); +void PrintCurrAreaName(void); void sub_801073C(void); void sub_8010B74(DungeonLocation *dungLocation); -void sub_801169C(void); -void sub_80110B0(void); +void RunFrameActions(void); +void UpdateBg(void); void sub_8010EF0(void); -void sub_8011300(void); -void sub_8011240(void); +void ShowDirectionArrows(void); +void UpdateMonSpritePosition(void); bool8 sub_800FFE8(u8 friendAreaId); -void sub_8011168(void); -void sub_80100C0(s32 a0, s32 a1, s32 count); -u8 sub_8010014(void); -s32 sub_800FAA8(s32 *a0, s32 *a1); -bool8 sub_800FB6C(void); +void HideTextWindowAndArrows(void); +void MoveToNewArea(s32 a0, s32 a1, s32 count); +u8 GetNewSelectedArea(void); +s32 ChooseArea(s32 *a0, s32 *newAreaId); +bool8 ChooseSubArea(void); void sub_800FC28(void); void sub_800FC5C(u8 a0); void sub_8010DA4(void); @@ -205,14 +250,14 @@ void sub_800F990(struct struct_unk800F990 *param_1) sub_8011760(); while (1) { s32 local_1c = 0; - s32 local_18 = 0; - s32 iVar2 = sub_800FAA8(&local_1c, &local_18); + s32 newAreaId = 0; + s32 iVar2 = ChooseArea(&local_1c, &newAreaId); if (iVar2 == 1) { - sub_80100C0(local_1c, local_18, 0x32); + MoveToNewArea(local_1c, newAreaId, 0x32); } else if (iVar2 == 2) { - if (!sub_800FB6C()) + if (!ChooseSubArea()) continue; param_1->unkC = gUnknown_203B0E4->unk4DF4; break; @@ -222,7 +267,7 @@ void sub_800F990(struct struct_unk800F990 *param_1) param_1->unkC = 0; break; } - sub_80100C0(gUnknown_203B0E4->unk4A20,0,10); + MoveToNewArea(gUnknown_203B0E4->unk4A20,0,10); } } @@ -231,30 +276,30 @@ void sub_800F990(struct struct_unk800F990 *param_1) nullsub_16(); } -s32 sub_800FAA8(s32 *a0, s32 *a1) +s32 ChooseArea(s32 *a0, s32 *newAreaId) { s32 ret = 0; - sub_8011300(); - sub_8011398(); + ShowDirectionArrows(); + PrintCurrAreaName(); while (ret == 0) { - s32 r3; + s32 areaId; - sub_801169C(); - r3 = sub_8010014(); - if (r3 != 0xFF) { + RunFrameActions(); + areaId = GetNewSelectedArea(); + if (areaId != 0xFF) { s32 r4 = gUnknown_203B0E4->unk4A18; struct UnkStruct_4018 *ptr = &gUnknown_203B0E4->unk4018[r4]; - if (ptr->unk2[r3] >= 0) { - s32 id = ptr->unk2[r3]; + if (ptr->unk2[areaId] >= 0) { + s32 id = ptr->unk2[areaId]; struct UnkStruct_4018 *ptr2 = &gUnknown_203B0E4->unk4018[id]; if (ptr2->unk4018 != 0) { ret = 1; *a0 = id; - *a1 = r3; - gUnknown_203B0E4->unk4A28 = r3; + *newAreaId = areaId; + gUnknown_203B0E4->unk4A28 = areaId; gUnknown_203B0E4->unk4A1C = r4; } } @@ -272,16 +317,16 @@ s32 sub_800FAA8(s32 *a0, s32 *a1) return ret; } -bool8 sub_800FB6C(void) +bool8 ChooseSubArea(void) { bool8 ret = FALSE; - sub_8011494(); + PrintAvailableSubAreas(); while (1) { - MenuInputStruct *menuPtr = &gUnknown_203B0E4->unk4DFC; + MenuInputStruct *menuPtr = &gUnknown_203B0E4->menu; AddMenuCursorSprite(menuPtr); - sub_801169C(); + RunFrameActions(); if (gRealInputs.repeated & DPAD_DOWN) { MoveMenuCursorDown(menuPtr); PlayCursorUpDownSoundEffect(); @@ -310,11 +355,11 @@ void sub_800FC28(void) { s32 i; - sub_8011168(); + HideTextWindowAndArrows(); sub_80117AC(); for (i = 0; i < 60; i++) { gUnknown_203B0E4->unk4DCC -= 2; - sub_801169C(); + RunFrameActions(); } } @@ -452,11 +497,11 @@ void sub_800FC5C(u8 a0) AxResInitFile(&gUnknown_203B0E4->unk4C10, gUnknown_203B0E4->unk0[3], 0, 0, 0, 0, TRUE); gUnknown_203B0E4->unk4A18 = var_48; - gUnknown_203B0E4->unk4DD8 = gUnknown_203B0E4->unk4014[var_48].unk4; - gUnknown_203B0E4->unk4DD4.x = gUnknown_203B0E4->unk4DD8.x - 120; - gUnknown_203B0E4->unk4DD4.y = gUnknown_203B0E4->unk4DD8.y - 80; - sub_8011240(); - sub_80110B0(); + gUnknown_203B0E4->monSpritePos = gUnknown_203B0E4->unk4014[var_48].unk4; + gUnknown_203B0E4->bgPos.x = gUnknown_203B0E4->monSpritePos.x - 120; + gUnknown_203B0E4->bgPos.y = gUnknown_203B0E4->monSpritePos.y - 80; + UpdateMonSpritePosition(); + UpdateBg(); } bool8 sub_800FFE8(u8 friendAreaId) @@ -468,7 +513,7 @@ bool8 sub_800FFE8(u8 friendAreaId) return FALSE; } -u8 sub_8010014(void) +u8 GetNewSelectedArea(void) { u8 sp1[16]; u8 sp2[16]; @@ -505,13 +550,13 @@ u8 sub_8010014(void) return 0xFF; } -void sub_80100C0(s32 a0, s32 a1, s32 count) +void MoveToNewArea(s32 a0, s32 a1, s32 count) { s32 i, arrayId; DungeonPos pos1, pos2; AxResInitFile(&gUnknown_203B0E4->unk4C10, gUnknown_203B0E4->unk0[3], 0, a1 & 7, 0, 0, TRUE); - sub_8011168(); + HideTextWindowAndArrows(); arrayId = gUnknown_203B0E4->unk4A18; pos1 = gUnknown_203B0E4->unk4014[arrayId].unk4; @@ -519,19 +564,19 @@ void sub_80100C0(s32 a0, s32 a1, s32 count) PlayCursorUpDownSoundEffect(); for (i = 0; i < count; i++) { - gUnknown_203B0E4->unk4DD8.x = ((((pos2.x - pos1.x) * (i << 8)) / count) / 256) + pos1.x; - gUnknown_203B0E4->unk4DD8.y = ((((pos2.y - pos1.y) * (i << 8)) / count) / 256) + pos1.y; + gUnknown_203B0E4->monSpritePos.x = ((((pos2.x - pos1.x) * (i << 8)) / count) / 256) + pos1.x; + gUnknown_203B0E4->monSpritePos.y = ((((pos2.y - pos1.y) * (i << 8)) / count) / 256) + pos1.y; - sub_8011240(); - sub_80110B0(); - sub_801169C(); + UpdateMonSpritePosition(); + UpdateBg(); + RunFrameActions(); } gUnknown_203B0E4->unk4A18 = a0; - gUnknown_203B0E4->unk4DD8 = gUnknown_203B0E4->unk4014[a0].unk4; - sub_8011240(); - sub_80110B0(); - sub_801169C(); + gUnknown_203B0E4->monSpritePos = gUnknown_203B0E4->unk4014[a0].unk4; + UpdateMonSpritePosition(); + UpdateBg(); + RunFrameActions(); AxResInitFile(&gUnknown_203B0E4->unk4C10, gUnknown_203B0E4->unk0[3], 0, 0, 0, 0, TRUE); } @@ -893,18 +938,18 @@ static void sub_8010A88(bool8 a0) void sub_8010B74(DungeonLocation *dungLocation) { const s32 x = 12; - UnkTextStruct3 spTxtStruct = { + Windows spTxtStruct = { .a0 = { [0] = { - .unk4 = 3, + .type = WINDOW_TYPE_NORMAL, .pos = {x, 2}, - .unkC = 16, - .unkE = 2, + .width = 16, + .height = 2, .unk10 = 2, }, - [1] = {.unk4 = 3}, - [2] = {.unk4 = 3}, - [3] = {.unk4 = 3}, + [1] = {.type = WINDOW_TYPE_NORMAL}, + [2] = {.type = WINDOW_TYPE_NORMAL}, + [3] = {.type = WINDOW_TYPE_NORMAL}, } }; @@ -918,7 +963,7 @@ void sub_8010B74(DungeonLocation *dungLocation) xxx_call_save_unk_text_struct_800641C(&spTxtStruct, TRUE, TRUE); sub_80073B8(0); CopyDungeonName1toBuffer(gFormatBuffer_Monsters[0], dungLocation); - PrintFormattedStringOnWindow(12, 2, gUnknown_80D4074, 0, '\0'); + PrintFormattedStringOnWindow(12, 2, _("{CENTER_ALIGN}{POKEMON_0}"), 0, '\0'); sub_80073E0(0); } @@ -952,15 +997,15 @@ bool8 sub_8010C58(u8 *str) gUnknown_203B0EC.a0[0].pos.y = 19 - r2; gUnknown_203B0EC.a0[0].unk10 = r2; - gUnknown_203B0EC.a0[0].unkE = r2; + gUnknown_203B0EC.a0[0].height = r2; gUnknown_203B0EC.a0[1].pos.y = 14 - r2; xxx_call_save_unk_text_struct_800641C(&gUnknown_203B0EC, TRUE, TRUE); sub_80073B8(0); PrintFormattedStringOnWindow(4, 0, str, 0, '\0'); sub_80073E0(0); sub_80073B8(1); - PrintFormattedStringOnWindow(10, 0, gUnknown_80D407C, 1, '\0'); - PrintFormattedStringOnWindow(10, 12, gUnknown_80D4080, 1, '\0'); + PrintFormattedStringOnWindow(10, 0, "Yes", 1, '\0'); + PrintFormattedStringOnWindow(10, 12, "No", 1, '\0'); sub_80073E0(1); menuInput.menuIndex = 1; @@ -1010,6 +1055,28 @@ void sub_8010D8C(u8 id, DungeonPos *pos) pos->y = gDungeonCoordinates[id].y; } +UNUSED static const char sPksDir2[] = "pksdir0"; + +static char *const gUnknown_80D408C[] = +{ + "wmapfont", + "wmapmcc", + "wmapcani", + "wmappal", +}; + +static const DungeonPos gUnknown_80D40C4[] = +{ + {0, 24}, + {24, 24}, + {24, 0}, + {24, -24}, + {0, -24}, + {-24, -24}, + {-24, 0}, + {-24, 24}, +}; + void sub_8010DA4(void) { u8 filename[0xC]; @@ -1019,11 +1086,11 @@ void sub_8010DA4(void) OpenedFile *file = OpenFileAndGetFileDataPtr(gUnknown_80D408C[0], &gTitleMenuFileArchive); OpenedFile *file2 = OpenFileAndGetFileDataPtr(gUnknown_80D408C[1], &gTitleMenuFileArchive); - sprintf(filename, gUnknown_80D40E4, pokeStruct->speciesNum); + sprintf(filename, "ax%03d", pokeStruct->speciesNum); gUnknown_203B0E4->unk0[3] = OpenFileAndGetFileDataPtr(filename, &gMonsterFileArchive); - gUnknown_203B0E4->unk0[2] = OpenFileAndGetFileDataPtr(gUnknown_80D40EC, &gTitleMenuFileArchive); + gUnknown_203B0E4->unk0[2] = OpenFileAndGetFileDataPtr("wmapspr", &gTitleMenuFileArchive); gUnknown_203B0E4->unk0[4] = OpenFileAndGetFileDataPtr(gUnknown_80D408C[2], &gTitleMenuFileArchive); - gUnknown_203B0E4->unk0[1] = OpenFileAndGetFileDataPtr(gUnknown_80D40F4, &gMonsterFileArchive); + gUnknown_203B0E4->unk0[1] = OpenFileAndGetFileDataPtr("palet", &gMonsterFileArchive); gUnknown_203B0E4->unk0[0] = OpenFileAndGetFileDataPtr(gUnknown_80D408C[3], &gTitleMenuFileArchive); gUnknown_203B0E4->unk4DD0 = GetPokemonOverworldPalette(pokeStruct->speciesNum, 0); @@ -1035,11 +1102,11 @@ void sub_8010DA4(void) DecompressATFile((u8 *) &gUnknown_203B0E4->unk14, size, file2); gUnknown_203B0E4->unk4DCC = 0; - gUnknown_203B0E4->unk4DD4.x = 0; - gUnknown_203B0E4->unk4DD4.y = 0; + gUnknown_203B0E4->bgPos.x = 0; + gUnknown_203B0E4->bgPos.y = 0; - for (i = 0; i < 8; i++) { - ResetFlags(&gUnknown_203B0E4->unk4A30[i]); + for (i = 0; i < NUM_DIRECTIONS; i++) { + ResetFlags(&gUnknown_203B0E4->arrowSprites[i]); } CloseFile(file); @@ -1065,9 +1132,9 @@ void sub_8010F28(void) sub_8004E8C(&var_30); var_30.unk4 = 0xF3FF; var_30.unkA = 0x800; - pos = gUnknown_203B0E4->unk4DD4; + pos = gUnknown_203B0E4->bgPos; RunAxAnimationFrame(&gUnknown_203B0E4->unk4C10); - DoAxFrame_800558C(&gUnknown_203B0E4->unk4C10, gUnknown_203B0E4->unk4DD8.x - pos.x, gUnknown_203B0E4->unk4DD8.y - pos.y, 3, gUnknown_203B0E4->unk4DD0, &var_30); + DoAxFrame_800558C(&gUnknown_203B0E4->unk4C10, gUnknown_203B0E4->monSpritePos.x - pos.x, gUnknown_203B0E4->monSpritePos.y - pos.y, 3, gUnknown_203B0E4->unk4DD0, &var_30); for (i = 0; i < 32; i++) { struct UnkStruct_4018 *r0 = &gUnknown_203B0E4->unk4018[i]; @@ -1080,13 +1147,13 @@ void sub_8010F28(void) { s32 i; - for (i = 0; i < 8; i++) { - if (CheckAxFlag8000(&gUnknown_203B0E4->unk4A30[i])) { - RunAxAnimationFrame(&gUnknown_203B0E4->unk4A30[i]); + for (i = 0; i < NUM_DIRECTIONS; i++) { + if (CheckAxFlag8000(&gUnknown_203B0E4->arrowSprites[i])) { + RunAxAnimationFrame(&gUnknown_203B0E4->arrowSprites[i]); if (!(gRealInputs.held & R_BUTTON) || (i % 2) != 0) { - DoAxFrame_800558C(&gUnknown_203B0E4->unk4A30[i], - (gUnknown_80D40C4[i].x + gUnknown_203B0E4->unk4DD8.x) - pos.x, - (gUnknown_80D40C4[i].y + gUnknown_203B0E4->unk4DD8.y) - pos.y, + DoAxFrame_800558C(&gUnknown_203B0E4->arrowSprites[i], + (gUnknown_80D40C4[i].x + gUnknown_203B0E4->monSpritePos.x) - pos.x, + (gUnknown_80D40C4[i].y + gUnknown_203B0E4->monSpritePos.y) - pos.y, 2, 0, &var_30); } } @@ -1094,14 +1161,14 @@ void sub_8010F28(void) } } -void sub_80110B0(void) +void UpdateBg(void) { s32 i, j; - s32 y1 = gUnknown_203B0E4->unk4DD4.y >> 3; + s32 y1 = gUnknown_203B0E4->bgPos.y >> 3; s32 y2 = y1; for (i = 0; i < 21; i++) { - s32 x1 = gUnknown_203B0E4->unk4DD4.x >> 3; + s32 x1 = gUnknown_203B0E4->bgPos.x >> 3; s32 x2 = x1; for (j = 0; j < 31; j++) { @@ -1121,7 +1188,7 @@ void sub_80110B0(void) sub_80098F8(3); } -void sub_8011168(void) +void HideTextWindowAndArrows(void) { s32 i; @@ -1130,8 +1197,8 @@ void sub_8011168(void) gUnknown_203B0E4->unk4DE0 = 0; gUnknown_203B0E4->unk4DE4 = 0; gUnknown_203B0E4->unk4DE8 = 0; - for (i = 0; i < 8; i++) { - ResetFlags(&gUnknown_203B0E4->unk4A30[i]); + for (i = 0; i < NUM_DIRECTIONS; i++) { + ResetFlags(&gUnknown_203B0E4->arrowSprites[i]); } } @@ -1162,70 +1229,70 @@ bool8 sub_80111C4(void) return ret; } -void sub_8011240(void) +void UpdateMonSpritePosition(void) { - if (gUnknown_203B0E4->unk4DD8.x - gUnknown_203B0E4->unk4DD4.x < 48) { - gUnknown_203B0E4->unk4DD4.x = gUnknown_203B0E4->unk4DD8.x - 48; + if (gUnknown_203B0E4->monSpritePos.x - gUnknown_203B0E4->bgPos.x < 48) { + gUnknown_203B0E4->bgPos.x = gUnknown_203B0E4->monSpritePos.x - 48; } - else if (gUnknown_203B0E4->unk4DD8.x - gUnknown_203B0E4->unk4DD4.x > 192) { - gUnknown_203B0E4->unk4DD4.x = gUnknown_203B0E4->unk4DD8.x - 192; + else if (gUnknown_203B0E4->monSpritePos.x - gUnknown_203B0E4->bgPos.x > 192) { + gUnknown_203B0E4->bgPos.x = gUnknown_203B0E4->monSpritePos.x - 192; } - if (gUnknown_203B0E4->unk4DD8.y - gUnknown_203B0E4->unk4DD4.y < 48) { - gUnknown_203B0E4->unk4DD4.y = gUnknown_203B0E4->unk4DD8.y - 48; + if (gUnknown_203B0E4->monSpritePos.y - gUnknown_203B0E4->bgPos.y < 48) { + gUnknown_203B0E4->bgPos.y = gUnknown_203B0E4->monSpritePos.y - 48; } - else if (gUnknown_203B0E4->unk4DD8.y - gUnknown_203B0E4->unk4DD4.y > 112) { - gUnknown_203B0E4->unk4DD4.y = gUnknown_203B0E4->unk4DD8.y - 112; + else if (gUnknown_203B0E4->monSpritePos.y - gUnknown_203B0E4->bgPos.y > 112) { + gUnknown_203B0E4->bgPos.y = gUnknown_203B0E4->monSpritePos.y - 112; } - if (gUnknown_203B0E4->unk4DD4.x < 0) { - gUnknown_203B0E4->unk4DD4.x = 0; + if (gUnknown_203B0E4->bgPos.x < 0) { + gUnknown_203B0E4->bgPos.x = 0; } - if (gUnknown_203B0E4->unk4DD4.y < 0) { - gUnknown_203B0E4->unk4DD4.y = 0; + if (gUnknown_203B0E4->bgPos.y < 0) { + gUnknown_203B0E4->bgPos.y = 0; } - if (gUnknown_203B0E4->unk4DD4.x > 239) { - gUnknown_203B0E4->unk4DD4.x = 239; + if (gUnknown_203B0E4->bgPos.x > 239) { + gUnknown_203B0E4->bgPos.x = 239; } - if (gUnknown_203B0E4->unk4DD4.y > 151) { - gUnknown_203B0E4->unk4DD4.y = 151; + if (gUnknown_203B0E4->bgPos.y > 151) { + gUnknown_203B0E4->bgPos.y = 151; } } -void sub_8011300(void) +void ShowDirectionArrows(void) { s32 i; struct UnkStruct_4018 *r9 = &gUnknown_203B0E4->unk4018[gUnknown_203B0E4->unk4A18]; - for (i = 0; i < 8; i++) { - ResetFlags(&gUnknown_203B0E4->unk4A30[i]); + for (i = 0; i < NUM_DIRECTIONS; i++) { + ResetFlags(&gUnknown_203B0E4->arrowSprites[i]); if (r9->unk2[i] >= 0) { struct UnkStruct_4018 *ptr = &gUnknown_203B0E4->unk4018[r9->unk2[i]]; if (ptr->unk4018 != 0) { - AxResInitFile(&gUnknown_203B0E4->unk4A30[i], gUnknown_203B0E4->unk0[2], i + 4, 0, 0x40, 0, TRUE); + AxResInitFile(&gUnknown_203B0E4->arrowSprites[i], gUnknown_203B0E4->unk0[2], i + 4, 0, 0x40, 0, TRUE); } } } } -void sub_8011398(void) +void PrintCurrAreaName(void) { u8 txt[200]; s32 id = gUnknown_203B0E4->unk4A18; const struct FiendArea *r6 = &gUnknown_203B0E4->unk4014[id]; - UnkTextStruct3 spTxtStruct = {0}; + Windows spTxtStruct = {0}; - spTxtStruct.a0[0].unk4 = 3; + spTxtStruct.a0[0].type = WINDOW_TYPE_NORMAL; spTxtStruct.a0[0].pos.x = 7; spTxtStruct.a0[0].pos.y = 2; - spTxtStruct.a0[0].unkC = 21; - spTxtStruct.a0[0].unkE = 2; + spTxtStruct.a0[0].width = 21; + spTxtStruct.a0[0].height = 2; spTxtStruct.a0[0].unk10 = 2; - spTxtStruct.a0[1].unk4 = 3; - spTxtStruct.a0[2].unk4 = 3; - spTxtStruct.a0[3].unk4 = 3; + spTxtStruct.a0[1].type = WINDOW_TYPE_NORMAL; + spTxtStruct.a0[2].type = WINDOW_TYPE_NORMAL; + spTxtStruct.a0[3].type = WINDOW_TYPE_NORMAL; - if (gUnknown_203B0E4->unk4DD8.y - gUnknown_203B0E4->unk4DD4.y <= 80) { + if (gUnknown_203B0E4->monSpritePos.y - gUnknown_203B0E4->bgPos.y <= 80) { spTxtStruct.a0[0].pos.y = 17; } else { @@ -1234,40 +1301,40 @@ void sub_8011398(void) xxx_call_save_unk_text_struct_800641C(&spTxtStruct, TRUE, TRUE); sub_80073B8(0); - sprintfStatic(txt, gUnknown_80D40FC, r6->name); + sprintfStatic(txt, _("{CENTER_ALIGN}%s"), r6->name); PrintFormattedStringOnWindow(12, 2, txt, 0, '\0'); sub_80073E0(0); gUnknown_203B0E4->unk4DDC = (spTxtStruct.a0[0].pos.x * 8) - 5; gUnknown_203B0E4->unk4DE0 = (spTxtStruct.a0[0].pos.y * 8) + 5; - gUnknown_203B0E4->unk4DE4 = (spTxtStruct.a0[0].unkC * 8) + 10; - gUnknown_203B0E4->unk4DE8 = (spTxtStruct.a0[0].unkE * 8) + 10; + gUnknown_203B0E4->unk4DE4 = (spTxtStruct.a0[0].width * 8) + 10; + gUnknown_203B0E4->unk4DE8 = (spTxtStruct.a0[0].height * 8) + 10; } -void sub_8011494(void) +void PrintAvailableSubAreas(void) { s32 i, count, var; s32 id = gUnknown_203B0E4->unk4A18; const struct FiendArea *r8 = &gUnknown_203B0E4->unk4014[id]; - MenuInputStruct *menuInput = &gUnknown_203B0E4->unk4DFC; - UnkTextStruct2_sub2 subTxt; - UnkTextStruct3 spTxtStruct = { + MenuInputStruct *menuInput = &gUnknown_203B0E4->menu; + WindowHeader header; + Windows spTxtStruct = { .a0 = { [0] = { - .unk4 = 6, + .type = WINDOW_TYPE_WITH_HEADER, .pos = {7, 2}, - .unkC = 21, - .unkE = 2, + .width = 21, + .height = 2, .unk10 = 2, - .unk14 = &subTxt, + .unk14 = &header, }, [1] = { - .unk4 = 3, + .type = WINDOW_TYPE_NORMAL, }, [2] = { - .unk4 = 3, + .type = WINDOW_TYPE_NORMAL, }, [3] = { - .unk4 = 3, + .type = WINDOW_TYPE_NORMAL, }, } }; @@ -1281,10 +1348,10 @@ void sub_8011494(void) } gUnknown_203B0E4->unk4DF8 = count; - subTxt.f0 = 1; - subTxt.f1 = 0; - subTxt.f2 = 18; - subTxt.f3 = 0; + header.f0 = 1; + header.f1 = 0; + header.f2 = 18; + header.f3 = 0; menuInput->menuIndex = 0; menuInput->unk1A = count; menuInput->unk1C = count; @@ -1301,7 +1368,7 @@ void sub_8011494(void) menuInput->unk8.y = 8; sub_801317C(&menuInput->unk28); var = sub_80095E4(menuInput->unk1C, 0); - spTxtStruct.a0[0].unk10 = spTxtStruct.a0[0].unkE = var + 2; + spTxtStruct.a0[0].unk10 = spTxtStruct.a0[0].height = var + 2; sub_80137B0(menuInput, var * 8); xxx_call_save_unk_text_struct_800641C(&spTxtStruct, TRUE, TRUE); @@ -1311,7 +1378,7 @@ void sub_8011494(void) gUnknown_203B0E4->unk4DE4 = 0; gUnknown_203B0E4->unk4DE8 = 0; sub_80073B8(0); - PrintFormattedStringOnWindow(16, 0, gUnknown_80D4104, 0, '\0'); + PrintFormattedStringOnWindow(16, 0, _("Where would you like to go?"), 0, '\0'); for (i = 0; i < count; i++) { unkStruct_8092638 unkFriendAreaStruct; @@ -1320,23 +1387,23 @@ void sub_8011494(void) sub_80101F8(gFormatBuffer_Items[0], r5); if (r5 == 0) { - PrintFormattedStringOnWindow(12, r4, gUnknown_80D4120, 0, '\0'); + PrintFormattedStringOnWindow(12, r4, _("{MOVE_ITEM_0}"), 0, '\0'); } else { sub_80926F8(r5, &unkFriendAreaStruct, gUnknown_203B0E4->unk4A2C); gFormatArgs[0] = unkFriendAreaStruct.unk2; gFormatArgs[1] = unkFriendAreaStruct.numPokemon; - PrintFormattedStringOnWindow(12, r4, gUnknown_80D4124, 0, '\0'); + PrintFormattedStringOnWindow(12, r4, _("{MOVE_ITEM_0}($v02/$v12)"), 0, '\0'); } } sub_80073E0(0); } -void sub_801169C(void) +void RunFrameActions(void) { - SetBG2RegOffsets(gUnknown_203B0E4->unk4DD4.x, gUnknown_203B0E4->unk4DD4.y); - SetBG3RegOffsets(gUnknown_203B0E4->unk4DD4.x, gUnknown_203B0E4->unk4DD4.y); + SetBG2RegOffsets(gUnknown_203B0E4->bgPos.x, gUnknown_203B0E4->bgPos.y); + SetBG3RegOffsets(gUnknown_203B0E4->bgPos.x, gUnknown_203B0E4->bgPos.y); sub_8010F28(); sub_8004AF0(sub_80111C4(), gUnknown_203B0E4->unk4C4C, 0xB0, 16, gUnknown_203B0E4->unk4DCC, NULL); sub_8005838(NULL, 0); diff --git a/src/code_8015080.c b/src/code_8015080.c index 7138cc5ce..a493ef1d4 100644 --- a/src/code_8015080.c +++ b/src/code_8015080.c @@ -16,13 +16,13 @@ struct unkStruct_203B1F8 // size: 0x4B4 u32 menuAction; MenuStruct unk4; - UnkTextStruct3 unk54; + Windows unk54; u8 buffer[0x400]; }; EWRAM_INIT struct unkStruct_203B1F8 *gUnknown_203B1F8 = {NULL}; -const UnkTextStruct2 gUnknown_80DAF70 = { +const Window gUnknown_80DAF70 = { 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, @@ -31,7 +31,7 @@ const UnkTextStruct2 gUnknown_80DAF70 = { NULL }; -const UnkTextStruct2 gUnknown_80DAF88 = { +const Window gUnknown_80DAF88 = { 0x00, 0x00, 0x00, 0x00, 0x03, 0x02, 0x02, @@ -40,7 +40,7 @@ const UnkTextStruct2 gUnknown_80DAF88 = { NULL }; -const UnkTextStruct2 gUnknown_80DAFA0 = { +const Window gUnknown_80DAFA0 = { 0x00, 0x00, 0x00, 0x00, 0x03, 0x16, 0x0F, @@ -251,7 +251,7 @@ static const u8 *const gUnknown_80DB4F4[] = _("END"), }; -static const UnkTextStruct2 gUnknown_80DB538 = { +static const Window gUnknown_80DB538 = { 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, @@ -260,7 +260,7 @@ static const UnkTextStruct2 gUnknown_80DB538 = { NULL }; -static const UnkTextStruct2 gUnknown_80DB550 = { +static const Window gUnknown_80DB550 = { 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x0A, @@ -269,7 +269,7 @@ static const UnkTextStruct2 gUnknown_80DB550 = { NULL }; -static const UnkTextStruct2 gUnknown_80DB568 = { +static const Window gUnknown_80DB568 = { 0x00, 0x00, 0x00, 0x00, 0x01, 0x04, 0x03, @@ -278,7 +278,7 @@ static const UnkTextStruct2 gUnknown_80DB568 = { NULL }; -static const UnkTextStruct2 gUnknown_80DB580 = { +static const Window gUnknown_80DB580 = { 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x02, @@ -356,7 +356,7 @@ struct unkStruct_203B1FC u8 *unkF8; u8 unkFC[56]; u8 *unk134; - UnkTextStruct3 unk138; + Windows unk138; }; extern struct unkStruct_203B1FC *gUnknown_203B1FC; diff --git a/src/code_801C8C4.c b/src/code_801C8C4.c index 833f7546b..5d331fc93 100644 --- a/src/code_801C8C4.c +++ b/src/code_801C8C4.c @@ -164,10 +164,10 @@ void sub_801CCD8(void) y = sub_8013800(&sUnknown_203B244->unk4B4.s0.input, index); PrintStringOnWindow(8, y, buffer, sUnknown_203B244->unk4B4.s0.unk34, 0); y2 = sub_8013800(&sUnknown_203B244->unk4B4.s0.input, index); - sub_8012BC4((sUnknown_203B244->unk4B4.s0.unk38->unkC * 8) - 2, y2, gTeamInventoryRef->teamStorage[itemID], 3, 5, sUnknown_203B244->unk4B4.s0.unk34); + sub_8012BC4((sUnknown_203B244->unk4B4.s0.unk38->width * 8) - 2, y2, gTeamInventoryRef->teamStorage[itemID], 3, 5, sUnknown_203B244->unk4B4.s0.unk34); if (sub_801CFE0(itemID) & 1) - sub_8007B7C(sUnknown_203B244->unk4B4.s0.unk34, 8, sub_8013800(&sUnknown_203B244->unk4B4.s0.input, index), (sUnknown_203B244->unk4B4.s0.unk38->unkC - 1) * '\b', 10); // TODO: Ghidra being crazy + sub_8007B7C(sUnknown_203B244->unk4B4.s0.unk34, 8, sub_8013800(&sUnknown_203B244->unk4B4.s0.input, index), (sUnknown_203B244->unk4B4.s0.unk38->width - 1) * '\b', 10); // TODO: Ghidra being crazy } sub_80073E0(sUnknown_203B244->unk4B4.s0.unk34); diff --git a/src/code_801D014.c b/src/code_801D014.c index 472ebd8ec..c7c0e496b 100644 --- a/src/code_801D014.c +++ b/src/code_801D014.c @@ -200,14 +200,14 @@ static void sub_801D220(void) sUnknown_203B250->unkB8.a0[0] = sUnknown_80DBE98; sub_8012CAC(&sUnknown_203B250->unkB8.a0[0], sUnknown_203B250->unk68); - sUnknown_203B250->unkB8.a0[0].unkC = 9; + sUnknown_203B250->unkB8.a0[0].width = 9; } else { for (i = 0; i < 4; i++) sUnknown_203B250->unkB8.a0[i] = sUnknown_80DBEB0[i]; sub_8012CAC(&sUnknown_203B250->unkB8.a0[0], sUnknown_203B250->unk68); - sUnknown_203B250->unkB8.a0[0].unkC = 8; + sUnknown_203B250->unkB8.a0[0].width = 8; } break; case 1: @@ -219,14 +219,14 @@ static void sub_801D220(void) sUnknown_203B250->unkB8.a0[0] = sUnknown_80DBE98; sub_8012CAC(&sUnknown_203B250->unkB8.a0[0], sUnknown_203B250->unk68); - sUnknown_203B250->unkB8.a0[0].unkC = 9; + sUnknown_203B250->unkB8.a0[0].width = 9; } else { for (i = 0; i < 4; i++) sUnknown_203B250->unkB8.a0[i] = sUnknown_80DBEB0[i]; sub_8012CAC(&sUnknown_203B250->unkB8.a0[0], sUnknown_203B250->unk68); - sUnknown_203B250->unkB8.a0[0].unkC = 8; + sUnknown_203B250->unkB8.a0[0].width = 8; } break; default: diff --git a/src/code_801EE10.c b/src/code_801EE10.c index 0ce383ec7..b13f34682 100644 --- a/src/code_801EE10.c +++ b/src/code_801EE10.c @@ -13,7 +13,7 @@ EWRAM_INIT unkStruct_203B270 *gUnknown_203B270 = {NULL}; -const UnkTextStruct2 gUnknown_80DC240 = { +const Window gUnknown_80DC240 = { 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, @@ -22,9 +22,9 @@ const UnkTextStruct2 gUnknown_80DC240 = { NULL }; -const UnkTextStruct2_sub2 gUnkData_80DC258 = {0x01, 0x00, 0x0F, 0x00}; +const WindowHeader gUnkData_80DC258 = {0x01, 0x00, 0x0F, 0x00}; -const UnkTextStruct2 gUnknown_80DC25C = { +const Window gUnknown_80DC25C = { 0, 0, 0, 0, 6, 0x2, 0x2, @@ -33,7 +33,7 @@ const UnkTextStruct2 gUnknown_80DC25C = { &gUnkData_80DC258 }; -const UnkTextStruct2 gUnknown_80DC274 = { +const Window gUnknown_80DC274 = { 0, 0, 0, 0, 3, 0x2, 0xF, diff --git a/src/code_801F428.c b/src/code_801F428.c index 82a225896..070a15300 100644 --- a/src/code_801F428.c +++ b/src/code_801F428.c @@ -20,7 +20,7 @@ struct unkStruct_203B274 }; EWRAM_INIT struct unkStruct_203B274 *gUnknown_203B274 = {NULL}; -static const UnkTextStruct2 sUnknown_80DC2AC = { +static const Window sUnknown_80DC2AC = { 0, 0, 0, 0, 3, 0, 0, @@ -28,7 +28,7 @@ static const UnkTextStruct2 sUnknown_80DC2AC = { 0, 0, NULL }; -static const UnkTextStruct2 sUnknown_80DC2C4 = { +static const Window sUnknown_80DC2C4 = { 0, 0, 0, 0, 6, 2, 2, diff --git a/src/code_801F808.c b/src/code_801F808.c index 9fd0847bc..e17103e0b 100644 --- a/src/code_801F808.c +++ b/src/code_801F808.c @@ -23,15 +23,15 @@ struct unkStruct_203B278 u32 unk24; MenuInputStruct unk28; u32 unk5C; - UnkTextStruct2 *unk60; - UnkTextStruct3 unk64; - UnkTextStruct2_sub2 unkC4; + Window *unk60; + Windows unk64; + WindowHeader unkC4; MenuInputStructSub unkC8; }; EWRAM_INIT struct unkStruct_203B278 *gUnknown_203B278 = {NULL}; -static const UnkTextStruct2 sUnknown_80DC2F8 = { +static const Window sUnknown_80DC2F8 = { 0, 0, 0, 0, 3, 0, 0, diff --git a/src/code_80227B8.c b/src/code_80227B8.c index 80eb414c2..754ca4587 100644 --- a/src/code_80227B8.c +++ b/src/code_80227B8.c @@ -116,7 +116,7 @@ static void sub_802293C(void) sub_8022D2C(); sUnknown_203B294->unk148.a0[2] = sUnknown_80DC5BC; sub_8012CAC(&sUnknown_203B294->unk148.a0[2], sUnknown_203B294->unkF8); - sUnknown_203B294->unk148.a0[2].unkC = 6; + sUnknown_203B294->unk148.a0[2].width = 6; break; case 3: sUnknown_203B294->unk148.a0[1] = sUnknown_80DC5D4; diff --git a/src/code_8031D70.c b/src/code_8031D70.c index 438aa1e81..c6501811e 100644 --- a/src/code_8031D70.c +++ b/src/code_8031D70.c @@ -18,15 +18,15 @@ struct unkStruct_203B334 u32 mailIndex; MenuInputStructSub unk4; u32 unk10; - UnkTextStruct2 *unk14; - UnkTextStruct3 unk18; + Window *unk14; + Windows unk18; u8 unk78[4]; }; EWRAM_INIT struct unkStruct_203B334 *gUnknown_203B334 = {NULL}; extern unkStruct_203B480 *gUnknown_203B480; -const UnkTextStruct2 gUnknown_80E1FA8 = { +const Window gUnknown_80E1FA8 = { 0, 0, 0, 0, 3, 0x0, 0x0, @@ -35,9 +35,9 @@ const UnkTextStruct2 gUnknown_80E1FA8 = { NULL }; -const UnkTextStruct2_sub2 gUnkData_80E1FC0 = {0x01, 0x00, 0x0A, 0x00}; +const WindowHeader gUnkData_80E1FC0 = {0x01, 0x00, 0x0A, 0x00}; -const UnkTextStruct2 gUnknown_80E1FC4 = { +const Window gUnknown_80E1FC4 = { 0, 0, 0, 0, 6, 0x2, 0x2, diff --git a/src/code_803E724.c b/src/code_803E724.c index c640b874d..5225b48ce 100644 --- a/src/code_803E724.c +++ b/src/code_803E724.c @@ -45,10 +45,10 @@ extern MenuInputStruct gUnknown_202EE10; extern SpriteOAM gUnknown_202EDDC; extern const RGB gUnknown_80F62AC; -extern const struct UnkTextStruct3 gUnknown_80F62B0; -extern const struct UnkTextStruct3 gUnknown_80F6310; -extern const struct UnkTextStruct3 gUnknown_80F6370; -extern const struct UnkTextStruct3 gUnknown_80F63D0; +extern const struct Windows gUnknown_80F62B0; +extern const struct Windows gUnknown_80F6310; +extern const struct Windows gUnknown_80F6370; +extern const struct Windows gUnknown_80F63D0; extern const u32 gUnknown_80F6490[]; extern const s32 gUnknown_80F64B4[]; extern const s32 gUnknown_80F64FC[]; @@ -272,7 +272,7 @@ void sub_803EC94(void) sub_801317C(&gUnknown_202EE10.unk28); } -void sub_803ECB4(UnkTextStruct3 *a0, bool8 a1) +void sub_803ECB4(Windows *a0, bool8 a1) { gUnknown_202EDD0 = 10; sub_8052210(0); diff --git a/src/code_805D8C8_1.c b/src/code_805D8C8_1.c index 1572cae31..a1a635038 100644 --- a/src/code_805D8C8_1.c +++ b/src/code_805D8C8_1.c @@ -1675,28 +1675,28 @@ extern bool8 sub_8044F3C(s32 param_1); extern s32 gUnknown_202EE6C; extern const u8 gUnknown_8106B50[]; -extern void sub_803ECB4(UnkTextStruct3 *a0, u8 a1); -static void CreateFieldItemMenu(s32 a0, Entity *a1, bool8 a2, bool8 a3, UnkTextStruct3 *a4, UnkTextStruct2_sub2 *a5); +extern void sub_803ECB4(Windows *a0, u8 a1); +static void CreateFieldItemMenu(s32 a0, Entity *a1, bool8 a2, bool8 a3, Windows *a4, WindowHeader *a5); // Inline needed to (fake?)match. -static inline void sub_805FC30_SetUpTxtStruct(UnkTextStruct3 *src) +static inline void sub_805FC30_SetUpTxtStruct(Windows *src) { memset(src, 0, sizeof(*src)); - src->a0[0].unk4 = 3; - src->a0[1].unk4 = 3; + src->a0[0].type = WINDOW_TYPE_NORMAL; + src->a0[1].type = WINDOW_TYPE_NORMAL; src->a0[1].pos.x = 0x16; src->a0[1].pos.y = 4; - src->a0[1].unkC = 6; - src->a0[1].unkE = 4; + src->a0[1].width = 6; + src->a0[1].height = 4; src->a0[1].unk10 = 4; - src->a0[2].unk4 = 3; - src->a0[3].unk4 = 3; + src->a0[2].type = WINDOW_TYPE_NORMAL; + src->a0[3].type = WINDOW_TYPE_NORMAL; } -void sub_805FC30(UnkTextStruct3 *a0, s32 a1) +void sub_805FC30(Windows *a0, s32 a1) { s32 i; - UnkTextStruct3 sp; + Windows sp; sub_805FC30_SetUpTxtStruct(&sp); sp.a0[0] = a0->a0[0]; @@ -1717,10 +1717,10 @@ void sub_805FC30(UnkTextStruct3 *a0, s32 a1) sub_801317C(&gUnknown_202EE10.unk28); sp.a0[1].pos.x = a1; - sp.a0[1].unkC = 28 - a1; - sp.a0[1].unkE = sp.a0[1].unk10 = sub_80095E4(gUnknown_202EE10.unk1C, 0); + sp.a0[1].width = 28 - a1; + sp.a0[1].height = sp.a0[1].unk10 = sub_80095E4(gUnknown_202EE10.unk1C, 0); sub_803ECB4(&sp, 0); - sub_80137B0(&gUnknown_202EE10, sp.a0[1].unkE * 8); + sub_80137B0(&gUnknown_202EE10, sp.a0[1].height * 8); sub_80073B8(1); for (i = 0; i < gUnknown_202EE6C; i++) { @@ -1760,7 +1760,7 @@ s32 sub_8060D64(s16 *a0, bool8 a1, bool8 a2, bool8 a3, Entity *a4); void sub_8060890(DungeonPos *a0); bool8 sub_8060860(s32 a0); void sub_8060900(Entity *a0); -s32 sub_8060800(UnkTextStruct2_sub2 *a0, s32 a1); +s32 sub_8060800(WindowHeader *a0, s32 a1); void sub_8060CE8(ActionContainer *a0); extern Entity *DrawFieldGiveItemMenu(u8 *a0, s32 a1); @@ -1775,22 +1775,22 @@ bool8 sub_805FD74(Entity * a0, struct UnkMenuBitsStruct *a1) u8 var_2C = 0; u8 var_28 = 0; EntityInfo *a0Info = GetEntInfo(a0); - UnkTextStruct2_sub2 var_3C; + WindowHeader var_3C; - UnkTextStruct3 var_FC = + Windows var_FC = { .a0 = { [0] = { - .unk4 = 6, + .type = WINDOW_TYPE_WITH_HEADER, .pos = {2, 2}, - .unkC = 0x12, - .unkE = 0x10, + .width = 0x12, + .height = 0x10, .unk10 = 0x10, .unk14 = &var_3C, }, - {.unk4 = 3}, {.unk4 = 3}, {.unk4 = 3}, + {.type = WINDOW_TYPE_NORMAL}, {.type = WINDOW_TYPE_NORMAL}, {.type = WINDOW_TYPE_NORMAL}, }, }; @@ -2036,15 +2036,15 @@ bool8 sub_805FD74(Entity * a0, struct UnkMenuBitsStruct *a1) return r9; } -extern const struct UnkTextStruct2 gUnknown_8106B6C; +extern const struct Window gUnknown_8106B6C; extern const struct unkStruct_8090F58 gUnknown_8106B60; -static void CreateFieldItemMenu(s32 a0, Entity *a1, bool8 a2, bool8 a3, UnkTextStruct3 *a4, UnkTextStruct2_sub2 *a5) +static void CreateFieldItemMenu(s32 a0, Entity *a1, bool8 a2, bool8 a3, Windows *a4, WindowHeader *a5) { s32 i, x, y; s32 r10; UnkTextStruct1 *txtStrPtr; - UnkTextStruct2 var_94; + Window var_94; u8 txtBuff[80]; EntityInfo *a1Info; @@ -2064,7 +2064,7 @@ static void CreateFieldItemMenu(s32 a0, Entity *a1, bool8 a2, bool8 a3, UnkTextS case 0: case 1: a4->a0[0].unk10 = 0x10; - a4->a0[0].unkE = 0x10; + a4->a0[0].height = 0x10; a5->f2 = 0xC; gUnknown_202EE10.unk6 = 0x10; gUnknown_202EE10.unk1C = 0xA; @@ -2072,7 +2072,7 @@ static void CreateFieldItemMenu(s32 a0, Entity *a1, bool8 a2, bool8 a3, UnkTextS break; case 2: a4->a0[0].unk10 = 4; - a4->a0[0].unkE = 4; + a4->a0[0].height = 4; a5->f2 = 6; gUnknown_202EE10.unk6 = 0x12; gUnknown_202EE10.unk1C = 1; @@ -2080,7 +2080,7 @@ static void CreateFieldItemMenu(s32 a0, Entity *a1, bool8 a2, bool8 a3, UnkTextS case 3: default: a4->a0[0].unk10 = 4; - a4->a0[0].unkE = 4; + a4->a0[0].height = 4; a5->f2 = 0xC; gUnknown_202EE10.unk6 = 0x12; gUnknown_202EE10.unk1C = 1; @@ -2190,7 +2190,7 @@ static void CreateFieldItemMenu(s32 a0, Entity *a1, bool8 a2, bool8 a3, UnkTextS } } -s32 sub_8060800(UnkTextStruct2_sub2 *a0, s32 a1) +s32 sub_8060800(WindowHeader *a0, s32 a1) { s32 i, r1, r2, r3; @@ -2499,7 +2499,7 @@ s32 sub_8060D64(s16 *a0, bool8 a1, bool8 a2, bool8 a3, Entity *a4) return count; } -extern UnkTextStruct2_sub2 gUnknown_202F270; +extern WindowHeader gUnknown_202F270; struct UnkFieldTeamMenuStruct { @@ -2508,7 +2508,7 @@ struct UnkFieldTeamMenuStruct u8 unk14[MAX_TEAM_MEMBERS]; }; -void DrawFieldTeamMenu(struct UnkFieldTeamMenuStruct *a0, UnkTextStruct3 *a1, bool8 a2); +void DrawFieldTeamMenu(struct UnkFieldTeamMenuStruct *a0, Windows *a1, bool8 a2); void sub_806145C(struct UnkFieldTeamMenuStruct *a0); void sub_80615B4(ActionContainer *a0, struct UnkFieldTeamMenuStruct *a1); @@ -2520,18 +2520,18 @@ bool8 sub_8060E38(Entity *a0) bool32 r10, ret; struct UnkFieldTeamMenuStruct sp; - UnkTextStruct3 var_84 = {0}; + Windows var_84 = {0}; - var_84.a0[0].unk4 = 6; + var_84.a0[0].type = WINDOW_TYPE_WITH_HEADER; var_84.a0[0].pos.x = 2; var_84.a0[0].pos.y = 2; - var_84.a0[0].unkC = 0xE; - var_84.a0[0].unkE = 0x10; + var_84.a0[0].width = 0xE; + var_84.a0[0].height = 0x10; var_84.a0[0].unk10 = 0x10; var_84.a0[0].unk14 = &gUnknown_202F270; - var_84.a0[1].unk4 = 3; - var_84.a0[2].unk4 = 3; - var_84.a0[3].unk4 = 3; + var_84.a0[1].type = WINDOW_TYPE_NORMAL; + var_84.a0[2].type = WINDOW_TYPE_NORMAL; + var_84.a0[3].type = WINDOW_TYPE_NORMAL; for (i = 0; i < MAX_TEAM_MEMBERS; i++) { Entity *teamMon = gDungeon->teamPokemon[i]; @@ -2541,7 +2541,7 @@ bool8 sub_8060E38(Entity *a0) } if (!gDungeon->unk644.unk17) { - var_84.a0[0].unk4 = 3; + var_84.a0[0].type = WINDOW_TYPE_NORMAL; var_84.a0[0].pos.y++; } @@ -2678,14 +2678,14 @@ extern const u8 gUnknown_8106BF4[]; extern void sub_8070968(u8 *buffer, EntityInfo *entityInfo, s32 colorNum); -void DrawFieldTeamMenu(struct UnkFieldTeamMenuStruct *a0, UnkTextStruct3 *a1, bool8 a2) +void DrawFieldTeamMenu(struct UnkFieldTeamMenuStruct *a0, Windows *a1, bool8 a2) { s32 r0; DungeonPos pos; s32 i; s32 count = 0; - bool8 r10 = (a1->a0[0].unk4 == 6); + bool8 r10 = (a1->a0[0].type == WINDOW_TYPE_WITH_HEADER); sub_8069D18(&pos, GetLeader()); for (i = 0; i < MAX_TEAM_MEMBERS; i++) { @@ -2734,7 +2734,7 @@ void DrawFieldTeamMenu(struct UnkFieldTeamMenuStruct *a0, UnkTextStruct3 *a1, bo r0 += 2; } a1->a0[0].unk10 = r0; - a1->a0[0].unkE = r0; + a1->a0[0].height = r0; gUnknown_202F270.f2 = 8; if (a2) { a1->a0[1] = a1->a0[3]; @@ -2872,25 +2872,25 @@ void sub_8062D68(void); void sub_8062230(void); void sub_8062748(u8 a0); -static inline void SetTxtStruct(UnkTextStruct3 *sp) +static inline void SetTxtStruct(Windows *sp) { memset(sp, 0, sizeof(*sp)); - sp->a0[0].unk4 = 6; + sp->a0[0].type = WINDOW_TYPE_WITH_HEADER; sp->a0[0].pos.x = 2; sp->a0[0].pos.y = 2; - sp->a0[0].unkC = 0x12; - sp->a0[0].unkE = 0xE; + sp->a0[0].width = 0x12; + sp->a0[0].height = 0xE; sp->a0[0].unk10 = 0x12; sp->a0[0].unk12 = 2; sp->a0[0].unk14 = &gUnknown_202F270; - sp->a0[1].unk4 = 3; - sp->a0[2].unk4 = 3; - sp->a0[3].unk4 = 3; + sp->a0[1].type = WINDOW_TYPE_NORMAL; + sp->a0[2].type = WINDOW_TYPE_NORMAL; + sp->a0[3].type = WINDOW_TYPE_NORMAL; } void ShowTacticsMenu(ActionContainer *a0) { - UnkTextStruct3 sp; + Windows sp; EntityInfo *monInfo; u8 tacticIds[NUM_TACTICS]; s32 scrollFirstId; diff --git a/src/code_8066D04.c b/src/code_8066D04.c index 5a6c20b04..dcb37c893 100644 --- a/src/code_8066D04.c +++ b/src/code_8066D04.c @@ -904,19 +904,19 @@ extern void sub_8068344(void); bool8 sub_8044F3C(s32 param_1); void sub_8068310(s32 a0, PokemonStruct1 **a1); void sub_8067F00(u8 a0, PokemonStruct1 **a1, s32 a2, s32 a3, s32 a4); -extern void sub_803ECB4(UnkTextStruct3 *a0, u8 a1); +extern void sub_803ECB4(Windows *a0, u8 a1); u32 sub_8014140(s32 a0, const void *a1); void sub_8083D1C(void); void sub_8083D08(void); void sub_8083D30(void); void sub_806806C(PokemonStruct1 *a0); -void sub_805FC30(UnkTextStruct3 *a0, s32 a1); +void sub_805FC30(Windows *a0, s32 a1); extern void sub_803EAF0(u32, u8 *); extern const s32 gUnknown_8106E80[]; extern MenuInputStruct gUnknown_202EE10; -static EWRAM_DATA UnkTextStruct2_sub2 gUnknown_202F308 = {0}; +static EWRAM_DATA WindowHeader gUnknown_202F308 = {0}; static EWRAM_DATA s32 gUnknown_202F30C = 0; EWRAM_DATA s32 gUnknown_202F310 = 0; @@ -925,15 +925,15 @@ static const u8 gUnknown_8106DA4[] = { 0x01, 0, 0x38, 0, 0, 0, 0x18, 0, 0x18, 0, 0, 0, 0x02, 0, 0x38, 0, 0x68, 0, 0x18, 0, 0x18, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }; -static const UnkTextStruct3 gUnknown_8106DC8 = { +static const Windows gUnknown_8106DC8 = { .a0 = { [0] = { .unk0 = 0, - .unk4 = 0x06, + .type = WINDOW_TYPE_WITH_HEADER, .pos = {0x02, 0x02}, - .unkC = 0x11, - .unkE = 0x0E, + .width = 0x11, + .height = 0x0E, .unk10 = 0x12, .unk12 = 0x02, .unk14 = &gUnknown_202F308 @@ -941,21 +941,21 @@ static const UnkTextStruct3 gUnknown_8106DC8 = { [1] = { .unk0 = 0, - .unk4 = 0x03, + .type = WINDOW_TYPE_NORMAL, .pos = {0x15, 0x04}, - .unkC = 0x07, - .unkE = 0x04, + .width = 0x07, + .height = 0x04, .unk10 = 0x04, .unk12 = 0, .unk14 = NULL }, [2] = { - .unk4 = 0x03, + .type = WINDOW_TYPE_NORMAL, }, [3] = { - .unk4 = 0x03, + .type = WINDOW_TYPE_NORMAL, } } }; @@ -964,7 +964,7 @@ void sub_8067A80(u8 a0, s32 a1, s32 a2, PokemonStruct1 **a3) { s32 i; s32 r10; - UnkTextStruct3 spTxtStruct = gUnknown_8106DC8; + Windows spTxtStruct = gUnknown_8106DC8; gUnknown_202F30C = 0; r10 = 0; @@ -1257,20 +1257,20 @@ void sub_806806C(PokemonStruct1 *a0) { struct unkStruct_808FF20 unkStruct; u8 var_C8[48]; - UnkTextStruct3 spTxtStruct = {0}; + Windows spTxtStruct = {0}; s32 r7; - spTxtStruct.a0[0].unk4 = 6; + spTxtStruct.a0[0].type = WINDOW_TYPE_WITH_HEADER; spTxtStruct.a0[0].pos.x = 2; spTxtStruct.a0[0].pos.y = 2; - spTxtStruct.a0[0].unkC = 0x12; - spTxtStruct.a0[0].unkE = 0xE; + spTxtStruct.a0[0].width = 0x12; + spTxtStruct.a0[0].height = 0xE; spTxtStruct.a0[0].unk10 = 0x12; spTxtStruct.a0[0].unk12 = 2; spTxtStruct.a0[0].unk14 = &gUnknown_202F308; - spTxtStruct.a0[1].unk4 = 3; - spTxtStruct.a0[2].unk4 = 3; - spTxtStruct.a0[3].unk4 = 3; + spTxtStruct.a0[1].type = WINDOW_TYPE_NORMAL; + spTxtStruct.a0[2].type = WINDOW_TYPE_NORMAL; + spTxtStruct.a0[3].type = WINDOW_TYPE_NORMAL; r7 = 0; unkStruct.unk40 = 0; diff --git a/src/code_8072F3C.c b/src/code_8072F3C.c index 2ba1a4abe..6e9b45ff8 100644 --- a/src/code_8072F3C.c +++ b/src/code_8072F3C.c @@ -29,7 +29,7 @@ struct unkStruct_203B314 EWRAM_INIT struct unkStruct_203B314 *gUnknown_203B314 = {NULL}; -const UnkTextStruct2 gUnknown_80E06FC = { +const Window gUnknown_80E06FC = { 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, @@ -38,7 +38,7 @@ const UnkTextStruct2 gUnknown_80E06FC = { NULL }; -const UnkTextStruct2 gUnknown_80E0714 = { +const Window gUnknown_80E0714 = { 0x00, 0x00, 0x00, 0x00, 0x06, 0x02, 0x02, @@ -46,7 +46,7 @@ const UnkTextStruct2 gUnknown_80E0714 = { 0x0E, 0x00, NULL }; -const UnkTextStruct2 gUnknown_80E072C = { +const Window gUnknown_80E072C = { 0x00, 0x00, 0x00, 0x00, 0x06, 0x02, 0x02, diff --git a/src/credits1.c b/src/credits1.c index 6fe585879..7adbffd26 100644 --- a/src/credits1.c +++ b/src/credits1.c @@ -8,8 +8,8 @@ static EWRAM_INIT Credits1Work *sCredits1Work = {NULL}; -extern const UnkTextStruct2 gUnknown_80E4A10; -extern const UnkTextStruct2 gUnknown_80E4A28; +extern const Window gUnknown_80E4A10; +extern const Window gUnknown_80E4A28; extern const u32 gUnknown_80E4A40[]; extern const CreditsData* gCreditsTable[27]; diff --git a/src/data/adventure_log.h b/src/data/adventure_log.h index c7a8c49d2..20170470d 100644 --- a/src/data/adventure_log.h +++ b/src/data/adventure_log.h @@ -1,4 +1,4 @@ -static const UnkTextStruct2 sUnknown_80E1FF0 = +static const Window sUnknown_80E1FF0 = { 0, 0, 0, 0, 3, @@ -8,7 +8,7 @@ static const UnkTextStruct2 sUnknown_80E1FF0 = NULL }; -static const UnkTextStruct2 sUnknown_80E2008 = +static const Window sUnknown_80E2008 = { 0, 0, 0, 0, 6, diff --git a/src/data/code_801602C.h b/src/data/code_801602C.h index 4d0da6c76..735025085 100644 --- a/src/data/code_801602C.h +++ b/src/data/code_801602C.h @@ -5,7 +5,7 @@ enum MENU_ACTION_NO, }; -UNUSED static const UnkTextStruct2 sUnknown_80DB670 = +UNUSED static const Window sUnknown_80DB670 = { 0, 0, 0, 0, 3, diff --git a/src/data/code_801B60C.h b/src/data/code_801B60C.h index 107de37b2..ad877a185 100644 --- a/src/data/code_801B60C.h +++ b/src/data/code_801B60C.h @@ -1,4 +1,4 @@ -static const UnkTextStruct2 sUnknown_80DBA58 = { +static const Window sUnknown_80DBA58 = { 0, 0, 0, 0, 3, 0, 0, @@ -7,7 +7,7 @@ static const UnkTextStruct2 sUnknown_80DBA58 = { NULL }; -static const UnkTextStruct2 sUnknown_80DBA70 = { +static const Window sUnknown_80DBA70 = { 0, 0, 0, 0, 3, 20, 4, @@ -16,7 +16,7 @@ static const UnkTextStruct2 sUnknown_80DBA70 = { NULL }; -static const UnkTextStruct2 sUnknown_80DBA88 = { +static const Window sUnknown_80DBA88 = { 0, 0, 0, 0, 3, 20, 14, diff --git a/src/data/code_801C8C4.h b/src/data/code_801C8C4.h index b38d32b13..cb7714118 100644 --- a/src/data/code_801C8C4.h +++ b/src/data/code_801C8C4.h @@ -1,4 +1,4 @@ -static const UnkTextStruct2 sUnknown_80DBE3C = { +static const Window sUnknown_80DBE3C = { 0, 0, 0, 0, 3, 0, 0, @@ -7,7 +7,7 @@ static const UnkTextStruct2 sUnknown_80DBE3C = { NULL }; -static const UnkTextStruct2 sUnknown_80DBE54 = { +static const Window sUnknown_80DBE54 = { 0, 0, 0, 0, 6, 2, 2, diff --git a/src/data/code_801D014.h b/src/data/code_801D014.h index e4d342f7c..bf2f65ab1 100644 --- a/src/data/code_801D014.h +++ b/src/data/code_801D014.h @@ -1,4 +1,4 @@ -static const UnkTextStruct2 sUnknown_80DBE7C = { +static const Window sUnknown_80DBE7C = { 0, 0, 0, 0, 3, 0, 0, @@ -7,8 +7,8 @@ static const UnkTextStruct2 sUnknown_80DBE7C = { NULL }; -static const UnkTextStruct2_sub2 sUnknown_80DBE94 = {1, 0, 7, 0}; -static const UnkTextStruct2 sUnknown_80DBE98 = { +static const WindowHeader sUnknown_80DBE94 = {1, 0, 7, 0}; +static const Window sUnknown_80DBE98 = { 0, 0, 0, 0, 6, 2, 2, @@ -17,7 +17,7 @@ static const UnkTextStruct2 sUnknown_80DBE98 = { &sUnknown_80DBE94 }; -static const UnkTextStruct2 sUnknown_80DBEB0[4] = +static const Window sUnknown_80DBEB0[4] = { { 0, 0, 0, 0, diff --git a/src/data/code_801D9E4.h b/src/data/code_801D9E4.h index 96f83413f..b9b32853a 100644 --- a/src/data/code_801D9E4.h +++ b/src/data/code_801D9E4.h @@ -1,4 +1,4 @@ -static const UnkTextStruct2 sUnknown_80DBF70 = { +static const Window sUnknown_80DBF70 = { 0, 0, 0, 0, 3, 0, 0, @@ -7,7 +7,7 @@ static const UnkTextStruct2 sUnknown_80DBF70 = { NULL }; -static const UnkTextStruct2 sUnknown_80DBF88 = { +static const Window sUnknown_80DBF88 = { 0, 0, 0, 0, 6, 2, 2, diff --git a/src/data/code_80227B8.h b/src/data/code_80227B8.h index f2709ada2..28c026edd 100644 --- a/src/data/code_80227B8.h +++ b/src/data/code_80227B8.h @@ -5,7 +5,7 @@ static const MenuItem sUnknown_80DC584[3] = {NULL, 1}, }; -static const UnkTextStruct2 sUnknown_80DC5A4 = +static const Window sUnknown_80DC5A4 = { 0, 0, 0, 0, 3, @@ -14,7 +14,7 @@ static const UnkTextStruct2 sUnknown_80DC5A4 = 0, 0, NULL }; -static const UnkTextStruct2 sUnknown_80DC5BC = +static const Window sUnknown_80DC5BC = { 0, 0, 0, 0, 3, @@ -23,7 +23,7 @@ static const UnkTextStruct2 sUnknown_80DC5BC = 3, 0, NULL }; -static const UnkTextStruct2 sUnknown_80DC5D4 = +static const Window sUnknown_80DC5D4 = { 0, 0, 0, 0, 3, diff --git a/src/data/code_8023144.h b/src/data/code_8023144.h index 22430504f..6ace615ee 100644 --- a/src/data/code_8023144.h +++ b/src/data/code_8023144.h @@ -1,4 +1,4 @@ -static const UnkTextStruct2 sUnknown_80DC904 = +static const Window sUnknown_80DC904 = { 0, 0, 0, 0, 3, @@ -8,7 +8,7 @@ static const UnkTextStruct2 sUnknown_80DC904 = NULL }; -static const UnkTextStruct2 sUnknown_80DC91C = +static const Window sUnknown_80DC91C = { 0, 0, 0, 0, 6, diff --git a/src/data/code_8023868.h b/src/data/code_8023868.h index ada6340f0..5fa3a3cf6 100644 --- a/src/data/code_8023868.h +++ b/src/data/code_8023868.h @@ -1,5 +1,5 @@ //static // MAKE STATIC WHEN code_8023868.s IS DONE -const UnkTextStruct2 sUnknown_80DC950 = { +const Window sUnknown_80DC950 = { 0, 0, 0, 0, 3, 0, 0, @@ -8,7 +8,7 @@ const UnkTextStruct2 sUnknown_80DC950 = { NULL }; //static // MAKE STATIC WHEN code_8023868.s IS DONE -const UnkTextStruct2 sUnknown_80DC968 = { +const Window sUnknown_80DC968 = { 0, 0, 0, 0, 6, 2, 2, diff --git a/src/data/code_8024458.h b/src/data/code_8024458.h index 87bb678fa..084d84207 100644 --- a/src/data/code_8024458.h +++ b/src/data/code_8024458.h @@ -1,4 +1,4 @@ -static const UnkTextStruct2 sUnknown_80DC9B0 = { +static const Window sUnknown_80DC9B0 = { 0, 0, 0, 0, 3, 0, 0, @@ -7,7 +7,7 @@ static const UnkTextStruct2 sUnknown_80DC9B0 = { NULL }; -static const UnkTextStruct2 sUnknown_80DC9C8 = { +static const Window sUnknown_80DC9C8 = { 0, 0, 0, 0, 6, 2, 2, diff --git a/src/data/code_802DB28.h b/src/data/code_802DB28.h index 6a13906a7..8ade27fce 100644 --- a/src/data/code_802DB28.h +++ b/src/data/code_802DB28.h @@ -1,4 +1,4 @@ -static const UnkTextStruct2 sUnknown_80E016C = { +static const Window sUnknown_80E016C = { 0, 0, 0, 0, 3, 0, 0, diff --git a/src/data/code_802DE84.h b/src/data/code_802DE84.h index 6e9629a50..47e8abcb7 100644 --- a/src/data/code_802DE84.h +++ b/src/data/code_802DE84.h @@ -1,4 +1,4 @@ -static const UnkTextStruct2 sUnknown_80E0248 = { +static const Window sUnknown_80E0248 = { 0, 0, 0, 0, 3, 0, 0, @@ -7,8 +7,8 @@ static const UnkTextStruct2 sUnknown_80E0248 = { NULL }; -static const UnkTextStruct2_sub2 sUnknown_80E0260 = {1, 0, 18, 0}; -static const UnkTextStruct2 sUnknown_80E0264 = { +static const WindowHeader sUnknown_80E0260 = {1, 0, 18, 0}; +static const Window sUnknown_80E0264 = { 0, 0, 0, 0, 6, 2, 2, diff --git a/src/data/debug_menu1.h b/src/data/debug_menu1.h index 5dde96b47..92e2c9579 100644 --- a/src/data/debug_menu1.h +++ b/src/data/debug_menu1.h @@ -1,4 +1,4 @@ -static const UnkTextStruct2 sUnknown_80E7D40 = { +static const Window sUnknown_80E7D40 = { 0, 0, 0, 0, 3, 0, 0, @@ -6,7 +6,7 @@ static const UnkTextStruct2 sUnknown_80E7D40 = { 0, 0, NULL }; -static const UnkTextStruct2 sUnknown_80E7D58 = { +static const Window sUnknown_80E7D58 = { 0, 0, 0, 0, 3, 2, 2, diff --git a/src/data/debug_menu2.h b/src/data/debug_menu2.h index f0e808633..454a1de70 100644 --- a/src/data/debug_menu2.h +++ b/src/data/debug_menu2.h @@ -1,4 +1,4 @@ -static const UnkTextStruct2 sUnknown_80E7E34 = +static const Window sUnknown_80E7E34 = { 0, 0, 0, 0, 3, @@ -8,7 +8,7 @@ static const UnkTextStruct2 sUnknown_80E7E34 = NULL }; -static const UnkTextStruct2 sUnknown_80E7E4C = +static const Window sUnknown_80E7E4C = { 0, 0, 0, 0, 3, @@ -18,7 +18,7 @@ static const UnkTextStruct2 sUnknown_80E7E4C = NULL }; -static const UnkTextStruct2 sUnknown_80E7E64 = +static const Window sUnknown_80E7E64 = { 0, 0, 0, 0, 3, diff --git a/src/data/debug_menu3.h b/src/data/debug_menu3.h index 8a55acedf..557c7734b 100644 --- a/src/data/debug_menu3.h +++ b/src/data/debug_menu3.h @@ -1,4 +1,4 @@ -static const UnkTextStruct2 sUnknown_80E7E8C = +static const Window sUnknown_80E7E8C = { 0, 0, 0, 0, 3, @@ -8,7 +8,7 @@ static const UnkTextStruct2 sUnknown_80E7E8C = NULL }; -static const UnkTextStruct2 sUnknown_80E7EA4 = +static const Window sUnknown_80E7EA4 = { 0, 0, 0, 0, 3, diff --git a/src/data/debug_menu4.h b/src/data/debug_menu4.h index c802c5293..02a5ce21f 100644 --- a/src/data/debug_menu4.h +++ b/src/data/debug_menu4.h @@ -1,4 +1,4 @@ -static const UnkTextStruct2 sUnknown_80E7ED4 = +static const Window sUnknown_80E7ED4 = { 0, 0, 0, 0, 3, @@ -8,7 +8,7 @@ static const UnkTextStruct2 sUnknown_80E7ED4 = NULL }; -static const UnkTextStruct2 sUnknown_80E7EEC = +static const Window sUnknown_80E7EEC = { 0, 0, 0, 0, 3, @@ -18,7 +18,7 @@ static const UnkTextStruct2 sUnknown_80E7EEC = NULL }; -static const UnkTextStruct2 sUnknown_80E7F04 = +static const Window sUnknown_80E7F04 = { 0, 0, 0, 0, 3, diff --git a/src/data/felicity_bank.h b/src/data/felicity_bank.h index 7e1056981..426f8e26b 100644 --- a/src/data/felicity_bank.h +++ b/src/data/felicity_bank.h @@ -1,4 +1,4 @@ -static const UnkTextStruct2 sUnknown_80DB6DC = { +static const Window sUnknown_80DB6DC = { 0, 0, 0, 0, 3, 0, 0, @@ -7,7 +7,7 @@ static const UnkTextStruct2 sUnknown_80DB6DC = { NULL }; -static const UnkTextStruct2 sUnknown_80DB6F4 = { +static const Window sUnknown_80DB6F4 = { 0, 0, 0, 0, 3, 2, 3, @@ -16,7 +16,7 @@ static const UnkTextStruct2 sUnknown_80DB6F4 = { NULL }; -static const UnkTextStruct2 sUnknown_80DB70C = { +static const Window sUnknown_80DB70C = { 0, 0, 0, 0, 3, 17, 8, diff --git a/src/data/friend_area_action_menu.h b/src/data/friend_area_action_menu.h index d85972a1c..37e8b627e 100644 --- a/src/data/friend_area_action_menu.h +++ b/src/data/friend_area_action_menu.h @@ -1,4 +1,4 @@ -static const UnkTextStruct2 sUnknown_80DD6EC = +static const Window sUnknown_80DD6EC = { 0x00, 0x00, 0x00, 0x00, 0x03, @@ -8,7 +8,7 @@ static const UnkTextStruct2 sUnknown_80DD6EC = NULL }; -static const UnkTextStruct2 sUnknown_80DD704 = +static const Window sUnknown_80DD704 = { 0x00, 0x00, 0x00, 0x00, 0x03, @@ -18,7 +18,7 @@ static const UnkTextStruct2 sUnknown_80DD704 = NULL }; -static const UnkTextStruct2 sUnknown_80DD71C = +static const Window sUnknown_80DD71C = { 0x00, 0x00, 0x00, 0x00, 0x03, @@ -28,7 +28,7 @@ static const UnkTextStruct2 sUnknown_80DD71C = NULL }; -static const UnkTextStruct2 sUnknown_80DD734 = +static const Window sUnknown_80DD734 = { 0x00, 0x00, 0x00, 0x00, 0x03, @@ -38,7 +38,7 @@ static const UnkTextStruct2 sUnknown_80DD734 = NULL }; -static const UnkTextStruct2 sUnknown_80DD74C = +static const Window sUnknown_80DD74C = { 0x00, 0x00, 0x00, 0x00, 0x03, diff --git a/src/data/friend_list_menu.h b/src/data/friend_list_menu.h index 62d7c8390..6e63b7fa2 100644 --- a/src/data/friend_list_menu.h +++ b/src/data/friend_list_menu.h @@ -1,4 +1,4 @@ -static const UnkTextStruct2 sUnknown_80DD148 = { +static const Window sUnknown_80DD148 = { 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, @@ -7,7 +7,7 @@ static const UnkTextStruct2 sUnknown_80DD148 = { NULL }; -static const UnkTextStruct2 sUnknown_80DD160 = { +static const Window sUnknown_80DD160 = { 0x00, 0x00, 0x00, 0x00, 0x03, 0x13, 0x04, @@ -16,7 +16,7 @@ static const UnkTextStruct2 sUnknown_80DD160 = { NULL }; -static const UnkTextStruct2 sUnknown_80DD178 = { +static const Window sUnknown_80DD178 = { 0x00, 0x00, 0x00, 0x00, 0x03, 0x14, 0x04, @@ -25,7 +25,7 @@ static const UnkTextStruct2 sUnknown_80DD178 = { NULL }; -static const UnkTextStruct2 sUnknown_80DD190 = { +static const Window sUnknown_80DD190 = { 0x00, 0x00, 0x00, 0x00, 0x03, 0x02, 0x11, diff --git a/src/data/friend_rescue_menus.h b/src/data/friend_rescue_menus.h index 250e0f916..acb4964a2 100644 --- a/src/data/friend_rescue_menus.h +++ b/src/data/friend_rescue_menus.h @@ -102,7 +102,7 @@ const MenuItem gUnknown_80E22F0[] = { {NULL, 8}, }; -const UnkTextStruct2 gUnknown_80E231C = +const Window gUnknown_80E231C = { 0x00, 0x00, 0x00, 0x00, 0x03, @@ -112,7 +112,7 @@ const UnkTextStruct2 gUnknown_80E231C = NULL }; -const UnkTextStruct2 gUnknown_80E2334 = +const Window gUnknown_80E2334 = { 0x00, 0x00, 0x00, 0x00, 0x03, @@ -142,7 +142,7 @@ const MenuItem gUnknown_80E23A8[] = { {NULL, 8}, }; -const UnkTextStruct2 gUnknown_80E23F0 = +const Window gUnknown_80E23F0 = { 0x00, 0x00, 0x00, 0x00, 0x03, @@ -159,7 +159,7 @@ const MenuItem gUnknown_80E2408[] = { {NULL, 8}, }; -UNUSED static const UnkTextStruct2 sUnused = +UNUSED static const Window sUnused = { 0x00, 0x00, 0x00, 0x00, 0x03, diff --git a/src/data/gulpin_shop.h b/src/data/gulpin_shop.h index 8bd5d1909..4fe5521bc 100644 --- a/src/data/gulpin_shop.h +++ b/src/data/gulpin_shop.h @@ -1,4 +1,4 @@ -static const UnkTextStruct2 gUnknown_80DC11C = { +static const Window gUnknown_80DC11C = { 0, 0, 0, 0, 3, 0, 0, @@ -7,7 +7,7 @@ static const UnkTextStruct2 gUnknown_80DC11C = { NULL }; -static const UnkTextStruct2 gUnknown_80DC134 = { +static const Window gUnknown_80DC134 = { 0, 0, 0, 0, 3, 22, 4, @@ -16,7 +16,7 @@ static const UnkTextStruct2 gUnknown_80DC134 = { NULL }; -UNUSED static const UnkTextStruct2 gUnknown_80DC14C = { +UNUSED static const Window gUnknown_80DC14C = { 0, 0, 0, 0, 3, 22, 14, diff --git a/src/data/gulpin_shop_801FB50.h b/src/data/gulpin_shop_801FB50.h index cf1567c84..be115b037 100644 --- a/src/data/gulpin_shop_801FB50.h +++ b/src/data/gulpin_shop_801FB50.h @@ -1,4 +1,4 @@ -static const UnkTextStruct2 gUnknown_80DC31C = { +static const Window gUnknown_80DC31C = { 0, 0, 0, 0, 3, 0, 0, @@ -7,7 +7,7 @@ static const UnkTextStruct2 gUnknown_80DC31C = { NULL }; -static const UnkTextStruct2 gUnknown_80DC334 = { +static const Window gUnknown_80DC334 = { 0, 0, 0, 0, 3, 19, 4, @@ -16,7 +16,7 @@ static const UnkTextStruct2 gUnknown_80DC334 = { NULL }; -static const UnkTextStruct2 gUnknown_80DC34C = { +static const Window gUnknown_80DC34C = { 0, 0, 0, 0, 3, 22, 4, @@ -25,7 +25,7 @@ static const UnkTextStruct2 gUnknown_80DC34C = { NULL }; -UNUSED static const UnkTextStruct2 gUnknown_80DC364 = { +UNUSED static const Window gUnknown_80DC364 = { 0, 0, 0, 0, 3, 22, 14, @@ -34,7 +34,7 @@ UNUSED static const UnkTextStruct2 gUnknown_80DC364 = { NULL }; -static const UnkTextStruct2 gUnknown_80DC37C = { +static const Window gUnknown_80DC37C = { 0, 0, 0, 0, 3, 22, 3, diff --git a/src/data/hints_menu1.h b/src/data/hints_menu1.h index cb8eb410c..cc9e1d230 100644 --- a/src/data/hints_menu1.h +++ b/src/data/hints_menu1.h @@ -1,4 +1,4 @@ -static const UnkTextStruct2 sUnknown_80DC0A0 = { +static const Window sUnknown_80DC0A0 = { 0, 0, 0, 0, 3, 0, 0, @@ -7,8 +7,8 @@ static const UnkTextStruct2 sUnknown_80DC0A0 = { NULL }; -static const UnkTextStruct2_sub2 sUnknown_80DC0B8 = {1, 0, 8, 0}; -static const UnkTextStruct2 sUnknown_80DC0BC = { +static const WindowHeader sUnknown_80DC0B8 = {1, 0, 8, 0}; +static const Window sUnknown_80DC0BC = { 0, 0, 0, 0, 6, 2, 2, diff --git a/src/data/hints_menu2.h b/src/data/hints_menu2.h index 23c79a5fd..36e1fe90a 100644 --- a/src/data/hints_menu2.h +++ b/src/data/hints_menu2.h @@ -1,4 +1,4 @@ -static const UnkTextStruct2 sUnknown_80DC0E4 = { +static const Window sUnknown_80DC0E4 = { 0, 0, 0, 0, 3, 0, 0, @@ -7,7 +7,7 @@ static const UnkTextStruct2 sUnknown_80DC0E4 = { NULL }; -static const UnkTextStruct2 sUnknown_80DC0FC = { +static const Window sUnknown_80DC0FC = { 0, 0, 0, 0, 6, 2, 2, diff --git a/src/data/iq_skill_list_menu.h b/src/data/iq_skill_list_menu.h index 0ea4a139c..5726e9ff6 100644 --- a/src/data/iq_skill_list_menu.h +++ b/src/data/iq_skill_list_menu.h @@ -1,4 +1,4 @@ -static const UnkTextStruct2 sUnknown_80DBDD8 = { +static const Window sUnknown_80DBDD8 = { 0, 0, 0, 0, 3, 0, 0, @@ -7,7 +7,7 @@ static const UnkTextStruct2 sUnknown_80DBDD8 = { NULL }; -static const UnkTextStruct2 sUnknown_80DBDF0 = { +static const Window sUnknown_80DBDF0 = { 0, 0, 0, 0, 6, 2, 2, diff --git a/src/data/iq_skill_menu.h b/src/data/iq_skill_menu.h index 585bdf665..ddea346e7 100644 --- a/src/data/iq_skill_menu.h +++ b/src/data/iq_skill_menu.h @@ -1,4 +1,4 @@ -static const UnkTextStruct2 sUnknown_80DBD98 = { +static const Window sUnknown_80DBD98 = { 0, 0, 0, 0, 3, 0, 0, @@ -7,7 +7,7 @@ static const UnkTextStruct2 sUnknown_80DBD98 = { NULL }; -static const UnkTextStruct2 sUnknown_80DBDB0 = { +static const Window sUnknown_80DBDB0 = { 0, 0, 0, 0, 3, 20, 4, diff --git a/src/data/kangaskhan_storage1.h b/src/data/kangaskhan_storage1.h index b8aafcf99..2265bbee8 100644 --- a/src/data/kangaskhan_storage1.h +++ b/src/data/kangaskhan_storage1.h @@ -1,4 +1,4 @@ -static const UnkTextStruct2 sUnknown_80DB748 = { +static const Window sUnknown_80DB748 = { 0, 0, 0, 0, 3, 0, 0, @@ -7,7 +7,7 @@ static const UnkTextStruct2 sUnknown_80DB748 = { NULL }; -static const UnkTextStruct2 sUnknown_80DB760 = { +static const Window sUnknown_80DB760 = { 0, 0, 0, 0, 3, 20, 4, @@ -16,7 +16,7 @@ static const UnkTextStruct2 sUnknown_80DB760 = { NULL }; -static const UnkTextStruct2 sUnknown_80DB778 = { +static const Window sUnknown_80DB778 = { 0, 0, 0, 0, 3, 20, 9, @@ -25,7 +25,7 @@ static const UnkTextStruct2 sUnknown_80DB778 = { NULL }; -static const UnkTextStruct2 sUnknown_80DB790 = { +static const Window sUnknown_80DB790 = { 0, 0, 0, 0, 3, 20, 14, diff --git a/src/data/kangaskhan_storage2.h b/src/data/kangaskhan_storage2.h index 2ea9e895d..7e2f001ff 100644 --- a/src/data/kangaskhan_storage2.h +++ b/src/data/kangaskhan_storage2.h @@ -1,4 +1,4 @@ -static const UnkTextStruct2 sUnknown_80DB7B8 = { +static const Window sUnknown_80DB7B8 = { 0, 0, 0, 0, 3, 0, 0, @@ -7,7 +7,7 @@ static const UnkTextStruct2 sUnknown_80DB7B8 = { NULL }; -static const UnkTextStruct2 sUnknown_80DB7D0 = { +static const Window sUnknown_80DB7D0 = { 0, 0, 0, 0, 3, 3, 3, @@ -16,7 +16,7 @@ static const UnkTextStruct2 sUnknown_80DB7D0 = { NULL }; -static const UnkTextStruct2 sUnknown_80DB7E8 = { +static const Window sUnknown_80DB7E8 = { 0, 0, 0, 0, 3, 20, 4, @@ -25,7 +25,7 @@ static const UnkTextStruct2 sUnknown_80DB7E8 = { NULL }; -static const UnkTextStruct2 sUnknown_80DB800 = { +static const Window sUnknown_80DB800 = { 0, 0, 0, 0, 3, 20, 9, @@ -34,7 +34,7 @@ static const UnkTextStruct2 sUnknown_80DB800 = { NULL }; -static const UnkTextStruct2 sUnknown_80DB818 = { +static const Window sUnknown_80DB818 = { 0, 0, 0, 0, 3, 20, 14, diff --git a/src/data/kecleon_bros1.h b/src/data/kecleon_bros1.h index fa762ce11..9196bea0e 100644 --- a/src/data/kecleon_bros1.h +++ b/src/data/kecleon_bros1.h @@ -1,4 +1,4 @@ -static const UnkTextStruct2 sUnknown_80DB840 = { +static const Window sUnknown_80DB840 = { 0, 0, 0, 0, 3, 0, 0, @@ -7,7 +7,7 @@ static const UnkTextStruct2 sUnknown_80DB840 = { NULL }; -static const UnkTextStruct2 sUnknown_80DB858 = { +static const Window sUnknown_80DB858 = { 0, 0, 0, 0, 3, 20, 4, @@ -16,7 +16,7 @@ static const UnkTextStruct2 sUnknown_80DB858 = { NULL }; -static const UnkTextStruct2 sUnknown_80DB870 = { +static const Window sUnknown_80DB870 = { 0, 0, 0, 0, 3, 20, 9, @@ -25,7 +25,7 @@ static const UnkTextStruct2 sUnknown_80DB870 = { NULL }; -static const UnkTextStruct2 sUnknown_80DB888 = { +static const Window sUnknown_80DB888 = { 0, 0, 0, 0, 3, 20, 14, diff --git a/src/data/kecleon_bros2.h b/src/data/kecleon_bros2.h index 055ff803d..cbee090f4 100644 --- a/src/data/kecleon_bros2.h +++ b/src/data/kecleon_bros2.h @@ -1,4 +1,4 @@ -static const UnkTextStruct2 sUnknown_80DB8B4 = { +static const Window sUnknown_80DB8B4 = { 0, 0, 0, 0, 3, 0, 0, @@ -7,7 +7,7 @@ static const UnkTextStruct2 sUnknown_80DB8B4 = { NULL }; -static const UnkTextStruct2 sUnknown_80DB8CC = { +static const Window sUnknown_80DB8CC = { 0, 0, 0, 0, 6, 2, 2, diff --git a/src/data/kecleon_bros3.h b/src/data/kecleon_bros3.h index ceb5b732e..ae9b1e20e 100644 --- a/src/data/kecleon_bros3.h +++ b/src/data/kecleon_bros3.h @@ -1,4 +1,4 @@ -static const UnkTextStruct2 sUnknown_80DB8FC = { +static const Window sUnknown_80DB8FC = { 0, 0, 0, 0, 3, 0, 0, @@ -7,7 +7,7 @@ static const UnkTextStruct2 sUnknown_80DB8FC = { NULL }; -static const UnkTextStruct2 sUnknown_80DB914 = { +static const Window sUnknown_80DB914 = { 0, 0, 0, 0, 6, 2, 2, diff --git a/src/data/kecleon_bros4.h b/src/data/kecleon_bros4.h index 8c89d6847..7f0564cb0 100644 --- a/src/data/kecleon_bros4.h +++ b/src/data/kecleon_bros4.h @@ -1,4 +1,4 @@ -static const UnkTextStruct2 sUnknown_80DB944 = { +static const Window sUnknown_80DB944 = { 0, 0, 0, 0, 3, 0, 0, @@ -7,7 +7,7 @@ static const UnkTextStruct2 sUnknown_80DB944 = { NULL }; -static const UnkTextStruct2 sUnknown_80DB95C = { +static const Window sUnknown_80DB95C = { 0, 0, 0, 0, 6, 2, 2, diff --git a/src/data/luminous_cave.h b/src/data/luminous_cave.h index 8cbdd6693..171080f00 100644 --- a/src/data/luminous_cave.h +++ b/src/data/luminous_cave.h @@ -1,4 +1,4 @@ -static const UnkTextStruct2 sUnknown_80DC9E8 = { +static const Window sUnknown_80DC9E8 = { 0, 0, 0, 0, 3, 0, 0, @@ -7,7 +7,7 @@ static const UnkTextStruct2 sUnknown_80DC9E8 = { NULL }; -static const UnkTextStruct2 sUnknown_80DCA00 = { +static const Window sUnknown_80DCA00 = { 0, 0, 0, 0, 3, 20, 4, diff --git a/src/data/main_menu1.h b/src/data/main_menu1.h index 44dd27688..930bb7d15 100644 --- a/src/data/main_menu1.h +++ b/src/data/main_menu1.h @@ -1,4 +1,4 @@ -static const UnkTextStruct2 sUnknown_80E59A8 = { +static const Window sUnknown_80E59A8 = { 0, 0, 0, 0, 3, 0, 0, diff --git a/src/data/main_menu2.h b/src/data/main_menu2.h index 97e9b4265..21b9a3233 100644 --- a/src/data/main_menu2.h +++ b/src/data/main_menu2.h @@ -1,4 +1,4 @@ -static const UnkTextStruct2 sUnknown_80E59C8 = { +static const Window sUnknown_80E59C8 = { 0, 0, 0, 0, 3, 0, 0, @@ -7,7 +7,7 @@ static const UnkTextStruct2 sUnknown_80E59C8 = { NULL }; -static const UnkTextStruct2 sUnknown_80E59E0 = { +static const Window sUnknown_80E59E0 = { 0, 0, 0, 0, 3, 2, 2, @@ -22,7 +22,7 @@ static const MenuItem sUnknown_80E59F8[] = { {NULL, 0xFFDD}, }; -UNUSED static const UnkTextStruct2 sUnknown_80E5A29 = { +UNUSED static const Window sUnknown_80E5A29 = { 0, 0, 0, 0, 3, 2, 2, @@ -36,7 +36,7 @@ UNUSED static const MenuItem sUnknown_80E5A44[] = { {NULL, 0xFFDD}, }; -static const UnkTextStruct2 sUnknown_80E5A60 = { +static const Window sUnknown_80E5A60 = { 0, 0, 0, 0, 3, 2, 2, @@ -45,7 +45,7 @@ static const UnkTextStruct2 sUnknown_80E5A60 = { NULL }; -static const UnkTextStruct2 sUnknown_80E5A78 = { +static const Window sUnknown_80E5A78 = { 0, 0, 0, 0, 3, 2, 2, @@ -73,7 +73,7 @@ static const MenuItem sUnknown_80E5AFC[] = { {NULL, 0xFFDD}, }; -static const UnkTextStruct2 sUnknown_80E5B34 = { +static const Window sUnknown_80E5B34 = { 0, 0, 0, 0, 3, 2, 2, @@ -101,7 +101,7 @@ static const MenuItem sUnknown_80E5B8C[] = { {NULL, 0xFFDD}, }; -static const UnkTextStruct2 sUnknown_80E5BC4 = { +static const Window sUnknown_80E5BC4 = { 0, 0, 0, 0, 3, 2, 2, @@ -129,7 +129,7 @@ static const MenuItem sUnknown_80E5C18[] = { {NULL, 0xFFDD}, }; -UNUSED static const UnkTextStruct2 sUnknown_80E5C50 = { +UNUSED static const Window sUnknown_80E5C50 = { 0, 0, 0, 0, 3, 2, 2, @@ -150,7 +150,7 @@ UNUSED static const MenuItem sUnknown_80E5C9C[] = { {NULL, 0xFFDD}, }; -static const UnkTextStruct2 sUnknown_80E5CB4 = { +static const Window sUnknown_80E5CB4 = { 0, 0, 0, 0, 3, 2, 15, diff --git a/src/data/makuhita_dojo1.h b/src/data/makuhita_dojo1.h index ea5c04a47..a2995abf7 100644 --- a/src/data/makuhita_dojo1.h +++ b/src/data/makuhita_dojo1.h @@ -1,4 +1,4 @@ -static const UnkTextStruct2 sUnknown_80E0760 = { +static const Window sUnknown_80E0760 = { 0, 0, 0, 0, 3, 0, 0, diff --git a/src/data/makuhita_dojo2.h b/src/data/makuhita_dojo2.h index f3472bda4..36d00c544 100644 --- a/src/data/makuhita_dojo2.h +++ b/src/data/makuhita_dojo2.h @@ -1,4 +1,4 @@ -static const UnkTextStruct2 sUnknown_80E07EC = { +static const Window sUnknown_80E07EC = { 0, 0, 0, 0, 3, 0, 0, @@ -7,7 +7,7 @@ static const UnkTextStruct2 sUnknown_80E07EC = { NULL }; -static const UnkTextStruct2 sUnknown_80E0804 = { +static const Window sUnknown_80E0804 = { 0, 0, 0, 0, 6, 2, 2, diff --git a/src/data/options_menu1.h b/src/data/options_menu1.h index 3d4e4cf9d..385ae556f 100644 --- a/src/data/options_menu1.h +++ b/src/data/options_menu1.h @@ -1,4 +1,4 @@ -static const UnkTextStruct2 sUnknown_80DBFB0 = { +static const Window sUnknown_80DBFB0 = { 0, 0, 0, 0, 3, 0, 0, @@ -7,8 +7,8 @@ static const UnkTextStruct2 sUnknown_80DBFB0 = { NULL }; -static const UnkTextStruct2_sub2 sUnknown_80DBFC8 = {1, 0, 7, 0}; -static const UnkTextStruct2 sUnknown_80DBFCC = { +static const WindowHeader sUnknown_80DBFC8 = {1, 0, 7, 0}; +static const Window sUnknown_80DBFCC = { 0, 0, 0, 0, 6, 2, 2, diff --git a/src/data/options_menu2.h b/src/data/options_menu2.h index 183c07dc4..2fc493b8e 100644 --- a/src/data/options_menu2.h +++ b/src/data/options_menu2.h @@ -1,4 +1,4 @@ -static const UnkTextStruct2 sUnknown_80DC020 = { +static const Window sUnknown_80DC020 = { 0, 0, 0, 0, 3, 0, 0, @@ -7,8 +7,8 @@ static const UnkTextStruct2 sUnknown_80DC020 = { NULL }; -static const UnkTextStruct2_sub2 sUnknown_80DC038 = {1, 0, 10, 0}; -static const UnkTextStruct2 sUnknown_80DC03C = { +static const WindowHeader sUnknown_80DC038 = {1, 0, 10, 0}; +static const Window sUnknown_80DC03C = { 0, 0, 0, 0, 6, 2, 2, diff --git a/src/data/other_menus1.h b/src/data/other_menus1.h index 2a2421f6a..0cd742fde 100644 --- a/src/data/other_menus1.h +++ b/src/data/other_menus1.h @@ -1,4 +1,4 @@ -static const UnkTextStruct2 sUnknown_80E653C = { +static const Window sUnknown_80E653C = { 0, 0, 0, 0, 3, 0, 0, @@ -6,7 +6,7 @@ static const UnkTextStruct2 sUnknown_80E653C = { 0, 0, NULL }; -static const UnkTextStruct2 sUnknown_80E6554 = { +static const Window sUnknown_80E6554 = { 0, 0, 0, 0, 3, 3, 8, @@ -50,7 +50,7 @@ static const MenuItem sUnknown_80E667C[] = { {NULL, 3}, }; -static const UnkTextStruct2 sUnknown_80E66BC = { +static const Window sUnknown_80E66BC = { 0, 0, 0, 0, 3, 3, 8, @@ -66,7 +66,7 @@ static const MenuItem sUnknown_80E66D4[] = { {NULL, 3}, }; -static const UnkTextStruct2 sUnknown_80E6748 = { +static const Window sUnknown_80E6748 = { 0, 0, 0, 0, 3, 3, 8, @@ -82,7 +82,7 @@ static const MenuItem sUnknown_80E6760[] = { {NULL, 3}, }; -static const UnkTextStruct2 sUnknown_80E67D4 = { +static const Window sUnknown_80E67D4 = { 0, 0, 0, 0, 3, 3, 8, @@ -98,7 +98,7 @@ static const MenuItem sUnknown_80E67EC[] = { {NULL, 3}, }; -static const UnkTextStruct2 sUnknown_80E6830 = { +static const Window sUnknown_80E6830 = { 0, 0, 0, 0, 3, 3, 8, @@ -114,7 +114,7 @@ static const MenuItem sUnknown_80E6848[] = { {NULL, 3}, }; -static const UnkTextStruct2 sUnknown_80E689C = { +static const Window sUnknown_80E689C = { 0, 0, 0, 0, 3, 3, 8, @@ -130,7 +130,7 @@ static const MenuItem sUnknown_80E68B4[] = { {NULL, 3}, }; -static const UnkTextStruct2 sUnknown_80E6938 = { +static const Window sUnknown_80E6938 = { 0, 0, 0, 0, 3, 3, 8, @@ -146,7 +146,7 @@ static const MenuItem sUnknown_80E6950[] = { {NULL, 3}, }; -static const UnkTextStruct2 sUnknown_80E69B0 = { +static const Window sUnknown_80E69B0 = { 0, 0, 0, 0, 3, 3, 8, @@ -162,7 +162,7 @@ static const MenuItem sUnknown_80E69C8[] = { {NULL, 3}, }; -static const UnkTextStruct2 sUnknown_80E6A10 = { +static const Window sUnknown_80E6A10 = { 0, 0, 0, 0, 3, 3, 8, @@ -178,7 +178,7 @@ static const MenuItem sUnknown_80E6A28[] = { {NULL, 3}, }; -static const UnkTextStruct2 sUnknown_80E6A74 = { +static const Window sUnknown_80E6A74 = { 0, 0, 0, 0, 3, 3, 8, @@ -194,7 +194,7 @@ static const MenuItem sUnknown_80E6A8C[] = { {NULL, 3}, }; -UNUSED static const UnkTextStruct2 sUnknown_80E6AEC = { +UNUSED static const Window sUnknown_80E6AEC = { 0, 0, 0, 0, 3, 3, 8, @@ -210,7 +210,7 @@ UNUSED static const MenuItem sUnknown_80E6B04[] = { {NULL, 3}, }; -static const UnkTextStruct2 sUnknown_80E6B78 = { +static const Window sUnknown_80E6B78 = { 0, 0, 0, 0, 3, 3, 8, @@ -226,7 +226,7 @@ static const MenuItem sUnknown_80E6B90[] = { {NULL, 3}, }; -static const UnkTextStruct2 sUnknown_80E6BF4 = { +static const Window sUnknown_80E6BF4 = { 0, 0, 0, 0, 3, 3, 8, @@ -242,7 +242,7 @@ static const MenuItem sUnknown_80E6C0C[] = { {NULL, 3}, }; -static const UnkTextStruct2 sUnknown_80E6C50 = { +static const Window sUnknown_80E6C50 = { 0, 0, 0, 0, 3, 3, 8, @@ -258,7 +258,7 @@ static const MenuItem sUnknown_80E6C68[] = { {NULL, 3}, }; -static const UnkTextStruct2 sUnknown_80E6CD0 = { +static const Window sUnknown_80E6CD0 = { 0, 0, 0, 0, 3, 3, 8, @@ -274,7 +274,7 @@ static const MenuItem sUnknown_80E6CE8[] = { {NULL, 3}, }; -static const UnkTextStruct2 sUnknown_80E6D54 = { +static const Window sUnknown_80E6D54 = { 0, 0, 0, 0, 3, 3, 8, @@ -290,7 +290,7 @@ static const MenuItem sUnknown_80E6D6C[] = { {NULL, 3}, }; -static const UnkTextStruct2 sUnknown_80E6DDC = { +static const Window sUnknown_80E6DDC = { 0, 0, 0, 0, 3, 3, 8, diff --git a/src/data/party_list_menu.h b/src/data/party_list_menu.h index 33a2d849e..df95aee6c 100644 --- a/src/data/party_list_menu.h +++ b/src/data/party_list_menu.h @@ -1,4 +1,4 @@ -static const UnkTextStruct2 sUnknown_80DD310 = { +static const Window sUnknown_80DD310 = { 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, @@ -7,7 +7,7 @@ static const UnkTextStruct2 sUnknown_80DD310 = { NULL }; -static const UnkTextStruct2 sUnknown_80DD328 = { +static const Window sUnknown_80DD328 = { 0x00, 0x00, 0x00, 0x00, 0x03, 0x13, 0x03, @@ -16,7 +16,7 @@ static const UnkTextStruct2 sUnknown_80DD328 = { NULL }; -static const UnkTextStruct2 sUnknown_80DD340 = { +static const Window sUnknown_80DD340 = { 0x00, 0x00, 0x00, 0x00, 0x03, 0x14, 0x04, @@ -25,7 +25,7 @@ static const UnkTextStruct2 sUnknown_80DD340 = { NULL }; -static const UnkTextStruct2 sUnknown_80DD358 = { +static const Window sUnknown_80DD358 = { 0x00, 0x00, 0x00, 0x00, 0x03, 0x02, 0x11, @@ -34,7 +34,7 @@ static const UnkTextStruct2 sUnknown_80DD358 = { NULL }; -static const UnkTextStruct2 sUnknown_80DD370 = { +static const Window sUnknown_80DD370 = { 0x00, 0x00, 0x00, 0x00, 0x03, 0x02, 0x03, diff --git a/src/data/personality_test1.h b/src/data/personality_test1.h index 5e939f674..0c886bffb 100644 --- a/src/data/personality_test1.h +++ b/src/data/personality_test1.h @@ -819,7 +819,7 @@ static const u8* const sPersonalityTypeDescriptionTable[NUM_PERSONALITIES] = { [QUIRKY] = DESC_QUIRKY }; -static const UnkTextStruct2 sUnknown_80F4244 = { +static const Window sUnknown_80F4244 = { 0, 0, 0, 0, 5, 12, 6, diff --git a/src/data/personality_test2.h b/src/data/personality_test2.h index 5f329d14f..0b2f715da 100644 --- a/src/data/personality_test2.h +++ b/src/data/personality_test2.h @@ -12,7 +12,7 @@ const s16 gPartners[NUM_PARTNERS] = MONSTER_MUDKIP }; -const UnkTextStruct2 gUnknown_80F4278 = +const Window gUnknown_80F4278 = { 0x00, 0x00, 0x00, 0x00, 0x03, @@ -22,7 +22,7 @@ const UnkTextStruct2 gUnknown_80F4278 = NULL }; -const UnkTextStruct2 gUnknown_80F4290 = +const Window gUnknown_80F4290 = { 0x00, 0x00, 0x00, 0x00, 0x06, @@ -32,7 +32,7 @@ const UnkTextStruct2 gUnknown_80F4290 = NULL }; -const UnkTextStruct2 gUnknown_80F42A8 = +const Window gUnknown_80F42A8 = { 0x00, 0x00, 0x00, 0x00, 0x05, diff --git a/src/data/pokemon_news1.h b/src/data/pokemon_news1.h index 96d888cd2..e62649775 100644 --- a/src/data/pokemon_news1.h +++ b/src/data/pokemon_news1.h @@ -1,4 +1,4 @@ -static const UnkTextStruct2 sUnknown_80DFBD0 = { +static const Window sUnknown_80DFBD0 = { 0, 0, 0, 0, 3, 0, 0, @@ -7,8 +7,8 @@ static const UnkTextStruct2 sUnknown_80DFBD0 = { NULL }; -static const UnkTextStruct2_sub2 sUnknown_80DFBE8 = {1, 0, 12, 0}; -static const UnkTextStruct2 sUnknown_80DFBEC = { +static const WindowHeader sUnknown_80DFBE8 = {1, 0, 12, 0}; +static const Window sUnknown_80DFBEC = { 0, 0, 0, 0, 6, 2, 2, diff --git a/src/data/pokemon_news2.h b/src/data/pokemon_news2.h index 9c328d73f..4dd2e2c46 100644 --- a/src/data/pokemon_news2.h +++ b/src/data/pokemon_news2.h @@ -1,4 +1,4 @@ -static const UnkTextStruct2 sUnknown_80DFC18 = { +static const Window sUnknown_80DFC18 = { 0, 0, 0, 0, 3, 0, 0, @@ -7,8 +7,8 @@ static const UnkTextStruct2 sUnknown_80DFC18 = { NULL }; -static const UnkTextStruct2_sub2 sUnknown_80DFC30 = {1, 0, 22, 0}; -static const UnkTextStruct2 sUnknown_80DFC34 = { +static const WindowHeader sUnknown_80DFC30 = {1, 0, 22, 0}; +static const Window sUnknown_80DFC34 = { 0, 0, 0, 0, 6, 2, 2, diff --git a/src/data/pokemon_news3.h b/src/data/pokemon_news3.h index 9025cce23..ca38ded74 100644 --- a/src/data/pokemon_news3.h +++ b/src/data/pokemon_news3.h @@ -1,4 +1,4 @@ -static const UnkTextStruct2 sUnknown_80DFC5C = { +static const Window sUnknown_80DFC5C = { 0, 0, 0, 0, 3, 0, 0, @@ -7,7 +7,7 @@ static const UnkTextStruct2 sUnknown_80DFC5C = { NULL }; -static const UnkTextStruct2 sUnknown_80DFC74 = { +static const Window sUnknown_80DFC74 = { 0, 0, 0, 0, 6, 2, 2, diff --git a/src/data/post_office_guide2.h b/src/data/post_office_guide2.h index 190161e6a..86d16481f 100644 --- a/src/data/post_office_guide2.h +++ b/src/data/post_office_guide2.h @@ -1,4 +1,4 @@ -static const UnkTextStruct2 sUnknown_80E1EFC = +static const Window sUnknown_80E1EFC = { 0, 0, 0, 0, 3, @@ -8,9 +8,9 @@ static const UnkTextStruct2 sUnknown_80E1EFC = NULL }; -static const UnkTextStruct2_sub2 sUnknown_80E1F14 = {1, 0, 8, 0}; +static const WindowHeader sUnknown_80E1F14 = {1, 0, 8, 0}; -static const UnkTextStruct2 sUnknown_80E1F18 = +static const Window sUnknown_80E1F18 = { 0, 0, 0, 0, 6, diff --git a/src/data/trade_items_menu.h b/src/data/trade_items_menu.h index e56aab7d9..2af2b4552 100644 --- a/src/data/trade_items_menu.h +++ b/src/data/trade_items_menu.h @@ -10,7 +10,7 @@ static const MenuItem sUnknown_80E60D4[] = { {NULL, 0}, }; -static const UnkTextStruct2 sUnknown_80E60EC = +static const Window sUnknown_80E60EC = { 0, 0, 0, 0, 3, @@ -27,7 +27,7 @@ static const MenuItem sUnknown_80E6104[] = { {NULL, 0}, }; -static const UnkTextStruct2 unused = +static const Window unused = { 0, 0, 0, 0, 3, @@ -43,7 +43,7 @@ static const MenuItem sUnknown_80E6154[] = { {NULL, 0}, }; -static const UnkTextStruct2 sUnknown_80E6174 = +static const Window sUnknown_80E6174 = { 0, 0, 0, 0, 3, diff --git a/src/data/wigglytuff_shop1.h b/src/data/wigglytuff_shop1.h index bfce03b7e..91c0c60e2 100644 --- a/src/data/wigglytuff_shop1.h +++ b/src/data/wigglytuff_shop1.h @@ -1,4 +1,4 @@ -static const UnkTextStruct2 sUnknown_80DC464 = { +static const Window sUnknown_80DC464 = { 0, 0, 0, 0, 3, 0, 0, @@ -7,7 +7,7 @@ static const UnkTextStruct2 sUnknown_80DC464 = { NULL }; -static const UnkTextStruct2 sUnknown_80DC47C = { +static const Window sUnknown_80DC47C = { 0, 0, 0, 0, 6, 2, 2, diff --git a/src/data/wigglytuff_shop2.h b/src/data/wigglytuff_shop2.h index 70e999735..333f1f5bc 100644 --- a/src/data/wigglytuff_shop2.h +++ b/src/data/wigglytuff_shop2.h @@ -1,4 +1,4 @@ -static const UnkTextStruct2 sUnknown_80DC4BC = { +static const Window sUnknown_80DC4BC = { 0, 0, 0, 0, 3, 0, 0, @@ -7,8 +7,8 @@ static const UnkTextStruct2 sUnknown_80DC4BC = { NULL }; -static const UnkTextStruct2_sub2 sUnknown_80DC4D4 = {1, 0, 18, 0}; -static const UnkTextStruct2 sUnknown_80DC4D8 = { +static const WindowHeader sUnknown_80DC4D4 = {1, 0, 18, 0}; +static const Window sUnknown_80DC4D8 = { 0, 0, 0, 0, 6, 2, 2, diff --git a/src/data/wigglytuff_shop3.h b/src/data/wigglytuff_shop3.h index 39ad2944c..109d777b6 100644 --- a/src/data/wigglytuff_shop3.h +++ b/src/data/wigglytuff_shop3.h @@ -1,4 +1,4 @@ -static const UnkTextStruct2 sUnknown_80DC534 = { +static const Window sUnknown_80DC534 = { 0, 0, 0, 0, 3, 0, 0, @@ -7,7 +7,7 @@ static const UnkTextStruct2 sUnknown_80DC534 = { NULL }; -static const UnkTextStruct2 sUnknown_80DC54C = { +static const Window sUnknown_80DC54C = { 0, 0, 0, 0, 3, 21, 4, @@ -16,7 +16,7 @@ static const UnkTextStruct2 sUnknown_80DC54C = { NULL }; -static const UnkTextStruct2 sUnknown_80DC564 = { +static const Window sUnknown_80DC564 = { 0, 0, 0, 0, 3, 21, 14, diff --git a/src/data/wonder_mail_1.h b/src/data/wonder_mail_1.h index f4df68bf9..f3100a8b4 100644 --- a/src/data/wonder_mail_1.h +++ b/src/data/wonder_mail_1.h @@ -40,7 +40,7 @@ const MenuItem gUnknown_80DDAA0[] = { {NULL, 10}, }; -const UnkTextStruct2 gUnknown_80DDACC = +const Window gUnknown_80DDACC = { 0x00, 0x00, 0x00, 0x00, 0x03, @@ -50,7 +50,7 @@ const UnkTextStruct2 gUnknown_80DDACC = NULL }; -const UnkTextStruct2 gUnknown_80DDAE4 = +const Window gUnknown_80DDAE4 = { 0x00, 0x00, 0x00, 0x00, 0x03, diff --git a/src/data/wonder_mail_802C10C.h b/src/data/wonder_mail_802C10C.h index 7aa4081fa..3cb574982 100644 --- a/src/data/wonder_mail_802C10C.h +++ b/src/data/wonder_mail_802C10C.h @@ -1,4 +1,4 @@ -static const UnkTextStruct2 sUnknown_80DFC9C = { +static const Window sUnknown_80DFC9C = { 0, 0, 0, 0, 3, 0, 0, @@ -7,7 +7,7 @@ static const UnkTextStruct2 sUnknown_80DFC9C = { NULL }; -static const UnkTextStruct2 sUnknown_80DFCB4 = { +static const Window sUnknown_80DFCB4 = { 0, 0, 0, 0, 6, 2, 2, diff --git a/src/data/wonder_mail_802C4C8.h b/src/data/wonder_mail_802C4C8.h index 0f34b3b24..4aa69d8ac 100644 --- a/src/data/wonder_mail_802C4C8.h +++ b/src/data/wonder_mail_802C4C8.h @@ -1,4 +1,4 @@ -static const UnkTextStruct2 sUnknown_80DFCE4 = { +static const Window sUnknown_80DFCE4 = { 0, 0, 0, 0, 3, 0, 0, @@ -7,7 +7,7 @@ static const UnkTextStruct2 sUnknown_80DFCE4 = { NULL }; -static const UnkTextStruct2 sUnknown_80DFCFC = { +static const Window sUnknown_80DFCFC = { 0, 0, 0, 0, 6, 2, 2, diff --git a/src/data/wonder_mail_802C860.h b/src/data/wonder_mail_802C860.h index 4b8e71810..2ccd48b8c 100644 --- a/src/data/wonder_mail_802C860.h +++ b/src/data/wonder_mail_802C860.h @@ -1,4 +1,4 @@ -static const UnkTextStruct2 sUnknown_80DFD28 = { +static const Window sUnknown_80DFD28 = { 0, 0, 0, 0, 3, 0, 0, @@ -7,7 +7,7 @@ static const UnkTextStruct2 sUnknown_80DFD28 = { NULL }; -static const UnkTextStruct2 sUnknown_80DFD40 = { +static const Window sUnknown_80DFD40 = { 0, 0, 0, 0, 4, 21, 6, @@ -16,7 +16,7 @@ static const UnkTextStruct2 sUnknown_80DFD40 = { NULL }; -static const UnkTextStruct2 sUnknown_80DFD58 = { +static const Window sUnknown_80DFD58 = { 0, 0, 0, 0, 4, 21, 15, diff --git a/src/data/wonder_mail_802CDD4.h b/src/data/wonder_mail_802CDD4.h index 7c1f58c7b..dd31d31b8 100644 --- a/src/data/wonder_mail_802CDD4.h +++ b/src/data/wonder_mail_802CDD4.h @@ -1,4 +1,4 @@ -static const UnkTextStruct2 sUnknown_80DFD8C = { +static const Window sUnknown_80DFD8C = { 0, 0, 0, 0, 3, 0, 0, @@ -7,7 +7,7 @@ static const UnkTextStruct2 sUnknown_80DFD8C = { NULL }; -static const UnkTextStruct2 sUnknown_80DFDA4 = { +static const Window sUnknown_80DFDA4 = { 0, 0, 0, 0, 6, 2, 2, diff --git a/src/data/wonder_mail_802D098.h b/src/data/wonder_mail_802D098.h index 7c0839f67..7994644ec 100644 --- a/src/data/wonder_mail_802D098.h +++ b/src/data/wonder_mail_802D098.h @@ -1,4 +1,4 @@ -static const UnkTextStruct2 sUnknown_80DFDD4 = { +static const Window sUnknown_80DFDD4 = { 0, 0, 0, 0, 3, 0, 0, @@ -7,7 +7,7 @@ static const UnkTextStruct2 sUnknown_80DFDD4 = { NULL }; -UNUSED static const UnkTextStruct2 sUnknown_80DFDEC = { +UNUSED static const Window sUnknown_80DFDEC = { 0, 0, 0, 0, 3, 3, 3, @@ -16,7 +16,7 @@ UNUSED static const UnkTextStruct2 sUnknown_80DFDEC = { NULL }; -static const UnkTextStruct2 sUnknown_80DFE04 = { +static const Window sUnknown_80DFE04 = { 0, 0, 0, 0, 3, 21, 6, @@ -25,7 +25,7 @@ static const UnkTextStruct2 sUnknown_80DFE04 = { NULL }; -static const UnkTextStruct2 sUnknown_80DFE1C = { +static const Window sUnknown_80DFE1C = { 0, 0, 0, 0, 3, 21, 15, @@ -34,7 +34,7 @@ static const UnkTextStruct2 sUnknown_80DFE1C = { NULL }; -UNUSED static const UnkTextStruct2 sUnknown_80DFE34 = { +UNUSED static const Window sUnknown_80DFE34 = { 0, 0, 0, 0, 3, 21, 15, diff --git a/src/friend_rescue.c b/src/friend_rescue.c index 6144736d8..92db2a0d7 100644 --- a/src/friend_rescue.c +++ b/src/friend_rescue.c @@ -32,7 +32,7 @@ extern void SetFriendRescueMenuState(u32); extern TeamInventory *gTeamInventoryRef; -// NOTE: MenuItems and UnkTextStruct2 defined in here.. +// NOTE: MenuItems and Window defined in here.. #include "data/friend_rescue_menus.h" const u8 gUnknown_80E25F4[] = "What would you like to do?"; diff --git a/src/kecleon_bros4.c b/src/kecleon_bros4.c index 8e6487969..2d0745da3 100644 --- a/src/kecleon_bros4.c +++ b/src/kecleon_bros4.c @@ -285,7 +285,7 @@ void sub_801A9E0(void) } if (sub_801AED0(teamItemIndex) & 1) - sub_8007B7C(gUnknown_203B224->unk54.s0.unk34, 8, sub_8013800(&gUnknown_203B224->unk54.s0.input, r7), (gUnknown_203B224->unk54.s0.unk38->unkC - 2) * 8, 10); + sub_8007B7C(gUnknown_203B224->unk54.s0.unk34, 8, sub_8013800(&gUnknown_203B224->unk54.s0.input, r7), (gUnknown_203B224->unk54.s0.unk38->width - 2) * 8, 10); } sub_80073E0(gUnknown_203B224->unk54.s0.unk34); diff --git a/src/load_screen.c b/src/load_screen.c index 506b7af4b..0c3d01d98 100644 --- a/src/load_screen.c +++ b/src/load_screen.c @@ -29,7 +29,7 @@ struct LoadScreen // size: 0x27c u32 currMenu; MenuStruct unk4[4]; - UnkTextStruct3 unk144; + Windows unk144; /* 0x1A4 */ u8 formattedTeamName[0x24]; /* 0x1C8 */ u8 formattedPlayerName[0x24]; /* 0x1EC */ u8 formattedLocation[0x24]; @@ -48,7 +48,7 @@ void sub_80397B4(void); extern void sub_80920D8(u8 *); -const UnkTextStruct2 gUnknown_80E75F8 = { +const Window gUnknown_80E75F8 = { 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, @@ -57,7 +57,7 @@ const UnkTextStruct2 gUnknown_80E75F8 = { NULL }; -const UnkTextStruct2 gUnknown_80E7610 = { +const Window gUnknown_80E7610 = { 0x00, 0x00, 0x00, 0x00, 0x03, 0x02, 0x02, @@ -80,7 +80,7 @@ EWRAM_INIT MenuItem gUnknown_203B378[2] = { EWRAM_INIT u32 gUnknown_203B388[12] = {0xC, 0xC, 0xE, 0xE, 0xD, 0xE, 0xC, 0xD, 0xD, 0xB, 0xB, 0xB}; EWRAM_INIT u32 gUnknown_203B3B8[12] = {0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x1A, 0x18, 0x1B, 0x16, 0x19, 0x17}; -const UnkTextStruct2 gUnknown_80E762C = { +const Window gUnknown_80E762C = { 0x00, 0x00, 0x00, 0x00, 0x03, 0x02, 0x0F, @@ -124,7 +124,7 @@ const MenuItem gDeleteSaveConfirmMenuItems[3] = {NULL, 3}, }; -const UnkTextStruct2 gUnknown_80E7784 = +const Window gUnknown_80E7784 = { 0x00, 0x00, 0x00, 0x00, 0x03, diff --git a/src/mailbox.c b/src/mailbox.c index 83ea8e5f7..4d26398d3 100644 --- a/src/mailbox.c +++ b/src/mailbox.c @@ -20,7 +20,7 @@ EWRAM_INIT struct unkStruct_203B304 *gUnknown_203B304 = {NULL}; -const UnkTextStruct2 gUnknown_80E0284 = +const Window gUnknown_80E0284 = { 0x00, 0x00, 0x00, 0x00, 0x03, @@ -30,7 +30,7 @@ const UnkTextStruct2 gUnknown_80E0284 = NULL }; -const UnkTextStruct2 gUnknown_80E029C = +const Window gUnknown_80E029C = { 0x00, 0x00, 0x00, 0x00, 0x03, @@ -40,7 +40,7 @@ const UnkTextStruct2 gUnknown_80E029C = NULL }; -const UnkTextStruct2 gUnknown_80E02B4 = +const Window gUnknown_80E02B4 = { 0x00, 0x00, 0x00, 0x00, 0x04, @@ -50,7 +50,7 @@ const UnkTextStruct2 gUnknown_80E02B4 = NULL }; -const UnkTextStruct2 gUnknown_80E02CC = +const Window gUnknown_80E02CC = { 0x00, 0x00, 0x00, 0x00, 0x04, @@ -166,7 +166,7 @@ void sub_802E0A0(void) CreateMailActionMenu(); gUnknown_203B304->unk10C.a0[2] = gUnknown_80E02B4; sub_8012CAC(&gUnknown_203B304->unk10C.a0[2], gUnknown_203B304->menuItems); - gUnknown_203B304->unk10C.a0[2].unkC = 6; + gUnknown_203B304->unk10C.a0[2].width = 6; gUnknown_203B304->unk10C.a0[3] = gUnknown_80E02CC; break; default: diff --git a/src/main_menu1.c b/src/main_menu1.c index 5db81b46d..2e0538c17 100644 --- a/src/main_menu1.c +++ b/src/main_menu1.c @@ -291,9 +291,9 @@ void sub_8035C1C(void) sMainMenu->sub.unk2D = 0; } -void SetMenuItems(MenuStruct *a0, UnkTextStruct3 *a1, s32 index, const UnkTextStruct2 *a3, const MenuItem *menuItems, bool8 a5, u32 menuAction, bool8 unused) +void SetMenuItems(MenuStruct *a0, Windows *a1, s32 index, const Window *a3, const MenuItem *menuItems, bool8 a5, u32 menuAction, bool8 unused) { - UnkTextStruct2 *txtPtrs = a1->a0; + Window *txtPtrs = a1->a0; txtPtrs[index] = *a3; ResetUnusedInputStruct(); xxx_call_save_unk_text_struct_800641C(a1, TRUE, TRUE); @@ -306,9 +306,9 @@ void SetMenuItems(MenuStruct *a0, UnkTextStruct3 *a1, s32 index, const UnkTextSt a0[index].unk4C = TRUE; } -void sub_8035CC0(UnkTextStruct3 *dataArray, u32 index) +void sub_8035CC0(Windows *dataArray, u32 index) { - UnkTextStruct2 *txtPtrs; + Window *txtPtrs; RestoreUnkTextStruct_8006518(dataArray); txtPtrs = dataArray->a0; diff --git a/src/menu_input.c b/src/menu_input.c index 8b2f39d7c..e418bf3c1 100644 --- a/src/menu_input.c +++ b/src/menu_input.c @@ -16,9 +16,9 @@ const u32 gDefaultMenuTextColors[3] = { COLOR_WHITE_2, COLOR_RED, COLOR_RED }; -const UnkTextStruct2_sub2 UnkData_80D47C4 = {0x01, 0x00, 0x10, 0x00}; +const WindowHeader UnkData_80D47C4 = {0x01, 0x00, 0x10, 0x00}; -const UnkTextStruct2 gUnknown_80D47C8[4] = { +const Window gUnknown_80D47C8[4] = { 0x00, 0x00, 0x00, 0x00, 0x06, 0x02, 0x02, @@ -223,7 +223,7 @@ void sub_8012C60(u32 x, u32 y, u32 a2, u32 color, u32 a4) xxx_call_draw_char(x + add_x, y, uVar2, color, a4); } -void sub_8012CAC(UnkTextStruct2 *a0, const MenuItem *a1) +void sub_8012CAC(Window *a0, const MenuItem *a1) { s32 length; s32 maxLength; @@ -240,35 +240,35 @@ void sub_8012CAC(UnkTextStruct2 *a0, const MenuItem *a1) } } - a0->unkC = (maxLength / 8) + 2; + a0->width = (maxLength / 8) + 2; sub_8012D08(a0, count); } -void sub_8012D08(UnkTextStruct2 *param_1, s32 param_2) +void sub_8012D08(Window *param_1, s32 param_2) { s32 sVar2; s16 sVar3; sVar2 = (s16) sub_80095E4(param_2, 12); - if (param_1->unk4 == 6) + if (param_1->type == WINDOW_TYPE_WITH_HEADER) sVar2 = (s16)(sVar2 + 2); sVar3 = sVar2; - param_1->unkE = sVar3; + param_1->height = sVar3; param_1->unk10 = sVar3; } -void sub_8012D34(struct UnkTextStruct2 *param_1, s32 param_2) +void sub_8012D34(struct Window *param_1, s32 param_2) { s32 sVar2; s16 sVar3; sVar2 = (s16) sub_8009614(param_2, 24); - if (param_1->unk4 == 6) + if (param_1->type == WINDOW_TYPE_WITH_HEADER) sVar2 = (s16)(sVar2 + 2); sVar3 = sVar2; - param_1->unkE = sVar3; + param_1->height = sVar3; param_1->unk10 = sVar3; } @@ -386,10 +386,10 @@ void sub_8012EBC(MenuStruct *param_1) const u32 *colorArray; s32 counter; s32 index; - UnkTextStruct3 textStack; + Windows textStack; u8 buffer[256]; UnkTextStruct1 *ptr_text; - UnkTextStruct2 *ptr_text2; + Window *ptr_text2; if (param_1->unk4D) { sub_80073B8(param_1->index); @@ -1193,7 +1193,7 @@ void sub_8013F84(void) AddSprite(&SStack_18,0x100,0,0x0); } -void sub_80140B4(UnkTextStruct3 *a0) +void sub_80140B4(Windows *a0) { s32 i; diff --git a/src/mission_reward.c b/src/mission_reward.c index 4a970e60c..af575043f 100644 --- a/src/mission_reward.c +++ b/src/mission_reward.c @@ -22,7 +22,7 @@ struct unkStruct_203B310 /* 0xC */ s32 itemRewardIndex; unkStruct_802F204 *unk10; /* 0x14 */ struct MonPortraitMsg monPortrait; - UnkTextStruct3 unk24; + Windows unk24; }; EWRAM_INIT struct unkStruct_203B310 *gUnknown_203B310 = {NULL}; @@ -41,7 +41,7 @@ enum FriendRewardStates REWARD_EXIT, }; -const UnkTextStruct2 gUnknown_80E041C = { +const Window gUnknown_80E041C = { 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, diff --git a/src/options_menu1.c b/src/options_menu1.c index 69dd2ef66..64359721e 100644 --- a/src/options_menu1.c +++ b/src/options_menu1.c @@ -122,7 +122,7 @@ static void sub_801DD84(void) sUnknown_203B25C->unkBC.a0[0] = sUnknown_80DBFCC; sub_8012CAC(&sUnknown_203B25C->unkBC.a0[0], sUnknown_203B25C->menuItems); - sUnknown_203B25C->unkBC.a0[0].unkC = 10; + sUnknown_203B25C->unkBC.a0[0].width = 10; break; case OPTIONS_MENU_MAIN: CreateOthersMenu(); @@ -132,7 +132,7 @@ static void sub_801DD84(void) sUnknown_203B25C->unkBC.a0[0] = sUnknown_80DBFCC; sub_8012CAC(&sUnknown_203B25C->unkBC.a0[0], sUnknown_203B25C->menuItems); - sUnknown_203B25C->unkBC.a0[0].unkC = 10; + sUnknown_203B25C->unkBC.a0[0].width = 10; break; default: for (i = 0; i < 4; i++) diff --git a/src/other_menus1.c b/src/other_menus1.c index 63f1f1153..13260361d 100644 --- a/src/other_menus1.c +++ b/src/other_menus1.c @@ -119,7 +119,7 @@ static void sub_80371B8(void) { unkStruct_8035D94 *item; const MenuItem *MenuItems; - const UnkTextStruct2 *puVar5; + const Window *puVar5; puVar5 = NULL; MenuItems = NULL; diff --git a/src/party_list_menu.c b/src/party_list_menu.c index bc0fb1e48..a76a1551e 100644 --- a/src/party_list_menu.c +++ b/src/party_list_menu.c @@ -171,7 +171,7 @@ static void sub_802608C(void) PartyListMenu_CreateMenu1(); sUnknown_203B2B8->unk220.a0[2] = sUnknown_80DD328; sub_8012CAC(&sUnknown_203B2B8->unk220.a0[2], sUnknown_203B2B8->unk16C); - sUnknown_203B2B8->unk220.a0[2].unkC = 9; + sUnknown_203B2B8->unk220.a0[2].width = 9; break; case 0x14: PartyListMenu_CreateMenu2(); @@ -782,7 +782,7 @@ void sub_8026E08(u32 r0) sub_808D930(buffer, sUnknown_203B2B8->pokeStruct->speciesNum); sprintfStatic(buffer1, sUnknown_80DD6E0, gFormatBuffer_Monsters[0]); x = sub_8008ED0(buffer1); - PrintStringOnWindow(((sUnknown_80DD370.unkC << 3) - x) / 2, 3, buffer1, r0, 0); + PrintStringOnWindow(((sUnknown_80DD370.width << 3) - x) / 2, 3, buffer1, r0, 0); sub_80073E0(r0); } diff --git a/src/pelipper_board.c b/src/pelipper_board.c index 521ecd5aa..a02fc1385 100644 --- a/src/pelipper_board.c +++ b/src/pelipper_board.c @@ -20,7 +20,7 @@ EWRAM_INIT struct unkStruct_203B308 *gPelipperBoard = {NULL}; -const UnkTextStruct2 gUnknown_80E0330 = +const Window gUnknown_80E0330 = { 0x00, 0x00, 0x00, 0x00, 0x03, @@ -30,7 +30,7 @@ const UnkTextStruct2 gUnknown_80E0330 = NULL }; -const UnkTextStruct2 gUnknown_80E0348 = +const Window gUnknown_80E0348 = { 0x00, 0x00, 0x00, 0x00, 0x03, @@ -40,7 +40,7 @@ const UnkTextStruct2 gUnknown_80E0348 = NULL }; -const UnkTextStruct2 gUnknown_80E0360 = +const Window gUnknown_80E0360 = { 0x00, 0x00, 0x00, 0x00, 0x04, @@ -50,7 +50,7 @@ const UnkTextStruct2 gUnknown_80E0360 = NULL }; -const UnkTextStruct2 gUnknown_80E0378 = +const Window gUnknown_80E0378 = { 0x00, 0x00, 0x00, 0x00, 0x04, @@ -161,7 +161,7 @@ void sub_802E94C(void) sub_802EC10(); gPelipperBoard->unk10C.a0[2] = gUnknown_80E0360; sub_8012CAC(&gPelipperBoard->unk10C.a0[2], gPelipperBoard->menuItems); - gPelipperBoard->unk10C.a0[2].unkC = 6; + gPelipperBoard->unk10C.a0[2].width = 6; gPelipperBoard->unk10C.a0[3] = gUnknown_80E0378; break; default: diff --git a/src/personality_test1.c b/src/personality_test1.c index 013b326e5..ced2ed640 100644 --- a/src/personality_test1.c +++ b/src/personality_test1.c @@ -386,7 +386,7 @@ static void PersonalityTest_DisplayStarterSprite(void) s32 paletteIndex; s32 emotionId; const u8 *gfx; - UnkTextStruct3 stackArray; + Windows stackArray; starterID = sPersonalityTestTracker->unk4.StarterID; RestoreUnkTextStruct_8006518(&stackArray); diff --git a/src/rescue_password_menu.c b/src/rescue_password_menu.c index 3d0251d64..ec01dfef8 100644 --- a/src/rescue_password_menu.c +++ b/src/rescue_password_menu.c @@ -26,7 +26,7 @@ EWRAM_INIT u8 gUnknown_203B368 = {1}; EWRAM_INIT u32 gUnknown_203B36C = {65502}; EWRAM_INIT struct RescuePasswordMenu *gRescuePasswordMenu = {NULL}; -const UnkTextStruct2 gUnknown_80E71E4 = { +const Window gUnknown_80E71E4 = { 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, @@ -35,7 +35,7 @@ const UnkTextStruct2 gUnknown_80E71E4 = { NULL }; -const UnkTextStruct2 gUnknown_80E71FC = { +const Window gUnknown_80E71FC = { 0x00, 0x00, 0x00, 0x00, 0x03, 0x03, 0x09, @@ -59,7 +59,7 @@ ALIGNED(4) const u8 CheckAgain_80E7234[] = _("{CENTER_ALIGN}Please check it agai ALIGNED(4) const u8 IncorrectPassword_80E7250[] = _("{CENTER_ALIGN}Incorrect password!"); ALIGNED(4) const u8 Error_80E7268[] = _("{CENTER_ALIGN}{COLOR RED}Error!{RESET} "); -const UnkTextStruct2 gUnknown_80E7278 = { +const Window gUnknown_80E7278 = { 0x00, 0x00, 0x00, 0x00, 0x03, 0x03, 0x09, @@ -83,7 +83,7 @@ ALIGNED(4) const u8 DATA_80E72B0[] = " "; ALIGNED(4) const u8 PasswordAccept_80E72B4[] = _("{CENTER_ALIGN}The password has been accepted."); ALIGNED(4) const u8 Success_80E72D8[] = _("{CENTER_ALIGN}{COLOR CYAN_G}Success!{RESET} "); -const UnkTextStruct2 gUnknown_80E72EC = { +const Window gUnknown_80E72EC = { 0x00, 0x00, 0x00, 0x00, 0x03, 0x03, 0x09, @@ -103,7 +103,7 @@ const MenuItem gUnknown_80E7304[4] = { ALIGNED(4) const u8 NotSOSMail_80E7324[] = _("{CENTER_ALIGN}This is not an {COLOR CYAN_G}SOS Mail{RESET}."); -const UnkTextStruct2 gUnknown_80E7344 = { +const Window gUnknown_80E7344 = { 0x00, 0x00, 0x00, 0x00, 0x03, 0x03, 0x09, @@ -123,7 +123,7 @@ const MenuItem gUnknown_80E735C[4] = { ALIGNED(4) const u8 ReceiveSOSMail_80E737C[] = _("{CENTER_ALIGN}This {COLOR CYAN_G}SOS Mail{RESET} has been received already."); -const UnkTextStruct2 gUnknown_80E73AC = { +const Window gUnknown_80E73AC = { 0x00, 0x00, 0x00, 0x00, 0x03, 0x03, 0x09, @@ -143,7 +143,7 @@ const MenuItem gUnknown_80E73C4[4] = { ALIGNED(4) const u8 sUnknown_80E73E4[] = _("{CENTER_ALIGN}This is not an {COLOR CYAN_G}A-OK Mail{RESET}."); -const UnkTextStruct2 gUnknown_80E7408 = { +const Window gUnknown_80E7408 = { 0x00, 0x00, 0x00, 0x00, 0x03, 0x03, 0x09, @@ -163,7 +163,7 @@ const MenuItem gUnknown_80E7420[4] = { ALIGNED(4) const u8 sUnknown_80E7440[] = _("{CENTER_ALIGN}This {COLOR CYAN_G}A-OK Mail{RESET} cannot be used."); -const UnkTextStruct2 gUnknown_80E7468 = { +const Window gUnknown_80E7468 = { 0x00, 0x00, 0x00, 0x00, 0x03, 0x03, 0x09, @@ -182,7 +182,7 @@ const MenuItem gUnknown_80E7480[4] = { }; ALIGNED(4) const u8 sUnknown_80E74A0[] = _("{CENTER_ALIGN}This is not a {COLOR CYAN_G}Thank-You Mail{RESET}."); -const UnkTextStruct2 gUnknown_80E74C8 = { +const Window gUnknown_80E74C8 = { 0x00, 0x00, 0x00, 0x00, 0x03, 0x03, 0x09, @@ -202,7 +202,7 @@ const MenuItem gUnknown_80E74E0[4] = { ALIGNED(4) const u8 sUnknown_80E7500[] = _("{CENTER_ALIGN}This {COLOR CYAN_G}Thank-You Mail{RESET} cannot be used."); -const UnkTextStruct2 gUnknown_80E752C = { +const Window gUnknown_80E752C = { 0x00, 0x00, 0x00, 0x00, 0x03, 0x03, 0x09, @@ -221,7 +221,7 @@ const MenuItem gUnknown_80E7544[4] = { }; ALIGNED(4) const u8 sUnknown_80E7564[] = _("{CENTER_ALIGN}This is not a {COLOR CYAN_G}Wonder Mail{RESET}."); -const UnkTextStruct2 gUnknown_80E7588 = { +const Window gUnknown_80E7588 = { 0x00, 0x00, 0x00, 0x00, 0x03, 0x03, 0x09, diff --git a/src/save_menu.c b/src/save_menu.c index 47a4b51eb..3e2348452 100644 --- a/src/save_menu.c +++ b/src/save_menu.c @@ -12,7 +12,7 @@ static EWRAM_INIT SaveMenuWork *sUnknown_203B364 = {NULL}; -const UnkTextStruct2 gUnknown_80E6F20 = +const Window gUnknown_80E6F20 = { 0x00, 0x00, 0x00, 0x00, 0x03, @@ -22,7 +22,7 @@ const UnkTextStruct2 gUnknown_80E6F20 = NULL }; -const UnkTextStruct2 gUnknown_80E6F38 = +const Window gUnknown_80E6F38 = { 0x00, 0x00, 0x00, 0x00, 0x03, diff --git a/src/string_format.c b/src/string_format.c index c76c256ce..881586285 100644 --- a/src/string_format.c +++ b/src/string_format.c @@ -60,7 +60,7 @@ u32 sub_8014140(void) // This kinda looks like the 'true' beginning of the file static const u32 gUnknown_80D48A0[] = {0x7, 0x2, 0x2}; -static const struct UnkTextStruct2 gUnknown_80D48AC = { +static const struct Window gUnknown_80D48AC = { 0x00, 0x00, 0x00, 0x00, 0x03, @@ -69,7 +69,7 @@ static const struct UnkTextStruct2 gUnknown_80D48AC = { 0x00, 0x00, 0x00 }; -static const UnkTextStruct2 gUnknown_80D48C4 = { +static const Window gUnknown_80D48C4 = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x0F, @@ -78,7 +78,7 @@ static const UnkTextStruct2 gUnknown_80D48C4 = { NULL }; -static const UnkTextStruct2 gUnknown_80D48DC = { +static const Window gUnknown_80D48DC = { 0x00, 0x00, 0x00, 0x00, 0x02, 0x02, 0x08, @@ -149,7 +149,7 @@ static EWRAM_DATA s32 gUnknown_202EC1C = 0; // Only read, but never written to. Possibly used in Blue? struct NeverWrittenToStruct202EC20 { - struct UnkTextStruct2 unk0; + struct Window unk0; const u8 *unk18; }; static EWRAM_DATA struct NeverWrittenToStruct202EC20 *sNeverWrittenToUnknownStructPtr = NULL; @@ -157,23 +157,23 @@ static UNUSED EWRAM_DATA u8 sUnusedEwram1[4] = {0}; static EWRAM_DATA MenuInputStructSub gUnknown_202EC28 = {0}; -static EWRAM_INIT UnkTextStruct3 sUnknown_203B198 = { +static EWRAM_INIT Windows sUnknown_203B198 = { .a0 = { [0] = { .pos = {2, 15}, - .unkC = 26, - .unkE = 5, + .width = 26, + .height = 5, .unk10 = 7, }, [1] = { .unk0 = 0x40, - .unk4 = 7 + .type = WINDOW_TYPE_7, }, [2] = { - .unk4 = 3, + .type = WINDOW_TYPE_NORMAL, }, [3] = { - .unk4 = 3, + .type = WINDOW_TYPE_NORMAL, } } }; @@ -233,8 +233,8 @@ void CreateMenuDialogueBoxAndPortrait(const u8 *text, void *a1, u32 r9, const Me sUnknown_203B198.a0[0] = gUnknown_80D48C4; } - sUnknown_203B198.a0[1].unkC = 0; - sUnknown_203B198.a0[1].unkE = 0; + sUnknown_203B198.a0[1].width = 0; + sUnknown_203B198.a0[1].height = 0; sUnknown_203B198.a0[1].unk10 = 0; sUnknown_203B198.a0[1].unk0 = 0x40; @@ -243,18 +243,18 @@ void CreateMenuDialogueBoxAndPortrait(const u8 *text, void *a1, u32 r9, const Me sUnknown_203B198.a0[1].pos.x = monPortraitPtr->pos.x; sUnknown_203B198.a0[1].pos.y = monPortraitPtr->pos.y; - sUnknown_203B198.a0[1].unkC = 5; - sUnknown_203B198.a0[1].unkE = 5; + sUnknown_203B198.a0[1].width = 5; + sUnknown_203B198.a0[1].height = 5; sUnknown_203B198.a0[1].unk10 = 5; for (i = 0; i < 16; i++) { SetBGPaletteBufferColorArray(224 + i, &monPortraitPtr->faceData->sprites[monPortraitPtr->spriteId].pal[i]); } portraitOn = TRUE; if (monPortraitPtr->unkE) { - sUnknown_203B198.a0[1].unk4 = 7; + sUnknown_203B198.a0[1].type = WINDOW_TYPE_7; } else { - sUnknown_203B198.a0[1].unk4 = 5; + sUnknown_203B198.a0[1].type = WINDOW_TYPE_FILL_TRANSPARENT; } } @@ -621,12 +621,12 @@ static void sub_8014A88(void) if (r5 % 8) r2++; - sUnknown_203B198.a0[2].unk4 = gUnknown_202EC10; + sUnknown_203B198.a0[2].type = gUnknown_202EC10; r1 = r7 / 8; r1 += 2; - sUnknown_203B198.a0[2].unkC = r1; + sUnknown_203B198.a0[2].width = r1; sUnknown_203B198.a0[2].unk10 = r2; - sUnknown_203B198.a0[2].unkE = r2; + sUnknown_203B198.a0[2].height = r2; sUnknown_203B198.a0[2].pos.x = 28 - r1; sUnknown_203B198.a0[2].pos.y = 14 - r2; sUnknown_203B198.a0[0].unk0 = 0x80; diff --git a/src/text.c b/src/text.c index c5d72ce51..526b1261d 100644 --- a/src/text.c +++ b/src/text.c @@ -38,7 +38,7 @@ EWRAM_DATA static s32 sCurrentCharmap = 0; EWRAM_DATA static vu32 sUnknown_20274B0 = 0; EWRAM_DATA static u32 sUnknown_20274B4[0xEC0] = {0}; EWRAM_DATA static OpenedFile *sCharmapFiles[3] = {NULL}; -EWRAM_DATA static UnkTextStruct3 sUnknown_202AFC0 = {0}; +EWRAM_DATA static Windows sUnknown_202AFC0 = {0}; EWRAM_DATA static s32 sUnknown_202B020 = 0; EWRAM_DATA static s32 sUnknown_202B024 = 0; EWRAM_DATA static s32 sCharHeight[2] = {0}; @@ -64,14 +64,14 @@ EWRAM_INIT void (*gIwramTextFunc4)(s32 a0) = sub_8272A78; // This variable is only used in InitGraphics function, which may or may not belong to text.c EWRAM_INIT u8 gUnknown_203B090 = 0; -static void SaveUnkTextStructAndXXX_8006438(const UnkTextStruct3 *a0, bool8 a1, bool8 a2, DungeonPos *a3); -static void sub_8006554(UnkTextStruct1 *a0, u32 *a1, u32 *a2, u16 *a3, u32 a4, const UnkTextStruct2 *a5, bool8 a6, u32 a7, DungeonPos *a8, u8 a9); +static void SaveUnkTextStructAndXXX_8006438(const Windows *a0, bool8 a1, bool8 a2, DungeonPos *a3); +static void sub_8006554(UnkTextStruct1 *a0, u32 *a1, u32 *a2, u16 *a3, u32 a4, const Window *a5, bool8 a6, u32 a7, DungeonPos *a8, u8 a9); static void sub_800677C(UnkTextStruct1 *a0, s32 a1, u16 *a2, u8 a3); static void sub_80069CC(UnkTextStruct1 *a0, s32 a1, s32 a2, s32 a3, u16 *a4); static void sub_8006AC4(UnkTextStruct1 *a0, s32 a1, s32 a2, s32 a3, u16 *a4); static void sub_8006B70(UnkTextStruct1 *a0, s32 a1, s32 a2, s32 a3, u16 *a4); static void sub_8006C44(UnkTextStruct1 *a0, s32 a1, u16 *a2, u8 a3); -static void sub_8006E94(UnkTextStruct1 *a0, s32 a1, u32 a2, const UnkTextStruct2_sub2 *a3, u16 *a4); +static void sub_8006E94(UnkTextStruct1 *a0, s32 a1, u32 a2, const WindowHeader *a3, u16 *a4); static u32 xxx_draw_char(struct UnkTextStruct1 *a0, s32 x, s32 y, u32 a3, u32 color, u32 a5); static void nullsub_129(u32 a0, s32 x, s32 y, s32 a3, u32 color); static void sub_8007958(UnkTextStruct1 *a0, u32 a1, s32 x, s32 y, s32 a4, u32 color); @@ -86,7 +86,7 @@ static void sub_80084A4(UnkTextStruct1 *a0, u16 a1[32][32], u32 a2, s32 a3, s32 static void sub_8008818(UnkTextStruct1 *a0, s32 a1, s32 a2, s32 a3, s32 a4, s32 a5); static bool8 xxx_update_bg_vram(UnkTextStruct1 *a0); static void sub_800898C(void); -static void sub_80089AC(const UnkTextStruct2 *r4, DungeonPos *r5_Str); +static void sub_80089AC(const Window *r4, DungeonPos *r5_Str); static void PrepareTextbox_8008C6C(UnkTextStruct1 *strArr, u32 strId); static void xxx_draw_string(UnkTextStruct1 *strArr, s32 x, s32 y, const u8 *str, u32 windowId, u32 terminatingChr, s32 characterSpacing, s32 lineSpacing); static const u8 *HandleTextFormat(UnkTextStruct1 *strArr, const u8 *str, struct UnkDrawStringStruct *sp); @@ -113,13 +113,13 @@ static const u32 gUnknown_80B853C[16] = 0xEEEEEEEE, }; -static const UnkTextStruct3 gUnknown_80B857C = +static const Windows gUnknown_80B857C = { .a0 = { - [0] = {.unk4 = 3}, - [1] = {.unk4 = 3}, - [2] = {.unk4 = 3}, - [3] = {.unk4 = 3}, + [0] = {.type = WINDOW_TYPE_NORMAL}, + [1] = {.type = WINDOW_TYPE_NORMAL}, + [2] = {.type = WINDOW_TYPE_NORMAL}, + [3] = {.type = WINDOW_TYPE_NORMAL}, } }; @@ -275,14 +275,14 @@ void SetCharacterMask(int a0) sTextShadowMask = retval; } -void xxx_call_save_unk_text_struct_800641C(const UnkTextStruct3 *a0, bool8 a1, bool8 a2) +void xxx_call_save_unk_text_struct_800641C(const Windows *a0, bool8 a1, bool8 a2) { DungeonPos r3 = {0, 0}; SaveUnkTextStructAndXXX_8006438(a0, a1, a2, &r3); } // https://decomp.me/scratch/xF5Y1 -static void SaveUnkTextStructAndXXX_8006438(const UnkTextStruct3 *a0, bool8 a1, bool8 a2, DungeonPos *a3) +static void SaveUnkTextStructAndXXX_8006438(const Windows *a0, bool8 a1, bool8 a2, DungeonPos *a3) { s32 i; u32 r9; @@ -299,10 +299,10 @@ static void SaveUnkTextStructAndXXX_8006438(const UnkTextStruct3 *a0, bool8 a1, for (i = 0; i < 4; i++) { sUnknown_202AFC0.a0[i] = a0->a0[i]; - if (a0->a0[i].unkC) { + if (a0->a0[i].width) { sub_8006554(gUnknown_2027370, (u32 *)VRAM, sUnknown_20274B4, &gUnknown_202B038[0][0][0], gUnknown_80B8804[i], &a0->a0[i], a1, r9, a3, 0); sub_80089AC(&a0->a0[i], a3); - r9 += a0->a0[i].unkC * a0->a0[i].unk10; + r9 += a0->a0[i].width * a0->a0[i].unk10; } } @@ -319,7 +319,7 @@ UNUSED static void nullsub_152(void) { } -void RestoreUnkTextStruct_8006518(UnkTextStruct3 *unkData) +void RestoreUnkTextStruct_8006518(Windows *unkData) { s32 i; for (i = 0; i < 4; i++) @@ -336,7 +336,7 @@ u32 sub_8006544(u32 index) } // a1 is a VRAM pointer -static void sub_8006554(UnkTextStruct1 *a0, u32 *a1, u32 *a2, u16 *a3, u32 a4, const UnkTextStruct2 *a5, bool8 a6, u32 a7, DungeonPos *a8, u8 a9) +static void sub_8006554(UnkTextStruct1 *a0, u32 *a1, u32 *a2, u16 *a3, u32 a4, const Window *a5, bool8 a6, u32 a7, DungeonPos *a8, u8 a9) { UnkTextStruct1 *t1; s32 iVar3; @@ -354,10 +354,10 @@ static void sub_8006554(UnkTextStruct1 *a0, u32 *a1, u32 *a2, u16 *a3, u32 a4, c iVar5 = a5->pos.y + a8->y; t1->unk0 = iVar3; t1->unk2 = iVar5; - t1->unk4 = a5->unkC; + t1->unk4 = a5->width; t1->unk8 = a5->unk10; - t1->unk6 = a5->unkE; - t1->unkC = a5->unk4; + t1->unk6 = a5->height; + t1->unkC = a5->type; t1->unk10 = a7; if (t1->unkC == 6) @@ -686,7 +686,7 @@ static void sub_8006C44(UnkTextStruct1 *a0, s32 a1, u16 *a2, u8 a3) // Not even close but I don't feel like continuing atm https://decomp.me/scratch/F58jg /* -void sub_8006E94(UnkTextStruct1 *a0, s32 a1, u32 a2, const UnkTextStruct2_sub2 *a3, u16 *a4) +void sub_8006E94(UnkTextStruct1 *a0, s32 a1, u32 a2, const WindowHeader *a3, u16 *a4) { s32 bVar1; s32 iVar2; @@ -870,7 +870,7 @@ void sub_8006E94(UnkTextStruct1 *a0, s32 a1, u32 a2, const UnkTextStruct2_sub2 * } */ NAKED -static void sub_8006E94(UnkTextStruct1 *a0, s32 a1, u32 a2, const UnkTextStruct2_sub2 *a3, u16 *a4) +static void sub_8006E94(UnkTextStruct1 *a0, s32 a1, u32 a2, const WindowHeader *a3, u16 *a4) { asm_unified( "\tpush {r4-r7,lr}\n" @@ -2866,7 +2866,7 @@ static void sub_800898C(void) } } -static void sub_80089AC(const UnkTextStruct2 *r4, DungeonPos *r5_Str) +static void sub_80089AC(const Window *r4, DungeonPos *r5_Str) { u8 *r6; @@ -2874,12 +2874,12 @@ static void sub_80089AC(const UnkTextStruct2 *r4, DungeonPos *r5_Str) return; r6 = (void*) &gUnknown_3000E94; - if (r4->unk4 == 1) { + if (r4->type == WINDOW_TYPE_WITHOUT_BORDER) { s32 r12 = (r4->pos.x + r5_Str->x) * 8; s32 r5 = (r4->pos.y + r5_Str->y) * 8; - s32 r7 = (r4->pos.x + r5_Str->x + r4->unkC) * 8; - s32 r2 = (r4->pos.y + r5_Str->y + r4->unkE) * 8; - if (r4->unkE != 0) { + s32 r7 = (r4->pos.x + r5_Str->x + r4->width) * 8; + s32 r2 = (r4->pos.y + r5_Str->y + r4->height) * 8; + if (r4->height != 0) { if (r5 < 0) r5 = 0; if (r2 < 0) @@ -2907,14 +2907,14 @@ static void sub_80089AC(const UnkTextStruct2 *r4, DungeonPos *r5_Str) } } } - else if (r4->unk4 == 6) { + else if (r4->type == WINDOW_TYPE_WITH_HEADER) { s32 i; s32 r9 = ((r4->pos.x + r5_Str->x) * 8) - 5; s32 r5 = ((r4->pos.y + r5_Str->y) * 8) - 4; - s32 var_24 = ((r4->pos.x + r5_Str->x + r4->unkC) * 8) + 5; - s32 r8 = ((r4->pos.y + r5_Str->y + r4->unkE) * 8) + 5; + s32 var_24 = ((r4->pos.x + r5_Str->x + r4->width) * 8) + 5; + s32 r8 = ((r4->pos.y + r5_Str->y + r4->height) * 8) + 5; s32 r12 = ((r4->pos.x + r5_Str->x) * 8) + 3; - const UnkTextStruct2_sub2 *r2 = r4->unk14; + const WindowHeader *r2 = r4->unk14; s32 tmp = r2->f2 - 1; s32 r10 = (((tmp + r2->f0 + 2) * 8) + r12) - 4; s32 r4 = r9 + ((r2->f1 + 1) * 8); @@ -2985,12 +2985,12 @@ static void sub_80089AC(const UnkTextStruct2 *r4, DungeonPos *r5_Str) else { s32 r8 = ((r4->pos.x + r5_Str->x) * 8) - 5; s32 r3 = ((r4->pos.y + r5_Str->y) * 8) - 5; - s32 r12 = ((r4->pos.x + r5_Str->x + r4->unkC) * 8) + 5; - s32 r5 = ((r4->pos.y + r5_Str->y + r4->unkE) * 8) + 5; - if (r4->unkE != 0) { - if (r4->unk4 == 0) { + s32 r12 = ((r4->pos.x + r5_Str->x + r4->width) * 8) + 5; + s32 r5 = ((r4->pos.y + r5_Str->y + r4->height) * 8) + 5; + if (r4->height != 0) { + if (r4->type == 0) { r3 += 8; - r5 = ((r4->pos.y + r5_Str->y + r4->unkE) * 8) - 3; + r5 = ((r4->pos.y + r5_Str->y + r4->height) * 8) - 3; } if (r3 < 0) r3 = 0; diff --git a/src/thank_you_wonder_mail.c b/src/thank_you_wonder_mail.c index 9870dc165..ba974be9e 100644 --- a/src/thank_you_wonder_mail.c +++ b/src/thank_you_wonder_mail.c @@ -75,7 +75,7 @@ const Item gUnknown_80DED44 = ITEM_FLAG_EXISTS, 0, ITEM_NOTHING }; -const UnkTextStruct2 gUnknown_80DED48 = +const Window gUnknown_80DED48 = { 0x00, 0x00, 0x00, 0x00, 0x03, @@ -85,7 +85,7 @@ const UnkTextStruct2 gUnknown_80DED48 = NULL }; -const UnkTextStruct2 gUnknown_80DED60 = +const Window gUnknown_80DED60 = { 0x00, 0x00, 0x00, 0x00, 0x03, @@ -106,7 +106,7 @@ const MenuItem gUnknown_80DED78[] = }; // Unused -const UnkTextStruct2 gUnknown_80DEDA0 = +const Window gUnknown_80DEDA0 = { 0x00, 0x00, 0x00, 0x00, 0x03, diff --git a/src/unk_menu_203B360.c b/src/unk_menu_203B360.c index 5b9a49ffc..9b18501c9 100644 --- a/src/unk_menu_203B360.c +++ b/src/unk_menu_203B360.c @@ -15,14 +15,14 @@ typedef struct unkStruct_203B360 /* 0x0 */ u32 currMenu; u32 unk4; // state MenuStruct unk8[4]; - UnkTextStruct3 unk148; + Windows unk148; SpriteOAM unk1A8; u32 unk1B0; // sprite count? } unkStruct_203B360; static EWRAM_INIT unkStruct_203B360 *sUnknown_203B360 = {NULL}; -const UnkTextStruct2 gUnknown_80E6E7C = { +const Window gUnknown_80E6E7C = { 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, @@ -31,7 +31,7 @@ const UnkTextStruct2 gUnknown_80E6E7C = { NULL }; -const UnkTextStruct2 gUnknown_80E6E94 = { +const Window gUnknown_80E6E94 = { 0x00, 0x00, 0x00, 0x00, 0x03, 0x05, 0x09, diff --git a/src/wonder_mail_3_mid.c b/src/wonder_mail_3_mid.c index 0aadefc63..336b2eb47 100644 --- a/src/wonder_mail_3_mid.c +++ b/src/wonder_mail_3_mid.c @@ -19,7 +19,7 @@ struct unkStruct_203B30C unkStruct_802C39C unk8; MenuStruct unk60; MenuItem unkB0[8]; - UnkTextStruct3 unkF0; + Windows unkF0; }; static EWRAM_INIT struct unkStruct_203B30C *gUnknown_203B30C = {NULL}; @@ -31,7 +31,7 @@ extern void sub_802F004(); extern void sub_802F088(); extern void sub_802F108(void); -const UnkTextStruct2 gUnknown_80E03C4 = { +const Window gUnknown_80E03C4 = { 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, @@ -39,7 +39,7 @@ const UnkTextStruct2 gUnknown_80E03C4 = { 0x00, 0x00, NULL }; -const UnkTextStruct2 gUnknown_80E03DC = { +const Window gUnknown_80E03DC = { 0x00, 0x00, 0x00, 0x00, 0x03, 0x03, 0x03, @@ -47,7 +47,7 @@ const UnkTextStruct2 gUnknown_80E03DC = { 0x03, 0x00, NULL }; -const UnkTextStruct2 gUnknown_80E03F4 = { +const Window gUnknown_80E03F4 = { 0x00, 0x00, 0x00, 0x00, 0x03, 0x15, 0x06, diff --git a/src/wonder_mail_4.c b/src/wonder_mail_4.c index 0a999c111..877debafa 100644 --- a/src/wonder_mail_4.c +++ b/src/wonder_mail_4.c @@ -26,7 +26,7 @@ static EWRAM_INIT struct unkStruct_203B320 *gUnknown_203B320 = {NULL}; extern unkStruct_203B480 *gUnknown_203B480; -const UnkTextStruct2 gUnknown_80E083C = { +const Window gUnknown_80E083C = { 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, @@ -35,7 +35,7 @@ const UnkTextStruct2 gUnknown_80E083C = { NULL }; -const UnkTextStruct2 gUnknown_80E0854 = { +const Window gUnknown_80E0854 = { 0x00, 0x00, 0x00, 0x00, 0x06, 0x02, 0x02, diff --git a/src/wonder_mail_5.c b/src/wonder_mail_5.c index bae544939..f65d2e112 100644 --- a/src/wonder_mail_5.c +++ b/src/wonder_mail_5.c @@ -20,8 +20,8 @@ struct unkStruct_203B324 MenuInputStructSub unk0; u8 mailIndex; u32 windowID; - UnkTextStruct2 *unk14; - UnkTextStruct3 unk18; + Window *unk14; + Windows unk18; }; static EWRAM_INIT struct unkStruct_203B324 *gUnknown_203B324 = {NULL}; @@ -29,7 +29,7 @@ static EWRAM_INIT struct unkStruct_203B324 *gUnknown_203B324 = {NULL}; extern unkStruct_203B480 *gUnknown_203B480; -const UnkTextStruct2 gUnknown_80E0900 = { +const Window gUnknown_80E0900 = { 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, @@ -38,9 +38,9 @@ const UnkTextStruct2 gUnknown_80E0900 = { NULL }; -const UnkTextStruct2_sub2 gUnknown_80E0918 = {0x01, 0x00, 0x12, 0x00}; +const WindowHeader gUnknown_80E0918 = {0x01, 0x00, 0x12, 0x00}; -const UnkTextStruct2 gUnknown_80E091C = { +const Window gUnknown_80E091C = { 0x00, 0x00, 0x00, 0x00, 0x06, 0x02, 0x02, diff --git a/src/wonder_mail_6.c b/src/wonder_mail_6.c index b85f3b88a..65539214d 100644 --- a/src/wonder_mail_6.c +++ b/src/wonder_mail_6.c @@ -17,7 +17,7 @@ struct unkStruct_203B328 u8 mailIndex; MenuStruct unk8; MenuStruct unk58; - UnkTextStruct3 unkA8; + Windows unkA8; /* 0x108 */ struct MonPortraitMsg monPortrait; u32 wonderMailType; }; @@ -48,7 +48,7 @@ const MenuItem gUnknown_80E0968[] = {NULL, CANCEL_ACTION} }; -const UnkTextStruct2 gUnknown_80E0990 = { +const Window gUnknown_80E0990 = { 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, @@ -56,7 +56,7 @@ const UnkTextStruct2 gUnknown_80E0990 = { 0x00, 0x00, NULL }; -const UnkTextStruct2 gUnknown_80E09A8 = { +const Window gUnknown_80E09A8 = { 0x00, 0x00, 0x00, 0x00, 0x03, 0x13, 0x0B, @@ -64,7 +64,7 @@ const UnkTextStruct2 gUnknown_80E09A8 = { 0x03, 0x00, NULL }; -const UnkTextStruct2 gUnknown_80E09C0 = { +const Window gUnknown_80E09C0 = { 0x00, 0x00, 0x00, 0x00, 0x03, 0x11, 0x0F, diff --git a/src/wonder_mail_802D098.c b/src/wonder_mail_802D098.c index 5ed5a68fa..67f05bc99 100644 --- a/src/wonder_mail_802D098.c +++ b/src/wonder_mail_802D098.c @@ -147,13 +147,13 @@ static void sub_802D1B8(void) sub_802D5A4(); sUnknown_203B2F8->unk1A8.a0[2] = sUnknown_80DFE04; sub_8012CAC(&sUnknown_203B2F8->unk1A8.a0[2], sUnknown_203B2F8->unk118); - sUnknown_203B2F8->unk1A8.a0[2].unkC = 6; + sUnknown_203B2F8->unk1A8.a0[2].width = 6; break; case 14: sub_802D63C(); sUnknown_203B2F8->unk1A8.a0[3] = sUnknown_80DFE1C; sub_8012CAC(&sUnknown_203B2F8->unk1A8.a0[3], sUnknown_203B2F8->unk158); - sUnknown_203B2F8->unk1A8.a0[3].unkC = 6; + sUnknown_203B2F8->unk1A8.a0[3].width = 6; break; default: for (i = 0; i < 4; i++) diff --git a/src/wonder_mail_main_menu.c b/src/wonder_mail_main_menu.c index 9ec2e5877..ed505e690 100644 --- a/src/wonder_mail_main_menu.c +++ b/src/wonder_mail_main_menu.c @@ -49,7 +49,7 @@ struct unkStruct_203B3E8 u8 unk38_u8[0x30]; // idk why it fills to 0x30 instead... } UNK38; u8 fill68[0x1EC - 0x68]; - UnkTextStruct3 unk1EC; + Windows unk1EC; u32 unk24C; /* 0x250 */ u32 wonderMailStatus; unkStruct_803B344 unk254; From 9d605e7d061b7748bf222c09146c624ec9de9f94 Mon Sep 17 00:00:00 2001 From: DizzyEggg Date: Sun, 23 Feb 2025 20:59:06 +0100 Subject: [PATCH 22/40] documenting --- asm/code_2.s | 10 +- asm/code_8023868.s | 8 +- asm/code_803B050.s | 8 +- data/data_80CE77C.s | 15 - include/code_8004AA0.h | 3 - include/code_801B60C.h | 2 +- include/code_801D014.h | 2 +- include/code_801EE10.h | 2 +- include/code_80227B8.h | 2 +- include/friend_areas_map.h | 72 ++ include/structs/struct_sub80095e4.h | 18 +- include/text.h | 2 +- include/world_map.h | 57 ++ ld_script.txt | 4 + src/adventure_log.c | 12 +- src/adventure_log_menu.c | 2 +- src/code_2.c | 2 +- src/code_8010F28.c | 1038 ++------------------------- src/code_8015080.c | 24 +- src/code_801602C.c | 2 +- src/code_801B3C0.c | 2 +- src/code_801B60C.c | 20 +- src/code_801C8C4.c | 16 +- src/code_801D014.c | 36 +- src/code_801D9E4.c | 14 +- src/code_801EE10.c | 18 +- src/code_801F428.c | 14 +- src/code_801F808.c | 18 +- src/code_80227B8.c | 16 +- src/code_8023144.c | 16 +- src/code_8024458.c | 10 +- src/code_802DB28.c | 6 +- src/code_802DE84.c | 10 +- src/code_8031D70.c | 10 +- src/code_803E724.c | 18 +- src/code_805D8C8_1.c | 114 +-- src/code_8066D04.c | 24 +- src/code_8072F3C.c | 16 +- src/code_8099360.c | 4 +- src/code_809A560.c | 8 +- src/credits1.c | 8 +- src/debug_menu1.c | 6 +- src/debug_menu2.c | 12 +- src/debug_menu3.c | 8 +- src/debug_menu4.c | 12 +- src/ds_menus.c | 2 +- src/dungeon_message.c | 2 +- src/felicity_bank.c | 30 +- src/friend_area_action_menu.c | 14 +- src/friend_areas_map_util.c | 404 +++++++++++ src/friend_list_menu.c | 14 +- src/friend_rescue.c | 62 +- src/gulpin_shop.c | 10 +- src/gulpin_shop_801FB50.c | 36 +- src/hints_menu1.c | 14 +- src/hints_menu2.c | 14 +- src/iq_skill_info_menu.c | 2 +- src/iq_skill_list_menu.c | 16 +- src/iq_skill_menu.c | 6 +- src/kangaskhan_storage1.c | 28 +- src/kangaskhan_storage2.c | 38 +- src/kecleon_bros1.c | 22 +- src/kecleon_bros2.c | 14 +- src/kecleon_bros3.c | 14 +- src/kecleon_bros4.c | 18 +- src/load_screen.c | 6 +- src/luminous_cave.c | 8 +- src/mailbox.c | 18 +- src/main_menu1.c | 14 +- src/main_menu2.c | 6 +- src/makuhita_dojo1.c | 6 +- src/makuhita_dojo2.c | 14 +- src/menu_input.c | 4 +- src/mission_reward.c | 6 +- src/options_menu1.c | 20 +- src/options_menu2.c | 10 +- src/other_menus1.c | 6 +- src/party_list_menu.c | 20 +- src/pelipper_board.c | 18 +- src/personality_test1.c | 4 +- src/personality_test2.c | 16 +- src/pokemon_news1.c | 16 +- src/pokemon_news2.c | 14 +- src/pokemon_news3.c | 16 +- src/post_office_guide1.c | 2 +- src/post_office_guide2.c | 10 +- src/rescue_password_menu.c | 14 +- src/save_menu.c | 6 +- src/string_format.c | 56 +- src/text.c | 24 +- src/thank_you_wonder_mail.c | 26 +- src/trade_items_menu.c | 16 +- src/unk_menu_203B360.c | 6 +- src/wigglytuff_shop1.c | 16 +- src/wigglytuff_shop2.c | 10 +- src/wigglytuff_shop3.c | 14 +- src/wonder_mail.c | 34 +- src/wonder_mail_2.c | 2 +- src/wonder_mail_3_mid.c | 8 +- src/wonder_mail_4.c | 16 +- src/wonder_mail_5.c | 10 +- src/wonder_mail_6.c | 32 +- src/wonder_mail_802C10C.c | 16 +- src/wonder_mail_802C4C8.c | 16 +- src/wonder_mail_802C860.c | 10 +- src/wonder_mail_802CDD4.c | 14 +- src/wonder_mail_802D098.c | 16 +- src/wonder_mail_main_menu.c | 10 +- src/world_map.c | 541 ++++++++++++++ sym_ewram_init.txt | 1 + 110 files changed, 1868 insertions(+), 1761 deletions(-) create mode 100644 include/friend_areas_map.h create mode 100644 include/world_map.h create mode 100644 src/friend_areas_map_util.c create mode 100644 src/world_map.c diff --git a/asm/code_2.s b/asm/code_2.s index 03f93b406..2c42fd608 100644 --- a/asm/code_2.s +++ b/asm/code_2.s @@ -144,7 +144,7 @@ QuickSave: movs r0, 0 movs r1, 0x1 movs r2, 0x1 - bl xxx_call_save_unk_text_struct_800641C + bl ShowWindows movs r0, 0 movs r1, 0x14 bl sub_8009408 @@ -297,7 +297,7 @@ _08000892: movs r0, 0 movs r1, 0x1 movs r2, 0x1 - bl xxx_call_save_unk_text_struct_800641C + bl ShowWindows movs r0, 0 bl xxx_update_stuff add sp, 0xC @@ -325,7 +325,7 @@ sub_80008C0: movs r0, 0 movs r1, 0x1 movs r2, 0x1 - bl xxx_call_save_unk_text_struct_800641C + bl ShowWindows movs r0, 0 movs r1, 0x14 bl sub_8009408 @@ -425,7 +425,7 @@ _080009A2: movs r0, 0 movs r1, 0x1 movs r2, 0x1 - bl xxx_call_save_unk_text_struct_800641C + bl ShowWindows movs r0, 0 bl xxx_update_stuff add sp, 0x4 @@ -622,7 +622,7 @@ _08000B50: add r4, sp, 0x168 str r0, [r4] adds r0, r5, 0 - bl sub_8010268 + bl ShowWorldMap ldr r0, [r4] bl MemoryFree add r0, sp, 0x16C diff --git a/asm/code_8023868.s b/asm/code_8023868.s index fc7d5fcde..1657a6d7f 100644 --- a/asm/code_8023868.s +++ b/asm/code_8023868.s @@ -219,7 +219,7 @@ _08023A04: adds r0, r6 movs r1, 0x1 movs r2, 0x1 - bl xxx_call_save_unk_text_struct_800641C + bl ShowWindows ldr r4, [r5] movs r0, 0xD6 lsls r0, 2 @@ -408,7 +408,7 @@ sub_8023B7C: adds r0, r1 movs r1, 0 movs r2, 0 - bl xxx_call_save_unk_text_struct_800641C + bl ShowWindows bl sub_8023BD8 adds r2, r0, 0 ldr r0, [r5] @@ -557,7 +557,7 @@ sub_8023C60: adds r0, r4 movs r1, 0x1 movs r2, 0x1 - bl xxx_call_save_unk_text_struct_800641C + bl ShowWindows ldr r0, [r5] bl MemoryFree movs r0, 0 @@ -660,7 +660,7 @@ _08023D38: adds r0, r2 movs r1, 0x1 movs r2, 0x1 - bl xxx_call_save_unk_text_struct_800641C + bl ShowWindows pop {r4,r5} pop {r0} bx r0 diff --git a/asm/code_803B050.s b/asm/code_803B050.s index d9c242dbd..42bb8306e 100644 --- a/asm/code_803B050.s +++ b/asm/code_803B050.s @@ -42,7 +42,7 @@ sub_803B050: adds r0, 0x3C movs r1, 0x1 movs r2, 0x1 - bl xxx_call_save_unk_text_struct_800641C + bl ShowWindows movs r2, 0 movs r3, 0 movs r7, 0xCB @@ -215,7 +215,7 @@ sub_803B1BC: adds r0, 0x3C movs r1, 0x1 movs r2, 0x1 - bl xxx_call_save_unk_text_struct_800641C + bl ShowWindows ldr r0, [r4] bl MemoryFree movs r0, 0 @@ -253,7 +253,7 @@ sub_803B204: adds r0, 0x3C movs r1, 0x1 movs r2, 0x1 - bl xxx_call_save_unk_text_struct_800641C + bl ShowWindows ldr r0, [r4] movs r1, 0x1A ldrsh r0, [r0, r1] @@ -284,7 +284,7 @@ sub_803B204: adds r0, 0x3C movs r1, 0x1 movs r2, 0x1 - bl xxx_call_save_unk_text_struct_800641C + bl ShowWindows pop {r4} pop {r0} bx r0 diff --git a/data/data_80CE77C.s b/data/data_80CE77C.s index ebb0ab148..a8e5026c9 100644 --- a/data/data_80CE77C.s +++ b/data/data_80CE77C.s @@ -462,20 +462,5 @@ gUnknown_80D4014: @ 80D4014 .string "wmp2font\0" .align 2,0 - .global gUnknown_80D405C -gUnknown_80D405C: @ 80D405C - .string "ax%03d\0" - .align 2,0 - - .global gUnknown_80D4064 -gUnknown_80D4064: @ 80D4064 - .string "wmapspr\0" - .align 2,0 - - .global gUnknown_80D406C -gUnknown_80D406C: @ 80D406C - .string "palet\0" - .align 2,0 - diff --git a/include/code_8004AA0.h b/include/code_8004AA0.h index 82c7138f0..100c497ef 100644 --- a/include/code_8004AA0.h +++ b/include/code_8004AA0.h @@ -2,10 +2,7 @@ #define GUARD_CODE_8004AA0_H #include "file_system.h" -#include "menu_input.h" #include "structs/rgb.h" -#include "structs/axdata.h" -#include "structs/str_position.h" // size: 0x18 typedef struct unkStruct_202EE8C diff --git a/include/code_801B60C.h b/include/code_801B60C.h index 7bf96f589..4ef7556ea 100644 --- a/include/code_801B60C.h +++ b/include/code_801B60C.h @@ -20,7 +20,7 @@ typedef struct unkStruct_203B234 MenuStruct unk78; /* 0xC8 */ u32 menuAction; MenuItem unkCC[5]; - Windows unkF4; + Windows windows; } unkStruct_203B234; bool8 sub_801B60C(u32, u8 id, u8 quantity); diff --git a/include/code_801D014.h b/include/code_801D014.h index 828478b68..ef70e1780 100644 --- a/include/code_801D014.h +++ b/include/code_801D014.h @@ -21,7 +21,7 @@ struct unk_203B250 MenuStruct unk18; MenuItem unk68[8]; u16 unkA8[8]; - Windows unkB8; + Windows windows; }; // size: 0x8 diff --git a/include/code_801EE10.h b/include/code_801EE10.h index c49df9c1b..73aca6d6c 100644 --- a/include/code_801EE10.h +++ b/include/code_801EE10.h @@ -21,7 +21,7 @@ typedef struct unkStruct_203B270 /* 0x1C */ MenuInputStruct input; u32 unk50; u32 unk54; - Windows unk58; + Windows windows; const u8 *text; } unkStruct_203B270; diff --git a/include/code_80227B8.h b/include/code_80227B8.h index 0d42198f8..96accc32c 100644 --- a/include/code_80227B8.h +++ b/include/code_80227B8.h @@ -26,7 +26,7 @@ typedef struct unkStruct_203B294 /* 0xF4 */ u32 menuAction; MenuItem unkF8[8]; u16 unk138[8]; - Windows unk148; + Windows windows; } unkStruct_203B294; bool8 sub_80227B8(PokemonStruct1 *pkmn); diff --git a/include/friend_areas_map.h b/include/friend_areas_map.h new file mode 100644 index 000000000..032347320 --- /dev/null +++ b/include/friend_areas_map.h @@ -0,0 +1,72 @@ +#ifndef GUARD_FRIEND_AREAS_MAP_H +#define GUARD_FRIEND_AREAS_MAP_H + +#include "file_system.h" +#include "code_8004AA0.h" +#include "menu_input.h" +#include "structs/axdata.h" +#include "structs/str_position.h" +#include "constants/direction.h" + +struct FriendAreaLocation +{ + const u8 *name; + DungeonPos unk4; + u8 unk8[8]; + s16 unk10[8]; +}; + +struct UnkStruct_4018 +{ + u8 unk4018; + s16 unk2[8]; + axdata unk14; +}; + +// size: 0x4DD8 +struct UnkBgStruct +{ + OpenedFile *unk0[5]; + u16 unk14[64][64]; + u16 unk2014[64][64]; + const struct FriendAreaLocation *locations; + struct UnkStruct_4018 unk4018[32]; + s32 unk4A18; + s32 unk4A1C; + s32 unk4A20; + s32 unk4A24; + s32 unk4A28; + u8 unk4A2C; + axdata arrowSprites[NUM_DIRECTIONS]; + axdata monAxSprite; + unkStruct_202EE8C unk4C4C[16]; + s32 brightness; + u32 unk4DD0; + DungeonPos bgPos; + DungeonPos monSpritePos; + s32 unk4DDC; + s32 unk4DE0; + s32 unk4DE4; + s32 unk4DE8; + u8 unk4DEC[8]; + u8 unk4DF4; + s32 unk4DF8; + MenuInputStruct menu; +}; + +extern struct UnkBgStruct *gUnknown_203B0E4; + +void sub_80101F8(u8 *strBuffer, u8 index); +bool8 sub_800FFE8(u8 friendAreaId); + +void FriendAreasMap_UpdateMonSpritePosition(void); +void FriendAreasMap_UpdateBg(void); +void FriendAreasMap_HideTextWindowAndArrows(void); +void FriendAreasMap_RunFrameActions(void); +void FriendAreasMap_ShowDirectionArrows(void); +void FriendAreasMap_PrintCurrAreaName(void); +void FriendAreasMap_PrintAvailableSubAreas(void); +void sub_8010EF0(void); +void sub_8010DA4(void); + +#endif diff --git a/include/structs/struct_sub80095e4.h b/include/structs/struct_sub80095e4.h index 9b5c3318b..19eaea943 100644 --- a/include/structs/struct_sub80095e4.h +++ b/include/structs/struct_sub80095e4.h @@ -13,7 +13,7 @@ typedef struct struct_Sub80095E4 /* 0x0 */ MenuInputStruct input; u32 unk34; Window *unk38; - Windows unk3C; + Windows windows; // size: 0x9C } struct_Sub80095E4; @@ -33,16 +33,16 @@ typedef struct struct_Sub80095E4_2 s16 newE; \ s16 a0 = (_a0); \ UNUSED s32 a0_ = a0; \ - UNUSED s16 oldE = (ptr).unk3C.a0[(ptr).unk34].height; \ + UNUSED s16 oldE = (ptr).windows.id[(ptr).unk34].height; \ a0_ = 0; \ new10 = a0 + 2; \ newE = a0; \ \ - (ptr).unk3C.a0[(ptr).unk34].height = newE; \ - (ptr).unk3C.a0[(ptr).unk34].unk10 = a0 + 2; \ + (ptr).windows.id[(ptr).unk34].height = newE; \ + (ptr).windows.id[(ptr).unk34].unk10 = a0 + 2; \ \ ResetUnusedInputStruct(); \ - xxx_call_save_unk_text_struct_800641C(&(ptr).unk3C, TRUE, TRUE); \ + ShowWindows(&(ptr).windows, TRUE, TRUE); \ } #define SUB_80095E4_CALL(ptr) \ @@ -54,14 +54,14 @@ typedef struct struct_Sub80095E4_2 #define SUB_80095E4_CALL_2(ptr) \ { \ s32 a0 = sub_80095E4((ptr).input.unk1A, 12) + 2; \ - UNUSED s16 oldE = (ptr).unk3C.a0[(ptr).unk34].height; \ + UNUSED s16 oldE = (ptr).windows.id[(ptr).unk34].height; \ s16 newE = a0; \ \ - (ptr).unk3C.a0[(ptr).unk34].height = newE; \ - (ptr).unk3C.a0[(ptr).unk34].unk10 = newE; \ + (ptr).windows.id[(ptr).unk34].height = newE; \ + (ptr).windows.id[(ptr).unk34].unk10 = newE; \ \ ResetUnusedInputStruct(); \ - xxx_call_save_unk_text_struct_800641C(&(ptr).unk3C, TRUE, TRUE); \ + ShowWindows(&(ptr).windows, TRUE, TRUE); \ } // sub_802BF30 and sub_802C328 use a different function call, and 24 instead of 12 diff --git a/include/text.h b/include/text.h index a1bb8165c..eab07f382 100644 --- a/include/text.h +++ b/include/text.h @@ -63,7 +63,7 @@ u32 UpdateFadeInTile(u32 a0); u32 sub_80063B0(void); void SelectCharmap(u32 a0); void SetCharacterMask(int a0); -void xxx_call_save_unk_text_struct_800641C(const Windows *a0, bool8 a1, bool8 a2); +void ShowWindows(const Windows *windows, bool8 a1, bool8 a2); void RestoreUnkTextStruct_8006518(Windows *unkData); u32 sub_8006544(u32 index); void sub_8007334(s32 a0); diff --git a/include/world_map.h b/include/world_map.h new file mode 100644 index 000000000..ef3625bde --- /dev/null +++ b/include/world_map.h @@ -0,0 +1,57 @@ +#ifndef GUARD_WORLD_MAP_H +#define GUARD_WORLD_MAP_H + +#include "file_system.h" +#include "code_8004AA0.h" +#include "menu_input.h" +#include "structs/axdata.h" +#include "structs/str_position.h" +#include "structs/str_dungeon.h" + +struct UnkStruct_Sub1 +{ + u8 unk0; + DungeonPos unk4; + axdata unk8; +}; + +struct UnkStruct_203B0E8 +{ + struct UnkStruct_Sub1 unk0[64]; + OpenedFile *unk1100[5]; + u16 unk1114[64][64]; + u16 unk3114[64][64]; + axdata monAxSprite; + unkStruct_202EE8C unk5150[16]; + s32 brightness; + s32 unk52D4; + DungeonPos bgPos; + DungeonPos monSpritePos; + u16 unk52E0[1500]; + u8 unk5E98[1500]; +}; + +struct UnkStruct_sub_8010494 +{ + DungeonLocation unk0; + DungeonLocation unk4; + u8 pad1[8]; + u8 unk10; + u8 pad2[0xA]; + s16 unk1C; + u8 pad3[0x6E - 0x20]; + u8 unk6C; + u8 unk6D[63]; +}; + +struct UnkStruct_sub_8010268 +{ + u8 fill0[4]; + struct UnkStruct_sub_8010494 unk4; + struct UnkStruct_203B0E8 *unkB0; + u8 unkB4; +}; + +void ShowWorldMap(struct UnkStruct_sub_8010268 *r5); + +#endif diff --git a/ld_script.txt b/ld_script.txt index 196fc52bb..9ee30bee9 100755 --- a/ld_script.txt +++ b/ld_script.txt @@ -90,6 +90,8 @@ SECTIONS { src/code_800F034.o(.text); src/code_800F958.o(.text); src/code_8010F28.o(.text); + src/world_map.o(.text); + src/friend_areas_map_util.o(.text); src/code_80118A4.o(.text); src/debug.o(.text); src/save.o(.text); @@ -418,6 +420,8 @@ SECTIONS { src/code_800F958.o(.rodata); data/data_80CE77C.o(.rodata); src/code_8010F28.o(.rodata); + src/world_map.o(.rodata); + src/friend_areas_map_util.o(.rodata); data/data_80CE77C_2.o(.rodata); src/debug.o(.rodata); src/save.o(.rodata); diff --git a/src/adventure_log.c b/src/adventure_log.c index f236825d0..1e84bafbd 100644 --- a/src/adventure_log.c +++ b/src/adventure_log.c @@ -23,13 +23,13 @@ bool8 CreateAdventureLogScreen(u32 kind) { sAdventureLog = MemoryAlloc(sizeof(*sAdventureLog), 8); sAdventureLog->s0.unk34 = kind; - sAdventureLog->s0.unk38 = &sAdventureLog->s0.unk3C.a0[kind]; - RestoreUnkTextStruct_8006518(&sAdventureLog->s0.unk3C); - sAdventureLog->s0.unk3C.a0[sAdventureLog->s0.unk34] = sUnknown_80E2008; + sAdventureLog->s0.unk38 = &sAdventureLog->s0.windows.id[kind]; + RestoreUnkTextStruct_8006518(&sAdventureLog->s0.windows); + sAdventureLog->s0.windows.id[sAdventureLog->s0.unk34] = sUnknown_80E2008; sAdventureLog->s0.unk38->unk14 = &sAdventureLog->unk9C; ResetUnusedInputStruct(); - xxx_call_save_unk_text_struct_800641C(&sAdventureLog->s0.unk3C, TRUE, TRUE); + ShowWindows(&sAdventureLog->s0.windows, TRUE, TRUE); sub_8013818(&sAdventureLog->s0.input, 0x20, 8, kind); sub_8032084(); DisplayAdventureLog(); @@ -63,9 +63,9 @@ u32 HandleAdventureLogInput(bool8 a0) void CleanAdventureLogScreen(void) { if (sAdventureLog != NULL) { - sAdventureLog->s0.unk3C.a0[sAdventureLog->s0.unk34] = sUnknown_80E1FF0; + sAdventureLog->s0.windows.id[sAdventureLog->s0.unk34] = sUnknown_80E1FF0; ResetUnusedInputStruct(); - xxx_call_save_unk_text_struct_800641C(&sAdventureLog->s0.unk3C, TRUE, TRUE); + ShowWindows(&sAdventureLog->s0.windows, TRUE, TRUE); MemoryFree(sAdventureLog); sAdventureLog = NULL; } diff --git a/src/adventure_log_menu.c b/src/adventure_log_menu.c index b992c52c1..e45c0595b 100644 --- a/src/adventure_log_menu.c +++ b/src/adventure_log_menu.c @@ -13,7 +13,7 @@ void CreateAdventureLogMenu(void) void CleanAdventureLogMenu(void) { ResetUnusedInputStruct(); - xxx_call_save_unk_text_struct_800641C(NULL, TRUE, TRUE); + ShowWindows(NULL, TRUE, TRUE); } u32 UpdateAdventureLogMenu(void) diff --git a/src/code_2.c b/src/code_2.c index 487eb5262..254db53fb 100644 --- a/src/code_2.c +++ b/src/code_2.c @@ -101,7 +101,7 @@ void GameLoop(void) UpdateFadeInTile(0); InitFontPalette(); sub_800CDA8(2); - xxx_call_save_unk_text_struct_800641C(NULL, TRUE, TRUE); + ShowWindows(NULL, TRUE, TRUE); gUnknown_2026E4E = 0x1000; LoadTitleScreen(); SetBG2RegOffsets(0, 0); diff --git a/src/code_8010F28.c b/src/code_8010F28.c index 9ee18f126..79616eb9f 100644 --- a/src/code_8010F28.c +++ b/src/code_8010F28.c @@ -1,4 +1,5 @@ #include "global.h" +#include "friend_areas_map.h" #include "sprite.h" #include "code_8004AA0.h" #include "input.h" @@ -10,13 +11,10 @@ #include "friend_area.h" #include "bg_control.h" #include "code_800558C.h" -#include "game_options.h" -#include "play_time.h" #include "code_80118A4.h" #include "code_800C9CC.h" #include "pokemon.h" #include "decompress.h" -#include "constants/direction.h" extern u32 sub_809034C(u8 dungeonIndex, s32 speciesId_, u8 *buffer, bool32 param_4_, bool32 param_5_); extern void sub_801178C(void); @@ -32,109 +30,10 @@ extern s32 Atan2_4096(PixelPos *a); extern void sub_80117AC(void); extern void sub_8011760(void); -struct UnkStruct_Sub1 -{ - u8 unk0; - DungeonPos unk4; - axdata unk8; -}; - -struct UnkStruct_203B0E8 -{ - struct UnkStruct_Sub1 unk0[64]; - OpenedFile *unk1100[5]; - u16 unk1114[64][64]; - u16 unk3114[64][64]; - axdata unk5114; - unkStruct_202EE8C unk5150[16]; - s32 unk52D0; - s32 unk52D4; - DungeonPos unk52D8; - DungeonPos unk52DC; - u16 unk52E0[1500]; - u8 unk5E98[1500]; -}; - -struct FiendArea -{ - const u8 *name; - DungeonPos unk4; - u8 unk8[8]; - s16 unk10[8]; -}; - -struct UnkStruct_4018 -{ - u8 unk4018; - s16 unk2[8]; - axdata unk14; -}; - -// size: 0x4DD8 -struct UnkBgStruct -{ - OpenedFile *unk0[5]; - u16 unk14[64][64]; - u16 unk2014[64][64]; - const struct FiendArea *unk4014; - struct UnkStruct_4018 unk4018[32]; - s32 unk4A18; - s32 unk4A1C; - s32 unk4A20; - s32 unk4A24; - s32 unk4A28; - u8 unk4A2C; - axdata arrowSprites[NUM_DIRECTIONS]; - axdata unk4C10; - unkStruct_202EE8C unk4C4C[16]; - s32 unk4DCC; - u32 unk4DD0; - DungeonPos bgPos; - DungeonPos monSpritePos; - s32 unk4DDC; - s32 unk4DE0; - s32 unk4DE4; - s32 unk4DE8; - u8 unk4DEC[8]; - u8 unk4DF4; - s32 unk4DF8; - MenuInputStruct menu; -}; - EWRAM_INIT struct UnkBgStruct *gUnknown_203B0E4 = NULL; -EWRAM_INIT struct UnkStruct_203B0E8 *gUnknown_203B0E8 = NULL; -EWRAM_INIT Windows gUnknown_203B0EC = { - .a0 = { - [0] = { - .type = WINDOW_TYPE_NORMAL, - .pos = {2, 10}, - .width = 26, - .height = 9, - .unk10 = 9, - }, - [1] = { - .type = WINDOW_TYPE_NORMAL, - .pos = {23, 6}, - .width = 5, - .height = 3, - .unk10 = 3, - }, - [2] = { .type = WINDOW_TYPE_NORMAL,}, - [3] = { .type = WINDOW_TYPE_NORMAL,}, - } -}; - -static inline bool8 CheckAxFlag8000(axdata *ptr) -{ - return (ptr->flags & 0x8000) != 0; -} - -static inline bool8 ResetFlags(axdata *ptr) -{ - return ptr->flags = 0; -} +extern const struct FriendAreaLocation gFriendAreaLocations[]; extern u8 *const gUnknown_80D4014[]; extern const FileArchive gTitleMenuFileArchive; extern const FileArchive gMonsterFileArchive; @@ -151,67 +50,28 @@ extern const u8 gUnknown_80D406C[]; extern const u8 gUnknown_80D407C[]; extern const u8 gUnknown_80D4080[]; extern const u8 gUnknown_80D4074[]; -extern const DungeonPos gDungeonCoordinates[]; -struct UnkStruct_sub_8010494 -{ - DungeonLocation unk0; - DungeonLocation unk4; - u8 pad1[8]; - u8 unk10; - u8 pad2[0xA]; - s16 unk1C; - u8 pad3[0x6E - 0x20]; - u8 unk6C; - u8 unk6D[63]; -}; - -struct UnkStruct_sub_8010268 -{ - u8 fill0[4]; - struct UnkStruct_sub_8010494 unk4; - struct UnkStruct_203B0E8 *unkB0; - u8 unkB4; -}; - -static void sub_8010950(void); -static void sub_8010A88(bool8 a0); -static bool8 sub_8010A00(void); -static void nullsub_24(void); -void PrintAvailableSubAreas(void); void sub_8010960(void); void sub_8010798(void); void sub_8010858(void); -void sub_8010494(struct UnkStruct_sub_8010494 *r9); void sub_8010344(u8 id1, u8 id2); void sub_801059C(void); bool8 sub_8010C58(u8 *str); void sub_8010C10(const u8 *text); void sub_801091C(void); -void PrintCurrAreaName(void); void sub_801073C(void); void sub_8010B74(DungeonLocation *dungLocation); -void RunFrameActions(void); -void UpdateBg(void); -void sub_8010EF0(void); -void ShowDirectionArrows(void); -void UpdateMonSpritePosition(void); -bool8 sub_800FFE8(u8 friendAreaId); -void HideTextWindowAndArrows(void); void MoveToNewArea(s32 a0, s32 a1, s32 count); u8 GetNewSelectedArea(void); s32 ChooseArea(s32 *a0, s32 *newAreaId); bool8 ChooseSubArea(void); void sub_800FC28(void); void sub_800FC5C(u8 a0); -void sub_8010DA4(void); extern u16 gUnknown_2026E4E; extern u8 gUnknown_202DE18; extern u8 gUnknown_202DE19; -extern const struct FiendArea gFriendAreaLocations[]; - extern const u8 gUnknown_80D3EDC[]; extern const u8 gUnknown_80D3EEC[]; @@ -238,7 +98,7 @@ void sub_800F990(struct struct_unk800F990 *param_1) gUnknown_2026E4E = 0x1010; sub_80095CC(0,0x14); UpdateFadeInTile(2); - gUnknown_203B0E4->unk4014 = gFriendAreaLocations; + gUnknown_203B0E4->locations = gFriendAreaLocations; gUnknown_203B0E4->unk4A2C = param_1->unk5; sub_8010DA4(); gUnknown_203B0E4->unk4A28 = -1; @@ -280,12 +140,12 @@ s32 ChooseArea(s32 *a0, s32 *newAreaId) { s32 ret = 0; - ShowDirectionArrows(); - PrintCurrAreaName(); + FriendAreasMap_ShowDirectionArrows(); + FriendAreasMap_PrintCurrAreaName(); while (ret == 0) { s32 areaId; - RunFrameActions(); + FriendAreasMap_RunFrameActions(); areaId = GetNewSelectedArea(); if (areaId != 0xFF) { s32 r4 = gUnknown_203B0E4->unk4A18; @@ -321,12 +181,12 @@ bool8 ChooseSubArea(void) { bool8 ret = FALSE; - PrintAvailableSubAreas(); + FriendAreasMap_PrintAvailableSubAreas(); while (1) { MenuInputStruct *menuPtr = &gUnknown_203B0E4->menu; AddMenuCursorSprite(menuPtr); - RunFrameActions(); + FriendAreasMap_RunFrameActions(); if (gRealInputs.repeated & DPAD_DOWN) { MoveMenuCursorDown(menuPtr); PlayCursorUpDownSoundEffect(); @@ -355,11 +215,11 @@ void sub_800FC28(void) { s32 i; - HideTextWindowAndArrows(); + FriendAreasMap_HideTextWindowAndArrows(); sub_80117AC(); for (i = 0; i < 60; i++) { - gUnknown_203B0E4->unk4DCC -= 2; - RunFrameActions(); + gUnknown_203B0E4->brightness -= 2; + FriendAreasMap_RunFrameActions(); } } @@ -372,17 +232,17 @@ void sub_800FC5C(u8 a0) bool8 r7 = FALSE; bool8 r10 = FALSE; struct UnkStruct_4018 *r6 = &gUnknown_203B0E4->unk4018[i]; - const struct FiendArea *r2 = &gUnknown_203B0E4->unk4014[i]; + const struct FriendAreaLocation *location = &gUnknown_203B0E4->locations[i]; for (j = 0; j < 8; j++) { r6->unk2[j] = 0xFFFF; } for (j = 0; j < 8; j++) { - if (sub_800FFE8(r2->unk8[j])) { - if (r2->unk8[j] == a0) { + if (sub_800FFE8(location->unk8[j])) { + if (location->unk8[j] == a0) { var_48 = i; } - if (r2->unk8[j] == 0) { + if (location->unk8[j] == 0) { gUnknown_203B0E4->unk4A24 = i; r10 = TRUE; } @@ -402,7 +262,7 @@ void sub_800FC5C(u8 a0) for (i = 0; i < 32; i++) { s32 var1, var2; struct UnkStruct_4018 *r3 = &gUnknown_203B0E4->unk4018[i]; - const struct FiendArea *var_44 = &gUnknown_203B0E4->unk4014[i]; + const struct FriendAreaLocation *location = &gUnknown_203B0E4->locations[i]; if (!r3->unk4018) { continue; @@ -410,10 +270,10 @@ void sub_800FC5C(u8 a0) for (j = 0; j < 8; j++) { r3->unk2[j] = 0xFFFF; - if (var_44->unk10[j] >= 0) { - struct UnkStruct_4018 *ptr = &gUnknown_203B0E4->unk4018[var_44->unk10[j]]; + if (location->unk10[j] >= 0) { + struct UnkStruct_4018 *ptr = &gUnknown_203B0E4->unk4018[location->unk10[j]]; if (ptr->unk4018) { - r3->unk2[j] = var_44->unk10[j]; + r3->unk2[j] = location->unk10[j]; } } } @@ -441,15 +301,15 @@ void sub_800FC5C(u8 a0) PixelPos pixelPos; s32 atanVal; struct UnkStruct_4018 *ptr2_18 = &gUnknown_203B0E4->unk4018[k]; - const struct FiendArea *ptr2_14 = &gUnknown_203B0E4->unk4014[k]; + const struct FriendAreaLocation *location2 = &gUnknown_203B0E4->locations[k]; if (k == i) continue; if (ptr2_18->unk4018 == 0) continue; - pixelPos.x = (ptr2_14->unk4.x - var_44->unk4.x) << 8; - pixelPos.y = (ptr2_14->unk4.y - var_44->unk4.y) << 8; + pixelPos.x = (location2->unk4.x - location->unk4.x) << 8; + pixelPos.y = (location2->unk4.y - location->unk4.y) << 8; atanVal = Atan2_4096(&pixelPos); pixelPos.x /= 4; pixelPos.y /= 4; @@ -495,13 +355,13 @@ void sub_800FC5C(u8 a0) } } - AxResInitFile(&gUnknown_203B0E4->unk4C10, gUnknown_203B0E4->unk0[3], 0, 0, 0, 0, TRUE); + AxResInitFile(&gUnknown_203B0E4->monAxSprite, gUnknown_203B0E4->unk0[3], 0, 0, 0, 0, TRUE); gUnknown_203B0E4->unk4A18 = var_48; - gUnknown_203B0E4->monSpritePos = gUnknown_203B0E4->unk4014[var_48].unk4; + gUnknown_203B0E4->monSpritePos = gUnknown_203B0E4->locations[var_48].unk4; gUnknown_203B0E4->bgPos.x = gUnknown_203B0E4->monSpritePos.x - 120; gUnknown_203B0E4->bgPos.y = gUnknown_203B0E4->monSpritePos.y - 80; - UpdateMonSpritePosition(); - UpdateBg(); + FriendAreasMap_UpdateMonSpritePosition(); + FriendAreasMap_UpdateBg(); } bool8 sub_800FFE8(u8 friendAreaId) @@ -555,29 +415,29 @@ void MoveToNewArea(s32 a0, s32 a1, s32 count) s32 i, arrayId; DungeonPos pos1, pos2; - AxResInitFile(&gUnknown_203B0E4->unk4C10, gUnknown_203B0E4->unk0[3], 0, a1 & 7, 0, 0, TRUE); - HideTextWindowAndArrows(); + AxResInitFile(&gUnknown_203B0E4->monAxSprite, gUnknown_203B0E4->unk0[3], 0, a1 & 7, 0, 0, TRUE); + FriendAreasMap_HideTextWindowAndArrows(); arrayId = gUnknown_203B0E4->unk4A18; - pos1 = gUnknown_203B0E4->unk4014[arrayId].unk4; - pos2 = gUnknown_203B0E4->unk4014[a0].unk4; + pos1 = gUnknown_203B0E4->locations[arrayId].unk4; + pos2 = gUnknown_203B0E4->locations[a0].unk4; PlayCursorUpDownSoundEffect(); for (i = 0; i < count; i++) { gUnknown_203B0E4->monSpritePos.x = ((((pos2.x - pos1.x) * (i << 8)) / count) / 256) + pos1.x; gUnknown_203B0E4->monSpritePos.y = ((((pos2.y - pos1.y) * (i << 8)) / count) / 256) + pos1.y; - UpdateMonSpritePosition(); - UpdateBg(); - RunFrameActions(); + FriendAreasMap_UpdateMonSpritePosition(); + FriendAreasMap_UpdateBg(); + FriendAreasMap_RunFrameActions(); } gUnknown_203B0E4->unk4A18 = a0; - gUnknown_203B0E4->monSpritePos = gUnknown_203B0E4->unk4014[a0].unk4; - UpdateMonSpritePosition(); - UpdateBg(); - RunFrameActions(); - AxResInitFile(&gUnknown_203B0E4->unk4C10, gUnknown_203B0E4->unk0[3], 0, 0, 0, 0, TRUE); + gUnknown_203B0E4->monSpritePos = gUnknown_203B0E4->locations[a0].unk4; + FriendAreasMap_UpdateMonSpritePosition(); + FriendAreasMap_UpdateBg(); + FriendAreasMap_RunFrameActions(); + AxResInitFile(&gUnknown_203B0E4->monAxSprite, gUnknown_203B0E4->unk0[3], 0, 0, 0, 0, TRUE); } void sub_80101F8(u8 *strBuffer, u8 index) @@ -595,11 +455,11 @@ void sub_8010224(u8 unk8, DungeonPos *dst) s32 i, j; for (i = 0; i < 32; i++) { - const struct FiendArea *friendArea = &gFriendAreaLocations[i]; + const struct FriendAreaLocation *location = &gFriendAreaLocations[i]; for (j = 0; j < 8; j++) { - if (friendArea->unk8[j] == unk8) { - dst->x = friendArea->unk4.x; - dst->y = friendArea->unk4.y; + if (location->unk8[j] == unk8) { + dst->x = location->unk4.x; + dst->y = location->unk4.y; return; } } @@ -608,817 +468,3 @@ void sub_8010224(u8 unk8, DungeonPos *dst) dst->y = 0; } -void sub_8010268(struct UnkStruct_sub_8010268 *r5) -{ - s32 i, speciesId, var; - u8 text[1000]; - - gUnknown_203B0E8 = r5->unkB0; - gUnknown_2026E4E = 2566; - sub_80095CC(0, 0x14); - UpdateFadeInTile(2); - sub_801059C(); - sub_8010494(&r5->unk4); - sub_801178C(); - for (i = 0; i < 60; i++) { - sub_8010960(); - } - sub_8010344(r5->unk4.unk0.id, r5->unk4.unk4.id); - sub_8010B74(&r5->unk4.unk4); - for (i = 0; i < 60; i++) { - sub_8010960(); - } - - if (r5->unk4.unk10) { - speciesId = r5->unk4.unk1C; - ASM_MATCH_TRICK(speciesId); - } - else { - speciesId = 0; - } - - var = sub_809034C(r5->unk4.unk4.id, speciesId, text, r5->unk4.unk6C, FALSE); - if (var == 0) { - r5->unkB4 = 1; - } - else if (var == 1) { - sub_8010C10(text); - r5->unkB4 = 0; - } - else if (var == 2) { - if (sub_8010C58(text)) { - r5->unkB4 = 1; - } - else { - r5->unkB4 = 0; - } - } - - sub_801091C(); - sub_801073C(); - nullsub_16(); -} - -// Heavy math function. -void sub_8010344(u8 id1, u8 id2) -{ - s32 i, valMax, r3; - PixelPos pixelPos; - DungeonPos pos1 = gDungeonCoordinates[id1]; - DungeonPos pos2 = gDungeonCoordinates[id2]; - - valMax = max(abs(pos2.x - pos1.x), abs(pos2.y - pos1.y)); - valMax /= 2; - - pixelPos.x = pos1.x - pos2.x; - pixelPos.y = pos2.y - pos1.y; - r3 = Atan2_4096(&pixelPos) - 1024; - if (r3 < 0) { - r3 += 511; - } - r3 >>= 9; - r3 &= 7; - AxResInitFile(&gUnknown_203B0E8->unk5114, gUnknown_203B0E8->unk1100[3], 0, r3, 0, 0, TRUE); - - for (i = 0; i < valMax; i++) { - gUnknown_203B0E8->unk52DC.x = ((((pos2.x - pos1.x) * (i << 8)) / valMax) / 256) + pos1.x; - gUnknown_203B0E8->unk52DC.y = ((((pos2.y - pos1.y) * (i << 8)) / valMax) / 256) + pos1.y; - sub_8010798(); - sub_8010858(); - sub_8010960(); - if (gRealInputs.pressed & A_BUTTON) - break; - if (gRealInputs.pressed & B_BUTTON) - break; - } - - gUnknown_203B0E8->unk52DC = pos2; - sub_8010798(); - sub_8010858(); - sub_8010960(); -} - -void sub_8010494(struct UnkStruct_sub_8010494 *r9) -{ - s32 i; - for (i = 0; i < 64; i++) { - struct UnkStruct_Sub1 *structPtr = &gUnknown_203B0E8->unk0[i]; - u8 r0; - - if (i < 63) { - r0 = r9->unk6D[i]; - } - else { - r0 = 1; - } - - if (r0) { - structPtr->unk0 = 1; - AxResInitFile(&structPtr->unk8, gUnknown_203B0E8->unk1100[2], (i == 63) ? 12 : 1, 0, 0x40, 0, 1); - structPtr->unk4 = gDungeonCoordinates[i]; - } - else { - structPtr->unk0 = 0; - } - } - - AxResInitFile(&gUnknown_203B0E8->unk5114, gUnknown_203B0E8->unk1100[3], 0, 0, 0, 0, TRUE); - gUnknown_203B0E8->unk52DC = gDungeonCoordinates[r9->unk0.id]; - gUnknown_203B0E8->unk52D8.x = gUnknown_203B0E8->unk52DC.x - 120; - gUnknown_203B0E8->unk52D8.y = gUnknown_203B0E8->unk52DC.y - 80; - sub_8010798(); - sub_8010858(); -} - -void sub_801059C(void) -{ - u8 filename[0xC]; - s32 i, size; - - PokemonStruct1 *pokeStruct = GetPlayerPokemonStruct(); - OpenedFile *file = OpenFileAndGetFileDataPtr(gUnknown_80D4014[0], &gTitleMenuFileArchive); - OpenedFile *file2 = OpenFileAndGetFileDataPtr(gUnknown_80D4014[1], &gTitleMenuFileArchive); - - sprintf(filename, gUnknown_80D405C, pokeStruct->speciesNum); - gUnknown_203B0E8->unk1100[3] = OpenFileAndGetFileDataPtr(filename, &gMonsterFileArchive); - gUnknown_203B0E8->unk1100[2] = OpenFileAndGetFileDataPtr(gUnknown_80D4064, &gTitleMenuFileArchive); - gUnknown_203B0E8->unk1100[4] = OpenFileAndGetFileDataPtr(gUnknown_80D4014[2], &gTitleMenuFileArchive); - gUnknown_203B0E8->unk1100[1] = OpenFileAndGetFileDataPtr(gUnknown_80D406C, &gMonsterFileArchive); - gUnknown_203B0E8->unk1100[0] = OpenFileAndGetFileDataPtr(gUnknown_80D4014[3], &gTitleMenuFileArchive); - gUnknown_203B0E8->unk52D4 = GetPokemonOverworldPalette(pokeStruct->speciesNum, 0); - - sub_8005610(gUnknown_203B0E8->unk1100[2], 0x40, 0x1F, 0); - - DecompressATGlobalFile((u32 *)(VRAM + 0x8000), 0x0, file); - sub_8004AA4(gUnknown_203B0E8->unk5150, gUnknown_203B0E8->unk1100[4], 0x10); - size = 0x4000; - DecompressATFile((u8 *) &gUnknown_203B0E8->unk1114, size, file2); - - gUnknown_203B0E8->unk52D0 = 0; - gUnknown_203B0E8->unk52D8.x = 0; - gUnknown_203B0E8->unk52D8.y = 0; - - for (i = 0; i < 1500; i++) { - gUnknown_203B0E8->unk52E0[i] |= 0xFFFF; - gUnknown_203B0E8->unk5E98[i] = 0; - } - - CloseFile(file); - CloseFile(file2); - xxx_call_save_unk_text_struct_800641C(NULL, 1, 1); -} - -void sub_801073C(void) -{ - CloseFile(gUnknown_203B0E8->unk1100[4]); - CloseFile(gUnknown_203B0E8->unk1100[3]); - CloseFile(gUnknown_203B0E8->unk1100[2]); - CloseFile(gUnknown_203B0E8->unk1100[0]); - CloseFile(gUnknown_203B0E8->unk1100[1]); -} - -void sub_8010798(void) -{ - if (gUnknown_203B0E8->unk52DC.x - gUnknown_203B0E8->unk52D8.x < 48) { - gUnknown_203B0E8->unk52D8.x = gUnknown_203B0E8->unk52DC.x - 48; - } - else if (gUnknown_203B0E8->unk52DC.x - gUnknown_203B0E8->unk52D8.x > 192) { - gUnknown_203B0E8->unk52D8.x = gUnknown_203B0E8->unk52DC.x - 192; - } - - if (gUnknown_203B0E8->unk52DC.y - gUnknown_203B0E8->unk52D8.y < 48) { - gUnknown_203B0E8->unk52D8.y = gUnknown_203B0E8->unk52DC.y - 48; - } - else if (gUnknown_203B0E8->unk52DC.y - gUnknown_203B0E8->unk52D8.y > 112) { - gUnknown_203B0E8->unk52D8.y = gUnknown_203B0E8->unk52DC.y - 112; - } - - if (gUnknown_203B0E8->unk52D8.x < 0) { - gUnknown_203B0E8->unk52D8.x = 0; - } - if (gUnknown_203B0E8->unk52D8.y < 0) { - gUnknown_203B0E8->unk52D8.y = 0; - } - if (gUnknown_203B0E8->unk52D8.x >= 240) { - gUnknown_203B0E8->unk52D8.x = 240; - } - if (gUnknown_203B0E8->unk52D8.y >= 160) { - gUnknown_203B0E8->unk52D8.y = 160; - } -} - -void sub_8010858(void) -{ - s32 i, j; - s32 y1 = gUnknown_203B0E8->unk52D8.y >> 3; - s32 y2 = y1; - - for (i = 0; i < 21; i++) { - s32 x1 = gUnknown_203B0E8->unk52D8.x >> 3; - s32 x2 = x1; - - for (j = 0; j < 31; j++) { - x1 &= 0x1F; - y1 &= 0x1F; - - gUnknown_202B038[2][y1][x1] = gUnknown_203B0E8->unk3114[y2][x2]; - gUnknown_202B038[3][y1][x1] = gUnknown_203B0E8->unk1114[y2][x2]; - x2++; - x1++; - } - y2++; - y1++; - } - - sub_80098F8(2); - sub_80098F8(3); -} - -static void nullsub_24(void) -{ - -} - -void sub_801091C(void) -{ - s32 i; - - sub_8010950(); - sub_80117C4(); - for (i = 0; i < 60; i++) { - gUnknown_203B0E8->unk52D0 -= 2; - sub_8010960(); - } -} - -static void sub_8010950(void) -{ - xxx_call_save_unk_text_struct_800641C(NULL, TRUE, TRUE); -} - -void sub_8010960(void) -{ - SetBG2RegOffsets(gUnknown_203B0E8->unk52D8.x, gUnknown_203B0E8->unk52D8.y); - SetBG3RegOffsets(gUnknown_203B0E8->unk52D8.x, gUnknown_203B0E8->unk52D8.y); - sub_8010A88(TRUE); - sub_8010A00(); - sub_8005838(NULL, 0); - nullsub_8(gGameOptionsRef->unkA); - sub_8005180(); - sub_80060EC(); - IncrementPlayTime(gPlayTimeRef); - sub_800CB20(); - LoadBufferedInputs(); - CopySpritesToOam(); - sub_8005304(); - TransferBGPaletteBuffer(); - xxx_call_update_bg_vram(); - nullsub_24(); - sub_8009908(); - xxx_call_update_bg_sound_input(); - sub_8011860(); - ResetSprites(FALSE); -} - -static bool8 sub_8010A00(void) -{ - bool8 ret = FALSE; - - if (gUnknown_203B0E8->unk52D0 < 31) { - s32 i; - RGB *color = (void *) gUnknown_203B0E8->unk1100[0]->data; - - if (++gUnknown_203B0E8->unk52D0 >= 31) { - gUnknown_203B0E8->unk52D0 = 31; - } - - for (i = 0; i < 224; color++, i++) { - SetBGPaletteBufferColorRGB(i, color, gUnknown_203B0E8->unk52D0, NULL); - } - - color = (void *) gUnknown_203B0E8->unk1100[1]->data; - for (i = 0; i < 240; color++, i++) { - SetBGPaletteBufferColorRGB(i + 256, color, gUnknown_203B0E8->unk52D0, NULL); - } - - ret = TRUE; - } - - return ret; -} - -static void sub_8010A88(bool8 a0) -{ - s32 i; - unkStruct_2039DB0 var_2C; - DungeonPos pos; - - sub_8004E8C(&var_2C); - var_2C.unk4 = 0xF3FF; - var_2C.unkA = 0x800; - pos = gUnknown_203B0E8->unk52D8; - RunAxAnimationFrame(&gUnknown_203B0E8->unk5114); - if (a0) { - DoAxFrame_800558C(&gUnknown_203B0E8->unk5114, gUnknown_203B0E8->unk52DC.x - pos.x, gUnknown_203B0E8->unk52DC.y - pos.y, 3, gUnknown_203B0E8->unk52D4, &var_2C); - } - - for (i = 0; i < 64; i++) { - struct UnkStruct_Sub1 *structPtr = &gUnknown_203B0E8->unk0[i]; - if (structPtr->unk0) { - axdata *axPtr = &structPtr->unk8; - - RunAxAnimationFrame(axPtr); - if (a0) { - DoAxFrame_800558C(axPtr, structPtr->unk4.x - pos.x, structPtr->unk4.y - pos.y, 1, 0, &var_2C); - } - } - } -} - -void sub_8010B74(DungeonLocation *dungLocation) -{ - const s32 x = 12; - Windows spTxtStruct = { - .a0 = { - [0] = { - .type = WINDOW_TYPE_NORMAL, - .pos = {x, 2}, - .width = 16, - .height = 2, - .unk10 = 2, - }, - [1] = {.type = WINDOW_TYPE_NORMAL}, - [2] = {.type = WINDOW_TYPE_NORMAL}, - [3] = {.type = WINDOW_TYPE_NORMAL}, - } - }; - - if (gUnknown_203B0E8->unk52DC.y - gUnknown_203B0E8->unk52D8.y <= 80) { - spTxtStruct.a0[0].pos.y = 17; - } - else { - spTxtStruct.a0[0].pos.y = 1; - } - - xxx_call_save_unk_text_struct_800641C(&spTxtStruct, TRUE, TRUE); - sub_80073B8(0); - CopyDungeonName1toBuffer(gFormatBuffer_Monsters[0], dungLocation); - PrintFormattedStringOnWindow(12, 2, _("{CENTER_ALIGN}{POKEMON_0}"), 0, '\0'); - sub_80073E0(0); -} - -void sub_8010C10(const u8 *text) -{ - s32 i, a; - CreateMenuDialogueBoxAndPortrait(text, NULL, 0, NULL, NULL, 3, 0, NULL, 0x301); - do { - DrawDialogueBoxString(); - sub_8010960(); - } while (sub_80144A4(&a) != 0); - - for (i = 0; i < 10; i++) { - sub_8010960(); - } -} - -bool8 sub_8010C58(u8 *str) -{ - s32 r2, i; - MenuInputStruct menuInput; - - r2 = 0; - for (i = 0; str[i] != '\0'; i++) { - if (str[i] == '\n') { - r2 += 12; - } - } - r2 += 11; - r2 /= 8; - - gUnknown_203B0EC.a0[0].pos.y = 19 - r2; - gUnknown_203B0EC.a0[0].unk10 = r2; - gUnknown_203B0EC.a0[0].height = r2; - gUnknown_203B0EC.a0[1].pos.y = 14 - r2; - xxx_call_save_unk_text_struct_800641C(&gUnknown_203B0EC, TRUE, TRUE); - sub_80073B8(0); - PrintFormattedStringOnWindow(4, 0, str, 0, '\0'); - sub_80073E0(0); - sub_80073B8(1); - PrintFormattedStringOnWindow(10, 0, "Yes", 1, '\0'); - PrintFormattedStringOnWindow(10, 12, "No", 1, '\0'); - sub_80073E0(1); - - menuInput.menuIndex = 1; - menuInput.unk1A = 2; - menuInput.unk1C = 2; - menuInput.unk1E = 0; - menuInput.unk20 = 0; - menuInput.unk4 = 0; - menuInput.unk6 = 0; - menuInput.unk0 = 1; - menuInput.unkC = 0; - menuInput.unkE = 0; - menuInput.unk14.x = 0; - menuInput.unk14.y = 0; - menuInput.unk8.x = 8; - menuInput.unk8.y = 8; - sub_80137B0(&menuInput, 24); - sub_801317C(&menuInput.unk28); - while (1) { - AddMenuCursorSprite(&menuInput); - sub_8010960(); - if (gRealInputs.repeated & DPAD_DOWN) { - MoveMenuCursorDown(&menuInput); - PlayCursorUpDownSoundEffect(); - } - if (gRealInputs.repeated & DPAD_UP) { - MoveMenuCursorUp(&menuInput); - PlayCursorUpDownSoundEffect(); - } - if ((gRealInputs.pressed & A_BUTTON) || menuInput.unk28.a_button) { - PlayAcceptSoundEffect(); - break; - } - } - - if (menuInput.menuIndex == 0) { - return TRUE; - } - else { - return FALSE; - } -} - -void sub_8010D8C(u8 id, DungeonPos *pos) -{ - pos->x = gDungeonCoordinates[id].x; - pos->y = gDungeonCoordinates[id].y; -} - -UNUSED static const char sPksDir2[] = "pksdir0"; - -static char *const gUnknown_80D408C[] = -{ - "wmapfont", - "wmapmcc", - "wmapcani", - "wmappal", -}; - -static const DungeonPos gUnknown_80D40C4[] = -{ - {0, 24}, - {24, 24}, - {24, 0}, - {24, -24}, - {0, -24}, - {-24, -24}, - {-24, 0}, - {-24, 24}, -}; - -void sub_8010DA4(void) -{ - u8 filename[0xC]; - s32 i, size; - - PokemonStruct1 *pokeStruct = GetPlayerPokemonStruct(); - OpenedFile *file = OpenFileAndGetFileDataPtr(gUnknown_80D408C[0], &gTitleMenuFileArchive); - OpenedFile *file2 = OpenFileAndGetFileDataPtr(gUnknown_80D408C[1], &gTitleMenuFileArchive); - - sprintf(filename, "ax%03d", pokeStruct->speciesNum); - gUnknown_203B0E4->unk0[3] = OpenFileAndGetFileDataPtr(filename, &gMonsterFileArchive); - gUnknown_203B0E4->unk0[2] = OpenFileAndGetFileDataPtr("wmapspr", &gTitleMenuFileArchive); - gUnknown_203B0E4->unk0[4] = OpenFileAndGetFileDataPtr(gUnknown_80D408C[2], &gTitleMenuFileArchive); - gUnknown_203B0E4->unk0[1] = OpenFileAndGetFileDataPtr("palet", &gMonsterFileArchive); - gUnknown_203B0E4->unk0[0] = OpenFileAndGetFileDataPtr(gUnknown_80D408C[3], &gTitleMenuFileArchive); - gUnknown_203B0E4->unk4DD0 = GetPokemonOverworldPalette(pokeStruct->speciesNum, 0); - - sub_8005610(gUnknown_203B0E4->unk0[2], 0x40, 0x1F, 0); - - DecompressATGlobalFile((u32 *)(VRAM + 0x8000), 0x0, file); - sub_8004AA4(gUnknown_203B0E4->unk4C4C, gUnknown_203B0E4->unk0[4], 0x10); - size = 0x4000; - DecompressATFile((u8 *) &gUnknown_203B0E4->unk14, size, file2); - - gUnknown_203B0E4->unk4DCC = 0; - gUnknown_203B0E4->bgPos.x = 0; - gUnknown_203B0E4->bgPos.y = 0; - - for (i = 0; i < NUM_DIRECTIONS; i++) { - ResetFlags(&gUnknown_203B0E4->arrowSprites[i]); - } - - CloseFile(file); - CloseFile(file2); - xxx_call_save_unk_text_struct_800641C(NULL, 1, 1); -} - -void sub_8010EF0(void) -{ - CloseFile(gUnknown_203B0E4->unk0[4]); - CloseFile(gUnknown_203B0E4->unk0[2]); - CloseFile(gUnknown_203B0E4->unk0[3]); - CloseFile(gUnknown_203B0E4->unk0[0]); - CloseFile(gUnknown_203B0E4->unk0[1]); -} - -void sub_8010F28(void) -{ - s32 i; - unkStruct_2039DB0 var_30; - DungeonPos pos; - - sub_8004E8C(&var_30); - var_30.unk4 = 0xF3FF; - var_30.unkA = 0x800; - pos = gUnknown_203B0E4->bgPos; - RunAxAnimationFrame(&gUnknown_203B0E4->unk4C10); - DoAxFrame_800558C(&gUnknown_203B0E4->unk4C10, gUnknown_203B0E4->monSpritePos.x - pos.x, gUnknown_203B0E4->monSpritePos.y - pos.y, 3, gUnknown_203B0E4->unk4DD0, &var_30); - - for (i = 0; i < 32; i++) { - struct UnkStruct_4018 *r0 = &gUnknown_203B0E4->unk4018[i]; - const struct FiendArea *r5 = &gUnknown_203B0E4->unk4014[i]; - if (r0->unk4018 != 0) { - RunAxAnimationFrame(&r0->unk14); - DoAxFrame_800558C(&r0->unk14, r5->unk4.x - pos.x, r5->unk4.y- pos.y, 1, 0, &var_30); - } - } - -{ - s32 i; - for (i = 0; i < NUM_DIRECTIONS; i++) { - if (CheckAxFlag8000(&gUnknown_203B0E4->arrowSprites[i])) { - RunAxAnimationFrame(&gUnknown_203B0E4->arrowSprites[i]); - if (!(gRealInputs.held & R_BUTTON) || (i % 2) != 0) { - DoAxFrame_800558C(&gUnknown_203B0E4->arrowSprites[i], - (gUnknown_80D40C4[i].x + gUnknown_203B0E4->monSpritePos.x) - pos.x, - (gUnknown_80D40C4[i].y + gUnknown_203B0E4->monSpritePos.y) - pos.y, - 2, 0, &var_30); - } - } - } -} -} - -void UpdateBg(void) -{ - s32 i, j; - s32 y1 = gUnknown_203B0E4->bgPos.y >> 3; - s32 y2 = y1; - - for (i = 0; i < 21; i++) { - s32 x1 = gUnknown_203B0E4->bgPos.x >> 3; - s32 x2 = x1; - - for (j = 0; j < 31; j++) { - x1 &= 0x1F; - y1 &= 0x1F; - - gUnknown_202B038[2][y1][x1] = gUnknown_203B0E4->unk2014[y2][x2]; - gUnknown_202B038[3][y1][x1] = gUnknown_203B0E4->unk14[y2][x2]; - x2++; - x1++; - } - y2++; - y1++; - } - - sub_80098F8(2); - sub_80098F8(3); -} - -void HideTextWindowAndArrows(void) -{ - s32 i; - - xxx_call_save_unk_text_struct_800641C(NULL, TRUE, TRUE); - gUnknown_203B0E4->unk4DDC = 0; - gUnknown_203B0E4->unk4DE0 = 0; - gUnknown_203B0E4->unk4DE4 = 0; - gUnknown_203B0E4->unk4DE8 = 0; - for (i = 0; i < NUM_DIRECTIONS; i++) { - ResetFlags(&gUnknown_203B0E4->arrowSprites[i]); - } -} - -bool8 sub_80111C4(void) -{ - bool8 ret = FALSE; - - if (gUnknown_203B0E4->unk4DCC < 31) { - s32 i; - RGB *color = (void *) gUnknown_203B0E4->unk0[0]->data; - - if (++gUnknown_203B0E4->unk4DCC >= 31) { - gUnknown_203B0E4->unk4DCC = 31; - } - - for (i = 0; i < 224; color++, i++) { - SetBGPaletteBufferColorRGB(i, color, gUnknown_203B0E4->unk4DCC, NULL); - } - - color = (void *) gUnknown_203B0E4->unk0[1]->data; - for (i = 0; i < 240; color++, i++) { - SetBGPaletteBufferColorRGB(i + 256, color, gUnknown_203B0E4->unk4DCC, NULL); - } - - ret = TRUE; - } - - return ret; -} - -void UpdateMonSpritePosition(void) -{ - if (gUnknown_203B0E4->monSpritePos.x - gUnknown_203B0E4->bgPos.x < 48) { - gUnknown_203B0E4->bgPos.x = gUnknown_203B0E4->monSpritePos.x - 48; - } - else if (gUnknown_203B0E4->monSpritePos.x - gUnknown_203B0E4->bgPos.x > 192) { - gUnknown_203B0E4->bgPos.x = gUnknown_203B0E4->monSpritePos.x - 192; - } - - if (gUnknown_203B0E4->monSpritePos.y - gUnknown_203B0E4->bgPos.y < 48) { - gUnknown_203B0E4->bgPos.y = gUnknown_203B0E4->monSpritePos.y - 48; - } - else if (gUnknown_203B0E4->monSpritePos.y - gUnknown_203B0E4->bgPos.y > 112) { - gUnknown_203B0E4->bgPos.y = gUnknown_203B0E4->monSpritePos.y - 112; - } - - if (gUnknown_203B0E4->bgPos.x < 0) { - gUnknown_203B0E4->bgPos.x = 0; - } - if (gUnknown_203B0E4->bgPos.y < 0) { - gUnknown_203B0E4->bgPos.y = 0; - } - if (gUnknown_203B0E4->bgPos.x > 239) { - gUnknown_203B0E4->bgPos.x = 239; - } - if (gUnknown_203B0E4->bgPos.y > 151) { - gUnknown_203B0E4->bgPos.y = 151; - } -} - -void ShowDirectionArrows(void) -{ - s32 i; - struct UnkStruct_4018 *r9 = &gUnknown_203B0E4->unk4018[gUnknown_203B0E4->unk4A18]; - - for (i = 0; i < NUM_DIRECTIONS; i++) { - ResetFlags(&gUnknown_203B0E4->arrowSprites[i]); - if (r9->unk2[i] >= 0) { - struct UnkStruct_4018 *ptr = &gUnknown_203B0E4->unk4018[r9->unk2[i]]; - if (ptr->unk4018 != 0) { - AxResInitFile(&gUnknown_203B0E4->arrowSprites[i], gUnknown_203B0E4->unk0[2], i + 4, 0, 0x40, 0, TRUE); - } - } - } -} - -void PrintCurrAreaName(void) -{ - u8 txt[200]; - s32 id = gUnknown_203B0E4->unk4A18; - const struct FiendArea *r6 = &gUnknown_203B0E4->unk4014[id]; - Windows spTxtStruct = {0}; - - spTxtStruct.a0[0].type = WINDOW_TYPE_NORMAL; - spTxtStruct.a0[0].pos.x = 7; - spTxtStruct.a0[0].pos.y = 2; - spTxtStruct.a0[0].width = 21; - spTxtStruct.a0[0].height = 2; - spTxtStruct.a0[0].unk10 = 2; - spTxtStruct.a0[1].type = WINDOW_TYPE_NORMAL; - spTxtStruct.a0[2].type = WINDOW_TYPE_NORMAL; - spTxtStruct.a0[3].type = WINDOW_TYPE_NORMAL; - - if (gUnknown_203B0E4->monSpritePos.y - gUnknown_203B0E4->bgPos.y <= 80) { - spTxtStruct.a0[0].pos.y = 17; - } - else { - spTxtStruct.a0[0].pos.y = 1; - } - - xxx_call_save_unk_text_struct_800641C(&spTxtStruct, TRUE, TRUE); - sub_80073B8(0); - sprintfStatic(txt, _("{CENTER_ALIGN}%s"), r6->name); - PrintFormattedStringOnWindow(12, 2, txt, 0, '\0'); - sub_80073E0(0); - gUnknown_203B0E4->unk4DDC = (spTxtStruct.a0[0].pos.x * 8) - 5; - gUnknown_203B0E4->unk4DE0 = (spTxtStruct.a0[0].pos.y * 8) + 5; - gUnknown_203B0E4->unk4DE4 = (spTxtStruct.a0[0].width * 8) + 10; - gUnknown_203B0E4->unk4DE8 = (spTxtStruct.a0[0].height * 8) + 10; -} - -void PrintAvailableSubAreas(void) -{ - s32 i, count, var; - s32 id = gUnknown_203B0E4->unk4A18; - const struct FiendArea *r8 = &gUnknown_203B0E4->unk4014[id]; - MenuInputStruct *menuInput = &gUnknown_203B0E4->menu; - WindowHeader header; - Windows spTxtStruct = { - .a0 = { - [0] = { - .type = WINDOW_TYPE_WITH_HEADER, - .pos = {7, 2}, - .width = 21, - .height = 2, - .unk10 = 2, - .unk14 = &header, - }, - [1] = { - .type = WINDOW_TYPE_NORMAL, - }, - [2] = { - .type = WINDOW_TYPE_NORMAL, - }, - [3] = { - .type = WINDOW_TYPE_NORMAL, - }, - } - }; - - count = 0; - for (i = 0; i < 8; i++) { - if (sub_800FFE8(r8->unk8[i])) { - gUnknown_203B0E4->unk4DEC[count] = r8->unk8[i]; - count++; - } - } - - gUnknown_203B0E4->unk4DF8 = count; - header.f0 = 1; - header.f1 = 0; - header.f2 = 18; - header.f3 = 0; - menuInput->menuIndex = 0; - menuInput->unk1A = count; - menuInput->unk1C = count; - menuInput->unk1E = 0; - menuInput->unk20 = 0; - menuInput->unk4 = 0; - menuInput->unk6 = 16; - menuInput->unk0 = 0; - menuInput->unkC = 0; - menuInput->unkE = 0; - menuInput->unk14.x = 0; - menuInput->unk14.y = 0; - menuInput->unk8.x = 8; - menuInput->unk8.y = 8; - sub_801317C(&menuInput->unk28); - var = sub_80095E4(menuInput->unk1C, 0); - spTxtStruct.a0[0].unk10 = spTxtStruct.a0[0].height = var + 2; - sub_80137B0(menuInput, var * 8); - - xxx_call_save_unk_text_struct_800641C(&spTxtStruct, TRUE, TRUE); - - gUnknown_203B0E4->unk4DDC = 0; - gUnknown_203B0E4->unk4DE0 = 0; - gUnknown_203B0E4->unk4DE4 = 0; - gUnknown_203B0E4->unk4DE8 = 0; - sub_80073B8(0); - PrintFormattedStringOnWindow(16, 0, _("Where would you like to go?"), 0, '\0'); - - for (i = 0; i < count; i++) { - unkStruct_8092638 unkFriendAreaStruct; - s32 r4 = sub_8013800(menuInput, i); - u8 r5 = gUnknown_203B0E4->unk4DEC[i]; - - sub_80101F8(gFormatBuffer_Items[0], r5); - if (r5 == 0) { - PrintFormattedStringOnWindow(12, r4, _("{MOVE_ITEM_0}"), 0, '\0'); - } - else { - sub_80926F8(r5, &unkFriendAreaStruct, gUnknown_203B0E4->unk4A2C); - gFormatArgs[0] = unkFriendAreaStruct.unk2; - gFormatArgs[1] = unkFriendAreaStruct.numPokemon; - PrintFormattedStringOnWindow(12, r4, _("{MOVE_ITEM_0}($v02/$v12)"), 0, '\0'); - } - } - - sub_80073E0(0); -} - -void RunFrameActions(void) -{ - SetBG2RegOffsets(gUnknown_203B0E4->bgPos.x, gUnknown_203B0E4->bgPos.y); - SetBG3RegOffsets(gUnknown_203B0E4->bgPos.x, gUnknown_203B0E4->bgPos.y); - sub_8010F28(); - sub_8004AF0(sub_80111C4(), gUnknown_203B0E4->unk4C4C, 0xB0, 16, gUnknown_203B0E4->unk4DCC, NULL); - sub_8005838(NULL, 0); - nullsub_8(gGameOptionsRef->unkA); - sub_8005180(); - sub_80060EC(); - IncrementPlayTime(gPlayTimeRef); - sub_800CB20(); - LoadBufferedInputs(); - CopySpritesToOam(); - sub_8005304(); - TransferBGPaletteBuffer(); - xxx_call_update_bg_vram(); - sub_8009908(); - xxx_call_update_bg_sound_input(); - sub_8011860(); - ResetSprites(FALSE); -} diff --git a/src/code_8015080.c b/src/code_8015080.c index a493ef1d4..2fd583d19 100644 --- a/src/code_8015080.c +++ b/src/code_8015080.c @@ -16,7 +16,7 @@ struct unkStruct_203B1F8 // size: 0x4B4 u32 menuAction; MenuStruct unk4; - Windows unk54; + Windows windows; u8 buffer[0x400]; }; @@ -296,14 +296,14 @@ bool8 sub_8015080(u8 *buffer, const MenuItem *menuItems) for(index = 0; index < 4; index++) { - gUnknown_203B1F8->unk54.a0[index] = gUnknown_80DAF70; + gUnknown_203B1F8->windows.id[index] = gUnknown_80DAF70; } - gUnknown_203B1F8->unk54.a0[0] = gUnknown_80DAF88; - gUnknown_203B1F8->unk54.a0[2] = gUnknown_80DAFA0; - sub_8012CAC(&gUnknown_203B1F8->unk54.a0[2], menuItems); + gUnknown_203B1F8->windows.id[0] = gUnknown_80DAF88; + gUnknown_203B1F8->windows.id[2] = gUnknown_80DAFA0; + sub_8012CAC(&gUnknown_203B1F8->windows.id[2], menuItems); ResetUnusedInputStruct(); - xxx_call_save_unk_text_struct_800641C(&gUnknown_203B1F8->unk54, 1, 1); + ShowWindows(&gUnknown_203B1F8->windows, 1, 1); sub_80073B8(0); FormatString(buffer, gUnknown_203B1F8->buffer, gUnknown_203B1F8->buffer + 0x400, 0); PrintStringOnWindow(4, 4, gUnknown_203B1F8->buffer, 0, 0); @@ -356,7 +356,7 @@ struct unkStruct_203B1FC u8 *unkF8; u8 unkFC[56]; u8 *unk134; - Windows unk138; + Windows windows; }; extern struct unkStruct_203B1FC *gUnknown_203B1FC; @@ -471,19 +471,19 @@ u32 sub_80151C0(u32 r0, u8 *buffer) gUnknown_203B1FC->unk17 = 0; for (index = 0; index < 4; index++) { - gUnknown_203B1FC->unk138.a0[index] = gUnknown_80DB538; + gUnknown_203B1FC->windows.id[index] = gUnknown_80DB538; } if(gUnknown_203B1FC->unk4 != 0) { - gUnknown_203B1FC->unk138.a0[1] = gUnknown_80DB580; + gUnknown_203B1FC->windows.id[1] = gUnknown_80DB580; } else { - gUnknown_203B1FC->unk138.a0[1] = gUnknown_80DB568; + gUnknown_203B1FC->windows.id[1] = gUnknown_80DB568; } - gUnknown_203B1FC->unk138.a0[0] = gUnknown_80DB550; + gUnknown_203B1FC->windows.id[0] = gUnknown_80DB550; ResetUnusedInputStruct(); - xxx_call_save_unk_text_struct_800641C(&gUnknown_203B1FC->unk138, 1, 1); + ShowWindows(&gUnknown_203B1FC->windows, 1, 1); sub_8015A08(1); sub_8015C1C(); diff --git a/src/code_801602C.c b/src/code_801602C.c index 7e166967b..c3320e8b1 100644 --- a/src/code_801602C.c +++ b/src/code_801602C.c @@ -27,7 +27,7 @@ static void sub_801629C(void); u32 CreateConfirmNameMenu(u32 mode, u8 *name) { ResetUnusedInputStruct(); - xxx_call_save_unk_text_struct_800641C(NULL, TRUE, TRUE); + ShowWindows(NULL, TRUE, TRUE); sUnknown_203B200 = MemoryAlloc(sizeof(struct unkStruct_203B200), 8); sUnknown_203B200->unk0 = mode; diff --git a/src/code_801B3C0.c b/src/code_801B3C0.c index 000ada2ed..1ea71f135 100644 --- a/src/code_801B3C0.c +++ b/src/code_801B3C0.c @@ -28,7 +28,7 @@ bool8 sub_801B3C0(Item *item) sUnknown_203B230->unk24 = 0; sub_80140B4(&sUnknown_203B230->unk28); ResetUnusedInputStruct(); - xxx_call_save_unk_text_struct_800641C(&sUnknown_203B230->unk28, TRUE, TRUE); + ShowWindows(&sUnknown_203B230->unk28, TRUE, TRUE); sub_801B46C(0); return TRUE; } diff --git a/src/code_801B60C.c b/src/code_801B60C.c index 2fa46c6d8..f44ba2fa0 100644 --- a/src/code_801B60C.c +++ b/src/code_801B60C.c @@ -124,26 +124,26 @@ static void sub_801B760(void) case 13: case 14: case 15: - RestoreUnkTextStruct_8006518(&sUnknown_203B234->unkF4); + RestoreUnkTextStruct_8006518(&sUnknown_203B234->windows); for (i = 0; i < 4; i++) - sUnknown_203B234->unkF4.a0[i] = sUnknown_80DBA58; + sUnknown_203B234->windows.id[i] = sUnknown_80DBA58; ResetUnusedInputStruct(); - xxx_call_save_unk_text_struct_800641C(&sUnknown_203B234->unkF4, TRUE, TRUE); + ShowWindows(&sUnknown_203B234->windows, TRUE, TRUE); break; case 10: - RestoreUnkTextStruct_8006518(&sUnknown_203B234->unkF4); + RestoreUnkTextStruct_8006518(&sUnknown_203B234->windows); sub_801BB5C(); - sUnknown_203B234->unkF4.a0[2] = sUnknown_80DBA70; - sub_8012CAC(&sUnknown_203B234->unkF4.a0[2], sUnknown_203B234->unkCC); + sUnknown_203B234->windows.id[2] = sUnknown_80DBA70; + sub_8012CAC(&sUnknown_203B234->windows.id[2], sUnknown_203B234->unkCC); ResetUnusedInputStruct(); - xxx_call_save_unk_text_struct_800641C(&sUnknown_203B234->unkF4, TRUE, TRUE); + ShowWindows(&sUnknown_203B234->windows, TRUE, TRUE); break; case 12: - RestoreUnkTextStruct_8006518(&sUnknown_203B234->unkF4); - sUnknown_203B234->unkF4.a0[1] = sUnknown_80DBA88; + RestoreUnkTextStruct_8006518(&sUnknown_203B234->windows); + sUnknown_203B234->windows.id[1] = sUnknown_80DBA88; ResetUnusedInputStruct(); - xxx_call_save_unk_text_struct_800641C(&sUnknown_203B234->unkF4, TRUE, TRUE); + ShowWindows(&sUnknown_203B234->windows, TRUE, TRUE); break; } } diff --git a/src/code_801C8C4.c b/src/code_801C8C4.c index 5d331fc93..873cd8769 100644 --- a/src/code_801C8C4.c +++ b/src/code_801C8C4.c @@ -29,17 +29,17 @@ bool8 sub_801C8C4(s32 a0, s32 a1, DungeonPos *a2, u32 a3) sUnknown_203B244->unk0 = a0; sub_801CF94(); sUnknown_203B244->unk4B4.s0.unk34 = a1; - sUnknown_203B244->unk4B4.s0.unk38 = &sUnknown_203B244->unk4B4.s0.unk3C.a0[a1]; - RestoreUnkTextStruct_8006518(&sUnknown_203B244->unk4B4.s0.unk3C); - sUnknown_203B244->unk4B4.s0.unk3C.a0[sUnknown_203B244->unk4B4.s0.unk34] = sUnknown_80DBE54; + sUnknown_203B244->unk4B4.s0.unk38 = &sUnknown_203B244->unk4B4.s0.windows.id[a1]; + RestoreUnkTextStruct_8006518(&sUnknown_203B244->unk4B4.s0.windows); + sUnknown_203B244->unk4B4.s0.windows.id[sUnknown_203B244->unk4B4.s0.unk34] = sUnknown_80DBE54; sUnknown_203B244->unk4B4.s0.unk38->unk14 = &sUnknown_203B244->unk4B4.unk9C; if (a2 != NULL) - sUnknown_203B244->unk4B4.s0.unk3C.a0[sUnknown_203B244->unk4B4.s0.unk34].pos = *a2; + sUnknown_203B244->unk4B4.s0.windows.id[sUnknown_203B244->unk4B4.s0.unk34].pos = *a2; sub_8012D08(sUnknown_203B244->unk4B4.s0.unk38, a3); ResetUnusedInputStruct(); - xxx_call_save_unk_text_struct_800641C(&sUnknown_203B244->unk4B4.s0.unk3C, TRUE, TRUE); + ShowWindows(&sUnknown_203B244->unk4B4.s0.windows, TRUE, TRUE); sub_8013818(&sUnknown_203B244->unk4B4.s0.input, sub_801CE58(), a3, a1); if (sUnknown_203B248 == sUnknown_203B244->unk0) { @@ -111,7 +111,7 @@ u8 sub_801CB24(void) void sub_801CB5C(bool8 a0) { ResetUnusedInputStruct(); - xxx_call_save_unk_text_struct_800641C(&sUnknown_203B244->unk4B4.s0.unk3C, FALSE, FALSE); + ShowWindows(&sUnknown_203B244->unk4B4.s0.windows, FALSE, FALSE); sUnknown_203B244->unk4B4.s0.input.unk22 = sub_801CE58(); sub_8013984(&sUnknown_203B244->unk4B4.s0.input); sub_801CC38(); @@ -127,9 +127,9 @@ void sub_801CBB8(void) sUnknown_203B248 = sUnknown_203B244->unk0; sUnknown_203B24C = sUnknown_203B244->unk4B4.s0.input.menuIndex; sUnknown_203B24E = sUnknown_203B244->unk4B4.s0.input.unk1E; - sUnknown_203B244->unk4B4.s0.unk3C.a0[sUnknown_203B244->unk4B4.s0.unk34] = sUnknown_80DBE3C; + sUnknown_203B244->unk4B4.s0.windows.id[sUnknown_203B244->unk4B4.s0.unk34] = sUnknown_80DBE3C; ResetUnusedInputStruct(); - xxx_call_save_unk_text_struct_800641C(&sUnknown_203B244->unk4B4.s0.unk3C, TRUE, TRUE); + ShowWindows(&sUnknown_203B244->unk4B4.s0.windows, TRUE, TRUE); MemoryFree(sUnknown_203B244); sUnknown_203B244 = NULL; } diff --git a/src/code_801D014.c b/src/code_801D014.c index c7c0e496b..dfbbecc3b 100644 --- a/src/code_801D014.c +++ b/src/code_801D014.c @@ -61,7 +61,7 @@ bool8 sub_801D014(PokemonStruct1 *a0) struct unk_203B250 *preload; ResetUnusedInputStruct(); - xxx_call_save_unk_text_struct_800641C(NULL, TRUE, TRUE); + ShowWindows(NULL, TRUE, TRUE); sUnknown_203B250 = MemoryAlloc(sizeof(struct unk_203B250), 8); sUnknown_203B250->menuAction = sUnknown_203B254; @@ -188,7 +188,7 @@ static void sub_801D220(void) { s32 i; - RestoreUnkTextStruct_8006518(&sUnknown_203B250->unkB8); + RestoreUnkTextStruct_8006518(&sUnknown_203B250->windows); switch (sUnknown_203B250->state) { case 0: @@ -196,18 +196,18 @@ static void sub_801D220(void) if (sUnknown_203B250->pokeStruct != NULL) { for (i = 0; i < 4; i++) - sUnknown_203B250->unkB8.a0[i] = sUnknown_80DBE7C; + sUnknown_203B250->windows.id[i] = sUnknown_80DBE7C; - sUnknown_203B250->unkB8.a0[0] = sUnknown_80DBE98; - sub_8012CAC(&sUnknown_203B250->unkB8.a0[0], sUnknown_203B250->unk68); - sUnknown_203B250->unkB8.a0[0].width = 9; + sUnknown_203B250->windows.id[0] = sUnknown_80DBE98; + sub_8012CAC(&sUnknown_203B250->windows.id[0], sUnknown_203B250->unk68); + sUnknown_203B250->windows.id[0].width = 9; } else { for (i = 0; i < 4; i++) - sUnknown_203B250->unkB8.a0[i] = sUnknown_80DBEB0[i]; + sUnknown_203B250->windows.id[i] = sUnknown_80DBEB0[i]; - sub_8012CAC(&sUnknown_203B250->unkB8.a0[0], sUnknown_203B250->unk68); - sUnknown_203B250->unkB8.a0[0].width = 8; + sub_8012CAC(&sUnknown_203B250->windows.id[0], sUnknown_203B250->unk68); + sUnknown_203B250->windows.id[0].width = 8; } break; case 1: @@ -215,28 +215,28 @@ static void sub_801D220(void) if (sUnknown_203B250->pokeStruct != NULL) { for (i = 0; i < 4; i++) - sUnknown_203B250->unkB8.a0[i] = sUnknown_80DBE7C; + sUnknown_203B250->windows.id[i] = sUnknown_80DBE7C; - sUnknown_203B250->unkB8.a0[0] = sUnknown_80DBE98; - sub_8012CAC(&sUnknown_203B250->unkB8.a0[0], sUnknown_203B250->unk68); - sUnknown_203B250->unkB8.a0[0].width = 9; + sUnknown_203B250->windows.id[0] = sUnknown_80DBE98; + sub_8012CAC(&sUnknown_203B250->windows.id[0], sUnknown_203B250->unk68); + sUnknown_203B250->windows.id[0].width = 9; } else { for (i = 0; i < 4; i++) - sUnknown_203B250->unkB8.a0[i] = sUnknown_80DBEB0[i]; + sUnknown_203B250->windows.id[i] = sUnknown_80DBEB0[i]; - sub_8012CAC(&sUnknown_203B250->unkB8.a0[0], sUnknown_203B250->unk68); - sUnknown_203B250->unkB8.a0[0].width = 8; + sub_8012CAC(&sUnknown_203B250->windows.id[0], sUnknown_203B250->unk68); + sUnknown_203B250->windows.id[0].width = 8; } break; default: for (i = 0; i < 4; i++) - sUnknown_203B250->unkB8.a0[i] = sUnknown_80DBE7C; + sUnknown_203B250->windows.id[i] = sUnknown_80DBE7C; break; } ResetUnusedInputStruct(); - xxx_call_save_unk_text_struct_800641C(&sUnknown_203B250->unkB8, TRUE, TRUE); + ShowWindows(&sUnknown_203B250->windows, TRUE, TRUE); } static void sub_801D3A8(void) diff --git a/src/code_801D9E4.c b/src/code_801D9E4.c index 1b52285dd..b985c1165 100644 --- a/src/code_801D9E4.c +++ b/src/code_801D9E4.c @@ -23,12 +23,12 @@ bool8 sub_801D9E4(void) { sUnknown_203B258 = MemoryAlloc(sizeof(*sUnknown_203B258), 8); sUnknown_203B258->s0.unk34 = 3; - sUnknown_203B258->s0.unk38 = &sUnknown_203B258->s0.unk3C.a0[3]; - RestoreUnkTextStruct_8006518(&sUnknown_203B258->s0.unk3C); - sUnknown_203B258->s0.unk3C.a0[sUnknown_203B258->s0.unk34] = sUnknown_80DBF88; + sUnknown_203B258->s0.unk38 = &sUnknown_203B258->s0.windows.id[3]; + RestoreUnkTextStruct_8006518(&sUnknown_203B258->s0.windows); + sUnknown_203B258->s0.windows.id[sUnknown_203B258->s0.unk34] = sUnknown_80DBF88; sUnknown_203B258->s0.unk38->unk14 = &sUnknown_203B258->unk9C; ResetUnusedInputStruct(); - xxx_call_save_unk_text_struct_800641C(&sUnknown_203B258->s0.unk3C, TRUE, TRUE); + ShowWindows(&sUnknown_203B258->s0.windows, TRUE, TRUE); sub_8013818(&sUnknown_203B258->s0.input, 229, 10, sUnknown_203B258->s0.unk34); sub_801DB54(); sub_801DBD4(); @@ -80,9 +80,9 @@ UNUSED static void sub_801DADC(bool8 a0) void sub_801DB0C(void) { if (sUnknown_203B258 != NULL) { - sUnknown_203B258->s0.unk3C.a0[sUnknown_203B258->s0.unk34] = sUnknown_80DBF70; + sUnknown_203B258->s0.windows.id[sUnknown_203B258->s0.unk34] = sUnknown_80DBF70; ResetUnusedInputStruct(); - xxx_call_save_unk_text_struct_800641C(&sUnknown_203B258->s0.unk3C, TRUE, TRUE); + ShowWindows(&sUnknown_203B258->s0.windows, TRUE, TRUE); MemoryFree(sUnknown_203B258); sUnknown_203B258 = NULL; } @@ -96,7 +96,7 @@ static void sub_801DB54(void) sUnknown_203B258->unk9C.f3 = 0; ResetUnusedInputStruct(); - xxx_call_save_unk_text_struct_800641C(&sUnknown_203B258->s0.unk3C, TRUE, TRUE); + ShowWindows(&sUnknown_203B258->s0.windows, TRUE, TRUE); SUB_80095E4_CALL(sUnknown_203B258->s0); } diff --git a/src/code_801EE10.c b/src/code_801EE10.c index b13f34682..21782d8ac 100644 --- a/src/code_801EE10.c +++ b/src/code_801EE10.c @@ -84,16 +84,16 @@ u8 sub_801EE10(u32 param_1, s16 species, Move *moves, u32 param_4, const u8 *tex if (iVar8 < four) { iVar8 = 4; } - RestoreUnkTextStruct_8006518(&gUnknown_203B270->unk58); + RestoreUnkTextStruct_8006518(&gUnknown_203B270->windows); gUnknown_203B270->unk50 = param_6; - gUnknown_203B270->unk58.a0[param_6] = gUnknown_80DC25C; + gUnknown_203B270->windows.id[param_6] = gUnknown_80DC25C; if (gUnknown_203B270->text != NULL) { gUnknown_203B270->unk54 = sub_8006544(param_6); - gUnknown_203B270->unk58.a0[gUnknown_203B270->unk54] = gUnknown_80DC274; + gUnknown_203B270->windows.id[gUnknown_203B270->unk54] = gUnknown_80DC274; } - sub_8012D08(&gUnknown_203B270->unk58.a0[gUnknown_203B270->unk50],iVar8); + sub_8012D08(&gUnknown_203B270->windows.id[gUnknown_203B270->unk50],iVar8); ResetUnusedInputStruct(); - xxx_call_save_unk_text_struct_800641C(&gUnknown_203B270->unk58, TRUE, TRUE); + ShowWindows(&gUnknown_203B270->windows, TRUE, TRUE); sub_8013818(&gUnknown_203B270->input,iVar5,iVar5,param_6); sub_8013780(&gUnknown_203B270->input,0); sub_801F280(TRUE); @@ -250,7 +250,7 @@ void sub_801F1B0(bool8 param_1, bool8 param_2) if(!gUnknown_203B270->unk4) gUnknown_203B270->unk4 = param_2; ResetUnusedInputStruct(); - xxx_call_save_unk_text_struct_800641C(&gUnknown_203B270->unk58, TRUE, TRUE); + ShowWindows(&gUnknown_203B270->windows, TRUE, TRUE); gUnknown_203B270->input.unk22 = sub_801F3F8(); sub_8013984(&gUnknown_203B270->input); gUnknown_203B270->input.menuIndex = sub_8092F4C(gUnknown_203B270->moves, gUnknown_203B270->input.menuIndex); @@ -263,13 +263,13 @@ void sub_801F214(void) { if(gUnknown_203B270) { - gUnknown_203B270->unk58.a0[gUnknown_203B270->unk50] = gUnknown_80DC240; + gUnknown_203B270->windows.id[gUnknown_203B270->unk50] = gUnknown_80DC240; if(gUnknown_203B270->text) { - gUnknown_203B270->unk58.a0[gUnknown_203B270->unk54] = gUnknown_80DC240; + gUnknown_203B270->windows.id[gUnknown_203B270->unk54] = gUnknown_80DC240; } ResetUnusedInputStruct(); - xxx_call_save_unk_text_struct_800641C(&gUnknown_203B270->unk58, TRUE, TRUE); + ShowWindows(&gUnknown_203B270->windows, TRUE, TRUE); MemoryFree(gUnknown_203B270); gUnknown_203B270 = NULL; } diff --git a/src/code_801F428.c b/src/code_801F428.c index 070a15300..7bb562c36 100644 --- a/src/code_801F428.c +++ b/src/code_801F428.c @@ -52,16 +52,16 @@ bool8 sub_801F428(s16 index, s32 param_2) gUnknown_203B274->pokeStruct = &gRecruitedPokemonRef->pokemon[index_s32]; gUnknown_203B274->unk4 = &gUnknown_203B274->unk8; gUnknown_203B274->s348.s0.unk34 = param_2; - gUnknown_203B274->s348.s0.unk38 = &gUnknown_203B274->s348.s0.unk3C.a0[gUnknown_203B274->s348.s0.unk34]; - RestoreUnkTextStruct_8006518(&gUnknown_203B274->s348.s0.unk3C); - gUnknown_203B274->s348.s0.unk3C.a0[gUnknown_203B274->s348.s0.unk34] = sUnknown_80DC2C4; + gUnknown_203B274->s348.s0.unk38 = &gUnknown_203B274->s348.s0.windows.id[gUnknown_203B274->s348.s0.unk34]; + RestoreUnkTextStruct_8006518(&gUnknown_203B274->s348.s0.windows); + gUnknown_203B274->s348.s0.windows.id[gUnknown_203B274->s348.s0.unk34] = sUnknown_80DC2C4; gUnknown_203B274->s348.s0.unk38->unk14 = &gUnknown_203B274->s348.unk9C; gUnknown_203B274->s348.unk9C.f0 = 1; gUnknown_203B274->s348.unk9C.f1 = 0; gUnknown_203B274->s348.unk9C.f2 = 0xC; gUnknown_203B274->s348.unk9C.f3 = 0; ResetUnusedInputStruct(); - xxx_call_save_unk_text_struct_800641C(&gUnknown_203B274->s348.s0.unk3C, TRUE, TRUE); + ShowWindows(&gUnknown_203B274->s348.s0.windows, TRUE, TRUE); sub_8013818(&gUnknown_203B274->s348.s0.input, sub_801F7E4(), 4, param_2); sub_801F690(); sub_801F700(); @@ -108,7 +108,7 @@ u16 sub_801F5B4(void) void sub_801F5F0(bool8 r0) { ResetUnusedInputStruct(); - xxx_call_save_unk_text_struct_800641C(&gUnknown_203B274->s348.s0.unk3C, FALSE, FALSE); + ShowWindows(&gUnknown_203B274->s348.s0.windows, FALSE, FALSE); sub_8013984(&gUnknown_203B274->s348.s0.input); sub_801F690(); sub_801F700(); @@ -120,9 +120,9 @@ void sub_801F63C(void) { if(gUnknown_203B274 != NULL) { - gUnknown_203B274->s348.s0.unk3C.a0[gUnknown_203B274->s348.s0.unk34] = sUnknown_80DC2AC; + gUnknown_203B274->s348.s0.windows.id[gUnknown_203B274->s348.s0.unk34] = sUnknown_80DC2AC; ResetUnusedInputStruct(); - xxx_call_save_unk_text_struct_800641C(&gUnknown_203B274->s348.s0.unk3C, TRUE, TRUE); + ShowWindows(&gUnknown_203B274->s348.s0.windows, TRUE, TRUE); MemoryFree(gUnknown_203B274); gUnknown_203B274 = NULL; } diff --git a/src/code_801F808.c b/src/code_801F808.c index e17103e0b..b61c2b707 100644 --- a/src/code_801F808.c +++ b/src/code_801F808.c @@ -24,7 +24,7 @@ struct unkStruct_203B278 MenuInputStruct unk28; u32 unk5C; Window *unk60; - Windows unk64; + Windows windows; WindowHeader unkC4; MenuInputStructSub unkC8; }; @@ -55,10 +55,10 @@ bool8 sub_801F808(u16 *moveIDs) ResetSprites(TRUE); gUnknown_203B278 = MemoryAlloc(sizeof(struct unkStruct_203B278), 8); gUnknown_203B278->unk5C = 0; - gUnknown_203B278->unk60 = &gUnknown_203B278->unk64.a0[0]; - sub_80140B4(&gUnknown_203B278->unk64); + gUnknown_203B278->unk60 = &gUnknown_203B278->windows.id[0]; + sub_80140B4(&gUnknown_203B278->windows); ResetUnusedInputStruct(); - xxx_call_save_unk_text_struct_800641C(&gUnknown_203B278->unk64, TRUE, TRUE); + ShowWindows(&gUnknown_203B278->windows, TRUE, TRUE); gUnknown_203B278->moveIDs = moveIDs; for(index = 4; index > 1; index--) @@ -93,9 +93,9 @@ void sub_801F8D0(void) { if(gUnknown_203B278) { - gUnknown_203B278->unk64.a0[gUnknown_203B278->unk5C] = sUnknown_80DC2F8; + gUnknown_203B278->windows.id[gUnknown_203B278->unk5C] = sUnknown_80DC2F8; ResetUnusedInputStruct(); - xxx_call_save_unk_text_struct_800641C(&gUnknown_203B278->unk64, TRUE, TRUE); + ShowWindows(&gUnknown_203B278->windows, TRUE, TRUE); MemoryFree(gUnknown_203B278); gUnknown_203B278 = NULL; } @@ -110,7 +110,7 @@ void sub_801F918(s32 newState) void sub_801F930(void) { - sub_80140B4(&gUnknown_203B278->unk64); + sub_80140B4(&gUnknown_203B278->windows); switch(gUnknown_203B278->state) { case 0: @@ -120,11 +120,11 @@ void sub_801F930(void) gUnknown_203B278->unkC4.f2 = 0x10; gUnknown_203B278->unkC4.f3 = 0; ResetUnusedInputStruct(); - xxx_call_save_unk_text_struct_800641C(&gUnknown_203B278->unk64, TRUE, TRUE); + ShowWindows(&gUnknown_203B278->windows, TRUE, TRUE); break; case 1: ResetUnusedInputStruct(); - xxx_call_save_unk_text_struct_800641C(&gUnknown_203B278->unk64, TRUE, TRUE); + ShowWindows(&gUnknown_203B278->windows, TRUE, TRUE); break; default: break; diff --git a/src/code_80227B8.c b/src/code_80227B8.c index 754ca4587..3bd8dd8f0 100644 --- a/src/code_80227B8.c +++ b/src/code_80227B8.c @@ -34,7 +34,7 @@ static void sub_8023120(void); bool8 sub_80227B8(PokemonStruct1 *pkmn) { ResetUnusedInputStruct(); - xxx_call_save_unk_text_struct_800641C(NULL, TRUE, TRUE); + ShowWindows(NULL, TRUE, TRUE); sUnknown_203B294 = MemoryAlloc(sizeof(unkStruct_203B294), 8); sUnknown_203B294->menuAction = 0; @@ -109,28 +109,28 @@ static void sub_802293C(void) { s32 i; - RestoreUnkTextStruct_8006518(&sUnknown_203B294->unk148); + RestoreUnkTextStruct_8006518(&sUnknown_203B294->windows); switch (sUnknown_203B294->state) { case 2: sub_8022D2C(); - sUnknown_203B294->unk148.a0[2] = sUnknown_80DC5BC; - sub_8012CAC(&sUnknown_203B294->unk148.a0[2], sUnknown_203B294->unkF8); - sUnknown_203B294->unk148.a0[2].width = 6; + sUnknown_203B294->windows.id[2] = sUnknown_80DC5BC; + sub_8012CAC(&sUnknown_203B294->windows.id[2], sUnknown_203B294->unkF8); + sUnknown_203B294->windows.id[2].width = 6; break; case 3: - sUnknown_203B294->unk148.a0[1] = sUnknown_80DC5D4; + sUnknown_203B294->windows.id[1] = sUnknown_80DC5D4; break; default: for (i = 0; i < 4; i++) - sUnknown_203B294->unk148.a0[i] = sUnknown_80DC5A4; + sUnknown_203B294->windows.id[i] = sUnknown_80DC5A4; break; case 10 ... 16: break; } ResetUnusedInputStruct(); - xxx_call_save_unk_text_struct_800641C(&sUnknown_203B294->unk148, TRUE, TRUE); + ShowWindows(&sUnknown_203B294->windows, TRUE, TRUE); } static void sub_8022A10(void) diff --git a/src/code_8023144.c b/src/code_8023144.c index 6be4b4f7d..feda01dcd 100644 --- a/src/code_8023144.c +++ b/src/code_8023144.c @@ -47,18 +47,18 @@ bool8 sub_8023144(s32 a0, s32 index, DungeonPos *sub, u32 a3) gUnknown_3001B5C->unk4 = gUnknown_203B298; gUnknown_3001B5C->s35C.s0.unk34 = index; - gUnknown_3001B5C->s35C.s0.unk38 = &gUnknown_3001B5C->s35C.s0.unk3C.a0[index]; - RestoreUnkTextStruct_8006518(&gUnknown_3001B5C->s35C.s0.unk3C); - gUnknown_3001B5C->s35C.s0.unk3C.a0[gUnknown_3001B5C->s35C.s0.unk34] = sUnknown_80DC91C; + gUnknown_3001B5C->s35C.s0.unk38 = &gUnknown_3001B5C->s35C.s0.windows.id[index]; + RestoreUnkTextStruct_8006518(&gUnknown_3001B5C->s35C.s0.windows); + gUnknown_3001B5C->s35C.s0.windows.id[gUnknown_3001B5C->s35C.s0.unk34] = sUnknown_80DC91C; gUnknown_3001B5C->s35C.s0.unk38->unk14 = &gUnknown_3001B5C->s35C.unk9C; if (sub != NULL) - gUnknown_3001B5C->s35C.s0.unk3C.a0[gUnknown_3001B5C->s35C.s0.unk34].pos = *sub; + gUnknown_3001B5C->s35C.s0.windows.id[gUnknown_3001B5C->s35C.s0.unk34].pos = *sub; sub_8012D08(gUnknown_3001B5C->s35C.s0.unk38, a3); ResetUnusedInputStruct(); - xxx_call_save_unk_text_struct_800641C(&gUnknown_3001B5C->s35C.s0.unk3C, TRUE, TRUE); + ShowWindows(&gUnknown_3001B5C->s35C.s0.windows, TRUE, TRUE); sub_8013818(&gUnknown_3001B5C->s35C.s0.input, sub_80236A4(), a3, index); gUnknown_3001B5C->s35C.s0.input.menuIndex = gUnknown_203B29C; gUnknown_3001B5C->s35C.s0.input.unk1E = gUnknown_203B29E; @@ -112,7 +112,7 @@ s16 sub_802331C(void) void sub_8023354(bool8 cursorSprite) { ResetUnusedInputStruct(); - xxx_call_save_unk_text_struct_800641C(&gUnknown_3001B5C->s35C.s0.unk3C, FALSE, FALSE); + ShowWindows(&gUnknown_3001B5C->s35C.s0.windows, FALSE, FALSE); sub_8013984(&gUnknown_3001B5C->s35C.s0.input); sub_8023420(); sub_80234BC(); @@ -127,9 +127,9 @@ void sub_80233A0(void) gUnknown_203B298 = gUnknown_3001B5C->unk4; gUnknown_203B29C = gUnknown_3001B5C->s35C.s0.input.menuIndex; gUnknown_203B29E = gUnknown_3001B5C->s35C.s0.input.unk1E; - gUnknown_3001B5C->s35C.s0.unk3C.a0[gUnknown_3001B5C->s35C.s0.unk34] = sUnknown_80DC904; + gUnknown_3001B5C->s35C.s0.windows.id[gUnknown_3001B5C->s35C.s0.unk34] = sUnknown_80DC904; ResetUnusedInputStruct(); - xxx_call_save_unk_text_struct_800641C(&gUnknown_3001B5C->s35C.s0.unk3C, TRUE, TRUE); + ShowWindows(&gUnknown_3001B5C->s35C.s0.windows, TRUE, TRUE); MemoryFree(gUnknown_3001B5C); gUnknown_3001B5C = NULL; } diff --git a/src/code_8024458.c b/src/code_8024458.c index e8e3cb418..6af5b51d9 100644 --- a/src/code_8024458.c +++ b/src/code_8024458.c @@ -26,9 +26,9 @@ bool8 sub_8024458(s16 speciesNum, s32 a1) sUnknown_203B2AC = MemoryAlloc(sizeof(struct unkStruct_203B2AC), 8); sUnknown_203B2AC->speciesNum = speciesNum_s32; sUnknown_203B2AC->unkE0 = a1; - sUnknown_203B2AC->unkE4 = &sUnknown_203B2AC->unkE8.a0[a1]; + sUnknown_203B2AC->unkE4 = &sUnknown_203B2AC->unkE8.id[a1]; RestoreUnkTextStruct_8006518(&sUnknown_203B2AC->unkE8); - sUnknown_203B2AC->unkE8.a0[sUnknown_203B2AC->unkE0] = sUnknown_80DC9C8; + sUnknown_203B2AC->unkE8.id[sUnknown_203B2AC->unkE0] = sUnknown_80DC9C8; sUnknown_203B2AC->unkE4->unk14 = &sUnknown_203B2AC->unk148; sUnknown_203B2AC->unk148.f2 = 10; sub_8024604(); @@ -64,9 +64,9 @@ void sub_802452C(void) void sub_802453C(void) { if (sUnknown_203B2AC != NULL) { - sUnknown_203B2AC->unkE8.a0[sUnknown_203B2AC->unkE0] = sUnknown_80DC9B0; + sUnknown_203B2AC->unkE8.id[sUnknown_203B2AC->unkE0] = sUnknown_80DC9B0; ResetUnusedInputStruct(); - xxx_call_save_unk_text_struct_800641C(&sUnknown_203B2AC->unkE8, TRUE, TRUE); + ShowWindows(&sUnknown_203B2AC->unkE8, TRUE, TRUE); MemoryFree(sUnknown_203B2AC); sUnknown_203B2AC = NULL; } @@ -78,7 +78,7 @@ static void sub_8024588(void) sUnknown_203B2AC->unk148.f1 = sUnknown_203B2AC->input.unk1E; sUnknown_203B2AC->unk148.f3 = 0; ResetUnusedInputStruct(); - xxx_call_save_unk_text_struct_800641C(&sUnknown_203B2AC->unkE8, TRUE, TRUE); + ShowWindows(&sUnknown_203B2AC->unkE8, TRUE, TRUE); } static void sub_80245D0(void) diff --git a/src/code_802DB28.c b/src/code_802DB28.c index b540962e7..e47fe5a5c 100644 --- a/src/code_802DB28.c +++ b/src/code_802DB28.c @@ -32,7 +32,7 @@ bool8 sub_802DB28(u8 jobSlotIndex, u8 dungeon) return FALSE; ResetUnusedInputStruct(); - xxx_call_save_unk_text_struct_800641C(NULL, TRUE, TRUE); + ShowWindows(NULL, TRUE, TRUE); sUnknown_203B2FC = MemoryAlloc(sizeof(struct unkStruct_203B2FC), 8); sUnknown_203B2FC->jobSlotIndex = jobSlotIndex; @@ -98,12 +98,12 @@ static void sub_802DC40(void) case 0: case 7: for (i = 0; i < 4; i++) - sUnknown_203B2FC->unk48.a0[i] = sUnknown_80E016C; + sUnknown_203B2FC->unk48.id[i] = sUnknown_80E016C; break; } ResetUnusedInputStruct(); - xxx_call_save_unk_text_struct_800641C(&sUnknown_203B2FC->unk48, TRUE, TRUE); + ShowWindows(&sUnknown_203B2FC->unk48, TRUE, TRUE); } static void sub_802DC9C(void) diff --git a/src/code_802DE84.c b/src/code_802DE84.c index 42806cfb7..71b567161 100644 --- a/src/code_802DE84.c +++ b/src/code_802DE84.c @@ -22,9 +22,9 @@ bool8 sub_802DE84(unkStruct_802C39C *mail) sUnknown_203B300->mail = mail; sub_801317C(&sUnknown_203B300->unk0); sUnknown_203B300->unk10 = sUnknown_203B300->mail->unk0[0]; - sUnknown_203B300->unk14 = &sUnknown_203B300->unk18.a0[sUnknown_203B300->unk10]; + sUnknown_203B300->unk14 = &sUnknown_203B300->unk18.id[sUnknown_203B300->unk10]; RestoreUnkTextStruct_8006518(&sUnknown_203B300->unk18); - sUnknown_203B300->unk18.a0[sUnknown_203B300->unk10] = sUnknown_80E0264; + sUnknown_203B300->unk18.id[sUnknown_203B300->unk10] = sUnknown_80E0264; sub_802DF14(); return TRUE; } @@ -52,9 +52,9 @@ static void sub_802DF14(void) void sub_802DF24(void) { if (sUnknown_203B300 != NULL) { - sUnknown_203B300->unk18.a0[sUnknown_203B300->unk10] = sUnknown_80E0248; + sUnknown_203B300->unk18.id[sUnknown_203B300->unk10] = sUnknown_80E0248; ResetUnusedInputStruct(); - xxx_call_save_unk_text_struct_800641C(&sUnknown_203B300->unk18, TRUE, TRUE); + ShowWindows(&sUnknown_203B300->unk18, TRUE, TRUE); MemoryFree(sUnknown_203B300); sUnknown_203B300 = NULL; } @@ -63,7 +63,7 @@ void sub_802DF24(void) static void sub_802DF6C(void) { ResetUnusedInputStruct(); - xxx_call_save_unk_text_struct_800641C(&sUnknown_203B300->unk18, TRUE, TRUE); + ShowWindows(&sUnknown_203B300->unk18, TRUE, TRUE); } static void sub_802DF88(void) diff --git a/src/code_8031D70.c b/src/code_8031D70.c index c6501811e..d8a2c2a33 100644 --- a/src/code_8031D70.c +++ b/src/code_8031D70.c @@ -58,9 +58,9 @@ bool8 sub_8031D70(u32 mailIndex, s32 param_2) gUnknown_203B334->mailIndex = mailIndex; sub_801317C(&gUnknown_203B334->unk4); gUnknown_203B334->unk10 = param_2; - gUnknown_203B334->unk14 = &gUnknown_203B334->unk18.a0[param_2]; + gUnknown_203B334->unk14 = &gUnknown_203B334->unk18.id[param_2]; RestoreUnkTextStruct_8006518(&gUnknown_203B334->unk18); - gUnknown_203B334->unk18.a0[gUnknown_203B334->unk10] = gUnknown_80E1FC4; + gUnknown_203B334->unk18.id[gUnknown_203B334->unk10] = gUnknown_80E1FC4; sub_8031E00(); return TRUE; } @@ -90,9 +90,9 @@ void sub_8031E10(void) { if(gUnknown_203B334) { - gUnknown_203B334->unk18.a0[gUnknown_203B334->unk10] = gUnknown_80E1FA8; + gUnknown_203B334->unk18.id[gUnknown_203B334->unk10] = gUnknown_80E1FA8; ResetUnusedInputStruct(); - xxx_call_save_unk_text_struct_800641C(&gUnknown_203B334->unk18, TRUE, TRUE); + ShowWindows(&gUnknown_203B334->unk18, TRUE, TRUE); MemoryFree(gUnknown_203B334); gUnknown_203B334 = NULL; } @@ -101,7 +101,7 @@ void sub_8031E10(void) void sub_8031E58(void) { ResetUnusedInputStruct(); - xxx_call_save_unk_text_struct_800641C(&gUnknown_203B334->unk18, TRUE, TRUE); + ShowWindows(&gUnknown_203B334->unk18, TRUE, TRUE); } void DrawSOSPasswordScreen(void) diff --git a/src/code_803E724.c b/src/code_803E724.c index 5225b48ce..16f3d5232 100644 --- a/src/code_803E724.c +++ b/src/code_803E724.c @@ -192,18 +192,18 @@ void sub_803EAF0(u32 a0, u8 *a1) } ResetUnusedInputStruct(); sub_803EC94(); - xxx_call_save_unk_text_struct_800641C(NULL, TRUE, TRUE); + ShowWindows(NULL, TRUE, TRUE); break; case 0: sub_803EC94(); - xxx_call_save_unk_text_struct_800641C(NULL, TRUE, TRUE); + ShowWindows(NULL, TRUE, TRUE); if (gUnknown_203B40C != 0) { sub_8040A84(); sub_8040ABC(0); } break; case 3: - xxx_call_save_unk_text_struct_800641C(&gUnknown_80F62B0, TRUE, TRUE); + ShowWindows(&gUnknown_80F62B0, TRUE, TRUE); if (gUnknown_203B40C != 0) { sub_8040ABC(1); } @@ -213,14 +213,14 @@ void sub_803EAF0(u32 a0, u8 *a1) sub_8052210(0); } ResetUnusedInputStruct(); - xxx_call_save_unk_text_struct_800641C(&gUnknown_80F6310, TRUE, TRUE); + ShowWindows(&gUnknown_80F6310, TRUE, TRUE); break; case 7: if (gUnknown_203B40C != 0) { sub_8052210(0); } ResetUnusedInputStruct(); - xxx_call_save_unk_text_struct_800641C(&gUnknown_80F6370, TRUE, TRUE); + ShowWindows(&gUnknown_80F6370, TRUE, TRUE); break; case 2: case 4: @@ -229,13 +229,13 @@ void sub_803EAF0(u32 a0, u8 *a1) } ResetUnusedInputStruct(); sub_803EC94(); - xxx_call_save_unk_text_struct_800641C(NULL, TRUE, TRUE); + ShowWindows(NULL, TRUE, TRUE); break; case 5: if (gUnknown_203B40C != 0) { sub_8052210(0); } - xxx_call_save_unk_text_struct_800641C(NULL, TRUE, TRUE); + ShowWindows(NULL, TRUE, TRUE); break; case 8: if (gUnknown_203B40C != 0) { @@ -250,7 +250,7 @@ void sub_803EAF0(u32 a0, u8 *a1) sub_8083D44(); } ResetUnusedInputStruct(); - xxx_call_save_unk_text_struct_800641C(&gUnknown_80F63D0, FALSE, TRUE); + ShowWindows(&gUnknown_80F63D0, FALSE, TRUE); break; case 10: sub_8083D44(); @@ -277,7 +277,7 @@ void sub_803ECB4(Windows *a0, bool8 a1) gUnknown_202EDD0 = 10; sub_8052210(0); ResetUnusedInputStruct(); - xxx_call_save_unk_text_struct_800641C(a0, TRUE, a1); + ShowWindows(a0, TRUE, a1); } void sub_803ECE0(void) diff --git a/src/code_805D8C8_1.c b/src/code_805D8C8_1.c index a1a635038..49ed091e3 100644 --- a/src/code_805D8C8_1.c +++ b/src/code_805D8C8_1.c @@ -1682,15 +1682,15 @@ static void CreateFieldItemMenu(s32 a0, Entity *a1, bool8 a2, bool8 a3, Windows static inline void sub_805FC30_SetUpTxtStruct(Windows *src) { memset(src, 0, sizeof(*src)); - src->a0[0].type = WINDOW_TYPE_NORMAL; - src->a0[1].type = WINDOW_TYPE_NORMAL; - src->a0[1].pos.x = 0x16; - src->a0[1].pos.y = 4; - src->a0[1].width = 6; - src->a0[1].height = 4; - src->a0[1].unk10 = 4; - src->a0[2].type = WINDOW_TYPE_NORMAL; - src->a0[3].type = WINDOW_TYPE_NORMAL; + src->id[0].type = WINDOW_TYPE_NORMAL; + src->id[1].type = WINDOW_TYPE_NORMAL; + src->id[1].pos.x = 0x16; + src->id[1].pos.y = 4; + src->id[1].width = 6; + src->id[1].height = 4; + src->id[1].unk10 = 4; + src->id[2].type = WINDOW_TYPE_NORMAL; + src->id[3].type = WINDOW_TYPE_NORMAL; } void sub_805FC30(Windows *a0, s32 a1) @@ -1699,8 +1699,8 @@ void sub_805FC30(Windows *a0, s32 a1) Windows sp; sub_805FC30_SetUpTxtStruct(&sp); - sp.a0[0] = a0->a0[0]; - sp.a0[0].unk0 = 0x80; + sp.id[0] = a0->id[0]; + sp.id[0].unk0 = 0x80; gUnknown_202EE10.menuIndex = 0; gUnknown_202EE10.unk1C = gUnknown_202EE6C; @@ -1716,11 +1716,11 @@ void sub_805FC30(Windows *a0, s32 a1) sub_801317C(&gUnknown_202EE10.unk28); - sp.a0[1].pos.x = a1; - sp.a0[1].width = 28 - a1; - sp.a0[1].height = sp.a0[1].unk10 = sub_80095E4(gUnknown_202EE10.unk1C, 0); + sp.id[1].pos.x = a1; + sp.id[1].width = 28 - a1; + sp.id[1].height = sp.id[1].unk10 = sub_80095E4(gUnknown_202EE10.unk1C, 0); sub_803ECB4(&sp, 0); - sub_80137B0(&gUnknown_202EE10, sp.a0[1].height * 8); + sub_80137B0(&gUnknown_202EE10, sp.id[1].height * 8); sub_80073B8(1); for (i = 0; i < gUnknown_202EE6C; i++) { @@ -1779,7 +1779,7 @@ bool8 sub_805FD74(Entity * a0, struct UnkMenuBitsStruct *a1) Windows var_FC = { - .a0 = + .id = { [0] = { @@ -2039,7 +2039,7 @@ bool8 sub_805FD74(Entity * a0, struct UnkMenuBitsStruct *a1) extern const struct Window gUnknown_8106B6C; extern const struct unkStruct_8090F58 gUnknown_8106B60; -static void CreateFieldItemMenu(s32 a0, Entity *a1, bool8 a2, bool8 a3, Windows *a4, WindowHeader *a5) +static void CreateFieldItemMenu(s32 a0, Entity *a1, bool8 a2, bool8 a3, Windows *windows, WindowHeader *a5) { s32 i, x, y; s32 r10; @@ -2063,24 +2063,24 @@ static void CreateFieldItemMenu(s32 a0, Entity *a1, bool8 a2, bool8 a3, Windows switch (sUnknown_202F248[a0]) { case 0: case 1: - a4->a0[0].unk10 = 0x10; - a4->a0[0].height = 0x10; + windows->id[0].unk10 = 0x10; + windows->id[0].height = 0x10; a5->f2 = 0xC; gUnknown_202EE10.unk6 = 0x10; gUnknown_202EE10.unk1C = 0xA; gDungeon->unk181e8.unk18212 = 1; break; case 2: - a4->a0[0].unk10 = 4; - a4->a0[0].height = 4; + windows->id[0].unk10 = 4; + windows->id[0].height = 4; a5->f2 = 6; gUnknown_202EE10.unk6 = 0x12; gUnknown_202EE10.unk1C = 1; break; case 3: default: - a4->a0[0].unk10 = 4; - a4->a0[0].height = 4; + windows->id[0].unk10 = 4; + windows->id[0].height = 4; a5->f2 = 0xC; gUnknown_202EE10.unk6 = 0x12; gUnknown_202EE10.unk1C = 1; @@ -2089,15 +2089,15 @@ static void CreateFieldItemMenu(s32 a0, Entity *a1, bool8 a2, bool8 a3, Windows if (a2) { gUnknown_202EE10.unkC += 0x40; - a4->a0[0].pos.x = 0xA; - a4->a0[1] = var_94; + windows->id[0].pos.x = 0xA; + windows->id[1] = var_94; } else { - a4->a0[0].pos.x = 2; - a4->a0[1] = a4->a0[3]; + windows->id[0].pos.x = 2; + windows->id[1] = windows->id[3]; } - sub_803ECB4(a4, 1); + sub_803ECB4(windows, 1); txtStrPtr = &gUnknown_2027370[0]; gUnknown_202EE10.unkC = (txtStrPtr->unk0 + 0x10) * 8; gUnknown_202EE10.unkE = ((txtStrPtr->unk2 + 1) * 8) - 2; @@ -2522,16 +2522,16 @@ bool8 sub_8060E38(Entity *a0) struct UnkFieldTeamMenuStruct sp; Windows var_84 = {0}; - var_84.a0[0].type = WINDOW_TYPE_WITH_HEADER; - var_84.a0[0].pos.x = 2; - var_84.a0[0].pos.y = 2; - var_84.a0[0].width = 0xE; - var_84.a0[0].height = 0x10; - var_84.a0[0].unk10 = 0x10; - var_84.a0[0].unk14 = &gUnknown_202F270; - var_84.a0[1].type = WINDOW_TYPE_NORMAL; - var_84.a0[2].type = WINDOW_TYPE_NORMAL; - var_84.a0[3].type = WINDOW_TYPE_NORMAL; + var_84.id[0].type = WINDOW_TYPE_WITH_HEADER; + var_84.id[0].pos.x = 2; + var_84.id[0].pos.y = 2; + var_84.id[0].width = 0xE; + var_84.id[0].height = 0x10; + var_84.id[0].unk10 = 0x10; + var_84.id[0].unk14 = &gUnknown_202F270; + var_84.id[1].type = WINDOW_TYPE_NORMAL; + var_84.id[2].type = WINDOW_TYPE_NORMAL; + var_84.id[3].type = WINDOW_TYPE_NORMAL; for (i = 0; i < MAX_TEAM_MEMBERS; i++) { Entity *teamMon = gDungeon->teamPokemon[i]; @@ -2541,8 +2541,8 @@ bool8 sub_8060E38(Entity *a0) } if (!gDungeon->unk644.unk17) { - var_84.a0[0].type = WINDOW_TYPE_NORMAL; - var_84.a0[0].pos.y++; + var_84.id[0].type = WINDOW_TYPE_NORMAL; + var_84.id[0].pos.y++; } while (1) { @@ -2678,14 +2678,14 @@ extern const u8 gUnknown_8106BF4[]; extern void sub_8070968(u8 *buffer, EntityInfo *entityInfo, s32 colorNum); -void DrawFieldTeamMenu(struct UnkFieldTeamMenuStruct *a0, Windows *a1, bool8 a2) +void DrawFieldTeamMenu(struct UnkFieldTeamMenuStruct *a0, Windows *windows, bool8 a2) { s32 r0; DungeonPos pos; s32 i; s32 count = 0; - bool8 r10 = (a1->a0[0].type == WINDOW_TYPE_WITH_HEADER); + bool8 r10 = (windows->id[0].type == WINDOW_TYPE_WITH_HEADER); sub_8069D18(&pos, GetLeader()); for (i = 0; i < MAX_TEAM_MEMBERS; i++) { @@ -2733,14 +2733,14 @@ void DrawFieldTeamMenu(struct UnkFieldTeamMenuStruct *a0, Windows *a1, bool8 a2) if (r10) { r0 += 2; } - a1->a0[0].unk10 = r0; - a1->a0[0].height = r0; + windows->id[0].unk10 = r0; + windows->id[0].height = r0; gUnknown_202F270.f2 = 8; if (a2) { - a1->a0[1] = a1->a0[3]; + windows->id[1] = windows->id[3]; } - sub_803ECB4(a1, 1); + sub_803ECB4(windows, 1); sub_80137B0(&gUnknown_202EE10, 0); sub_80073B8(0); if (r10) { @@ -2875,17 +2875,17 @@ void sub_8062748(u8 a0); static inline void SetTxtStruct(Windows *sp) { memset(sp, 0, sizeof(*sp)); - sp->a0[0].type = WINDOW_TYPE_WITH_HEADER; - sp->a0[0].pos.x = 2; - sp->a0[0].pos.y = 2; - sp->a0[0].width = 0x12; - sp->a0[0].height = 0xE; - sp->a0[0].unk10 = 0x12; - sp->a0[0].unk12 = 2; - sp->a0[0].unk14 = &gUnknown_202F270; - sp->a0[1].type = WINDOW_TYPE_NORMAL; - sp->a0[2].type = WINDOW_TYPE_NORMAL; - sp->a0[3].type = WINDOW_TYPE_NORMAL; + sp->id[0].type = WINDOW_TYPE_WITH_HEADER; + sp->id[0].pos.x = 2; + sp->id[0].pos.y = 2; + sp->id[0].width = 0x12; + sp->id[0].height = 0xE; + sp->id[0].unk10 = 0x12; + sp->id[0].unk12 = 2; + sp->id[0].unk14 = &gUnknown_202F270; + sp->id[1].type = WINDOW_TYPE_NORMAL; + sp->id[2].type = WINDOW_TYPE_NORMAL; + sp->id[3].type = WINDOW_TYPE_NORMAL; } void ShowTacticsMenu(ActionContainer *a0) diff --git a/src/code_8066D04.c b/src/code_8066D04.c index dcb37c893..011cb323a 100644 --- a/src/code_8066D04.c +++ b/src/code_8066D04.c @@ -926,7 +926,7 @@ static const u8 gUnknown_8106DA4[] = { }; static const Windows gUnknown_8106DC8 = { - .a0 = { + .id = { [0] = { .unk0 = 0, @@ -1260,17 +1260,17 @@ void sub_806806C(PokemonStruct1 *a0) Windows spTxtStruct = {0}; s32 r7; - spTxtStruct.a0[0].type = WINDOW_TYPE_WITH_HEADER; - spTxtStruct.a0[0].pos.x = 2; - spTxtStruct.a0[0].pos.y = 2; - spTxtStruct.a0[0].width = 0x12; - spTxtStruct.a0[0].height = 0xE; - spTxtStruct.a0[0].unk10 = 0x12; - spTxtStruct.a0[0].unk12 = 2; - spTxtStruct.a0[0].unk14 = &gUnknown_202F308; - spTxtStruct.a0[1].type = WINDOW_TYPE_NORMAL; - spTxtStruct.a0[2].type = WINDOW_TYPE_NORMAL; - spTxtStruct.a0[3].type = WINDOW_TYPE_NORMAL; + spTxtStruct.id[0].type = WINDOW_TYPE_WITH_HEADER; + spTxtStruct.id[0].pos.x = 2; + spTxtStruct.id[0].pos.y = 2; + spTxtStruct.id[0].width = 0x12; + spTxtStruct.id[0].height = 0xE; + spTxtStruct.id[0].unk10 = 0x12; + spTxtStruct.id[0].unk12 = 2; + spTxtStruct.id[0].unk14 = &gUnknown_202F308; + spTxtStruct.id[1].type = WINDOW_TYPE_NORMAL; + spTxtStruct.id[2].type = WINDOW_TYPE_NORMAL; + spTxtStruct.id[3].type = WINDOW_TYPE_NORMAL; r7 = 0; unkStruct.unk40 = 0; diff --git a/src/code_8072F3C.c b/src/code_8072F3C.c index 6e9b45ff8..4539f1369 100644 --- a/src/code_8072F3C.c +++ b/src/code_8072F3C.c @@ -76,22 +76,22 @@ u32 sub_802F73C(u32 r0, DungeonPos *r1, u32 r2, u8 r3) gUnknown_203B314->unkB8 = r3; gUnknown_203B314->sBC.s0.unk34 = r0; - gUnknown_203B314->sBC.s0.unk38 = &gUnknown_203B314->sBC.s0.unk3C.a0[gUnknown_203B314->sBC.s0.unk34]; - RestoreUnkTextStruct_8006518(&gUnknown_203B314->sBC.s0.unk3C); + gUnknown_203B314->sBC.s0.unk38 = &gUnknown_203B314->sBC.s0.windows.id[gUnknown_203B314->sBC.s0.unk34]; + RestoreUnkTextStruct_8006518(&gUnknown_203B314->sBC.s0.windows); if (r3 != 0) - gUnknown_203B314->sBC.s0.unk3C.a0[gUnknown_203B314->sBC.s0.unk34] = gUnknown_80E072C; + gUnknown_203B314->sBC.s0.windows.id[gUnknown_203B314->sBC.s0.unk34] = gUnknown_80E072C; else - gUnknown_203B314->sBC.s0.unk3C.a0[gUnknown_203B314->sBC.s0.unk34] = gUnknown_80E0714; + gUnknown_203B314->sBC.s0.windows.id[gUnknown_203B314->sBC.s0.unk34] = gUnknown_80E0714; gUnknown_203B314->sBC.s0.unk38->unk14 = &gUnknown_203B314->sBC.unk9C; if (r1 != 0) - gUnknown_203B314->sBC.s0.unk3C.a0[gUnknown_203B314->sBC.s0.unk34].pos = *r1; + gUnknown_203B314->sBC.s0.windows.id[gUnknown_203B314->sBC.s0.unk34].pos = *r1; sub_8012D08(gUnknown_203B314->sBC.s0.unk38, r2); ResetUnusedInputStruct(); - xxx_call_save_unk_text_struct_800641C(&gUnknown_203B314->sBC.s0.unk3C, TRUE, TRUE); + ShowWindows(&gUnknown_203B314->sBC.s0.windows, TRUE, TRUE); sub_8013818(&gUnknown_203B314->sBC.s0.input, sub_802FBF4(), r2, r0); sub_802F9C0(); sub_802FA50(); @@ -169,9 +169,9 @@ void sub_802F974(void) { if(gUnknown_203B314 != NULL) { - gUnknown_203B314->sBC.s0.unk3C.a0[gUnknown_203B314->sBC.s0.unk34] = gUnknown_80E06FC; + gUnknown_203B314->sBC.s0.windows.id[gUnknown_203B314->sBC.s0.unk34] = gUnknown_80E06FC; ResetUnusedInputStruct(); - xxx_call_save_unk_text_struct_800641C(&gUnknown_203B314->sBC.s0.unk3C, TRUE, TRUE); + ShowWindows(&gUnknown_203B314->sBC.s0.windows, TRUE, TRUE); MemoryFree(gUnknown_203B314); gUnknown_203B314 = NULL; } diff --git a/src/code_8099360.c b/src/code_8099360.c index 12fcf5170..be78ec2e4 100644 --- a/src/code_8099360.c +++ b/src/code_8099360.c @@ -88,7 +88,7 @@ UNUSED static NAKED void sub_80993F0(void) " movs r0, 0\n" " movs r1, 0x1\n" " movs r2, 0x1\n" -" bl xxx_call_save_unk_text_struct_800641C\n" +" bl ShowWindows\n" " movs r0, 0\n" " movs r1, 0x14\n" " bl sub_8009408\n" @@ -149,7 +149,7 @@ UNUSED static NAKED void sub_80993F0(void) " movs r0, 0\n" " movs r1, 0x1\n" " movs r2, 0x1\n" -" bl xxx_call_save_unk_text_struct_800641C\n" +" bl ShowWindows\n" " bl GroundMap_Reset\n" " bl sub_809D0BC\n" " mov r0, r10\n" diff --git a/src/code_809A560.c b/src/code_809A560.c index b1af934d8..296aecc93 100644 --- a/src/code_809A560.c +++ b/src/code_809A560.c @@ -135,7 +135,7 @@ void sub_809A560(void) gUnknown_20399DC = 0; gUnknown_20399DE = 0; sub_80095CC(0,0x14); - xxx_call_save_unk_text_struct_800641C(0,1,1); + ShowWindows(0,1,1); sub_8009408(0,0x14); ResetTextbox_809B294(); gUnknown_3001B64->unk414 = 0; @@ -180,7 +180,7 @@ u32 xxx_script_textboxes_809A680(u32 param_1, u32 param_2) switch(param_1) { case 0: ResetTextbox_809B294(); - xxx_call_save_unk_text_struct_800641C(0,1,1); + ShowWindows(0,1,1); break; case 1: ResetTextbox_809B294(); @@ -196,7 +196,7 @@ u32 xxx_script_textboxes_809A680(u32 param_1, u32 param_2) break; default: ResetTextbox_809B294(); - xxx_call_save_unk_text_struct_800641C(0,1,1); + ShowWindows(0,1,1); } gUnknown_3001B64->unk0 = param_1; return 1; @@ -1863,7 +1863,7 @@ bool8 sub_809B648(void) case 0x2d: if (gUnknown_3001B64->unk420 == 1) { ResetTextbox_809B294(); - xxx_call_save_unk_text_struct_800641C(NULL, 1, 1); + ShowWindows(NULL, 1, 1); if (sub_801A5D8(0,0,0,10)) { return 1; } diff --git a/src/credits1.c b/src/credits1.c index 7adbffd26..4b00e775c 100644 --- a/src/credits1.c +++ b/src/credits1.c @@ -31,11 +31,11 @@ bool8 DrawCredits(s32 creditsCategoryIndex, s32 param_2) sCredits1Work->creditsCategoryIndex = creditsCategoryIndex; for (i = 0; i < 4; i++) - sCredits1Work->unk0.a0[i] = gUnknown_80E4A10; - sCredits1Work->unk0.a0[0] = gUnknown_80E4A28; + sCredits1Work->unk0.id[i] = gUnknown_80E4A10; + sCredits1Work->unk0.id[0] = gUnknown_80E4A28; ResetUnusedInputStruct(); - xxx_call_save_unk_text_struct_800641C(&sCredits1Work->unk0, TRUE, TRUE); + ShowWindows(&sCredits1Work->unk0, TRUE, TRUE); sub_8099690(2); sub_80073B8(0); @@ -118,7 +118,7 @@ s32 sub_8035574(void) case 3: if (!sub_8099B94()) { ResetUnusedInputStruct(); - xxx_call_save_unk_text_struct_800641C(NULL, TRUE, TRUE); + ShowWindows(NULL, TRUE, TRUE); sCredits1Work->unk60 = 4; } break; diff --git a/src/debug_menu1.c b/src/debug_menu1.c index f0dfbb1a6..1d4079344 100644 --- a/src/debug_menu1.c +++ b/src/debug_menu1.c @@ -47,17 +47,17 @@ void CreateDebugMenu(void) } for (i = 0; i < 4; i++) - sDebugMenu->unk140.a0[i] = sUnknown_80E7D40; + sDebugMenu->unk140.id[i] = sUnknown_80E7D40; ResetUnusedInputStruct(); - xxx_call_save_unk_text_struct_800641C(&sDebugMenu->unk140, TRUE, TRUE); + ShowWindows(&sDebugMenu->unk140, TRUE, TRUE); SetDebugMenuItems(); } void DeleteDebugMenu(void) { ResetUnusedInputStruct(); - xxx_call_save_unk_text_struct_800641C(NULL, TRUE, TRUE); + ShowWindows(NULL, TRUE, TRUE); if (sDebugMenu != NULL) { MemoryFree(sDebugMenu); sDebugMenu = NULL; diff --git a/src/debug_menu2.c b/src/debug_menu2.c index 08a771c3a..af32641b8 100644 --- a/src/debug_menu2.c +++ b/src/debug_menu2.c @@ -33,7 +33,7 @@ static void sub_803A86C(void); UNUSED static bool8 sub_803A45C(void) { ResetUnusedInputStruct(); - xxx_call_save_unk_text_struct_800641C(NULL, TRUE, TRUE); + ShowWindows(NULL, TRUE, TRUE); sUnknown_203B3F0 = MemoryAlloc(sizeof(unkStruct_203B3F0), 8); sub_803A504(0); return TRUE; @@ -84,19 +84,19 @@ static void sub_803A51C(void) switch (sUnknown_203B3F0->state) { case 3: - sUnknown_203B3F0->unkD8.a0[1] = sUnknown_80E7E64; + sUnknown_203B3F0->unkD8.id[1] = sUnknown_80E7E64; break; case 2: - sUnknown_203B3F0->unkD8.a0[2] = sUnknown_80E7E4C; + sUnknown_203B3F0->unkD8.id[2] = sUnknown_80E7E4C; break; default: for (i = 0; i < 4; i++) - sUnknown_203B3F0->unkD8.a0[i] = sUnknown_80E7E34; + sUnknown_203B3F0->unkD8.id[i] = sUnknown_80E7E34; break; } ResetUnusedInputStruct(); - xxx_call_save_unk_text_struct_800641C(&sUnknown_203B3F0->unkD8, TRUE, TRUE); + ShowWindows(&sUnknown_203B3F0->unkD8, TRUE, TRUE); } static void sub_803A5A0(void) @@ -121,7 +121,7 @@ static void sub_803A5A0(void) sUnknown_203B3F0->unk9C.unkC = 999; sUnknown_203B3F0->unk9C.unk4 = gTeamInventoryRef->teamStorage[sUnknown_203B3F0->id]; sUnknown_203B3F0->unk9C.unk14 = 1; - sUnknown_203B3F0->unk9C.unk18 = &sUnknown_203B3F0->unkD8.a0[1]; + sUnknown_203B3F0->unk9C.unk18 = &sUnknown_203B3F0->unkD8.id[1]; sUnknown_203B3F0->unk9C.unk1C = 44; sUnknown_203B3F0->unk9C.unk20 = 18; sub_8013AA0(&sUnknown_203B3F0->unk9C); diff --git a/src/debug_menu3.c b/src/debug_menu3.c index 970a5348f..ab1f7156f 100644 --- a/src/debug_menu3.c +++ b/src/debug_menu3.c @@ -35,7 +35,7 @@ static bool8 sub_803ABC8(void); UNUSED static bool8 sub_803A888(void) { ResetUnusedInputStruct(); - xxx_call_save_unk_text_struct_800641C(NULL, TRUE, TRUE); + ShowWindows(NULL, TRUE, TRUE); sUnknown_203B3F4 = MemoryAlloc(sizeof(unkStruct_203B3F4), 8); sub_803A924(0); return TRUE; @@ -82,14 +82,14 @@ static void sub_803A93C(void) RestoreUnkTextStruct_8006518(&sUnknown_203B3F4->unk9C); if (sUnknown_203B3F4->state == 2) - sUnknown_203B3F4->unk9C.a0[2] = sUnknown_80E7EA4; + sUnknown_203B3F4->unk9C.id[2] = sUnknown_80E7EA4; else { for(i = 0; i < 4; i++) - sUnknown_203B3F4->unk9C.a0[i] = sUnknown_80E7E8C; + sUnknown_203B3F4->unk9C.id[i] = sUnknown_80E7E8C; } ResetUnusedInputStruct(); - xxx_call_save_unk_text_struct_800641C(&sUnknown_203B3F4->unk9C, TRUE, TRUE); + ShowWindows(&sUnknown_203B3F4->unk9C, TRUE, TRUE); } static void sub_803A9AC(void) diff --git a/src/debug_menu4.c b/src/debug_menu4.c index c420c9e5d..482c695fc 100644 --- a/src/debug_menu4.c +++ b/src/debug_menu4.c @@ -87,20 +87,20 @@ static void sub_803ACE8(void) switch (sUnknown_203B3F8->state) { case 3: sub_803AEB0(); - sUnknown_203B3F8->unkE0.a0[2] = sUnknown_80E7EEC; - sub_8012CAC(&sUnknown_203B3F8->unkE0.a0[2], sUnknown_203B3F8->unk90); + sUnknown_203B3F8->unkE0.id[2] = sUnknown_80E7EEC; + sub_8012CAC(&sUnknown_203B3F8->unkE0.id[2], sUnknown_203B3F8->unk90); break; case 5: - sUnknown_203B3F8->unkE0.a0[3] = sUnknown_80E7F04; + sUnknown_203B3F8->unkE0.id[3] = sUnknown_80E7F04; break; default: for (i = 0; i < 4; i++) - sUnknown_203B3F8->unkE0.a0[i] = sUnknown_80E7ED4; + sUnknown_203B3F8->unkE0.id[i] = sUnknown_80E7ED4; break; } ResetUnusedInputStruct(); - xxx_call_save_unk_text_struct_800641C(&sUnknown_203B3F8->unkE0, TRUE, TRUE); + ShowWindows(&sUnknown_203B3F8->unkE0, TRUE, TRUE); } static void sub_803AD88(void) @@ -122,7 +122,7 @@ static void sub_803AD88(void) sUnknown_203B3F8->unk60.unkC = 100; sUnknown_203B3F8->unk60.unk4 = sUnknown_203B3F8->pokemon->level; sUnknown_203B3F8->unk60.unk14 = 3; - sUnknown_203B3F8->unk60.unk18 = &sUnknown_203B3F8->unkE0.a0[3]; + sUnknown_203B3F8->unk60.unk18 = &sUnknown_203B3F8->unkE0.id[3]; sUnknown_203B3F8->unk60.unk1C = 44; sUnknown_203B3F8->unk60.unk20 = 18; sub_8013AA0(&sUnknown_203B3F8->unk60); diff --git a/src/ds_menus.c b/src/ds_menus.c index d5a75f547..1db68d8c8 100644 --- a/src/ds_menus.c +++ b/src/ds_menus.c @@ -29,5 +29,5 @@ u32 UpdateWirelessCommsMenu(void) void CleanWirelessCommsMenu(void) { ResetUnusedInputStruct(); - xxx_call_save_unk_text_struct_800641C(NULL, TRUE, TRUE); + ShowWindows(NULL, TRUE, TRUE); } diff --git a/src/dungeon_message.c b/src/dungeon_message.c index a6e0362ff..20f2df6c1 100644 --- a/src/dungeon_message.c +++ b/src/dungeon_message.c @@ -784,7 +784,7 @@ void sub_8052FB8(const u8 *str) r8--; } - xxx_call_save_unk_text_struct_800641C(NULL, TRUE, TRUE); + ShowWindows(NULL, TRUE, TRUE); sub_803E46C(9); sub_8040238(); for (j = 0; j < 8; j++) { diff --git a/src/felicity_bank.c b/src/felicity_bank.c index a4c107bca..daf809066 100644 --- a/src/felicity_bank.c +++ b/src/felicity_bank.c @@ -52,7 +52,7 @@ bool8 CreateFelicityBank(s32 mode) OpenedFile *faceFile; ResetUnusedInputStruct(); - xxx_call_save_unk_text_struct_800641C(NULL, TRUE, TRUE); + ShowWindows(NULL, TRUE, TRUE); sFelicityBankWork = MemoryAlloc(sizeof(FelicityBankWork), 8); sFelicityBankWork->menuAction = 0; sFelicityBankWork->mode = mode; @@ -134,28 +134,28 @@ static void sub_801645C(void) switch (sFelicityBankWork->currState) { case 2: - sFelicityBankWork->unkA8.a0[0].unk0 = 0x80; - sFelicityBankWork->unkA8.a0[1].unk0 = 0x80; - sFelicityBankWork->unkA8.a0[2].unk0 = 0x80; - sFelicityBankWork->unkA8.a0[3] = sUnknown_80DB6F4; + sFelicityBankWork->unkA8.id[0].unk0 = 0x80; + sFelicityBankWork->unkA8.id[1].unk0 = 0x80; + sFelicityBankWork->unkA8.id[2].unk0 = 0x80; + sFelicityBankWork->unkA8.id[3] = sUnknown_80DB6F4; ResetUnusedInputStruct(); - xxx_call_save_unk_text_struct_800641C(&sFelicityBankWork->unkA8, TRUE, FALSE); + ShowWindows(&sFelicityBankWork->unkA8, TRUE, FALSE); break; case FELICITY_BANK_STORE_HOW_MUCH: case FELICITY_BANK_TAKE_HOW_MUCH: - sFelicityBankWork->unkA8.a0[0].unk0 = 0x80; - sFelicityBankWork->unkA8.a0[1].unk0 = 0x80; - sFelicityBankWork->unkA8.a0[3] = sUnknown_80DB6F4; - sFelicityBankWork->unkA8.a0[2] = sUnknown_80DB70C; + sFelicityBankWork->unkA8.id[0].unk0 = 0x80; + sFelicityBankWork->unkA8.id[1].unk0 = 0x80; + sFelicityBankWork->unkA8.id[3] = sUnknown_80DB6F4; + sFelicityBankWork->unkA8.id[2] = sUnknown_80DB70C; ResetUnusedInputStruct(); - xxx_call_save_unk_text_struct_800641C(&sFelicityBankWork->unkA8, TRUE, FALSE); + ShowWindows(&sFelicityBankWork->unkA8, TRUE, FALSE); break; default: for (i = 0; i < 4; i++) - sFelicityBankWork->unkA8.a0[i] = sUnknown_80DB6DC; + sFelicityBankWork->unkA8.id[i] = sUnknown_80DB6DC; ResetUnusedInputStruct(); - xxx_call_save_unk_text_struct_800641C(&sFelicityBankWork->unkA8, TRUE, TRUE); + ShowWindows(&sFelicityBankWork->unkA8, TRUE, TRUE); break; } } @@ -218,7 +218,7 @@ static void UpdateFelicityBankDialogue(void) sFelicityBankWork->unk64.unk8 = 1; sFelicityBankWork->unk64.unk10 = 5; sFelicityBankWork->unk64.unk14 = 2; - sFelicityBankWork->unk64.unk18 = &sFelicityBankWork->unkA8.a0[2]; + sFelicityBankWork->unk64.unk18 = &sFelicityBankWork->unkA8.id[2]; sFelicityBankWork->unk64.unk1C = 0x50; sFelicityBankWork->unk64.unk20 = 0x12; sub_8013AA0(&sFelicityBankWork->unk64); @@ -253,7 +253,7 @@ static void UpdateFelicityBankDialogue(void) sFelicityBankWork->unk64.unk8 = 1; sFelicityBankWork->unk64.unk10 = 5; sFelicityBankWork->unk64.unk14 = 2; - sFelicityBankWork->unk64.unk18 = &sFelicityBankWork->unkA8.a0[2]; + sFelicityBankWork->unk64.unk18 = &sFelicityBankWork->unkA8.id[2]; sFelicityBankWork->unk64.unk1C = 0x50; sFelicityBankWork->unk64.unk20 = 0x12; sub_8013AA0(&sFelicityBankWork->unk64); diff --git a/src/friend_area_action_menu.c b/src/friend_area_action_menu.c index 4adf5fb09..08d3f7e9e 100644 --- a/src/friend_area_action_menu.c +++ b/src/friend_area_action_menu.c @@ -146,25 +146,25 @@ void sub_802719C(void) switch(sUnknown_203B2BC->state) { case 3: - sUnknown_203B2BC->unk180.a0[3] = sUnknown_80DD74C; + sUnknown_203B2BC->unk180.id[3] = sUnknown_80DD74C; CreateFriendActionMenu(); - sUnknown_203B2BC->unk180.a0[2] = sUnknown_80DD704; - sub_8012CAC(&sUnknown_203B2BC->unk180.a0[2], sUnknown_203B2BC->menuItems); + sUnknown_203B2BC->unk180.id[2] = sUnknown_80DD704; + sub_8012CAC(&sUnknown_203B2BC->unk180.id[2], sUnknown_203B2BC->menuItems); break; case 0xC: sub_80276A8(); - sUnknown_203B2BC->unk180.a0[2] = sUnknown_80DD71C; - sub_8012CAC(&sUnknown_203B2BC->unk180.a0[2], sUnknown_203B2BC->menuItems); + sUnknown_203B2BC->unk180.id[2] = sUnknown_80DD71C; + sub_8012CAC(&sUnknown_203B2BC->unk180.id[2], sUnknown_203B2BC->menuItems); break; default: for(index = 0; index < 4; index++) { - sUnknown_203B2BC->unk180.a0[index] = sUnknown_80DD6EC; + sUnknown_203B2BC->unk180.id[index] = sUnknown_80DD6EC; } break; } ResetUnusedInputStruct(); - xxx_call_save_unk_text_struct_800641C(&sUnknown_203B2BC->unk180, TRUE, TRUE); + ShowWindows(&sUnknown_203B2BC->unk180, TRUE, TRUE); } void sub_8027274(void) diff --git a/src/friend_areas_map_util.c b/src/friend_areas_map_util.c new file mode 100644 index 000000000..86b9b74b9 --- /dev/null +++ b/src/friend_areas_map_util.c @@ -0,0 +1,404 @@ +#include "global.h" +#include "globaldata.h" +#include "friend_areas_map.h" +#include "sprite.h" +#include "code_8004AA0.h" +#include "input.h" +#include "text.h" +#include "code_8009804.h" +#include "bg_palette_buffer.h" +#include "string_format.h" +#include "code_800D090.h" +#include "friend_area.h" +#include "bg_control.h" +#include "code_800558C.h" +#include "game_options.h" +#include "play_time.h" +#include "code_80118A4.h" +#include "code_800C9CC.h" +#include "pokemon.h" +#include "decompress.h" +#include "constants/direction.h" + +extern void sub_800CB20(void); +extern void xxx_call_update_bg_sound_input(void); +extern s32 sprintf(char *, const char *, ...); + +extern const FileArchive gTitleMenuFileArchive; +extern const FileArchive gMonsterFileArchive; + +static inline bool8 CheckAxFlag8000(axdata *ptr) +{ + return (ptr->flags & 0x8000) != 0; +} + +static inline bool8 ResetFlags(axdata *ptr) +{ + return ptr->flags = 0; +} + +static char *const gUnknown_80D408C[] = +{ + "wmapfont", + "wmapmcc", + "wmapcani", + "wmappal", +}; + +static const DungeonPos gUnknown_80D40C4[] = +{ + {0, 24}, + {24, 24}, + {24, 0}, + {24, -24}, + {0, -24}, + {-24, -24}, + {-24, 0}, + {-24, 24}, +}; + +void sub_8010DA4(void) +{ + u8 filename[0xC]; + s32 i, size; + + PokemonStruct1 *pokeStruct = GetPlayerPokemonStruct(); + OpenedFile *file = OpenFileAndGetFileDataPtr(gUnknown_80D408C[0], &gTitleMenuFileArchive); + OpenedFile *file2 = OpenFileAndGetFileDataPtr(gUnknown_80D408C[1], &gTitleMenuFileArchive); + + sprintf(filename, "ax%03d", pokeStruct->speciesNum); + gUnknown_203B0E4->unk0[3] = OpenFileAndGetFileDataPtr(filename, &gMonsterFileArchive); + gUnknown_203B0E4->unk0[2] = OpenFileAndGetFileDataPtr("wmapspr", &gTitleMenuFileArchive); + gUnknown_203B0E4->unk0[4] = OpenFileAndGetFileDataPtr(gUnknown_80D408C[2], &gTitleMenuFileArchive); + gUnknown_203B0E4->unk0[1] = OpenFileAndGetFileDataPtr("palet", &gMonsterFileArchive); + gUnknown_203B0E4->unk0[0] = OpenFileAndGetFileDataPtr(gUnknown_80D408C[3], &gTitleMenuFileArchive); + gUnknown_203B0E4->unk4DD0 = GetPokemonOverworldPalette(pokeStruct->speciesNum, 0); + + sub_8005610(gUnknown_203B0E4->unk0[2], 0x40, 0x1F, 0); + + DecompressATGlobalFile((u32 *)(VRAM + 0x8000), 0x0, file); + sub_8004AA4(gUnknown_203B0E4->unk4C4C, gUnknown_203B0E4->unk0[4], 0x10); + size = 0x4000; + DecompressATFile((u8 *) &gUnknown_203B0E4->unk14, size, file2); + + gUnknown_203B0E4->brightness = 0; + gUnknown_203B0E4->bgPos.x = 0; + gUnknown_203B0E4->bgPos.y = 0; + + for (i = 0; i < NUM_DIRECTIONS; i++) { + ResetFlags(&gUnknown_203B0E4->arrowSprites[i]); + } + + CloseFile(file); + CloseFile(file2); + ShowWindows(NULL, 1, 1); +} + +void sub_8010EF0(void) +{ + CloseFile(gUnknown_203B0E4->unk0[4]); + CloseFile(gUnknown_203B0E4->unk0[2]); + CloseFile(gUnknown_203B0E4->unk0[3]); + CloseFile(gUnknown_203B0E4->unk0[0]); + CloseFile(gUnknown_203B0E4->unk0[1]); +} + +static void AnimateSprites(void) +{ + s32 i, dir; + unkStruct_2039DB0 var_30; + DungeonPos bgPos; + + sub_8004E8C(&var_30); + var_30.unk4 = 0xF3FF; + var_30.unkA = 0x800; + bgPos = gUnknown_203B0E4->bgPos; + RunAxAnimationFrame(&gUnknown_203B0E4->monAxSprite); + DoAxFrame_800558C(&gUnknown_203B0E4->monAxSprite, gUnknown_203B0E4->monSpritePos.x - bgPos.x, gUnknown_203B0E4->monSpritePos.y - bgPos.y, 3, gUnknown_203B0E4->unk4DD0, &var_30); + + for (i = 0; i < 32; i++) { + struct UnkStruct_4018 *r0 = &gUnknown_203B0E4->unk4018[i]; + const struct FriendAreaLocation *location = &gUnknown_203B0E4->locations[i]; + if (r0->unk4018 != 0) { + RunAxAnimationFrame(&r0->unk14); + DoAxFrame_800558C(&r0->unk14, location->unk4.x - bgPos.x, location->unk4.y- bgPos.y, 1, 0, &var_30); + } + } + + for (dir = 0; dir < NUM_DIRECTIONS; dir++) { + if (CheckAxFlag8000(&gUnknown_203B0E4->arrowSprites[dir])) { + RunAxAnimationFrame(&gUnknown_203B0E4->arrowSprites[dir]); + // Hide non-diagonal arrows when R button is pressed. + if ((gRealInputs.held & R_BUTTON) && (dir % 2) == 0) + continue; + + DoAxFrame_800558C(&gUnknown_203B0E4->arrowSprites[dir], + (gUnknown_80D40C4[dir].x + gUnknown_203B0E4->monSpritePos.x) - bgPos.x, + (gUnknown_80D40C4[dir].y + gUnknown_203B0E4->monSpritePos.y) - bgPos.y, + 2, 0, &var_30); + } + } +} + +void FriendAreasMap_UpdateBg(void) +{ + s32 i, j; + s32 y1 = gUnknown_203B0E4->bgPos.y >> 3; + s32 y2 = y1; + + for (i = 0; i < 21; i++) { + s32 x1 = gUnknown_203B0E4->bgPos.x >> 3; + s32 x2 = x1; + + for (j = 0; j < 31; j++) { + x1 &= 0x1F; + y1 &= 0x1F; + + gUnknown_202B038[2][y1][x1] = gUnknown_203B0E4->unk2014[y2][x2]; + gUnknown_202B038[3][y1][x1] = gUnknown_203B0E4->unk14[y2][x2]; + x2++; + x1++; + } + y2++; + y1++; + } + + sub_80098F8(2); + sub_80098F8(3); +} + +void FriendAreasMap_HideTextWindowAndArrows(void) +{ + s32 i; + + ShowWindows(NULL, TRUE, TRUE); + gUnknown_203B0E4->unk4DDC = 0; + gUnknown_203B0E4->unk4DE0 = 0; + gUnknown_203B0E4->unk4DE4 = 0; + gUnknown_203B0E4->unk4DE8 = 0; + for (i = 0; i < NUM_DIRECTIONS; i++) { + ResetFlags(&gUnknown_203B0E4->arrowSprites[i]); + } +} + +static bool8 FadeScreen(void) +{ + bool8 ret = FALSE; + + if (gUnknown_203B0E4->brightness < 31) { + s32 i; + RGB *color = (void *) gUnknown_203B0E4->unk0[0]->data; + + if (++gUnknown_203B0E4->brightness >= 31) { + gUnknown_203B0E4->brightness = 31; + } + + for (i = 0; i < 224; color++, i++) { + SetBGPaletteBufferColorRGB(i, color, gUnknown_203B0E4->brightness, NULL); + } + + color = (void *) gUnknown_203B0E4->unk0[1]->data; + for (i = 0; i < 240; color++, i++) { + SetBGPaletteBufferColorRGB(i + 256, color, gUnknown_203B0E4->brightness, NULL); + } + + ret = TRUE; + } + + return ret; +} + +void FriendAreasMap_UpdateMonSpritePosition(void) +{ + if (gUnknown_203B0E4->monSpritePos.x - gUnknown_203B0E4->bgPos.x < 48) { + gUnknown_203B0E4->bgPos.x = gUnknown_203B0E4->monSpritePos.x - 48; + } + else if (gUnknown_203B0E4->monSpritePos.x - gUnknown_203B0E4->bgPos.x > 192) { + gUnknown_203B0E4->bgPos.x = gUnknown_203B0E4->monSpritePos.x - 192; + } + + if (gUnknown_203B0E4->monSpritePos.y - gUnknown_203B0E4->bgPos.y < 48) { + gUnknown_203B0E4->bgPos.y = gUnknown_203B0E4->monSpritePos.y - 48; + } + else if (gUnknown_203B0E4->monSpritePos.y - gUnknown_203B0E4->bgPos.y > 112) { + gUnknown_203B0E4->bgPos.y = gUnknown_203B0E4->monSpritePos.y - 112; + } + + if (gUnknown_203B0E4->bgPos.x < 0) { + gUnknown_203B0E4->bgPos.x = 0; + } + if (gUnknown_203B0E4->bgPos.y < 0) { + gUnknown_203B0E4->bgPos.y = 0; + } + if (gUnknown_203B0E4->bgPos.x > 239) { + gUnknown_203B0E4->bgPos.x = 239; + } + if (gUnknown_203B0E4->bgPos.y > 151) { + gUnknown_203B0E4->bgPos.y = 151; + } +} + +void FriendAreasMap_ShowDirectionArrows(void) +{ + s32 i; + struct UnkStruct_4018 *r9 = &gUnknown_203B0E4->unk4018[gUnknown_203B0E4->unk4A18]; + + for (i = 0; i < NUM_DIRECTIONS; i++) { + ResetFlags(&gUnknown_203B0E4->arrowSprites[i]); + if (r9->unk2[i] >= 0) { + struct UnkStruct_4018 *ptr = &gUnknown_203B0E4->unk4018[r9->unk2[i]]; + if (ptr->unk4018 != 0) { + AxResInitFile(&gUnknown_203B0E4->arrowSprites[i], gUnknown_203B0E4->unk0[2], i + 4, 0, 0x40, 0, TRUE); + } + } + } +} + +void FriendAreasMap_PrintCurrAreaName(void) +{ + u8 txt[200]; + s32 id = gUnknown_203B0E4->unk4A18; + const struct FriendAreaLocation *location = &gUnknown_203B0E4->locations[id]; + Windows windows = {0}; + + windows.id[0].type = WINDOW_TYPE_NORMAL; + windows.id[0].pos.x = 7; + windows.id[0].pos.y = 2; + windows.id[0].width = 21; + windows.id[0].height = 2; + windows.id[0].unk10 = 2; + windows.id[1].type = WINDOW_TYPE_NORMAL; + windows.id[2].type = WINDOW_TYPE_NORMAL; + windows.id[3].type = WINDOW_TYPE_NORMAL; + + if (gUnknown_203B0E4->monSpritePos.y - gUnknown_203B0E4->bgPos.y <= 80) { + windows.id[0].pos.y = 17; + } + else { + windows.id[0].pos.y = 1; + } + + ShowWindows(&windows, TRUE, TRUE); + sub_80073B8(0); + sprintfStatic(txt, _("{CENTER_ALIGN}%s"), location->name); + PrintFormattedStringOnWindow(12, 2, txt, 0, '\0'); + sub_80073E0(0); + gUnknown_203B0E4->unk4DDC = (windows.id[0].pos.x * 8) - 5; + gUnknown_203B0E4->unk4DE0 = (windows.id[0].pos.y * 8) + 5; + gUnknown_203B0E4->unk4DE4 = (windows.id[0].width * 8) + 10; + gUnknown_203B0E4->unk4DE8 = (windows.id[0].height * 8) + 10; +} + +void FriendAreasMap_PrintAvailableSubAreas(void) +{ + s32 i, count, var; + s32 id = gUnknown_203B0E4->unk4A18; + const struct FriendAreaLocation *location = &gUnknown_203B0E4->locations[id]; + MenuInputStruct *menuInput = &gUnknown_203B0E4->menu; + WindowHeader header; + Windows windows = { + .id = { + [0] = { + .type = WINDOW_TYPE_WITH_HEADER, + .pos = {7, 2}, + .width = 21, + .height = 2, + .unk10 = 2, + .unk14 = &header, + }, + [1] = { + .type = WINDOW_TYPE_NORMAL, + }, + [2] = { + .type = WINDOW_TYPE_NORMAL, + }, + [3] = { + .type = WINDOW_TYPE_NORMAL, + }, + } + }; + + count = 0; + for (i = 0; i < 8; i++) { + if (sub_800FFE8(location->unk8[i])) { + gUnknown_203B0E4->unk4DEC[count] = location->unk8[i]; + count++; + } + } + + gUnknown_203B0E4->unk4DF8 = count; + header.f0 = 1; + header.f1 = 0; + header.f2 = 18; + header.f3 = 0; + menuInput->menuIndex = 0; + menuInput->unk1A = count; + menuInput->unk1C = count; + menuInput->unk1E = 0; + menuInput->unk20 = 0; + menuInput->unk4 = 0; + menuInput->unk6 = 16; + menuInput->unk0 = 0; + menuInput->unkC = 0; + menuInput->unkE = 0; + menuInput->unk14.x = 0; + menuInput->unk14.y = 0; + menuInput->unk8.x = 8; + menuInput->unk8.y = 8; + sub_801317C(&menuInput->unk28); + var = sub_80095E4(menuInput->unk1C, 0); + windows.id[0].unk10 = windows.id[0].height = var + 2; + sub_80137B0(menuInput, var * 8); + + ShowWindows(&windows, TRUE, TRUE); + + gUnknown_203B0E4->unk4DDC = 0; + gUnknown_203B0E4->unk4DE0 = 0; + gUnknown_203B0E4->unk4DE4 = 0; + gUnknown_203B0E4->unk4DE8 = 0; + sub_80073B8(0); + PrintFormattedStringOnWindow(16, 0, _("Where would you like to go?"), 0, '\0'); + + for (i = 0; i < count; i++) { + unkStruct_8092638 unkFriendAreaStruct; + s32 r4 = sub_8013800(menuInput, i); + u8 r5 = gUnknown_203B0E4->unk4DEC[i]; + + sub_80101F8(gFormatBuffer_Items[0], r5); + if (r5 == 0) { + PrintFormattedStringOnWindow(12, r4, _("{MOVE_ITEM_0}"), 0, '\0'); + } + else { + sub_80926F8(r5, &unkFriendAreaStruct, gUnknown_203B0E4->unk4A2C); + gFormatArgs[0] = unkFriendAreaStruct.unk2; + gFormatArgs[1] = unkFriendAreaStruct.numPokemon; + PrintFormattedStringOnWindow(12, r4, _("{MOVE_ITEM_0}($v02/$v12)"), 0, '\0'); + } + } + + sub_80073E0(0); +} + +void FriendAreasMap_RunFrameActions(void) +{ + SetBG2RegOffsets(gUnknown_203B0E4->bgPos.x, gUnknown_203B0E4->bgPos.y); + SetBG3RegOffsets(gUnknown_203B0E4->bgPos.x, gUnknown_203B0E4->bgPos.y); + AnimateSprites(); + sub_8004AF0(FadeScreen(), gUnknown_203B0E4->unk4C4C, 0xB0, 16, gUnknown_203B0E4->brightness, NULL); + sub_8005838(NULL, 0); + nullsub_8(gGameOptionsRef->unkA); + sub_8005180(); + sub_80060EC(); + IncrementPlayTime(gPlayTimeRef); + sub_800CB20(); + LoadBufferedInputs(); + CopySpritesToOam(); + sub_8005304(); + TransferBGPaletteBuffer(); + xxx_call_update_bg_vram(); + sub_8009908(); + xxx_call_update_bg_sound_input(); + sub_8011860(); + ResetSprites(FALSE); +} + diff --git a/src/friend_list_menu.c b/src/friend_list_menu.c index 2d7b31eff..160108e4f 100644 --- a/src/friend_list_menu.c +++ b/src/friend_list_menu.c @@ -150,26 +150,26 @@ void sub_802544C(void) switch (gUnknown_203B2B4->state) { case 3: if (gUnknown_203B2B4->unk0 == 0) - gUnknown_203B2B4->unk118.a0[3] = sUnknown_80DD190; + gUnknown_203B2B4->unk118.id[3] = sUnknown_80DD190; sub_8025728(); - gUnknown_203B2B4->unk118.a0[2] = sUnknown_80DD160; - sub_8012CAC(&gUnknown_203B2B4->unk118.a0[2], gUnknown_203B2B4->unkC8); + gUnknown_203B2B4->unk118.id[2] = sUnknown_80DD160; + sub_8012CAC(&gUnknown_203B2B4->unk118.id[2], gUnknown_203B2B4->unkC8); break; case 13: sub_802591C(); - gUnknown_203B2B4->unk118.a0[2] = sUnknown_80DD178; - sub_8012CAC(&gUnknown_203B2B4->unk118.a0[2], gUnknown_203B2B4->unkC8); + gUnknown_203B2B4->unk118.id[2] = sUnknown_80DD178; + sub_8012CAC(&gUnknown_203B2B4->unk118.id[2], gUnknown_203B2B4->unkC8); break; default: for (i = 0; i < 4; i++) - gUnknown_203B2B4->unk118.a0[i] = sUnknown_80DD148; + gUnknown_203B2B4->unk118.id[i] = sUnknown_80DD148; break; } ResetUnusedInputStruct(); - xxx_call_save_unk_text_struct_800641C(&gUnknown_203B2B4->unk118, TRUE, TRUE); + ShowWindows(&gUnknown_203B2B4->unk118, TRUE, TRUE); } void sub_8025518(void) diff --git a/src/friend_rescue.c b/src/friend_rescue.c index 92db2a0d7..da673ddcb 100644 --- a/src/friend_rescue.c +++ b/src/friend_rescue.c @@ -315,7 +315,7 @@ u32 CreateFriendRescueMenu(void) int counter; ResetUnusedInputStruct(); - xxx_call_save_unk_text_struct_800641C(NULL, TRUE, TRUE); + ShowWindows(NULL, TRUE, TRUE); gUnknown_203B33C = MemoryAlloc(sizeof(WonderMailStruct_203B33C), 8); MemoryFill8(gUnknown_203B33C, 0, sizeof(WonderMailStruct_203B33C)); gUnknown_203B33C->unk530 = 0; @@ -820,7 +820,7 @@ void sub_8032828(void) case 0x32: if (sub_8030894() == 0) { ResetUnusedInputStruct(); - xxx_call_save_unk_text_struct_800641C(NULL, TRUE, TRUE); + ShowWindows(NULL, TRUE, TRUE); sub_80306A8(WONDER_MAIL_TYPE_SOS, 0, NULL, 6); } break; @@ -844,7 +844,7 @@ void sub_8032828(void) case 0x3A: RestoreUnkTextStruct_8006518(&gUnknown_203B33C->unk3BC); ResetUnusedInputStruct(); - xxx_call_save_unk_text_struct_800641C(NULL, TRUE, TRUE); + ShowWindows(NULL, TRUE, TRUE); sub_8031D70(gUnknown_203B33C->unk218, 0); break; case 0x3B: @@ -896,7 +896,7 @@ void sub_8032828(void) if (sub_8023CE8() != 0) sub_8023C60(); ResetUnusedInputStruct(); - xxx_call_save_unk_text_struct_800641C(NULL, TRUE, TRUE); + ShowWindows(NULL, TRUE, TRUE); sub_8023868(3, 0, 0, 9); break; case 0x27: @@ -917,7 +917,7 @@ void sub_8032828(void) case 0x1D: if (sub_8030894() == 0) { ResetUnusedInputStruct(); - xxx_call_save_unk_text_struct_800641C(NULL, TRUE, TRUE); + ShowWindows(NULL, TRUE, TRUE); sub_80306A8(WONDER_MAIL_TYPE_AOK, 0, NULL, 6); } break; @@ -1024,7 +1024,7 @@ void sub_8032828(void) if (sub_8030894() != 0) break; ResetUnusedInputStruct(); - xxx_call_save_unk_text_struct_800641C(NULL, TRUE, TRUE); + ShowWindows(NULL, TRUE, TRUE); sub_80306A8(WONDER_MAIL_TYPE_SOS, 0, NULL, 6); break; case 0x15: @@ -1053,7 +1053,7 @@ void sub_8032828(void) case 0x1A: RestoreUnkTextStruct_8006518(&gUnknown_203B33C->unk3BC); ResetUnusedInputStruct(); - xxx_call_save_unk_text_struct_800641C(NULL, TRUE, TRUE); + ShowWindows(NULL, TRUE, TRUE); sub_80151C0(4, gUnknown_203B33C->passwordBuffer); break; case 0x5A: @@ -1071,7 +1071,7 @@ void sub_8032828(void) case 0x5F: if (sub_801D008() == NULL) { ResetUnusedInputStruct(); - xxx_call_save_unk_text_struct_800641C(NULL, TRUE, TRUE); + ShowWindows(NULL, TRUE, TRUE); { DungeonPos local_x = {3, 2}; sub_801C8C4(0, 1, &local_x, 9); @@ -1118,7 +1118,7 @@ void sub_8032828(void) case 0x73: RestoreUnkTextStruct_8006518(&gUnknown_203B33C->unk3BC); ResetUnusedInputStruct(); - xxx_call_save_unk_text_struct_800641C(NULL, TRUE, TRUE); + ShowWindows(NULL, TRUE, TRUE); sub_80151C0(4, gUnknown_203B33C->passwordBuffer); break; case 0x66: @@ -1128,7 +1128,7 @@ void sub_8032828(void) case 0x2E: RestoreUnkTextStruct_8006518(&gUnknown_203B33C->unk3BC); ResetUnusedInputStruct(); - xxx_call_save_unk_text_struct_800641C(NULL, TRUE, TRUE); + ShowWindows(NULL, TRUE, TRUE); sub_8031D70(gUnknown_203B33C->unk218, 0); break; case 0x68: @@ -1234,7 +1234,7 @@ void sub_8032828(void) case 0x5C: if (sub_8030894() == 0) { ResetUnusedInputStruct(); - xxx_call_save_unk_text_struct_800641C(NULL, TRUE, TRUE); + ShowWindows(NULL, TRUE, TRUE); sub_80306A8(5, 0, 0, 6); } break; @@ -1714,7 +1714,7 @@ void sub_8033DBC(void) case 2: sub_80155F0(); ResetUnusedInputStruct(); - xxx_call_save_unk_text_struct_800641C(&gUnknown_203B33C->unk3BC, TRUE, TRUE); + ShowWindows(&gUnknown_203B33C->unk3BC, TRUE, TRUE); SetFriendRescueMenuState(FRIEND_RESCUE_MENU_MAIN); break; default: @@ -1786,7 +1786,7 @@ void sub_8033FE4(void) gUnknown_203B33C->unk218 = sub_80307EC(); RestoreUnkTextStruct_8006518(&gUnknown_203B33C->unk3BC); ResetUnusedInputStruct(); - xxx_call_save_unk_text_struct_800641C(NULL, TRUE, TRUE); + ShowWindows(NULL, TRUE, TRUE); sub_8030D40(gUnknown_203B33C->unk218, 0); SetFriendRescueMenuState(0x1F); break; @@ -1811,7 +1811,7 @@ void sub_8034074(void) gUnknown_203B33C->fallbackState = FRIEND_RESCUE_MENU_DEFAULT_FALLBACK; RestoreUnkTextStruct_8006518(&gUnknown_203B33C->unk3BC); ResetUnusedInputStruct(); - xxx_call_save_unk_text_struct_800641C(NULL, TRUE, TRUE); + ShowWindows(NULL, TRUE, TRUE); sub_8030D40(gUnknown_203B33C->unk218, 0); SetFriendRescueMenuState(0x1F); break; @@ -1832,7 +1832,7 @@ void sub_8034130(void) case 3: sub_8030DE4(); ResetUnusedInputStruct(); - xxx_call_save_unk_text_struct_800641C(&gUnknown_203B33C->unk3BC, TRUE, TRUE); + ShowWindows(&gUnknown_203B33C->unk3BC, TRUE, TRUE); sub_803092C(); if(gUnknown_203B33C->fallbackState == FRIEND_RESCUE_MENU_DEFAULT_FALLBACK) { @@ -1869,7 +1869,7 @@ void sub_803418C(void) gUnknown_203B33C->speciesNum = sub_8023B44(); RestoreUnkTextStruct_8006518(&gUnknown_203B33C->unk3BC); ResetUnusedInputStruct(); - xxx_call_save_unk_text_struct_800641C(NULL, TRUE, TRUE); + ShowWindows(NULL, TRUE, TRUE); sub_8024458(gUnknown_203B33C->speciesNum, 0); SetFriendRescueMenuState(0x28); break; @@ -1894,7 +1894,7 @@ void sub_8034254(void) gUnknown_203B33C->fallbackState = FRIEND_RESCUE_MENU_DEFAULT_FALLBACK; RestoreUnkTextStruct_8006518(&gUnknown_203B33C->unk3BC); ResetUnusedInputStruct(); - xxx_call_save_unk_text_struct_800641C(NULL, TRUE, TRUE); + ShowWindows(NULL, TRUE, TRUE); sub_8024458(gUnknown_203B33C->speciesNum, 0); SetFriendRescueMenuState(0x28); break; @@ -1918,7 +1918,7 @@ void sub_8034310(void) case 3: sub_802453C(); ResetUnusedInputStruct(); - xxx_call_save_unk_text_struct_800641C(&gUnknown_203B33C->unk3BC, TRUE, TRUE); + ShowWindows(&gUnknown_203B33C->unk3BC, TRUE, TRUE); sub_8023B7C(1); if(gUnknown_203B33C->fallbackState == FRIEND_RESCUE_MENU_DEFAULT_FALLBACK) { @@ -2036,7 +2036,7 @@ void sub_80344C0(void) case 3: sub_8031E10(); ResetUnusedInputStruct(); - xxx_call_save_unk_text_struct_800641C(&gUnknown_203B33C->unk3BC, TRUE, TRUE); + ShowWindows(&gUnknown_203B33C->unk3BC, TRUE, TRUE); SetFriendRescueMenuState(0x2F); break; case 1: @@ -2064,7 +2064,7 @@ void sub_8034500(void) gUnknown_203B33C->unk218 = sub_80307EC(); RestoreUnkTextStruct_8006518(&gUnknown_203B33C->unk3BC); ResetUnusedInputStruct(); - xxx_call_save_unk_text_struct_800641C(NULL, TRUE, TRUE); + ShowWindows(NULL, TRUE, TRUE); sub_8030D40(gUnknown_203B33C->unk218, 0); SetFriendRescueMenuState(0x34); break; @@ -2089,7 +2089,7 @@ void sub_8034590(void) gUnknown_203B33C->fallbackState = FRIEND_RESCUE_MENU_DEFAULT_FALLBACK; RestoreUnkTextStruct_8006518(&gUnknown_203B33C->unk3BC); ResetUnusedInputStruct(); - xxx_call_save_unk_text_struct_800641C(NULL, TRUE, TRUE); + ShowWindows(NULL, TRUE, TRUE); sub_8030D40(gUnknown_203B33C->unk218, 0); SetFriendRescueMenuState(0x34); break; @@ -2110,7 +2110,7 @@ void sub_803464C(void) case 3: sub_8030DE4(); ResetUnusedInputStruct(); - xxx_call_save_unk_text_struct_800641C(&gUnknown_203B33C->unk3BC, TRUE, TRUE); + ShowWindows(&gUnknown_203B33C->unk3BC, TRUE, TRUE); sub_803092C(); if(gUnknown_203B33C->fallbackState == FRIEND_RESCUE_MENU_DEFAULT_FALLBACK) { @@ -2183,7 +2183,7 @@ void sub_803473C(void) case 3: sub_8031E10(); ResetUnusedInputStruct(); - xxx_call_save_unk_text_struct_800641C(&gUnknown_203B33C->unk3BC, TRUE, TRUE); + ShowWindows(&gUnknown_203B33C->unk3BC, TRUE, TRUE); SetFriendRescueMenuState(0x3B); break; case 1: @@ -2342,7 +2342,7 @@ void sub_8034970(void) case 3: sub_8031E10(); ResetUnusedInputStruct(); - xxx_call_save_unk_text_struct_800641C(&gUnknown_203B33C->unk3BC, TRUE, TRUE); + ShowWindows(&gUnknown_203B33C->unk3BC, TRUE, TRUE); SetFriendRescueMenuState(0x68); break; case 1: @@ -2388,7 +2388,7 @@ void sub_80349E0(void) gUnknown_203B33C->unk218 = sub_80307EC(); RestoreUnkTextStruct_8006518(&gUnknown_203B33C->unk3BC); ResetUnusedInputStruct(); - xxx_call_save_unk_text_struct_800641C(NULL, TRUE, TRUE); + ShowWindows(NULL, TRUE, TRUE); sub_8030D40(gUnknown_203B33C->unk218, 0); SetFriendRescueMenuState(0x5E); break; @@ -2413,7 +2413,7 @@ void sub_8034A70(void) gUnknown_203B33C->fallbackState = FRIEND_RESCUE_MENU_DEFAULT_FALLBACK; RestoreUnkTextStruct_8006518(&gUnknown_203B33C->unk3BC); ResetUnusedInputStruct(); - xxx_call_save_unk_text_struct_800641C(NULL, TRUE, TRUE); + ShowWindows(NULL, TRUE, TRUE); sub_8030D40(gUnknown_203B33C->unk218, 0); SetFriendRescueMenuState(0x5E); break; @@ -2434,7 +2434,7 @@ void sub_8034B2C(void) case 3: sub_8030DE4(); ResetUnusedInputStruct(); - xxx_call_save_unk_text_struct_800641C(&gUnknown_203B33C->unk3BC, TRUE, TRUE); + ShowWindows(&gUnknown_203B33C->unk3BC, TRUE, TRUE); sub_803092C(); if(gUnknown_203B33C->fallbackState == FRIEND_RESCUE_MENU_DEFAULT_FALLBACK) { @@ -2469,7 +2469,7 @@ void sub_8034B88(void) gUnknown_203B33C->item.id = sub_801CB24(); RestoreUnkTextStruct_8006518(&gUnknown_203B33C->unk3BC); ResetUnusedInputStruct(); - xxx_call_save_unk_text_struct_800641C(NULL, TRUE, TRUE); + ShowWindows(NULL, TRUE, TRUE); sub_801B3C0(&gUnknown_203B33C->item); SetFriendRescueMenuState(0x61); break; @@ -2484,7 +2484,7 @@ void sub_8034C38(void) case 3: sub_801B450(); ResetUnusedInputStruct(); - xxx_call_save_unk_text_struct_800641C(&gUnknown_203B33C->unk3BC, TRUE, TRUE); + ShowWindows(&gUnknown_203B33C->unk3BC, TRUE, TRUE); sub_801CB5C(TRUE); if(gUnknown_203B33C->fallbackState == FRIEND_RESCUE_MENU_DEFAULT_FALLBACK) { @@ -2518,7 +2518,7 @@ void sub_8034C98(void) gUnknown_203B33C->fallbackState = FRIEND_RESCUE_MENU_DEFAULT_FALLBACK; RestoreUnkTextStruct_8006518(&gUnknown_203B33C->unk3BC); ResetUnusedInputStruct(); - xxx_call_save_unk_text_struct_800641C(NULL, TRUE, TRUE); + ShowWindows(NULL, TRUE, TRUE); sub_801B3C0(&gUnknown_203B33C->item); SetFriendRescueMenuState(0x61); break; @@ -2582,7 +2582,7 @@ void sub_8034D74(void) case 2: sub_80155F0(); ResetUnusedInputStruct(); - xxx_call_save_unk_text_struct_800641C(&gUnknown_203B33C->unk3BC, TRUE, TRUE); + ShowWindows(&gUnknown_203B33C->unk3BC, TRUE, TRUE); SetFriendRescueMenuState(FRIEND_RESCUE_MENU_MAIN); break; default: diff --git a/src/gulpin_shop.c b/src/gulpin_shop.c index 311112a10..f52a89cb8 100644 --- a/src/gulpin_shop.c +++ b/src/gulpin_shop.c @@ -116,19 +116,19 @@ static void sub_801E980(void) switch (sGulpinShopWork->state) { case 2: sub_801EBC4(); - sGulpinShopWork->unk12C.a0[1] = gUnknown_80DC11C; - sGulpinShopWork->unk12C.a0[2] = gUnknown_80DC134; - sub_8012CAC(&sGulpinShopWork->unk12C.a0[2], sGulpinShopWork->unk28); + sGulpinShopWork->unk12C.id[1] = gUnknown_80DC11C; + sGulpinShopWork->unk12C.id[2] = gUnknown_80DC134; + sub_8012CAC(&sGulpinShopWork->unk12C.id[2], sGulpinShopWork->unk28); break; default: for(index = 0; index < 4; index++) { - sGulpinShopWork->unk12C.a0[index] = gUnknown_80DC11C; + sGulpinShopWork->unk12C.id[index] = gUnknown_80DC11C; } break; } ResetUnusedInputStruct(); - xxx_call_save_unk_text_struct_800641C(&sGulpinShopWork->unk12C, TRUE, TRUE); + ShowWindows(&sGulpinShopWork->unk12C, TRUE, TRUE); } static void sub_801EA28(void) diff --git a/src/gulpin_shop_801FB50.c b/src/gulpin_shop_801FB50.c index 8a3ddf623..b48c58a05 100644 --- a/src/gulpin_shop_801FB50.c +++ b/src/gulpin_shop_801FB50.c @@ -78,7 +78,7 @@ bool8 sub_801FB50(u32 mode) OpenedFile *faceFile; ResetUnusedInputStruct(); - xxx_call_save_unk_text_struct_800641C(NULL, TRUE, TRUE); + ShowWindows(NULL, TRUE, TRUE); gUnknown_203B27C = MemoryAlloc(sizeof(unkStruct_203B27C), 0x8); gUnknown_203B27C->menuAction2 = 0; gUnknown_203B27C->menuAction3 = 0; @@ -198,41 +198,41 @@ static void sub_801FDC0(void) switch (gUnknown_203B27C->state) { case 0x2: - gUnknown_203B27C->unk180.a0[0].unk0 = 0x80; - gUnknown_203B27C->unk180.a0[1].unk0 = 0x80; - gUnknown_203B27C->unk180.a0[2].unk0 = 0x80; - gUnknown_203B27C->unk180.a0[3] = gUnknown_80DC37C; + gUnknown_203B27C->unk180.id[0].unk0 = 0x80; + gUnknown_203B27C->unk180.id[1].unk0 = 0x80; + gUnknown_203B27C->unk180.id[2].unk0 = 0x80; + gUnknown_203B27C->unk180.id[3] = gUnknown_80DC37C; ResetUnusedInputStruct(); - xxx_call_save_unk_text_struct_800641C(&gUnknown_203B27C->unk180, TRUE, FALSE); + ShowWindows(&gUnknown_203B27C->unk180, TRUE, FALSE); break; case 0x11: sub_80205D0(); - gUnknown_203B27C->unk180.a0[2] = gUnknown_80DC334; - sub_8012CAC(&gUnknown_203B27C->unk180.a0[2], gUnknown_203B27C->unk7C); + gUnknown_203B27C->unk180.id[2] = gUnknown_80DC334; + sub_8012CAC(&gUnknown_203B27C->unk180.id[2], gUnknown_203B27C->unk7C); ResetUnusedInputStruct(); - xxx_call_save_unk_text_struct_800641C(&gUnknown_203B27C->unk180, TRUE, TRUE); + ShowWindows(&gUnknown_203B27C->unk180, TRUE, TRUE); break; case 0x17: sub_802069C(); - gUnknown_203B27C->unk180.a0[2] = gUnknown_80DC334; - sub_8012CAC(&gUnknown_203B27C->unk180.a0[2], gUnknown_203B27C->unk7C); + gUnknown_203B27C->unk180.id[2] = gUnknown_80DC334; + sub_8012CAC(&gUnknown_203B27C->unk180.id[2], gUnknown_203B27C->unk7C); ResetUnusedInputStruct(); - xxx_call_save_unk_text_struct_800641C(&gUnknown_203B27C->unk180, TRUE, TRUE); + ShowWindows(&gUnknown_203B27C->unk180, TRUE, TRUE); break; case 0x20: CreateGulpinLinkMenu(); - gUnknown_203B27C->unk180.a0[1] = gUnknown_80DC31C; - gUnknown_203B27C->unk180.a0[2] = gUnknown_80DC34C; - sub_8012CAC(&gUnknown_203B27C->unk180.a0[2], gUnknown_203B27C->unk7C); + gUnknown_203B27C->unk180.id[1] = gUnknown_80DC31C; + gUnknown_203B27C->unk180.id[2] = gUnknown_80DC34C; + sub_8012CAC(&gUnknown_203B27C->unk180.id[2], gUnknown_203B27C->unk7C); ResetUnusedInputStruct(); - xxx_call_save_unk_text_struct_800641C(&gUnknown_203B27C->unk180, TRUE, TRUE); + ShowWindows(&gUnknown_203B27C->unk180, TRUE, TRUE); break; default: for (index = 0; index < 4; index++) - gUnknown_203B27C->unk180.a0[index] = gUnknown_80DC31C; + gUnknown_203B27C->unk180.id[index] = gUnknown_80DC31C; ResetUnusedInputStruct(); - xxx_call_save_unk_text_struct_800641C(&gUnknown_203B27C->unk180, TRUE, TRUE); + ShowWindows(&gUnknown_203B27C->unk180, TRUE, TRUE); break; } } diff --git a/src/hints_menu1.c b/src/hints_menu1.c index 816a735a1..acd26f4b1 100644 --- a/src/hints_menu1.c +++ b/src/hints_menu1.c @@ -23,12 +23,12 @@ bool8 sub_801E3F0(u32 a0) sUnknown_203B264 = MemoryAlloc(sizeof(*sUnknown_203B264), 8); sUnknown_203B264->unk34 = a0; - sUnknown_203B264->unk38 = &sUnknown_203B264->unk3C.a0[a0]; - RestoreUnkTextStruct_8006518(&sUnknown_203B264->unk3C); - sUnknown_203B264->unk3C.a0[sUnknown_203B264->unk34] = sUnknown_80DC0BC; + sUnknown_203B264->unk38 = &sUnknown_203B264->windows.id[a0]; + RestoreUnkTextStruct_8006518(&sUnknown_203B264->windows); + sUnknown_203B264->windows.id[sUnknown_203B264->unk34] = sUnknown_80DC0BC; sub_8012D08(sUnknown_203B264->unk38, 10); ResetUnusedInputStruct(); - xxx_call_save_unk_text_struct_800641C(&sUnknown_203B264->unk3C, TRUE, TRUE); + ShowWindows(&sUnknown_203B264->windows, TRUE, TRUE); sub_8013818(&sUnknown_203B264->input, 5, 10, a0); sub_801E594(); DrawHintSelectionMenu(); @@ -73,7 +73,7 @@ s32 GetChosenHintIndex(void) void CreateHintSelectionScreen(bool8 cursorSprite) { ResetUnusedInputStruct(); - xxx_call_save_unk_text_struct_800641C(&sUnknown_203B264->unk3C, FALSE, FALSE); + ShowWindows(&sUnknown_203B264->windows, FALSE, FALSE); sub_8013984(&sUnknown_203B264->input); sub_801E594(); DrawHintSelectionMenu(); @@ -85,9 +85,9 @@ void CreateHintSelectionScreen(bool8 cursorSprite) void sub_801E54C(void) { if (sUnknown_203B264 != NULL) { - sUnknown_203B264->unk3C.a0[sUnknown_203B264->unk34] = sUnknown_80DC0A0; + sUnknown_203B264->windows.id[sUnknown_203B264->unk34] = sUnknown_80DC0A0; ResetUnusedInputStruct(); - xxx_call_save_unk_text_struct_800641C(&sUnknown_203B264->unk3C, TRUE, TRUE); + ShowWindows(&sUnknown_203B264->windows, TRUE, TRUE); MemoryFree(sUnknown_203B264); sUnknown_203B264 = NULL; } diff --git a/src/hints_menu2.c b/src/hints_menu2.c index d09443479..bc127ac88 100644 --- a/src/hints_menu2.c +++ b/src/hints_menu2.c @@ -22,12 +22,12 @@ bool8 CreateHintDisplayScreen(u32 index) { sUnknown_203B268 = MemoryAlloc(sizeof(struct_Sub80095E4_2), 8); sUnknown_203B268->s0.unk34 = 0; - sUnknown_203B268->s0.unk38 = &sUnknown_203B268->s0.unk3C.a0[0]; - RestoreUnkTextStruct_8006518(&sUnknown_203B268->s0.unk3C); - sUnknown_203B268->s0.unk3C.a0[sUnknown_203B268->s0.unk34] = sUnknown_80DC0FC; + sUnknown_203B268->s0.unk38 = &sUnknown_203B268->s0.windows.id[0]; + RestoreUnkTextStruct_8006518(&sUnknown_203B268->s0.windows); + sUnknown_203B268->s0.windows.id[sUnknown_203B268->s0.unk34] = sUnknown_80DC0FC; sUnknown_203B268->s0.unk38->unk14 = &sUnknown_203B268->unk9C; ResetUnusedInputStruct(); - xxx_call_save_unk_text_struct_800641C(&sUnknown_203B268->s0.unk3C, TRUE, TRUE); + ShowWindows(&sUnknown_203B268->s0.windows, TRUE, TRUE); sub_8013818(&sUnknown_203B268->s0.input, 5, 1, sUnknown_203B268->s0.unk34); sUnknown_203B268->s0.input.unk1E = index; sub_801E714(); @@ -62,9 +62,9 @@ static void sub_801E714(void) void DestroyHintDisplayScreen(void) { if (sUnknown_203B268 != NULL) { - sUnknown_203B268->s0.unk3C.a0[sUnknown_203B268->s0.unk34] = sUnknown_80DC0E4; + sUnknown_203B268->s0.windows.id[sUnknown_203B268->s0.unk34] = sUnknown_80DC0E4; ResetUnusedInputStruct(); - xxx_call_save_unk_text_struct_800641C(&sUnknown_203B268->s0.unk3C, TRUE, TRUE); + ShowWindows(&sUnknown_203B268->s0.windows, TRUE, TRUE); MemoryFree(sUnknown_203B268); sUnknown_203B268 = NULL; } @@ -77,7 +77,7 @@ static void sub_801E76C(void) sUnknown_203B268->unk9C.f2 = 15; sUnknown_203B268->unk9C.f3 = 0; ResetUnusedInputStruct(); - xxx_call_save_unk_text_struct_800641C(&sUnknown_203B268->s0.unk3C, TRUE, TRUE); + ShowWindows(&sUnknown_203B268->s0.windows, TRUE, TRUE); } static void DisplayChosenHint(void) diff --git a/src/iq_skill_info_menu.c b/src/iq_skill_info_menu.c index 2ff5296b2..8885fcd7f 100644 --- a/src/iq_skill_info_menu.c +++ b/src/iq_skill_info_menu.c @@ -36,7 +36,7 @@ bool8 CreateIQSkillInfoMenu(u8 iqSkill) sIQSkillInfoMenu->unk24 = 0; sub_80140B4(&sIQSkillInfoMenu->unk28); ResetUnusedInputStruct(); - xxx_call_save_unk_text_struct_800641C(&sIQSkillInfoMenu->unk28, TRUE, TRUE); + ShowWindows(&sIQSkillInfoMenu->unk28, TRUE, TRUE); SetIQSkillInfoMenuState(IQ_SKILL_INFO_MENU_INIT); return TRUE; } diff --git a/src/iq_skill_list_menu.c b/src/iq_skill_list_menu.c index 37bb95807..4d93ae2f8 100644 --- a/src/iq_skill_list_menu.c +++ b/src/iq_skill_list_menu.c @@ -30,13 +30,13 @@ bool8 CreateIQSkillListMenu(s16 species, u32 index, u32 a2) sIQSkillListMenu->pokeStruct = &gRecruitedPokemonRef->pokemon[species_s32]; sIQSkillListMenu->numIQSkills = GetNumAvailableIQSkills(sIQSkillListMenu->iqSkills, sIQSkillListMenu->pokeStruct->IQ); sIQSkillListMenu->s24.s0.unk34 = index; - sIQSkillListMenu->s24.s0.unk38 = &sIQSkillListMenu->s24.s0.unk3C.a0[index]; - RestoreUnkTextStruct_8006518(&sIQSkillListMenu->s24.s0.unk3C); - sIQSkillListMenu->s24.s0.unk3C.a0[sIQSkillListMenu->s24.s0.unk34] = sUnknown_80DBDF0; + sIQSkillListMenu->s24.s0.unk38 = &sIQSkillListMenu->s24.s0.windows.id[index]; + RestoreUnkTextStruct_8006518(&sIQSkillListMenu->s24.s0.windows); + sIQSkillListMenu->s24.s0.windows.id[sIQSkillListMenu->s24.s0.unk34] = sUnknown_80DBDF0; sIQSkillListMenu->s24.s0.unk38->unk14 = &sIQSkillListMenu->s24.unk9C; sub_8012D08(sIQSkillListMenu->s24.s0.unk38, a2); ResetUnusedInputStruct(); - xxx_call_save_unk_text_struct_800641C(&sIQSkillListMenu->s24.s0.unk3C, TRUE, TRUE); + ShowWindows(&sIQSkillListMenu->s24.s0.windows, TRUE, TRUE); sub_8013818(&sIQSkillListMenu->s24.s0.input, sIQSkillListMenu->numIQSkills, a2, index); sub_801C440(); BuildIQSkillList(); @@ -78,7 +78,7 @@ s32 GetIQSkillSelection(void) void RedrawIQSkillListMenu(bool8 addCursor) { ResetUnusedInputStruct(); - xxx_call_save_unk_text_struct_800641C(&sIQSkillListMenu->s24.s0.unk3C, FALSE, FALSE); + ShowWindows(&sIQSkillListMenu->s24.s0.windows, FALSE, FALSE); sIQSkillListMenu->s24.s0.input.unk22 = sIQSkillListMenu->numIQSkills; sub_8013984(&sIQSkillListMenu->s24.s0.input); sub_801C440(); @@ -91,9 +91,9 @@ void RedrawIQSkillListMenu(bool8 addCursor) void CleanIQSkillListMenu(void) { if (sIQSkillListMenu != NULL) { - sIQSkillListMenu->s24.s0.unk3C.a0[sIQSkillListMenu->s24.s0.unk34] = sUnknown_80DBDD8; + sIQSkillListMenu->s24.s0.windows.id[sIQSkillListMenu->s24.s0.unk34] = sUnknown_80DBDD8; ResetUnusedInputStruct(); - xxx_call_save_unk_text_struct_800641C(&sIQSkillListMenu->s24.s0.unk3C, TRUE, TRUE); + ShowWindows(&sIQSkillListMenu->s24.s0.windows, TRUE, TRUE); MemoryFree(sIQSkillListMenu); sIQSkillListMenu = NULL; } @@ -106,7 +106,7 @@ static void sub_801C440(void) sIQSkillListMenu->s24.unk9C.f2 = 10; sIQSkillListMenu->s24.unk9C.f3 = 0; ResetUnusedInputStruct(); - xxx_call_save_unk_text_struct_800641C(&sIQSkillListMenu->s24.s0.unk3C, TRUE, TRUE); + ShowWindows(&sIQSkillListMenu->s24.s0.windows, TRUE, TRUE); SUB_80095E4_CALL_2(sIQSkillListMenu->s24.s0); } diff --git a/src/iq_skill_menu.c b/src/iq_skill_menu.c index c453d6fbf..dfd55c353 100644 --- a/src/iq_skill_menu.c +++ b/src/iq_skill_menu.c @@ -80,14 +80,14 @@ static void sub_801BFCC(void) RestoreUnkTextStruct_8006518(&sIQSkillMenu->unkC4); if (sIQSkillMenu->state == 2) - sIQSkillMenu->unkC4.a0[2] = sUnknown_80DBDB0; + sIQSkillMenu->unkC4.id[2] = sUnknown_80DBDB0; else { for (i = 0; i < 4; i++) - sIQSkillMenu->unkC4.a0[i] = sUnknown_80DBD98; + sIQSkillMenu->unkC4.id[i] = sUnknown_80DBD98; } ResetUnusedInputStruct(); - xxx_call_save_unk_text_struct_800641C(&sIQSkillMenu->unkC4, TRUE, TRUE); + ShowWindows(&sIQSkillMenu->unkC4, TRUE, TRUE); } static void HandleIQSkillMenuState(void) diff --git a/src/kangaskhan_storage1.c b/src/kangaskhan_storage1.c index 966ff2727..a5b6cfa36 100644 --- a/src/kangaskhan_storage1.c +++ b/src/kangaskhan_storage1.c @@ -46,7 +46,7 @@ bool8 CreateKangaskhanStorage(u32 mode) OpenedFile *faceFile; ResetUnusedInputStruct(); - xxx_call_save_unk_text_struct_800641C(NULL, TRUE, TRUE); + ShowWindows(NULL, TRUE, TRUE); gKangaskhanStorageWork = MemoryAlloc(sizeof(struct KangaskhanStorageWork), 8); gKangaskhanStorageWork->menuAction1 = 0; gKangaskhanStorageWork->menuAction2 = 0; @@ -150,33 +150,33 @@ static void sub_8016E80(void) switch (gKangaskhanStorageWork->currState) { case 13: case 14: - gKangaskhanStorageWork->unkEC.a0[0] = sUnknown_80DB748; - gKangaskhanStorageWork->unkEC.a0[1] = sUnknown_80DB748; - gKangaskhanStorageWork->unkEC.a0[2] = sUnknown_80DB748; - gKangaskhanStorageWork->unkEC.a0[0] = sUnknown_80DB748; + gKangaskhanStorageWork->unkEC.id[0] = sUnknown_80DB748; + gKangaskhanStorageWork->unkEC.id[1] = sUnknown_80DB748; + gKangaskhanStorageWork->unkEC.id[2] = sUnknown_80DB748; + gKangaskhanStorageWork->unkEC.id[0] = sUnknown_80DB748; break; case 22: case 23: - gKangaskhanStorageWork->unkEC.a0[0] = sUnknown_80DB748; - gKangaskhanStorageWork->unkEC.a0[1] = sUnknown_80DB748; - gKangaskhanStorageWork->unkEC.a0[2] = sUnknown_80DB748; - gKangaskhanStorageWork->unkEC.a0[0] = sUnknown_80DB778; + gKangaskhanStorageWork->unkEC.id[0] = sUnknown_80DB748; + gKangaskhanStorageWork->unkEC.id[1] = sUnknown_80DB748; + gKangaskhanStorageWork->unkEC.id[2] = sUnknown_80DB748; + gKangaskhanStorageWork->unkEC.id[0] = sUnknown_80DB778; break; case 24: - gKangaskhanStorageWork->unkEC.a0[1] = sUnknown_80DB790; + gKangaskhanStorageWork->unkEC.id[1] = sUnknown_80DB790; break; case 15: case 25: - gKangaskhanStorageWork->unkEC.a0[2] = sUnknown_80DB760; + gKangaskhanStorageWork->unkEC.id[2] = sUnknown_80DB760; break; default: for (index = 0; index < 4; index++) - gKangaskhanStorageWork->unkEC.a0[index] = sUnknown_80DB748; + gKangaskhanStorageWork->unkEC.id[index] = sUnknown_80DB748; break; } ResetUnusedInputStruct(); - xxx_call_save_unk_text_struct_800641C(&gKangaskhanStorageWork->unkEC, TRUE, TRUE); + ShowWindows(&gKangaskhanStorageWork->unkEC, TRUE, TRUE); } static void sub_8016FF8(void) @@ -309,7 +309,7 @@ static void sub_8016FF8(void) gKangaskhanStorageWork->unkA8.unk4 = gKangaskhanStorageWork->unkA8.unkC; gKangaskhanStorageWork->unkA8.unk14 = 1; - gKangaskhanStorageWork->unkA8.unk18 = &gKangaskhanStorageWork->unkEC.a0[1]; + gKangaskhanStorageWork->unkA8.unk18 = &gKangaskhanStorageWork->unkEC.id[1]; gKangaskhanStorageWork->unkA8.unk1C = 40; gKangaskhanStorageWork->unkA8.unk20 = 18; sub_8013AA0(&gKangaskhanStorageWork->unkA8); diff --git a/src/kangaskhan_storage2.c b/src/kangaskhan_storage2.c index 4a3081d13..031183c8d 100644 --- a/src/kangaskhan_storage2.c +++ b/src/kangaskhan_storage2.c @@ -42,7 +42,7 @@ enum MenuActions { bool8 sub_8017E1C(void) { ResetUnusedInputStruct(); - xxx_call_save_unk_text_struct_800641C(NULL, TRUE, TRUE); + ShowWindows(NULL, TRUE, TRUE); sUnknown_203B20C = MemoryAlloc(sizeof(unkStruct_203B20C), 8); sUnknown_203B20C->menuAction1 = 0; sUnknown_203B20C->menuAction2 = 0; @@ -112,42 +112,42 @@ static void sub_8017F28(void) switch (sUnknown_203B20C->state) { case KANGASKHAN_STORAGE_2_MAIN: - sUnknown_203B20C->unkF0.a0[0] = sUnknown_80DB7B8; - sUnknown_203B20C->unkF0.a0[1] = sUnknown_80DB7B8; - sUnknown_203B20C->unkF0.a0[0] = sUnknown_80DB7B8; + sUnknown_203B20C->unkF0.id[0] = sUnknown_80DB7B8; + sUnknown_203B20C->unkF0.id[1] = sUnknown_80DB7B8; + sUnknown_203B20C->unkF0.id[0] = sUnknown_80DB7B8; BuildKangaskhanStorage2MainMenu(); - sUnknown_203B20C->unkF0.a0[2] = sUnknown_80DB7D0; - sub_8012CAC(&sUnknown_203B20C->unkF0.a0[2], sUnknown_203B20C->unk20); + sUnknown_203B20C->unkF0.id[2] = sUnknown_80DB7D0; + sub_8012CAC(&sUnknown_203B20C->unkF0.id[2], sUnknown_203B20C->unk20); break; case 4: case 5: - sUnknown_203B20C->unkF0.a0[0] = sUnknown_80DB7B8; - sUnknown_203B20C->unkF0.a0[1] = sUnknown_80DB7B8; - sUnknown_203B20C->unkF0.a0[2] = sUnknown_80DB7B8; - sUnknown_203B20C->unkF0.a0[0] = sUnknown_80DB7B8; + sUnknown_203B20C->unkF0.id[0] = sUnknown_80DB7B8; + sUnknown_203B20C->unkF0.id[1] = sUnknown_80DB7B8; + sUnknown_203B20C->unkF0.id[2] = sUnknown_80DB7B8; + sUnknown_203B20C->unkF0.id[0] = sUnknown_80DB7B8; break; case 10: case 11: - sUnknown_203B20C->unkF0.a0[0] = sUnknown_80DB7B8; - sUnknown_203B20C->unkF0.a0[1] = sUnknown_80DB7B8; - sUnknown_203B20C->unkF0.a0[2] = sUnknown_80DB7B8; - sUnknown_203B20C->unkF0.a0[0] = sUnknown_80DB800; + sUnknown_203B20C->unkF0.id[0] = sUnknown_80DB7B8; + sUnknown_203B20C->unkF0.id[1] = sUnknown_80DB7B8; + sUnknown_203B20C->unkF0.id[2] = sUnknown_80DB7B8; + sUnknown_203B20C->unkF0.id[0] = sUnknown_80DB800; break; case 12: - sUnknown_203B20C->unkF0.a0[1] = sUnknown_80DB818; + sUnknown_203B20C->unkF0.id[1] = sUnknown_80DB818; break; case 6: case 13: - sUnknown_203B20C->unkF0.a0[2] = sUnknown_80DB7E8; + sUnknown_203B20C->unkF0.id[2] = sUnknown_80DB7E8; break; default: case KANGASKHAN_STORAGE_2_INIT: for (index = 0; index < 4; index++) - sUnknown_203B20C->unkF0.a0[index] = sUnknown_80DB7B8; + sUnknown_203B20C->unkF0.id[index] = sUnknown_80DB7B8; break; } ResetUnusedInputStruct(); - xxx_call_save_unk_text_struct_800641C(&sUnknown_203B20C->unkF0, TRUE, TRUE); + ShowWindows(&sUnknown_203B20C->unkF0, TRUE, TRUE); } static void sub_8018100(void) @@ -189,7 +189,7 @@ static void sub_8018100(void) sUnknown_203B20C->unkC0.unk4 = sUnknown_203B20C->unkC0.unkC; sUnknown_203B20C->unkC0.unk14 = 1; - sUnknown_203B20C->unkC0.unk18 = &sUnknown_203B20C->unkF0.a0[1]; + sUnknown_203B20C->unkC0.unk18 = &sUnknown_203B20C->unkF0.id[1]; sUnknown_203B20C->unkC0.unk1C = 40; sUnknown_203B20C->unkC0.unk20 = 18; sub_8013AA0(&sUnknown_203B20C->unkC0); diff --git a/src/kecleon_bros1.c b/src/kecleon_bros1.c index 375c82925..bc56a7c83 100644 --- a/src/kecleon_bros1.c +++ b/src/kecleon_bros1.c @@ -184,21 +184,21 @@ static void sub_8018D30(void) switch (sKecleonBrosWork1->currState) { case 18: case 19: - sKecleonBrosWork1->unkE8.a0[0] = sUnknown_80DB840; - sKecleonBrosWork1->unkE8.a0[2] = sUnknown_80DB840; - sKecleonBrosWork1->unkE8.a0[0] = sUnknown_80DB870; - sKecleonBrosWork1->unkE8.a0[1] = sUnknown_80DB888; + sKecleonBrosWork1->unkE8.id[0] = sUnknown_80DB840; + sKecleonBrosWork1->unkE8.id[2] = sUnknown_80DB840; + sKecleonBrosWork1->unkE8.id[0] = sUnknown_80DB870; + sKecleonBrosWork1->unkE8.id[1] = sUnknown_80DB888; break; case 26: case 27: - sKecleonBrosWork1->unkE8.a0[0] = sUnknown_80DB840; - sKecleonBrosWork1->unkE8.a0[1] = sUnknown_80DB840; - sKecleonBrosWork1->unkE8.a0[2] = sUnknown_80DB840; - sKecleonBrosWork1->unkE8.a0[1] = sUnknown_80DB888; + sKecleonBrosWork1->unkE8.id[0] = sUnknown_80DB840; + sKecleonBrosWork1->unkE8.id[1] = sUnknown_80DB840; + sKecleonBrosWork1->unkE8.id[2] = sUnknown_80DB840; + sKecleonBrosWork1->unkE8.id[1] = sUnknown_80DB888; break; case 20: case 28: - sKecleonBrosWork1->unkE8.a0[2] = sUnknown_80DB858; + sKecleonBrosWork1->unkE8.id[2] = sUnknown_80DB858; break; default: case KECLEON_STORE_BUY_ITEM_INFO: @@ -207,12 +207,12 @@ static void sub_8018D30(void) case KECLEON_STORE_SELL_ITEM_MENU: case KECLEON_STORE_SELL_ITEM_RECEIPT: for (i = 0; i < 4; i++) - sKecleonBrosWork1->unkE8.a0[i] = sUnknown_80DB840; + sKecleonBrosWork1->unkE8.id[i] = sUnknown_80DB840; break; } ResetUnusedInputStruct(); - xxx_call_save_unk_text_struct_800641C(&sKecleonBrosWork1->unkE8, TRUE, TRUE); + ShowWindows(&sKecleonBrosWork1->unkE8, TRUE, TRUE); } static void UpdateKecleonStoreDialogue(void) diff --git a/src/kecleon_bros2.c b/src/kecleon_bros2.c index f05684cb8..bc497fc01 100644 --- a/src/kecleon_bros2.c +++ b/src/kecleon_bros2.c @@ -25,12 +25,12 @@ bool8 sub_8019E40(u32 r0) gUnknown_203B214 = MemoryAlloc(sizeof(*gUnknown_203B214), 8); gUnknown_203B214->s0.unk34 = r0; - gUnknown_203B214->s0.unk38 = &gUnknown_203B214->s0.unk3C.a0[gUnknown_203B214->s0.unk34]; - RestoreUnkTextStruct_8006518(&gUnknown_203B214->s0.unk3C); - gUnknown_203B214->s0.unk3C.a0[gUnknown_203B214->s0.unk34] = sUnknown_80DB8CC; + gUnknown_203B214->s0.unk38 = &gUnknown_203B214->s0.windows.id[gUnknown_203B214->s0.unk34]; + RestoreUnkTextStruct_8006518(&gUnknown_203B214->s0.windows); + gUnknown_203B214->s0.windows.id[gUnknown_203B214->s0.unk34] = sUnknown_80DB8CC; gUnknown_203B214->s0.unk38->unk14 = &gUnknown_203B214->unk9C; ResetUnusedInputStruct(); - xxx_call_save_unk_text_struct_800641C(&gUnknown_203B214->s0.unk3C, TRUE, TRUE); + ShowWindows(&gUnknown_203B214->s0.windows, TRUE, TRUE); sub_8013818(&gUnknown_203B214->s0.input, CountKecleonShopItems(), 10, r0); gUnknown_203B214->s0.input.menuIndex = gUnknown_203B218; sub_8013984(&gUnknown_203B214->s0.input); @@ -84,7 +84,7 @@ u8 sub_8019FB0(void) void sub_8019FCC(bool8 r0) { ResetUnusedInputStruct(); - xxx_call_save_unk_text_struct_800641C(&gUnknown_203B214->s0.unk3C, FALSE, FALSE); + ShowWindows(&gUnknown_203B214->s0.windows, FALSE, FALSE); gUnknown_203B214->s0.input.unk22 = CountKecleonShopItems(); sub_8013984(&gUnknown_203B214->s0.input); sub_801A064(); @@ -97,9 +97,9 @@ void sub_801A010(void) { if (gUnknown_203B214 != NULL) { gUnknown_203B218 = gUnknown_203B214->s0.input.menuIndex; - gUnknown_203B214->s0.unk3C.a0[gUnknown_203B214->s0.unk34] = sUnknown_80DB8B4; + gUnknown_203B214->s0.windows.id[gUnknown_203B214->s0.unk34] = sUnknown_80DB8B4; ResetUnusedInputStruct(); - xxx_call_save_unk_text_struct_800641C(&gUnknown_203B214->s0.unk3C, TRUE, TRUE); + ShowWindows(&gUnknown_203B214->s0.windows, TRUE, TRUE); MemoryFree(gUnknown_203B214); gUnknown_203B214 = NULL; } diff --git a/src/kecleon_bros3.c b/src/kecleon_bros3.c index 23fe1676b..2ee00f174 100644 --- a/src/kecleon_bros3.c +++ b/src/kecleon_bros3.c @@ -25,12 +25,12 @@ u8 sub_801A20C(u32 r0) gUnknown_203B21C = MemoryAlloc(sizeof(*gUnknown_203B21C), 8); gUnknown_203B21C->s0.unk34 = r0; - gUnknown_203B21C->s0.unk38 = &gUnknown_203B21C->s0.unk3C.a0[gUnknown_203B21C->s0.unk34]; - RestoreUnkTextStruct_8006518(&gUnknown_203B21C->s0.unk3C); - gUnknown_203B21C->s0.unk3C.a0[gUnknown_203B21C->s0.unk34] = sUnknown_80DB914; + gUnknown_203B21C->s0.unk38 = &gUnknown_203B21C->s0.windows.id[gUnknown_203B21C->s0.unk34]; + RestoreUnkTextStruct_8006518(&gUnknown_203B21C->s0.windows); + gUnknown_203B21C->s0.windows.id[gUnknown_203B21C->s0.unk34] = sUnknown_80DB914; gUnknown_203B21C->s0.unk38->unk14 = &gUnknown_203B21C->unk9C; ResetUnusedInputStruct(); - xxx_call_save_unk_text_struct_800641C(&gUnknown_203B21C->s0.unk3C, TRUE, TRUE); + ShowWindows(&gUnknown_203B21C->s0.windows, TRUE, TRUE); sub_8013818(&gUnknown_203B21C->s0.input, CountKecleonWareItems(), 10, r0); gUnknown_203B21C->s0.input.menuIndex = gUnknown_203B220; sub_8013984(&gUnknown_203B21C->s0.input); @@ -85,7 +85,7 @@ u8 sub_801A37C(void) void sub_801A398(bool8 r0) { ResetUnusedInputStruct(); - xxx_call_save_unk_text_struct_800641C(&gUnknown_203B21C->s0.unk3C, FALSE, FALSE); + ShowWindows(&gUnknown_203B21C->s0.windows, FALSE, FALSE); gUnknown_203B21C->s0.input.unk22 = CountKecleonWareItems(); sub_8013984(&gUnknown_203B21C->s0.input); sub_801A430(); @@ -98,9 +98,9 @@ void sub_801A3DC(void) { if (gUnknown_203B21C != NULL) { gUnknown_203B220 = gUnknown_203B21C->s0.input.menuIndex; - gUnknown_203B21C->s0.unk3C.a0[gUnknown_203B21C->s0.unk34] = sUnknown_80DB8FC; + gUnknown_203B21C->s0.windows.id[gUnknown_203B21C->s0.unk34] = sUnknown_80DB8FC; ResetUnusedInputStruct(); - xxx_call_save_unk_text_struct_800641C(&gUnknown_203B21C->s0.unk3C, TRUE, TRUE); + ShowWindows(&gUnknown_203B21C->s0.windows, TRUE, TRUE); MemoryFree(gUnknown_203B21C); gUnknown_203B21C = NULL; } diff --git a/src/kecleon_bros4.c b/src/kecleon_bros4.c index 2d0745da3..5205aff80 100644 --- a/src/kecleon_bros4.c +++ b/src/kecleon_bros4.c @@ -35,18 +35,18 @@ bool8 sub_801A5D8(u32 param_1, s32 param_2, DungeonPos *param_3, u32 param_4) FillInventoryGaps(); sub_801AE84(); gUnknown_203B224->unk54.s0.unk34 = param_2; - gUnknown_203B224->unk54.s0.unk38 = &gUnknown_203B224->unk54.s0.unk3C.a0[param_2]; - RestoreUnkTextStruct_8006518(&gUnknown_203B224->unk54.s0.unk3C); - gUnknown_203B224->unk54.s0.unk3C.a0[gUnknown_203B224->unk54.s0.unk34] = sUnknown_80DB95C; + gUnknown_203B224->unk54.s0.unk38 = &gUnknown_203B224->unk54.s0.windows.id[param_2]; + RestoreUnkTextStruct_8006518(&gUnknown_203B224->unk54.s0.windows); + gUnknown_203B224->unk54.s0.windows.id[gUnknown_203B224->unk54.s0.unk34] = sUnknown_80DB95C; gUnknown_203B224->unk54.s0.unk38->unk14 = &gUnknown_203B224->unk54.unk9C; if (param_3 != NULL) - gUnknown_203B224->unk54.s0.unk3C.a0[gUnknown_203B224->unk54.s0.unk34].pos = *param_3; + gUnknown_203B224->unk54.s0.windows.id[gUnknown_203B224->unk54.s0.unk34].pos = *param_3; sub_8012D08(gUnknown_203B224->unk54.s0.unk38, param_4); sub_8099690(1); ResetUnusedInputStruct(); - xxx_call_save_unk_text_struct_800641C(&gUnknown_203B224->unk54.s0.unk3C, TRUE, TRUE); + ShowWindows(&gUnknown_203B224->unk54.s0.windows, TRUE, TRUE); sub_8013818(&gUnknown_203B224->unk54.s0.input, GetNumberOfFilledInventorySlots(), param_4, param_2); gUnknown_203B224->unk54.s0.input.menuIndex = gUnknown_203B228; gUnknown_203B224->unk54.s0.input.unk1E = gUnknown_203B22A; @@ -147,7 +147,7 @@ void sub_801A8D0(bool8 r0) { sub_8099690(1); ResetUnusedInputStruct(); - xxx_call_save_unk_text_struct_800641C(&gUnknown_203B224->unk54.s0.unk3C, FALSE, FALSE); + ShowWindows(&gUnknown_203B224->unk54.s0.windows, FALSE, FALSE); FillInventoryGaps(); gUnknown_203B224->unk54.s0.input.unk22 = GetNumberOfFilledInventorySlots(); sub_8013984(&gUnknown_203B224->unk54.s0.input); @@ -162,10 +162,10 @@ void sub_801A928(void) if (gUnknown_203B224 != NULL) { gUnknown_203B228 = gUnknown_203B224->unk54.s0.input.menuIndex; gUnknown_203B22A = gUnknown_203B224->unk54.s0.input.unk1E; - gUnknown_203B224->unk54.s0.unk3C.a0[gUnknown_203B224->unk54.s0.unk34] = sUnknown_80DB944; + gUnknown_203B224->unk54.s0.windows.id[gUnknown_203B224->unk54.s0.unk34] = sUnknown_80DB944; sub_8099690(0); ResetUnusedInputStruct(); - xxx_call_save_unk_text_struct_800641C(&gUnknown_203B224->unk54.s0.unk3C, TRUE, TRUE); + ShowWindows(&gUnknown_203B224->unk54.s0.windows, TRUE, TRUE); MemoryFree(gUnknown_203B224); gUnknown_203B224 = NULL; } @@ -178,7 +178,7 @@ static void sub_801A998(void) gUnknown_203B224->unk54.unk9C.f2 = 11; gUnknown_203B224->unk54.unk9C.f3 = 0; ResetUnusedInputStruct(); - xxx_call_save_unk_text_struct_800641C(&gUnknown_203B224->unk54.s0.unk3C, TRUE, TRUE); + ShowWindows(&gUnknown_203B224->unk54.s0.windows, TRUE, TRUE); } void sub_801A9E0(void) diff --git a/src/load_screen.c b/src/load_screen.c index 0c3d01d98..c30531558 100644 --- a/src/load_screen.c +++ b/src/load_screen.c @@ -168,10 +168,10 @@ void CreateLoadScreen(u32 currMenu) } gLoadScreen->currMenu = currMenu; for(index = 0; index < 4; index++){ - gLoadScreen->unk144.a0[index] = gUnknown_80E75F8; + gLoadScreen->unk144.id[index] = gUnknown_80E75F8; } ResetUnusedInputStruct(); - xxx_call_save_unk_text_struct_800641C(&gLoadScreen->unk144, TRUE, TRUE); + ShowWindows(&gLoadScreen->unk144, TRUE, TRUE); SetMenuItems(gLoadScreen->unk4,&gLoadScreen->unk144,0,&gUnknown_80E7610,gUnknown_203B378,FALSE,6,FALSE); switch(gLoadScreen->currMenu){ case MENU_CONTINUE: @@ -200,7 +200,7 @@ void CreateLoadScreen(u32 currMenu) void CleanLoadScreen(void) { ResetUnusedInputStruct(); - xxx_call_save_unk_text_struct_800641C(NULL, TRUE, TRUE); + ShowWindows(NULL, TRUE, TRUE); if(gLoadScreen != NULL) { MemoryFree(gLoadScreen); diff --git a/src/luminous_cave.c b/src/luminous_cave.c index 2c4fe069b..3f381d91e 100644 --- a/src/luminous_cave.c +++ b/src/luminous_cave.c @@ -90,7 +90,7 @@ u32 sub_802465C(void) OpenedFile *faceFile; ResetUnusedInputStruct(); - xxx_call_save_unk_text_struct_800641C(NULL, TRUE, TRUE); + ShowWindows(NULL, TRUE, TRUE); sLuminousCaveWork = MemoryAlloc(sizeof(LuminousCaveWork), 8); sLuminousCaveWork->menuAction1 = 0; sLuminousCaveWork->menuAction2 = 0; @@ -185,7 +185,7 @@ static void sub_8024804(void) switch (sLuminousCaveWork->state) { case 8: case 13: - sLuminousCaveWork->unk114.a0[2] = sUnknown_80DCA00; + sLuminousCaveWork->unk114.id[2] = sUnknown_80DCA00; break; case LUMINOUS_CAVE_LET_US_BEGIN: case LUMINOUS_CAVE_CHANGED_APPEARANCE: @@ -200,12 +200,12 @@ static void sub_8024804(void) break; default: for (i = 0; i < 4; i++) - sLuminousCaveWork->unk114.a0[i] = sUnknown_80DC9E8; + sLuminousCaveWork->unk114.id[i] = sUnknown_80DC9E8; break; } ResetUnusedInputStruct(); - xxx_call_save_unk_text_struct_800641C(&sLuminousCaveWork->unk114, TRUE, TRUE); + ShowWindows(&sLuminousCaveWork->unk114, TRUE, TRUE); } static void UpdateLuminousCaveDialogue(void) diff --git a/src/mailbox.c b/src/mailbox.c index 4d26398d3..e213d684c 100644 --- a/src/mailbox.c +++ b/src/mailbox.c @@ -156,28 +156,28 @@ void sub_802E0A0(void) case MAIN_MAILBOX_MENU: for(index = 0; index < 4; index++) { - gUnknown_203B304->unk10C.a0[index] = gUnknown_80E0284; + gUnknown_203B304->unk10C.id[index] = gUnknown_80E0284; } CreateMailboxMenu(); - gUnknown_203B304->unk10C.a0[2] = gUnknown_80E029C; - sub_8012CAC(&gUnknown_203B304->unk10C.a0[2], gUnknown_203B304->menuItems); + gUnknown_203B304->unk10C.id[2] = gUnknown_80E029C; + sub_8012CAC(&gUnknown_203B304->unk10C.id[2], gUnknown_203B304->menuItems); break; case MAIL_ACTION_MENU: CreateMailActionMenu(); - gUnknown_203B304->unk10C.a0[2] = gUnknown_80E02B4; - sub_8012CAC(&gUnknown_203B304->unk10C.a0[2], gUnknown_203B304->menuItems); - gUnknown_203B304->unk10C.a0[2].width = 6; - gUnknown_203B304->unk10C.a0[3] = gUnknown_80E02CC; + gUnknown_203B304->unk10C.id[2] = gUnknown_80E02B4; + sub_8012CAC(&gUnknown_203B304->unk10C.id[2], gUnknown_203B304->menuItems); + gUnknown_203B304->unk10C.id[2].width = 6; + gUnknown_203B304->unk10C.id[3] = gUnknown_80E02CC; break; default: for(index = 0; index < 4; index++) { - gUnknown_203B304->unk10C.a0[index] = gUnknown_80E0284; + gUnknown_203B304->unk10C.id[index] = gUnknown_80E0284; } break; } ResetUnusedInputStruct(); - xxx_call_save_unk_text_struct_800641C(&gUnknown_203B304->unk10C, TRUE, TRUE); + ShowWindows(&gUnknown_203B304->unk10C, TRUE, TRUE); } void sub_802E1AC(void) diff --git a/src/main_menu1.c b/src/main_menu1.c index 2e0538c17..adf9cc8ae 100644 --- a/src/main_menu1.c +++ b/src/main_menu1.c @@ -293,10 +293,10 @@ void sub_8035C1C(void) void SetMenuItems(MenuStruct *a0, Windows *a1, s32 index, const Window *a3, const MenuItem *menuItems, bool8 a5, u32 menuAction, bool8 unused) { - Window *txtPtrs = a1->a0; - txtPtrs[index] = *a3; + Window *winPtrs = a1->id; + winPtrs[index] = *a3; ResetUnusedInputStruct(); - xxx_call_save_unk_text_struct_800641C(a1, TRUE, TRUE); + ShowWindows(a1, TRUE, TRUE); if (a5) sub_8012D60(&a0[index], menuItems, 0, 0, menuAction, index); @@ -308,13 +308,13 @@ void SetMenuItems(MenuStruct *a0, Windows *a1, s32 index, const Window *a3, cons void sub_8035CC0(Windows *dataArray, u32 index) { - Window *txtPtrs; + Window *winPtrs; RestoreUnkTextStruct_8006518(dataArray); - txtPtrs = dataArray->a0; - txtPtrs[index] = sUnknown_80E59A8; + winPtrs = dataArray->id; + winPtrs[index] = sUnknown_80E59A8; ResetUnusedInputStruct(); - xxx_call_save_unk_text_struct_800641C(dataArray, TRUE, TRUE); + ShowWindows(dataArray, TRUE, TRUE); } void sub_8035CF4(MenuStruct *menu, u32 index, bool8 a2) diff --git a/src/main_menu2.c b/src/main_menu2.c index f6d5d8a4d..26837cfe3 100644 --- a/src/main_menu2.c +++ b/src/main_menu2.c @@ -32,10 +32,10 @@ void DrawMainMenu(void) } for (i = 0; i < 4; i++) - sUnknown_203B34C->unk144.a0[i] = sUnknown_80E59C8; + sUnknown_203B34C->unk144.id[i] = sUnknown_80E59C8; ResetUnusedInputStruct(); - xxx_call_save_unk_text_struct_800641C(&sUnknown_203B34C->unk144, TRUE, TRUE); + ShowWindows(&sUnknown_203B34C->unk144, TRUE, TRUE); SetMainMenuItems(); sUnknown_203B34C->currMenuChoice = -1; @@ -49,7 +49,7 @@ void DrawMainMenu(void) void CleanMainMenu(void) { ResetUnusedInputStruct(); - xxx_call_save_unk_text_struct_800641C(NULL, TRUE, TRUE); + ShowWindows(NULL, TRUE, TRUE); if (sUnknown_203B34C != NULL) { MemoryFree(sUnknown_203B34C); diff --git a/src/makuhita_dojo1.c b/src/makuhita_dojo1.c index e2357fb9a..a4d430b09 100644 --- a/src/makuhita_dojo1.c +++ b/src/makuhita_dojo1.c @@ -41,7 +41,7 @@ bool8 MakuhitaDojo_New(u32 mode) u32 initialState; ResetUnusedInputStruct(); - xxx_call_save_unk_text_struct_800641C(NULL, TRUE, TRUE); + ShowWindows(NULL, TRUE, TRUE); sMakuhitaDojoWork1 = MemoryAlloc(sizeof(MakuhitaDojoWork1), 8); sMakuhitaDojoWork1->unk10 = -1; @@ -159,14 +159,14 @@ static void sub_802FF1C(void) case 4: case 13: for(index = 0; index < 4; index++) - sMakuhitaDojoWork1->unk6C.a0[index] = sUnknown_80E0760; + sMakuhitaDojoWork1->unk6C.id[index] = sUnknown_80E0760; break; default: break; } ResetUnusedInputStruct(); - xxx_call_save_unk_text_struct_800641C(&sMakuhitaDojoWork1->unk6C, TRUE, TRUE); + ShowWindows(&sMakuhitaDojoWork1->unk6C, TRUE, TRUE); } static void MakuhitaDojo_UpdateDialogue(void) diff --git a/src/makuhita_dojo2.c b/src/makuhita_dojo2.c index 3aed6c381..1eadac9ea 100644 --- a/src/makuhita_dojo2.c +++ b/src/makuhita_dojo2.c @@ -31,17 +31,17 @@ bool8 sub_80302E8(s32 param_1, DungeonPos *param_2, u32 param_3) sMakuhitaDojoWork2 = MemoryAlloc(sizeof(MakuhitaDojoWork2), 8); sMakuhitaDojoWork2->s30.s0.unk34 = param_1; - sMakuhitaDojoWork2->s30.s0.unk38 = &sMakuhitaDojoWork2->s30.s0.unk3C.a0[param_1]; - RestoreUnkTextStruct_8006518(&sMakuhitaDojoWork2->s30.s0.unk3C); - sMakuhitaDojoWork2->s30.s0.unk3C.a0[sMakuhitaDojoWork2->s30.s0.unk34] = sUnknown_80E0804; + sMakuhitaDojoWork2->s30.s0.unk38 = &sMakuhitaDojoWork2->s30.s0.windows.id[param_1]; + RestoreUnkTextStruct_8006518(&sMakuhitaDojoWork2->s30.s0.windows); + sMakuhitaDojoWork2->s30.s0.windows.id[sMakuhitaDojoWork2->s30.s0.unk34] = sUnknown_80E0804; sMakuhitaDojoWork2->s30.s0.unk38->unk14 = &sMakuhitaDojoWork2->s30.unk9C; if (param_2 != NULL) - sMakuhitaDojoWork2->s30.s0.unk3C.a0[sMakuhitaDojoWork2->s30.s0.unk34].pos = *param_2; + sMakuhitaDojoWork2->s30.s0.windows.id[sMakuhitaDojoWork2->s30.s0.unk34].pos = *param_2; sub_8012D08(sMakuhitaDojoWork2->s30.s0.unk38, param_3); ResetUnusedInputStruct(); - xxx_call_save_unk_text_struct_800641C(&sMakuhitaDojoWork2->s30.s0.unk3C, TRUE, TRUE); + ShowWindows(&sMakuhitaDojoWork2->s30.s0.windows, TRUE, TRUE); sub_8013818(&sMakuhitaDojoWork2->s30.s0.input, sub_8030668(), param_3, param_1); sub_80304C8(); MakuhitaDojo_DrawCourseList(); @@ -91,9 +91,9 @@ UNUSED static void sub_8030444(bool8 a0) void sub_8030480(void) { if (sMakuhitaDojoWork2 != NULL) { - sMakuhitaDojoWork2->s30.s0.unk3C.a0[sMakuhitaDojoWork2->s30.s0.unk34] = sUnknown_80E07EC; + sMakuhitaDojoWork2->s30.s0.windows.id[sMakuhitaDojoWork2->s30.s0.unk34] = sUnknown_80E07EC; ResetUnusedInputStruct(); - xxx_call_save_unk_text_struct_800641C(&sMakuhitaDojoWork2->s30.s0.unk3C, TRUE, TRUE); + ShowWindows(&sMakuhitaDojoWork2->s30.s0.windows, TRUE, TRUE); MemoryFree(sMakuhitaDojoWork2); sMakuhitaDojoWork2 = NULL; } diff --git a/src/menu_input.c b/src/menu_input.c index e418bf3c1..e933c3e84 100644 --- a/src/menu_input.c +++ b/src/menu_input.c @@ -397,7 +397,7 @@ void sub_8012EBC(MenuStruct *param_1) ptr_text = &gUnknown_2027370[index]; if (ptr_text->unkC == 6) { - ptr_text2 = &textStack.a0[index]; + ptr_text2 = &textStack.id[index]; RestoreUnkTextStruct_8006518(&textStack); x = sub_8008ED0(param_1->unk0); PrintFormattedStringOnWindow(((ptr_text2->unk14->f2 * 8 - x) / 2) + 8, 0, param_1->unk0, param_1->index, 0); @@ -1199,7 +1199,7 @@ void sub_80140B4(Windows *a0) for(i = 0; i < 4; i++) { - a0->a0[i] = gUnknown_80D47C8[i]; + a0->id[i] = gUnknown_80D47C8[i]; } } diff --git a/src/mission_reward.c b/src/mission_reward.c index af575043f..bddafef48 100644 --- a/src/mission_reward.c +++ b/src/mission_reward.c @@ -112,7 +112,7 @@ u32 sub_802F204(unkStruct_802F204 *r0, bool8 displayClientSprite) struct unkStruct_203B310 *preload; ResetUnusedInputStruct(); - xxx_call_save_unk_text_struct_800641C(NULL, TRUE, TRUE); + ShowWindows(NULL, TRUE, TRUE); gUnknown_203B310 = MemoryAlloc(sizeof(struct unkStruct_203B310), 8); gUnknown_203B310->unk10 = r0; gUnknown_203B310->itemRewardIndex = 0; @@ -183,10 +183,10 @@ void sub_802F300(void) RestoreUnkTextStruct_8006518(&gUnknown_203B310->unk24); for(index = 0; index < 4; index++) { - gUnknown_203B310->unk24.a0[index] = gUnknown_80E041C; + gUnknown_203B310->unk24.id[index] = gUnknown_80E041C; } ResetUnusedInputStruct(); - xxx_call_save_unk_text_struct_800641C(&gUnknown_203B310->unk24, TRUE, TRUE); + ShowWindows(&gUnknown_203B310->unk24, TRUE, TRUE); default: break; } diff --git a/src/options_menu1.c b/src/options_menu1.c index 64359721e..16be3d3b9 100644 --- a/src/options_menu1.c +++ b/src/options_menu1.c @@ -118,30 +118,30 @@ static void sub_801DD84(void) } for(i = 0; i < 4; i++) - sUnknown_203B25C->unkBC.a0[i] = sUnknown_80DBFB0; + sUnknown_203B25C->unkBC.id[i] = sUnknown_80DBFB0; - sUnknown_203B25C->unkBC.a0[0] = sUnknown_80DBFCC; - sub_8012CAC(&sUnknown_203B25C->unkBC.a0[0], sUnknown_203B25C->menuItems); - sUnknown_203B25C->unkBC.a0[0].width = 10; + sUnknown_203B25C->unkBC.id[0] = sUnknown_80DBFCC; + sub_8012CAC(&sUnknown_203B25C->unkBC.id[0], sUnknown_203B25C->menuItems); + sUnknown_203B25C->unkBC.id[0].width = 10; break; case OPTIONS_MENU_MAIN: CreateOthersMenu(); for (i = 0; i < 4; i++) - sUnknown_203B25C->unkBC.a0[i] = sUnknown_80DBFB0; + sUnknown_203B25C->unkBC.id[i] = sUnknown_80DBFB0; - sUnknown_203B25C->unkBC.a0[0] = sUnknown_80DBFCC; - sub_8012CAC(&sUnknown_203B25C->unkBC.a0[0], sUnknown_203B25C->menuItems); - sUnknown_203B25C->unkBC.a0[0].width = 10; + sUnknown_203B25C->unkBC.id[0] = sUnknown_80DBFCC; + sub_8012CAC(&sUnknown_203B25C->unkBC.id[0], sUnknown_203B25C->menuItems); + sUnknown_203B25C->unkBC.id[0].width = 10; break; default: for (i = 0; i < 4; i++) - sUnknown_203B25C->unkBC.a0[i] = sUnknown_80DBFB0; + sUnknown_203B25C->unkBC.id[i] = sUnknown_80DBFB0; break; } ResetUnusedInputStruct(); - xxx_call_save_unk_text_struct_800641C(&sUnknown_203B25C->unkBC, TRUE, TRUE); + ShowWindows(&sUnknown_203B25C->unkBC, TRUE, TRUE); } static void sub_801DED0(void) diff --git a/src/options_menu2.c b/src/options_menu2.c index d0a8d0211..7b72b4a49 100644 --- a/src/options_menu2.c +++ b/src/options_menu2.c @@ -22,12 +22,12 @@ bool8 sub_801E198(GameOptions *optionsMenu) sUnknown_203B260->optionsMenu = optionsMenu; sub_801317C(&sUnknown_203B260->unk4); sUnknown_203B260->unk44 = 0; - sUnknown_203B260->unk48 = &sUnknown_203B260->unk4C.a0[0]; + sUnknown_203B260->unk48 = &sUnknown_203B260->unk4C.id[0]; RestoreUnkTextStruct_8006518(&sUnknown_203B260->unk4C); - sUnknown_203B260->unk4C.a0[sUnknown_203B260->unk44] = sUnknown_80DC03C; + sUnknown_203B260->unk4C.id[sUnknown_203B260->unk44] = sUnknown_80DC03C; sub_8012D08(sUnknown_203B260->unk48, 1); ResetUnusedInputStruct(); - xxx_call_save_unk_text_struct_800641C(&sUnknown_203B260->unk4C, TRUE, TRUE); + ShowWindows(&sUnknown_203B260->unk4C, TRUE, TRUE); sub_8013818(&sUnknown_203B260->input, 1, 1, sUnknown_203B260->unk44); nullsub_38(); CreateOptionsMenu(); @@ -83,9 +83,9 @@ u32 sub_801E218(void) void sub_801E2C4(void) { if (sUnknown_203B260 != NULL) { - sUnknown_203B260->unk4C.a0[sUnknown_203B260->unk44] = sUnknown_80DC020; + sUnknown_203B260->unk4C.id[sUnknown_203B260->unk44] = sUnknown_80DC020; ResetUnusedInputStruct(); - xxx_call_save_unk_text_struct_800641C(&sUnknown_203B260->unk4C, TRUE, TRUE); + ShowWindows(&sUnknown_203B260->unk4C, TRUE, TRUE); MemoryFree(sUnknown_203B260); sUnknown_203B260 = NULL; } diff --git a/src/other_menus1.c b/src/other_menus1.c index 13260361d..9c3b97911 100644 --- a/src/other_menus1.c +++ b/src/other_menus1.c @@ -36,7 +36,7 @@ void sub_8036FDC(s32 param_1) s32 index2; ResetUnusedInputStruct(); - xxx_call_save_unk_text_struct_800641C(NULL, TRUE, TRUE); + ShowWindows(NULL, TRUE, TRUE); ResetSprites(FALSE); if (sUnknown_203B35C == NULL) { @@ -54,10 +54,10 @@ void sub_8036FDC(s32 param_1) } for (index2 = 0; index2 < 4; index2++) - sUnknown_203B35C->unk15C.a0[index2] = sUnknown_80E653C; + sUnknown_203B35C->unk15C.id[index2] = sUnknown_80E653C; ResetUnusedInputStruct(); - xxx_call_save_unk_text_struct_800641C(&sUnknown_203B35C->unk15C, TRUE, TRUE); + ShowWindows(&sUnknown_203B35C->unk15C, TRUE, TRUE); SetMenuItems(sUnknown_203B35C->unk1C, &sUnknown_203B35C->unk15C, 0, &sUnknown_80E6CD0, sUnknown_80E6CE8, FALSE, 6, FALSE); sub_8035CF4(sUnknown_203B35C->unk1C, 0, TRUE); sub_80376CC(); diff --git a/src/party_list_menu.c b/src/party_list_menu.c index a76a1551e..1e034dbd2 100644 --- a/src/party_list_menu.c +++ b/src/party_list_menu.c @@ -164,29 +164,29 @@ static void sub_802608C(void) case PARTY_LIST_STATE_MAIN_MENU_1: for(index = 0; index < 4; index++) { - sUnknown_203B2B8->unk220.a0[index] = sUnknown_80DD310; + sUnknown_203B2B8->unk220.id[index] = sUnknown_80DD310; } - sUnknown_203B2B8->unk220.a0[0] = sUnknown_80DD358; - sUnknown_203B2B8->unk220.a0[3] = sUnknown_80DD370; + sUnknown_203B2B8->unk220.id[0] = sUnknown_80DD358; + sUnknown_203B2B8->unk220.id[3] = sUnknown_80DD370; PartyListMenu_CreateMenu1(); - sUnknown_203B2B8->unk220.a0[2] = sUnknown_80DD328; - sub_8012CAC(&sUnknown_203B2B8->unk220.a0[2], sUnknown_203B2B8->unk16C); - sUnknown_203B2B8->unk220.a0[2].width = 9; + sUnknown_203B2B8->unk220.id[2] = sUnknown_80DD328; + sub_8012CAC(&sUnknown_203B2B8->unk220.id[2], sUnknown_203B2B8->unk16C); + sUnknown_203B2B8->unk220.id[2].width = 9; break; case 0x14: PartyListMenu_CreateMenu2(); - sUnknown_203B2B8->unk220.a0[2] = sUnknown_80DD340; - sub_8012CAC(&sUnknown_203B2B8->unk220.a0[2], sUnknown_203B2B8->unk16C); + sUnknown_203B2B8->unk220.id[2] = sUnknown_80DD340; + sub_8012CAC(&sUnknown_203B2B8->unk220.id[2], sUnknown_203B2B8->unk16C); break; default: for(index = 0; index < 4; index++) { - sUnknown_203B2B8->unk220.a0[index] = sUnknown_80DD310; + sUnknown_203B2B8->unk220.id[index] = sUnknown_80DD310; } break; } ResetUnusedInputStruct(); - xxx_call_save_unk_text_struct_800641C(&sUnknown_203B2B8->unk220, TRUE, TRUE); + ShowWindows(&sUnknown_203B2B8->unk220, TRUE, TRUE); } void HandlePartyListMenuCallback(void) diff --git a/src/pelipper_board.c b/src/pelipper_board.c index a02fc1385..af0b9e876 100644 --- a/src/pelipper_board.c +++ b/src/pelipper_board.c @@ -151,28 +151,28 @@ void sub_802E94C(void) case MAIN_PELIPPER_BOARD_MENU: for(index = 0; index < 4; index++) { - gPelipperBoard->unk10C.a0[index] = gUnknown_80E0330; + gPelipperBoard->unk10C.id[index] = gUnknown_80E0330; } CreatePelipperBoardMenu(); - gPelipperBoard->unk10C.a0[2] = gUnknown_80E0348; - sub_8012CAC(&gPelipperBoard->unk10C.a0[2], gPelipperBoard->menuItems); + gPelipperBoard->unk10C.id[2] = gUnknown_80E0348; + sub_8012CAC(&gPelipperBoard->unk10C.id[2], gPelipperBoard->menuItems); break; case 6: sub_802EC10(); - gPelipperBoard->unk10C.a0[2] = gUnknown_80E0360; - sub_8012CAC(&gPelipperBoard->unk10C.a0[2], gPelipperBoard->menuItems); - gPelipperBoard->unk10C.a0[2].width = 6; - gPelipperBoard->unk10C.a0[3] = gUnknown_80E0378; + gPelipperBoard->unk10C.id[2] = gUnknown_80E0360; + sub_8012CAC(&gPelipperBoard->unk10C.id[2], gPelipperBoard->menuItems); + gPelipperBoard->unk10C.id[2].width = 6; + gPelipperBoard->unk10C.id[3] = gUnknown_80E0378; break; default: for(index = 0; index < 4; index++) { - gPelipperBoard->unk10C.a0[index] = gUnknown_80E0330; + gPelipperBoard->unk10C.id[index] = gUnknown_80E0330; } break; } ResetUnusedInputStruct(); - xxx_call_save_unk_text_struct_800641C(&gPelipperBoard->unk10C, TRUE, TRUE); + ShowWindows(&gPelipperBoard->unk10C, TRUE, TRUE); } void sub_802EA58(void) diff --git a/src/personality_test1.c b/src/personality_test1.c index ced2ed640..8eed940c8 100644 --- a/src/personality_test1.c +++ b/src/personality_test1.c @@ -390,9 +390,9 @@ static void PersonalityTest_DisplayStarterSprite(void) starterID = sPersonalityTestTracker->unk4.StarterID; RestoreUnkTextStruct_8006518(&stackArray); - stackArray.a0[1] = sUnknown_80F4244; + stackArray.id[1] = sUnknown_80F4244; ResetUnusedInputStruct(); - xxx_call_save_unk_text_struct_800641C(&stackArray, TRUE, FALSE); + ShowWindows(&stackArray, TRUE, FALSE); CallPrepareTextbox_8008C54(1); sub_80073B8(1); diff --git a/src/personality_test2.c b/src/personality_test2.c index 04118b551..8f6bfadd0 100644 --- a/src/personality_test2.c +++ b/src/personality_test2.c @@ -33,12 +33,12 @@ void CreatePartnerSelectionMenu(s16 starterID) sub_803CEAC(); gUnknown_203B404->StarterID = starterID_s32; gUnknown_203B404->s18.s0.unk34 = 0; - gUnknown_203B404->s18.s0.unk38 = &gUnknown_203B404->s18.s0.unk3C.a0[0]; + gUnknown_203B404->s18.s0.unk38 = &gUnknown_203B404->s18.s0.windows.id[0]; - gUnknown_203B404->s18.s0.unk3C.a0[0] = gUnknown_80F4290; - gUnknown_203B404->s18.s0.unk3C.a0[1] = gUnknown_80F42A8; - gUnknown_203B404->s18.s0.unk3C.a0[2] = gUnknown_80F4278; - gUnknown_203B404->s18.s0.unk3C.a0[3] = gUnknown_80F4278; + gUnknown_203B404->s18.s0.windows.id[0] = gUnknown_80F4290; + gUnknown_203B404->s18.s0.windows.id[1] = gUnknown_80F42A8; + gUnknown_203B404->s18.s0.windows.id[2] = gUnknown_80F4278; + gUnknown_203B404->s18.s0.windows.id[3] = gUnknown_80F4278; gUnknown_203B404->s18.s0.unk38->unk14 = &gUnknown_203B404->s18.unk9C; @@ -47,7 +47,7 @@ void CreatePartnerSelectionMenu(s16 starterID) gUnknown_203B404->s18.unk9C.f2 = 6; gUnknown_203B404->s18.unk9C.f3 = 0; ResetUnusedInputStruct(); - xxx_call_save_unk_text_struct_800641C(&gUnknown_203B404->s18.s0.unk3C, TRUE, TRUE); + ShowWindows(&gUnknown_203B404->s18.s0.windows, TRUE, TRUE); sub_8013818(&gUnknown_203B404->s18.s0.input, GetValidPartners(), 10, gUnknown_203B404->s18.s0.unk34); RedrawPartnerSelectionMenu(); PersonalityTest_DisplayPartnerSprite(); @@ -90,9 +90,9 @@ UNUSED static void sub_803CE34(bool8 cursorSprite) void sub_803CE6C(void) { - gUnknown_203B404->s18.s0.unk3C.a0[gUnknown_203B404->s18.s0.unk34] = gUnknown_80F4278; + gUnknown_203B404->s18.s0.windows.id[gUnknown_203B404->s18.s0.unk34] = gUnknown_80F4278; ResetUnusedInputStruct(); - xxx_call_save_unk_text_struct_800641C(&gUnknown_203B404->s18.s0.unk3C, TRUE, TRUE); + ShowWindows(&gUnknown_203B404->s18.s0.windows, TRUE, TRUE); sub_803CECC(); } diff --git a/src/pokemon_news1.c b/src/pokemon_news1.c index d2bb8ef6d..d06398eb0 100644 --- a/src/pokemon_news1.c +++ b/src/pokemon_news1.c @@ -32,18 +32,18 @@ bool8 sub_802B640(u32 a0, DungeonPos *a1, u32 a2) sUnknown_203B2CC = MemoryAlloc(sizeof(struct unkStruct_203B2CC), 8); sUnknown_203B2CC->s38.unk34 = a0; - sUnknown_203B2CC->s38.unk38 = &sUnknown_203B2CC->s38.unk3C.a0[a0]; + sUnknown_203B2CC->s38.unk38 = &sUnknown_203B2CC->s38.windows.id[a0]; - RestoreUnkTextStruct_8006518(&sUnknown_203B2CC->s38.unk3C); + RestoreUnkTextStruct_8006518(&sUnknown_203B2CC->s38.windows); - sUnknown_203B2CC->s38.unk3C.a0[sUnknown_203B2CC->s38.unk34] = sUnknown_80DFBEC; + sUnknown_203B2CC->s38.windows.id[sUnknown_203B2CC->s38.unk34] = sUnknown_80DFBEC; if (a1 != NULL) - sUnknown_203B2CC->s38.unk3C.a0[sUnknown_203B2CC->s38.unk34].pos = *a1; + sUnknown_203B2CC->s38.windows.id[sUnknown_203B2CC->s38.unk34].pos = *a1; sub_8012D08(sUnknown_203B2CC->s38.unk38, a2); ResetUnusedInputStruct(); - xxx_call_save_unk_text_struct_800641C(&sUnknown_203B2CC->s38.unk3C, TRUE, TRUE); + ShowWindows(&sUnknown_203B2CC->s38.windows, TRUE, TRUE); sub_8013818(&sUnknown_203B2CC->s38.input, GetNumPKMNNews(), a2, a0); @@ -92,7 +92,7 @@ u8 GetPokemonNewsIndex(void) void sub_802B7D0(bool8 cursorSprite) { ResetUnusedInputStruct(); - xxx_call_save_unk_text_struct_800641C(&sUnknown_203B2CC->s38.unk3C, FALSE, FALSE); + ShowWindows(&sUnknown_203B2CC->s38.windows, FALSE, FALSE); sUnknown_203B2CC->s38.input.unk22 = GetNumPKMNNews(); sub_8013984(&sUnknown_203B2CC->s38.input); @@ -110,10 +110,10 @@ void sub_802B81C(void) sUnknown_203B2D2 = sUnknown_203B2CC->s38.input.unk1E; - sUnknown_203B2CC->s38.unk3C.a0[sUnknown_203B2CC->s38.unk34] = sUnknown_80DFBD0; + sUnknown_203B2CC->s38.windows.id[sUnknown_203B2CC->s38.unk34] = sUnknown_80DFBD0; ResetUnusedInputStruct(); - xxx_call_save_unk_text_struct_800641C(&sUnknown_203B2CC->s38.unk3C, TRUE, TRUE); + ShowWindows(&sUnknown_203B2CC->s38.windows, TRUE, TRUE); MemoryFree(sUnknown_203B2CC); sUnknown_203B2CC = NULL; diff --git a/src/pokemon_news2.c b/src/pokemon_news2.c index 76058ec60..c7c1db65a 100644 --- a/src/pokemon_news2.c +++ b/src/pokemon_news2.c @@ -27,12 +27,12 @@ bool8 sub_802B9FC(u8 mailIndex) sUnknown_203B2D4->currMailIndex = mailIndex; sub_801317C(&sUnknown_203B2D4->unk88); sUnknown_203B2D4->unk24 = 0; - sUnknown_203B2D4->unk28.a0[0] = sUnknown_80DFC34; - sUnknown_203B2D4->unk28.a0[1] = sUnknown_80DFC18; - sUnknown_203B2D4->unk28.a0[2] = sUnknown_80DFC18; - sUnknown_203B2D4->unk28.a0[3] = sUnknown_80DFC18; + sUnknown_203B2D4->unk28.id[0] = sUnknown_80DFC34; + sUnknown_203B2D4->unk28.id[1] = sUnknown_80DFC18; + sUnknown_203B2D4->unk28.id[2] = sUnknown_80DFC18; + sUnknown_203B2D4->unk28.id[3] = sUnknown_80DFC18; ResetUnusedInputStruct(); - xxx_call_save_unk_text_struct_800641C(&sUnknown_203B2D4->unk28, TRUE, TRUE); + ShowWindows(&sUnknown_203B2D4->unk28, TRUE, TRUE); sUnknown_203B2D4->unk8 = 0; sub_802BCC4(); sub_802BC7C(); @@ -62,9 +62,9 @@ u32 sub_802BA8C(void) void sub_802BACC(void) { if (sUnknown_203B2D4 != NULL) { - sUnknown_203B2D4->unk28.a0[sUnknown_203B2D4->unk24] = sUnknown_80DFC18; + sUnknown_203B2D4->unk28.id[sUnknown_203B2D4->unk24] = sUnknown_80DFC18; ResetUnusedInputStruct(); - xxx_call_save_unk_text_struct_800641C(&sUnknown_203B2D4->unk28, TRUE, TRUE); + ShowWindows(&sUnknown_203B2D4->unk28, TRUE, TRUE); MemoryFree(sUnknown_203B2D4); sUnknown_203B2D4 = NULL; } diff --git a/src/pokemon_news3.c b/src/pokemon_news3.c index a3cdc8148..1c3bec43e 100644 --- a/src/pokemon_news3.c +++ b/src/pokemon_news3.c @@ -35,17 +35,17 @@ bool8 sub_802BD14(s32 a0, DungeonPos *a1, u32 a2) sUnknown_203B2D8 = MemoryAlloc(sizeof(struct unkStruct_203B2D8), 8); sUnknown_203B2D8->unk4.s0.unk34 = a0; - sUnknown_203B2D8->unk4.s0.unk38 = &sUnknown_203B2D8->unk4.s0.unk3C.a0[a0]; - RestoreUnkTextStruct_8006518(&sUnknown_203B2D8->unk4.s0.unk3C); - sUnknown_203B2D8->unk4.s0.unk3C.a0[sUnknown_203B2D8->unk4.s0.unk34] = sUnknown_80DFC74; + sUnknown_203B2D8->unk4.s0.unk38 = &sUnknown_203B2D8->unk4.s0.windows.id[a0]; + RestoreUnkTextStruct_8006518(&sUnknown_203B2D8->unk4.s0.windows); + sUnknown_203B2D8->unk4.s0.windows.id[sUnknown_203B2D8->unk4.s0.unk34] = sUnknown_80DFC74; sUnknown_203B2D8->unk4.s0.unk38->unk14 = &sUnknown_203B2D8->unk4.unk9C; if (a1 != NULL) - sUnknown_203B2D8->unk4.s0.unk3C.a0[sUnknown_203B2D8->unk4.s0.unk34].pos = *a1; + sUnknown_203B2D8->unk4.s0.windows.id[sUnknown_203B2D8->unk4.s0.unk34].pos = *a1; sub_8012D34(sUnknown_203B2D8->unk4.s0.unk38, a2); ResetUnusedInputStruct(); - xxx_call_save_unk_text_struct_800641C(&sUnknown_203B2D8->unk4.s0.unk3C, TRUE, TRUE); + ShowWindows(&sUnknown_203B2D8->unk4.s0.windows, TRUE, TRUE); sub_8013848(&sUnknown_203B2D8->unk4.s0.input, CountEmptyMailSlots(), a2, a0); sUnknown_203B2D8->unk4.s0.input.menuIndex = sUnknown_203B2DC; sub_8013984(&sUnknown_203B2D8->unk4.s0.input); @@ -89,7 +89,7 @@ u8 sub_802BE74(void) void sub_802BE94(bool8 cursorSprite) { ResetUnusedInputStruct(); - xxx_call_save_unk_text_struct_800641C(&sUnknown_203B2D8->unk4.s0.unk3C, FALSE, FALSE); + ShowWindows(&sUnknown_203B2D8->unk4.s0.windows, FALSE, FALSE); sUnknown_203B2D8->unk4.s0.input.unk22 = CountEmptyMailSlots(); sub_8013984(&sUnknown_203B2D8->unk4.s0.input); @@ -104,9 +104,9 @@ void sub_802BEDC(void) { if (sUnknown_203B2D8 != NULL) { sUnknown_203B2DC = sUnknown_203B2D8->unk4.s0.input.menuIndex; - sUnknown_203B2D8->unk4.s0.unk3C.a0[sUnknown_203B2D8->unk4.s0.unk34] = sUnknown_80DFC5C; + sUnknown_203B2D8->unk4.s0.windows.id[sUnknown_203B2D8->unk4.s0.unk34] = sUnknown_80DFC5C; ResetUnusedInputStruct(); - xxx_call_save_unk_text_struct_800641C(&sUnknown_203B2D8->unk4.s0.unk3C, TRUE, TRUE); + ShowWindows(&sUnknown_203B2D8->unk4.s0.windows, TRUE, TRUE); MemoryFree(sUnknown_203B2D8); sUnknown_203B2D8 = NULL; } diff --git a/src/post_office_guide1.c b/src/post_office_guide1.c index 76f5cd9ea..d86dcbc8d 100644 --- a/src/post_office_guide1.c +++ b/src/post_office_guide1.c @@ -46,7 +46,7 @@ bool8 CreateHelperPelipperMenu(s16 speciesID) species_32 = SpeciesId(speciesID); ResetUnusedInputStruct(); - xxx_call_save_unk_text_struct_800641C(NULL, TRUE, TRUE); + ShowWindows(NULL, TRUE, TRUE); sPostOfficeHelper = MemoryAlloc(sizeof(PostOfficeWork), 8); CopyYellowMonsterNametoBuffer(gSpeakerNameBuffer, species_32); diff --git a/src/post_office_guide2.c b/src/post_office_guide2.c index e18bf5efa..fdac9a4d0 100644 --- a/src/post_office_guide2.c +++ b/src/post_office_guide2.c @@ -37,7 +37,7 @@ bool8 sub_80319A4(u8 param_1, u8 dungeon, s32 param_3) sUnknown_203B330->dungeonIndex = dungeon; sub_801317C(&sUnknown_203B330->input); sUnknown_203B330->unk10 = param_3; - sUnknown_203B330->unk14 = &sUnknown_203B330->unk18.a0[param_3]; + sUnknown_203B330->unk14 = &sUnknown_203B330->unk18.id[param_3]; sub_8031A2C(); return TRUE; } @@ -65,9 +65,9 @@ static void sub_8031A2C(void) void sub_8031A3C(void) { if (sUnknown_203B330 != NULL) { - sUnknown_203B330->unk18.a0[sUnknown_203B330->unk10] = sUnknown_80E1EFC; + sUnknown_203B330->unk18.id[sUnknown_203B330->unk10] = sUnknown_80E1EFC; ResetUnusedInputStruct(); - xxx_call_save_unk_text_struct_800641C(&sUnknown_203B330->unk18, TRUE, TRUE); + ShowWindows(&sUnknown_203B330->unk18, TRUE, TRUE); MemoryFree(sUnknown_203B330); sUnknown_203B330 = NULL; } @@ -78,7 +78,7 @@ static void sub_8031A84(void) s32 jobs; RestoreUnkTextStruct_8006518(&sUnknown_203B330->unk18); - sUnknown_203B330->unk18.a0[sUnknown_203B330->unk10] = sUnknown_80E1F18; + sUnknown_203B330->unk18.id[sUnknown_203B330->unk10] = sUnknown_80E1F18; if (sUnknown_203B330->unkC == 2) { jobs = CountJobsinDungeon(sUnknown_203B330->dungeonIndex); @@ -89,7 +89,7 @@ static void sub_8031A84(void) } ResetUnusedInputStruct(); - xxx_call_save_unk_text_struct_800641C(&sUnknown_203B330->unk18, TRUE, TRUE); + ShowWindows(&sUnknown_203B330->unk18, TRUE, TRUE); } static void DisplayMissionObjectives(void) diff --git a/src/rescue_password_menu.c b/src/rescue_password_menu.c index ec01dfef8..dea714a32 100644 --- a/src/rescue_password_menu.c +++ b/src/rescue_password_menu.c @@ -265,10 +265,10 @@ void CreateRescuePasswordMenu(u32 currMenu) } for(counter = 0; counter < 4; counter++) - gRescuePasswordMenu->unk148.a0[counter] = gUnknown_80E71E4; + gRescuePasswordMenu->unk148.id[counter] = gUnknown_80E71E4; ResetUnusedInputStruct(); - xxx_call_save_unk_text_struct_800641C(&gRescuePasswordMenu->unk148, TRUE, TRUE); + ShowWindows(&gRescuePasswordMenu->unk148, TRUE, TRUE); if ((gUnknown_203B368 != 0) || (gUnknown_203B36C != currMenu)) { for(counter = 0; counter < RESCUE_PASSWORD_SIZE; counter++) @@ -313,7 +313,7 @@ void CleanRescuePasswordMenu(void) { ResetUnusedInputStruct(); - xxx_call_save_unk_text_struct_800641C(NULL, TRUE, TRUE); + ShowWindows(NULL, TRUE, TRUE); if (gRescuePasswordMenu != NULL) { sub_80155F0(); sub_8031E10(); @@ -494,7 +494,7 @@ s32 UpdateRescuePasswordMenu(void) case 0xC: sub_8039174(); ResetUnusedInputStruct(); - xxx_call_save_unk_text_struct_800641C(NULL, TRUE, TRUE); + ShowWindows(NULL, TRUE, TRUE); sub_80151C0(4,gRescuePasswordBuffer); gRescuePasswordMenu->state = 8; subtract = gRescuePasswordMenu->currMenu - 0x21; @@ -522,7 +522,7 @@ s32 UpdateRescuePasswordMenu(void) case 0xC: sub_8039174(); ResetUnusedInputStruct(); - xxx_call_save_unk_text_struct_800641C(NULL, TRUE, TRUE); + ShowWindows(NULL, TRUE, TRUE); sub_80151C0(4,gRescuePasswordBuffer); gRescuePasswordMenu->state = ConvertMenutoRescuePasswordState(gRescuePasswordMenu->currMenu); subtract = gRescuePasswordMenu->currMenu - 0x21; @@ -545,7 +545,7 @@ void DisplayRescuePasswordError(u32 passwordError) { RestoreUnkTextStruct_8006518(&gRescuePasswordMenu->unk1A8); ResetUnusedInputStruct(); - xxx_call_save_unk_text_struct_800641C(NULL, TRUE, TRUE); + ShowWindows(NULL, TRUE, TRUE); sub_80155F0(); switch(passwordError) { case PASSWORD_ENTRY_INCORRECT_PASSWORD: @@ -585,7 +585,7 @@ void DisplayPasswordAcceptScreen(void) { RestoreUnkTextStruct_8006518(&gRescuePasswordMenu->unk1A8); ResetUnusedInputStruct(); - xxx_call_save_unk_text_struct_800641C(NULL, TRUE, TRUE); + ShowWindows(NULL, TRUE, TRUE); sub_80155F0(); SetMenuItems(gRescuePasswordMenu->unk8,&gRescuePasswordMenu->unk148,0,&gUnknown_80E7278,gUnknown_80E7290,FALSE,13,FALSE); sub_8035CF4(gRescuePasswordMenu->unk8,0,TRUE); diff --git a/src/save_menu.c b/src/save_menu.c index 3e2348452..a8fbe4548 100644 --- a/src/save_menu.c +++ b/src/save_menu.c @@ -130,10 +130,10 @@ void CreateSaveMenu(s32 currMenu) MemoryFill8(sUnknown_203B364,0,sizeof(SaveMenuWork)); } for(index = 0; index < 4; index++){ - sUnknown_203B364->unk148.a0[index] = gUnknown_80E6F20; + sUnknown_203B364->unk148.id[index] = gUnknown_80E6F20; } ResetUnusedInputStruct(); - xxx_call_save_unk_text_struct_800641C(&sUnknown_203B364->unk148, TRUE, TRUE); + ShowWindows(&sUnknown_203B364->unk148, TRUE, TRUE); if (currMenu == MENU_DELETE_SAVE) { // Beware, Deleting your Adventure @@ -154,7 +154,7 @@ void CreateSaveMenu(s32 currMenu) void CleanSaveMenu(void) { ResetUnusedInputStruct(); - xxx_call_save_unk_text_struct_800641C(NULL, TRUE, TRUE); + ShowWindows(NULL, TRUE, TRUE); if (sUnknown_203B364 != NULL) { MemoryFree(sUnknown_203B364); sUnknown_203B364 = NULL; diff --git a/src/string_format.c b/src/string_format.c index 881586285..7497d51f7 100644 --- a/src/string_format.c +++ b/src/string_format.c @@ -158,7 +158,7 @@ static UNUSED EWRAM_DATA u8 sUnusedEwram1[4] = {0}; static EWRAM_DATA MenuInputStructSub gUnknown_202EC28 = {0}; static EWRAM_INIT Windows sUnknown_203B198 = { - .a0 = { + .id = { [0] = { .pos = {2, 15}, .width = 26, @@ -227,41 +227,41 @@ void CreateMenuDialogueBoxAndPortrait(const u8 *text, void *a1, u32 r9, const Me gUnknown_202EC1C = r9; sub_801317C(&gUnknown_202EC28); if (flags & 0x10) { - sUnknown_203B198.a0[0] = gUnknown_80D48DC; + sUnknown_203B198.id[0] = gUnknown_80D48DC; } else { - sUnknown_203B198.a0[0] = gUnknown_80D48C4; + sUnknown_203B198.id[0] = gUnknown_80D48C4; } - sUnknown_203B198.a0[1].width = 0; - sUnknown_203B198.a0[1].height = 0; - sUnknown_203B198.a0[1].unk10 = 0; - sUnknown_203B198.a0[1].unk0 = 0x40; + sUnknown_203B198.id[1].width = 0; + sUnknown_203B198.id[1].height = 0; + sUnknown_203B198.id[1].unk10 = 0; + sUnknown_203B198.id[1].unk0 = 0x40; if (monPortraitPtr != NULL && monPortraitPtr->faceData != NULL && monPortraitPtr->faceData->sprites[monPortraitPtr->spriteId].gfx != 0) { s32 i; - sUnknown_203B198.a0[1].pos.x = monPortraitPtr->pos.x; - sUnknown_203B198.a0[1].pos.y = monPortraitPtr->pos.y; - sUnknown_203B198.a0[1].width = 5; - sUnknown_203B198.a0[1].height = 5; - sUnknown_203B198.a0[1].unk10 = 5; + sUnknown_203B198.id[1].pos.x = monPortraitPtr->pos.x; + sUnknown_203B198.id[1].pos.y = monPortraitPtr->pos.y; + sUnknown_203B198.id[1].width = 5; + sUnknown_203B198.id[1].height = 5; + sUnknown_203B198.id[1].unk10 = 5; for (i = 0; i < 16; i++) { SetBGPaletteBufferColorArray(224 + i, &monPortraitPtr->faceData->sprites[monPortraitPtr->spriteId].pal[i]); } portraitOn = TRUE; if (monPortraitPtr->unkE) { - sUnknown_203B198.a0[1].type = WINDOW_TYPE_7; + sUnknown_203B198.id[1].type = WINDOW_TYPE_7; } else { - sUnknown_203B198.a0[1].type = WINDOW_TYPE_FILL_TRANSPARENT; + sUnknown_203B198.id[1].type = WINDOW_TYPE_FILL_TRANSPARENT; } } - sUnknown_203B198.a0[2] = gUnknown_80D48AC; - sUnknown_203B198.a0[3] = gUnknown_80D48AC; + sUnknown_203B198.id[2] = gUnknown_80D48AC; + sUnknown_203B198.id[3] = gUnknown_80D48AC; ResetUnusedInputStruct(); - xxx_call_save_unk_text_struct_800641C(&sUnknown_203B198, TRUE, TRUE); + ShowWindows(&sUnknown_203B198, TRUE, TRUE); gUnknown_202E748.unk0 = 4; gUnknown_202E748.unk2 = 4; gUnknown_202E748.unk8 = 0x70; @@ -563,7 +563,7 @@ void DrawDialogueBoxString(void) case 11: { if (sUnknownTextFlags & 0x200) { ResetUnusedInputStruct(); - xxx_call_save_unk_text_struct_800641C(NULL, TRUE, TRUE); + ShowWindows(NULL, TRUE, TRUE); gUnknown_202E744 = 0; } else { @@ -621,21 +621,21 @@ static void sub_8014A88(void) if (r5 % 8) r2++; - sUnknown_203B198.a0[2].type = gUnknown_202EC10; + sUnknown_203B198.id[2].type = gUnknown_202EC10; r1 = r7 / 8; r1 += 2; - sUnknown_203B198.a0[2].width = r1; - sUnknown_203B198.a0[2].unk10 = r2; - sUnknown_203B198.a0[2].height = r2; - sUnknown_203B198.a0[2].pos.x = 28 - r1; - sUnknown_203B198.a0[2].pos.y = 14 - r2; - sUnknown_203B198.a0[0].unk0 = 0x80; - sUnknown_203B198.a0[1].unk0 = 0xC0; + sUnknown_203B198.id[2].width = r1; + sUnknown_203B198.id[2].unk10 = r2; + sUnknown_203B198.id[2].height = r2; + sUnknown_203B198.id[2].pos.x = 28 - r1; + sUnknown_203B198.id[2].pos.y = 14 - r2; + sUnknown_203B198.id[0].unk0 = 0x80; + sUnknown_203B198.id[1].unk0 = 0xC0; if (sNeverWrittenToUnknownStructPtr != NULL) { - sUnknown_203B198.a0[3] = sNeverWrittenToUnknownStructPtr->unk0; + sUnknown_203B198.id[3] = sNeverWrittenToUnknownStructPtr->unk0; } ResetUnusedInputStruct(); - xxx_call_save_unk_text_struct_800641C(&sUnknown_203B198, TRUE, FALSE); + ShowWindows(&sUnknown_203B198, TRUE, FALSE); sub_8012D60(&gUnknown_202EBC0, sDialogueMenuItems, gUnknown_80D48A0, gUnknown_202EC18, gUnknown_202EC1C, 2); if (sNeverWrittenToUnknownStructPtr != NULL) { sub_80073B8(3); diff --git a/src/text.c b/src/text.c index 526b1261d..9720d76b0 100644 --- a/src/text.c +++ b/src/text.c @@ -113,9 +113,9 @@ static const u32 gUnknown_80B853C[16] = 0xEEEEEEEE, }; -static const Windows gUnknown_80B857C = +static const Windows sDummyWindows = { - .a0 = { + .id = { [0] = {.type = WINDOW_TYPE_NORMAL}, [1] = {.type = WINDOW_TYPE_NORMAL}, [2] = {.type = WINDOW_TYPE_NORMAL}, @@ -275,10 +275,10 @@ void SetCharacterMask(int a0) sTextShadowMask = retval; } -void xxx_call_save_unk_text_struct_800641C(const Windows *a0, bool8 a1, bool8 a2) +void ShowWindows(const Windows *windows, bool8 a1, bool8 a2) { - DungeonPos r3 = {0, 0}; - SaveUnkTextStructAndXXX_8006438(a0, a1, a2, &r3); + DungeonPos positionModifier = {0, 0}; + SaveUnkTextStructAndXXX_8006438(windows, a1, a2, &positionModifier); } // https://decomp.me/scratch/xF5Y1 @@ -290,19 +290,19 @@ static void SaveUnkTextStructAndXXX_8006438(const Windows *a0, bool8 a1, bool8 a r9 = 2; if (a0 == NULL) - a0 = &gUnknown_80B857C; + a0 = &sDummyWindows; if (a2) sub_8009388(); sub_800898C(); for (i = 0; i < 4; i++) { - sUnknown_202AFC0.a0[i] = a0->a0[i]; + sUnknown_202AFC0.id[i] = a0->id[i]; - if (a0->a0[i].width) { - sub_8006554(gUnknown_2027370, (u32 *)VRAM, sUnknown_20274B4, &gUnknown_202B038[0][0][0], gUnknown_80B8804[i], &a0->a0[i], a1, r9, a3, 0); - sub_80089AC(&a0->a0[i], a3); - r9 += a0->a0[i].width * a0->a0[i].unk10; + if (a0->id[i].width) { + sub_8006554(gUnknown_2027370, (u32 *)VRAM, sUnknown_20274B4, &gUnknown_202B038[0][0][0], gUnknown_80B8804[i], &a0->id[i], a1, r9, a3, 0); + sub_80089AC(&a0->id[i], a3); + r9 += a0->id[i].width * a0->id[i].unk10; } } @@ -323,7 +323,7 @@ void RestoreUnkTextStruct_8006518(Windows *unkData) { s32 i; for (i = 0; i < 4; i++) - unkData->a0[i] = sUnknown_202AFC0.a0[i]; + unkData->id[i] = sUnknown_202AFC0.id[i]; } UNUSED static void nullsub_153(void) diff --git a/src/thank_you_wonder_mail.c b/src/thank_you_wonder_mail.c index ba974be9e..f2e4f5667 100644 --- a/src/thank_you_wonder_mail.c +++ b/src/thank_you_wonder_mail.c @@ -237,7 +237,7 @@ u32 CreateThankYouMailPelipper(void) unkStruct_203B480 *mail; ResetUnusedInputStruct(); - xxx_call_save_unk_text_struct_800641C(NULL, TRUE, TRUE); + ShowWindows(NULL, TRUE, TRUE); sUnknown_203B2C4 = MemoryAlloc(sizeof(WonderMailStruct_203B2C4), 8); MemoryFill8(sUnknown_203B2C4, 0, sizeof(WonderMailStruct_203B2C4)); @@ -525,7 +525,7 @@ void sub_802A050(void) case 2: sub_8031E10(); ResetUnusedInputStruct(); - xxx_call_save_unk_text_struct_800641C(&sUnknown_203B2C4->unk3BC, TRUE, TRUE); + ShowWindows(&sUnknown_203B2C4->unk3BC, TRUE, TRUE); SetThankYouMailMenuState(0x1B); break; case 1: @@ -573,7 +573,7 @@ void sub_802A0C8(void) sUnknown_203B2C4->mailIndex = sub_80307EC(); RestoreUnkTextStruct_8006518(&sUnknown_203B2C4->unk3BC); ResetUnusedInputStruct(); - xxx_call_save_unk_text_struct_800641C(NULL, TRUE, TRUE); + ShowWindows(NULL, TRUE, TRUE); sub_8030D40(sUnknown_203B2C4->mailIndex,0); SetThankYouMailMenuState(0x12); break; @@ -609,7 +609,7 @@ void sub_802A174(void) sUnknown_203B2C4->fallbackState = 0x2b; RestoreUnkTextStruct_8006518(&sUnknown_203B2C4->unk3BC); ResetUnusedInputStruct(); - xxx_call_save_unk_text_struct_800641C(NULL, TRUE, TRUE); + ShowWindows(NULL, TRUE, TRUE); sub_8030D40(sUnknown_203B2C4->mailIndex,0); SetThankYouMailMenuState(0x12); break; @@ -631,7 +631,7 @@ void sub_802A230(void) case 3: sub_8030DE4(); ResetUnusedInputStruct(); - xxx_call_save_unk_text_struct_800641C(&sUnknown_203B2C4->unk3BC, TRUE, TRUE); + ShowWindows(&sUnknown_203B2C4->unk3BC, TRUE, TRUE); sub_803092C(); if (sUnknown_203B2C4->fallbackState == 0x2b) { sub_8035CF4(sUnknown_203B2C4->unk21C, 3, TRUE); @@ -668,7 +668,7 @@ void sub_802A28C(void) sUnknown_203B2C4->unk41C.id = sub_801CB24(); RestoreUnkTextStruct_8006518(&sUnknown_203B2C4->unk3BC); ResetUnusedInputStruct(); - xxx_call_save_unk_text_struct_800641C(NULL, TRUE, TRUE); + ShowWindows(NULL, TRUE, TRUE); sub_801B3C0(&sUnknown_203B2C4->unk41C); SetThankYouMailMenuState(SHOW_ITEM_TO_SEND_INFO); break; @@ -683,7 +683,7 @@ void sub_802A33C(void) case 3: sub_801B450(); ResetUnusedInputStruct(); - xxx_call_save_unk_text_struct_800641C(&sUnknown_203B2C4->unk3BC, TRUE, TRUE); + ShowWindows(&sUnknown_203B2C4->unk3BC, TRUE, TRUE); sub_801CB5C(TRUE); if (sUnknown_203B2C4->fallbackState == 0x2b) { sub_8035CF4(sUnknown_203B2C4->unk21C,3,TRUE); @@ -719,7 +719,7 @@ void sub_802A39C(void) sUnknown_203B2C4->fallbackState = 0x2b; RestoreUnkTextStruct_8006518(&sUnknown_203B2C4->unk3BC); ResetUnusedInputStruct(); - xxx_call_save_unk_text_struct_800641C(NULL, TRUE, TRUE); + ShowWindows(NULL, TRUE, TRUE); sub_801B3C0(&sUnknown_203B2C4->unk41C); SetThankYouMailMenuState(SHOW_ITEM_TO_SEND_INFO); break; @@ -832,7 +832,7 @@ void HandleThankYouMailPasswordMenu(void) case 2: sub_80155F0(); ResetUnusedInputStruct(); - xxx_call_save_unk_text_struct_800641C(&sUnknown_203B2C4->unk3BC, TRUE, TRUE); + ShowWindows(&sUnknown_203B2C4->unk3BC, TRUE, TRUE); SetThankYouMailMenuState(ANYTHING_ELSE_THANK_YOU_MAIN_MENU); break; } @@ -1269,7 +1269,7 @@ void UpdateThankYouMailText(void) if (sub_8030894() != 0) break; ResetUnusedInputStruct(); - xxx_call_save_unk_text_struct_800641C(NULL, TRUE, TRUE); + ShowWindows(NULL, TRUE, TRUE); sub_80306A8(WONDER_MAIL_TYPE_THANK_YOU,0,0,6); break; case 0x11: @@ -1282,7 +1282,7 @@ void UpdateThankYouMailText(void) if (sub_801D008() != NULL) break; ResetUnusedInputStruct(); - xxx_call_save_unk_text_struct_800641C(NULL, TRUE, TRUE); + ShowWindows(NULL, TRUE, TRUE); { DungeonPos local_x = {3, 2}; sub_801C8C4(0, 1, &local_x, 9); @@ -1338,13 +1338,13 @@ void UpdateThankYouMailText(void) case PROCESS_THANK_YOU_PASSWORD: RestoreUnkTextStruct_8006518(&sUnknown_203B2C4->unk3BC); ResetUnusedInputStruct(); - xxx_call_save_unk_text_struct_800641C(NULL, TRUE, TRUE); + ShowWindows(NULL, TRUE, TRUE); sub_80151C0(4,sUnknown_203B2C4->passwordBuffer); break; case 0x1a: RestoreUnkTextStruct_8006518(&sUnknown_203B2C4->unk3BC); ResetUnusedInputStruct(); - xxx_call_save_unk_text_struct_800641C(NULL, TRUE, TRUE); + ShowWindows(NULL, TRUE, TRUE); sub_8031D70(sUnknown_203B2C4->mailIndex,0); break; case 0x1b: diff --git a/src/trade_items_menu.c b/src/trade_items_menu.c index 2026e640e..47d528bbc 100644 --- a/src/trade_items_menu.c +++ b/src/trade_items_menu.c @@ -47,7 +47,7 @@ void WriteandExitTradeItemsMenu(); s32 CreateTradeItemsMenu(void) { ResetUnusedInputStruct(); - xxx_call_save_unk_text_struct_800641C(NULL, TRUE, TRUE); + ShowWindows(NULL, TRUE, TRUE); sTradeItemsMenu = MemoryAlloc(sizeof(struct TradeItemsMenu), 8); MemoryFill8(sTradeItemsMenu, 0, sizeof(struct TradeItemsMenu)); sub_8035C1C(); @@ -178,7 +178,7 @@ void sub_80365AC(void) sTradeItemsMenu->itemToSend.quantity = 1; RestoreUnkTextStruct_8006518(&sTradeItemsMenu->unk1E4); ResetUnusedInputStruct(); - xxx_call_save_unk_text_struct_800641C(NULL, TRUE, TRUE); + ShowWindows(NULL, TRUE, TRUE); sub_801B3C0(&sTradeItemsMenu->itemToSend); SetTradeItemMenu(TRADE_ITEMS_ITEM_INFO); break; @@ -202,7 +202,7 @@ void sub_8036674(void) sTradeItemsMenu->fallbackState = 0x13; RestoreUnkTextStruct_8006518(&sTradeItemsMenu->unk1E4); ResetUnusedInputStruct(); - xxx_call_save_unk_text_struct_800641C(NULL, TRUE, TRUE); + ShowWindows(NULL, TRUE, TRUE); sub_801B3C0(&sTradeItemsMenu->itemToSend); SetTradeItemMenu(TRADE_ITEMS_ITEM_INFO); break; @@ -224,7 +224,7 @@ void sub_8036728(void) case 3: sub_801B450(); ResetUnusedInputStruct(); - xxx_call_save_unk_text_struct_800641C(&sTradeItemsMenu->unk1E4, TRUE, TRUE); + ShowWindows(&sTradeItemsMenu->unk1E4, TRUE, TRUE); sub_801CB5C(TRUE); if (sTradeItemsMenu->fallbackState == 0x13) { sub_8035CF4(sTradeItemsMenu->unk44, 3, TRUE); @@ -497,7 +497,7 @@ void sub_8036B28(void) case TRADE_ITEMS_SEND_ITEM_SELECTION: if (sub_801D008() == NULL) { ResetUnusedInputStruct(); - xxx_call_save_unk_text_struct_800641C(NULL, TRUE, TRUE); + ShowWindows(NULL, TRUE, TRUE); { DungeonPos local_10 = {3, 2}; sub_801C8C4(0,1,&local_10,9); @@ -626,11 +626,11 @@ void sub_8036ECC(u32 index, u32 r1) sTradeItemsMenu->unk14.unk1C = 0x2c; sTradeItemsMenu->unk14.unk20 = 0x12; sTradeItemsMenu->unk14.unk14 = index; - sTradeItemsMenu->unk14.unk18 = &sTradeItemsMenu->unk184.a0[index]; + sTradeItemsMenu->unk14.unk18 = &sTradeItemsMenu->unk184.id[index]; sub_8013AA0(&sTradeItemsMenu->unk14); - sTradeItemsMenu->unk184.a0[index] = sUnknown_80E6174; + sTradeItemsMenu->unk184.id[index] = sUnknown_80E6174; ResetUnusedInputStruct(); - xxx_call_save_unk_text_struct_800641C(&sTradeItemsMenu->unk184, TRUE, TRUE); + ShowWindows(&sTradeItemsMenu->unk184, TRUE, TRUE); } void sub_8036F30(void) diff --git a/src/unk_menu_203B360.c b/src/unk_menu_203B360.c index 9b18501c9..6db85ed9e 100644 --- a/src/unk_menu_203B360.c +++ b/src/unk_menu_203B360.c @@ -68,10 +68,10 @@ void sub_80382E4(s32 currMenu) MemoryFill8(sUnknown_203B360, 0, sizeof(unkStruct_203B360)); } for(index = 0; index < 4; index++){ - sUnknown_203B360->unk148.a0[index] = gUnknown_80E6E7C; + sUnknown_203B360->unk148.id[index] = gUnknown_80E6E7C; } ResetUnusedInputStruct(); - xxx_call_save_unk_text_struct_800641C(&sUnknown_203B360->unk148, TRUE, TRUE); + ShowWindows(&sUnknown_203B360->unk148, TRUE, TRUE); if (currMenu == 0x25) { // Caution! // The storage space is empty! @@ -88,7 +88,7 @@ void sub_80382E4(s32 currMenu) void sub_80383A8(void) { ResetUnusedInputStruct(); - xxx_call_save_unk_text_struct_800641C(NULL, TRUE, TRUE); + ShowWindows(NULL, TRUE, TRUE); if (sUnknown_203B360 != 0) { MemoryFree(sUnknown_203B360); sUnknown_203B360 = 0; diff --git a/src/wigglytuff_shop1.c b/src/wigglytuff_shop1.c index 2b7eba6ec..50e85bf9c 100644 --- a/src/wigglytuff_shop1.c +++ b/src/wigglytuff_shop1.c @@ -30,12 +30,12 @@ bool8 sub_80211AC(u32 mode, u32 a1) sWigglytuffShop1Work = MemoryAlloc(sizeof(WigglytuffShop1Work), 8); sWigglytuffShop1Work->mode = mode; sWigglytuffShop1Work->s40.s0.unk34 = a1; - sWigglytuffShop1Work->s40.s0.unk38 = &sWigglytuffShop1Work->s40.s0.unk3C.a0[sWigglytuffShop1Work->s40.s0.unk34]; - RestoreUnkTextStruct_8006518(&sWigglytuffShop1Work->s40.s0.unk3C); - sWigglytuffShop1Work->s40.s0.unk3C.a0[sWigglytuffShop1Work->s40.s0.unk34] = sUnknown_80DC47C; + sWigglytuffShop1Work->s40.s0.unk38 = &sWigglytuffShop1Work->s40.s0.windows.id[sWigglytuffShop1Work->s40.s0.unk34]; + RestoreUnkTextStruct_8006518(&sWigglytuffShop1Work->s40.s0.windows); + sWigglytuffShop1Work->s40.s0.windows.id[sWigglytuffShop1Work->s40.s0.unk34] = sUnknown_80DC47C; sWigglytuffShop1Work->s40.s0.unk38->unk14 = &sWigglytuffShop1Work->s40.unk9C; ResetUnusedInputStruct(); - xxx_call_save_unk_text_struct_800641C(&sWigglytuffShop1Work->s40.s0.unk3C, TRUE, TRUE); + ShowWindows(&sWigglytuffShop1Work->s40.s0.windows, TRUE, TRUE); sub_8013818(&sWigglytuffShop1Work->s40.s0.input, sub_8021664(), 10, a1); if (sUnknown_203B284 == sWigglytuffShop1Work->mode) { @@ -87,7 +87,7 @@ u8 sub_802132C(void) void sub_8021354(bool8 cursorSprite) { ResetUnusedInputStruct(); - xxx_call_save_unk_text_struct_800641C(&sWigglytuffShop1Work->s40.s0.unk3C, FALSE, FALSE); + ShowWindows(&sWigglytuffShop1Work->s40.s0.windows, FALSE, FALSE); sWigglytuffShop1Work->s40.s0.input.unk22 = sub_8021664(); sub_8013984(&sWigglytuffShop1Work->s40.s0.input); sub_8021410(); @@ -103,9 +103,9 @@ void sub_80213A0(void) sUnknown_203B284 = sWigglytuffShop1Work->mode; sUnknown_203B288 = sWigglytuffShop1Work->s40.s0.input.menuIndex; sUnknown_203B28A = sWigglytuffShop1Work->s40.s0.input.unk1E; - sWigglytuffShop1Work->s40.s0.unk3C.a0[sWigglytuffShop1Work->s40.s0.unk34] = sUnknown_80DC464; + sWigglytuffShop1Work->s40.s0.windows.id[sWigglytuffShop1Work->s40.s0.unk34] = sUnknown_80DC464; ResetUnusedInputStruct(); - xxx_call_save_unk_text_struct_800641C(&sWigglytuffShop1Work->s40.s0.unk3C, TRUE, TRUE); + ShowWindows(&sWigglytuffShop1Work->s40.s0.windows, TRUE, TRUE); MemoryFree(sWigglytuffShop1Work); sWigglytuffShop1Work = NULL; } @@ -118,7 +118,7 @@ static void sub_8021410(void) sWigglytuffShop1Work->s40.unk9C.f2 = 12; sWigglytuffShop1Work->s40.unk9C.f3 = 0; ResetUnusedInputStruct(); - xxx_call_save_unk_text_struct_800641C(&sWigglytuffShop1Work->s40.s0.unk3C, TRUE, TRUE); + ShowWindows(&sWigglytuffShop1Work->s40.s0.windows, TRUE, TRUE); SUB_80095E4_CALL(sWigglytuffShop1Work->s40.s0); } diff --git a/src/wigglytuff_shop2.c b/src/wigglytuff_shop2.c index 47131b4eb..446519a94 100644 --- a/src/wigglytuff_shop2.c +++ b/src/wigglytuff_shop2.c @@ -31,9 +31,9 @@ bool8 CreateWigglytuffShopFriendAreaMenu(u8 friendArea, bool8 a1, s32 a2) sub_801317C(&sWigglytuffShop2Work->unk0); sub_8021A60(); sWigglytuffShop2Work->unk74 = a2; - sWigglytuffShop2Work->unk78 = &sWigglytuffShop2Work->unk7C.a0[a2]; + sWigglytuffShop2Work->unk78 = &sWigglytuffShop2Work->unk7C.id[a2]; RestoreUnkTextStruct_8006518(&sWigglytuffShop2Work->unk7C); - sWigglytuffShop2Work->unk7C.a0[sWigglytuffShop2Work->unk74] = sUnknown_80DC4D8; + sWigglytuffShop2Work->unk7C.id[sWigglytuffShop2Work->unk74] = sUnknown_80DC4D8; sub_8021820(); return TRUE; } @@ -61,9 +61,9 @@ static void sub_8021820(void) void CleanWigglytuffShopFriendAreaInfoMenu(void) { if (sWigglytuffShop2Work) { - sWigglytuffShop2Work->unk7C.a0[sWigglytuffShop2Work->unk74] = sUnknown_80DC4BC; + sWigglytuffShop2Work->unk7C.id[sWigglytuffShop2Work->unk74] = sUnknown_80DC4BC; ResetUnusedInputStruct(); - xxx_call_save_unk_text_struct_800641C(&sWigglytuffShop2Work->unk7C, TRUE, TRUE); + ShowWindows(&sWigglytuffShop2Work->unk7C, TRUE, TRUE); MemoryFree(sWigglytuffShop2Work); sWigglytuffShop2Work = NULL; } @@ -72,7 +72,7 @@ void CleanWigglytuffShopFriendAreaInfoMenu(void) static void sub_8021878(void) { ResetUnusedInputStruct(); - xxx_call_save_unk_text_struct_800641C(&sWigglytuffShop2Work->unk7C, TRUE, TRUE); + ShowWindows(&sWigglytuffShop2Work->unk7C, TRUE, TRUE); } static void PopulateWigglytuffShopFriendAreaInfoScreen(void) diff --git a/src/wigglytuff_shop3.c b/src/wigglytuff_shop3.c index 00ebd2e15..fa817ad23 100644 --- a/src/wigglytuff_shop3.c +++ b/src/wigglytuff_shop3.c @@ -53,7 +53,7 @@ bool8 CreateWigglytuffShop(u32 mode) OpenedFile *file; ResetUnusedInputStruct(); - xxx_call_save_unk_text_struct_800641C(NULL, TRUE, TRUE); + ShowWindows(NULL, TRUE, TRUE); sWigglytuffShop3Work = MemoryAlloc(sizeof(WigglytuffShop3Work), 8); sWigglytuffShop3Work->menuAction1 = 0; @@ -145,21 +145,21 @@ static void sub_8021D5C(void) switch (sWigglytuffShop3Work->state) { case WIGGLYTUFF_UNK9: case WIGGLYTUFF_UNKA: - sWigglytuffShop3Work->unkD0.a0[0] = sUnknown_80DC534; - sWigglytuffShop3Work->unkD0.a0[2] = sUnknown_80DC534; - sWigglytuffShop3Work->unkD0.a0[1] = sUnknown_80DC564; + sWigglytuffShop3Work->unkD0.id[0] = sUnknown_80DC534; + sWigglytuffShop3Work->unkD0.id[2] = sUnknown_80DC534; + sWigglytuffShop3Work->unkD0.id[1] = sUnknown_80DC564; break; case WIGGLYTUFF_UNKB: - sWigglytuffShop3Work->unkD0.a0[2] = sUnknown_80DC54C; + sWigglytuffShop3Work->unkD0.id[2] = sUnknown_80DC54C; break; default: for (i = 0; i < 4; i++) - sWigglytuffShop3Work->unkD0.a0[i] = sUnknown_80DC534; + sWigglytuffShop3Work->unkD0.id[i] = sUnknown_80DC534; break; } ResetUnusedInputStruct(); - xxx_call_save_unk_text_struct_800641C(&sWigglytuffShop3Work->unkD0, TRUE, TRUE); + ShowWindows(&sWigglytuffShop3Work->unkD0, TRUE, TRUE); } static void UpdateWigglytuffDialogue(void) diff --git a/src/wonder_mail.c b/src/wonder_mail.c index cba71c0df..f5ed8de67 100644 --- a/src/wonder_mail.c +++ b/src/wonder_mail.c @@ -187,7 +187,7 @@ u8 sub_8027F88(void) s32 counter; ResetUnusedInputStruct(); - xxx_call_save_unk_text_struct_800641C(NULL, TRUE, TRUE); + ShowWindows(NULL, TRUE, TRUE); sUnknown_203B2C0 = MemoryAlloc(sizeof(WonderMailStruct_203B2C0), 8); MemoryFill8(sUnknown_203B2C0, 0, sizeof(WonderMailStruct_203B2C0)); sUnknown_203B2C0->unk53C = 0; @@ -422,7 +422,7 @@ void sub_8028348(void) case 0x3B: RestoreUnkTextStruct_8006518(&sUnknown_203B2C0->unk3BC); ResetUnusedInputStruct(); - xxx_call_save_unk_text_struct_800641C(NULL, TRUE, TRUE); + ShowWindows(NULL, TRUE, TRUE); sub_8031D70(sUnknown_203B2C0->mailIndex, 0); break; case 0x3C: @@ -457,7 +457,7 @@ void sub_8028348(void) if(sub_8023CE8() == 0) { ResetUnusedInputStruct(); - xxx_call_save_unk_text_struct_800641C(NULL, TRUE, TRUE); + ShowWindows(NULL, TRUE, TRUE); sub_8023868(3, 0, 0, 9); } break; @@ -483,7 +483,7 @@ void sub_8028348(void) if(sub_8030894() == 0) { ResetUnusedInputStruct(); - xxx_call_save_unk_text_struct_800641C(NULL, TRUE, TRUE); + ShowWindows(NULL, TRUE, TRUE); sub_80306A8(WONDER_MAIL_TYPE_AOK, 0, 0, 6); } break; @@ -574,7 +574,7 @@ void sub_8028348(void) case 0x27: RestoreUnkTextStruct_8006518(&sUnknown_203B2C0->unk3BC); ResetUnusedInputStruct(); - xxx_call_save_unk_text_struct_800641C(NULL, TRUE, TRUE); + ShowWindows(NULL, TRUE, TRUE); sub_80151C0(4, sUnknown_203B2C0->passwordBuffer); break; case 8: @@ -610,7 +610,7 @@ void sub_8028348(void) if(sub_8030894() == 0) { ResetUnusedInputStruct(); - xxx_call_save_unk_text_struct_800641C(NULL, TRUE, TRUE); + ShowWindows(NULL, TRUE, TRUE); // SOS Mail sub_80306A8(WONDER_MAIL_TYPE_SOS_1, 0, 0, 6); } @@ -1116,7 +1116,7 @@ void sub_8029044(void) sUnknown_203B2C0->mailIndex = sub_80307EC(); RestoreUnkTextStruct_8006518(&sUnknown_203B2C0->unk3BC); ResetUnusedInputStruct(); - xxx_call_save_unk_text_struct_800641C(NULL, TRUE, TRUE); + ShowWindows(NULL, TRUE, TRUE); sub_8030D40(sUnknown_203B2C0->mailIndex, 0); SetFriendRescueCounterState(0x21); break; @@ -1152,7 +1152,7 @@ void sub_80290F0(void) sUnknown_203B2C0->fallbackState = DEFAULT_FALLBACK_STATE; RestoreUnkTextStruct_8006518(&sUnknown_203B2C0->unk3BC); ResetUnusedInputStruct(); - xxx_call_save_unk_text_struct_800641C(NULL, TRUE, TRUE); + ShowWindows(NULL, TRUE, TRUE); sub_8030D40(sUnknown_203B2C0->mailIndex, 0); SetFriendRescueCounterState(0x21); break; @@ -1175,7 +1175,7 @@ void sub_80291AC(void) case 3: sub_8030DE4(); ResetUnusedInputStruct(); - xxx_call_save_unk_text_struct_800641C(&sUnknown_203B2C0->unk3BC, TRUE, TRUE); + ShowWindows(&sUnknown_203B2C0->unk3BC, TRUE, TRUE); sub_803092C(); if(sUnknown_203B2C0->fallbackState == DEFAULT_FALLBACK_STATE) { @@ -1392,7 +1392,7 @@ void sub_80293F4(void) case 2: sub_80155F0(); ResetUnusedInputStruct(); - xxx_call_save_unk_text_struct_800641C(&sUnknown_203B2C0->unk3BC, TRUE, TRUE); + ShowWindows(&sUnknown_203B2C0->unk3BC, TRUE, TRUE); SetFriendRescueCounterState(FRIEND_RESCUE_MAIN); break; default: @@ -1465,7 +1465,7 @@ void sub_80295D8(void) sUnknown_203B2C0->mailIndex = sub_80307EC(); RestoreUnkTextStruct_8006518(&sUnknown_203B2C0->unk3BC); ResetUnusedInputStruct(); - xxx_call_save_unk_text_struct_800641C(NULL, TRUE, TRUE); + ShowWindows(NULL, TRUE, TRUE); sub_8030D40(sUnknown_203B2C0->mailIndex, 0); SetFriendRescueCounterState(0x2C); break; @@ -1501,7 +1501,7 @@ void sub_8029684(void) sUnknown_203B2C0->fallbackState = DEFAULT_FALLBACK_STATE; RestoreUnkTextStruct_8006518(&sUnknown_203B2C0->unk3BC); ResetUnusedInputStruct(); - xxx_call_save_unk_text_struct_800641C(NULL, TRUE, TRUE); + ShowWindows(NULL, TRUE, TRUE); sub_8030D40(sUnknown_203B2C0->mailIndex, 0); SetFriendRescueCounterState(0x2C); break; @@ -1522,7 +1522,7 @@ void sub_8029740(void) case 3: sub_8030DE4(); ResetUnusedInputStruct(); - xxx_call_save_unk_text_struct_800641C(&sUnknown_203B2C0->unk3BC, TRUE, TRUE); + ShowWindows(&sUnknown_203B2C0->unk3BC, TRUE, TRUE); sub_803092C(); if(sUnknown_203B2C0->fallbackState == DEFAULT_FALLBACK_STATE) { @@ -1575,7 +1575,7 @@ void sub_80297D4(void) sUnknown_203B2C0->speciesNum = sub_8023B44(); RestoreUnkTextStruct_8006518(&sUnknown_203B2C0->unk3BC); ResetUnusedInputStruct(); - xxx_call_save_unk_text_struct_800641C(NULL, TRUE, TRUE); + ShowWindows(NULL, TRUE, TRUE); sub_8024458(sUnknown_203B2C0->speciesNum, 0); SetFriendRescueCounterState(0x35); break; @@ -1601,7 +1601,7 @@ void sub_8029884(void) sUnknown_203B2C0->fallbackState = DEFAULT_FALLBACK_STATE; RestoreUnkTextStruct_8006518(&sUnknown_203B2C0->unk3BC); ResetUnusedInputStruct(); - xxx_call_save_unk_text_struct_800641C(NULL, TRUE, TRUE); + ShowWindows(NULL, TRUE, TRUE); sub_8024458(sUnknown_203B2C0->speciesNum, 0); SetFriendRescueCounterState(0x35); break; @@ -1631,7 +1631,7 @@ void sub_8029944(void) case 3: sub_802453C(); ResetUnusedInputStruct(); - xxx_call_save_unk_text_struct_800641C(&sUnknown_203B2C0->unk3BC, TRUE, TRUE); + ShowWindows(&sUnknown_203B2C0->unk3BC, TRUE, TRUE); sub_8023B7C(1); if(sUnknown_203B2C0->fallbackState == DEFAULT_FALLBACK_STATE) { @@ -1771,7 +1771,7 @@ void sub_8029AF4(void) case 3: sub_8031E10(); ResetUnusedInputStruct(); - xxx_call_save_unk_text_struct_800641C(&sUnknown_203B2C0->unk3BC, TRUE, TRUE); + ShowWindows(&sUnknown_203B2C0->unk3BC, TRUE, TRUE); SetFriendRescueCounterState(0x3C); break; case 1: diff --git a/src/wonder_mail_2.c b/src/wonder_mail_2.c index 60443e0be..a9f332180 100644 --- a/src/wonder_mail_2.c +++ b/src/wonder_mail_2.c @@ -79,7 +79,7 @@ u8 sub_802B2D4(void) OpenedFile *faceFile; ResetUnusedInputStruct(); - xxx_call_save_unk_text_struct_800641C(NULL, TRUE, TRUE); + ShowWindows(NULL, TRUE, TRUE); sUnknown_203B2C8 = MemoryAlloc(sizeof(struct unkStruct_203B2C8),8); MemoryFill8(sUnknown_203B2C8,0,sizeof(struct unkStruct_203B2C8)); sUnknown_203B2C8->unk1 = -1; diff --git a/src/wonder_mail_3_mid.c b/src/wonder_mail_3_mid.c index 336b2eb47..9d964b227 100644 --- a/src/wonder_mail_3_mid.c +++ b/src/wonder_mail_3_mid.c @@ -124,17 +124,17 @@ void sub_802F004(void) { case 2: sub_802F108(); - gUnknown_203B30C->unkF0.a0[2] = gUnknown_80E03F4; - sub_8012CAC(&gUnknown_203B30C->unkF0.a0[2], gUnknown_203B30C->unkB0); + gUnknown_203B30C->unkF0.id[2] = gUnknown_80E03F4; + sub_8012CAC(&gUnknown_203B30C->unkF0.id[2], gUnknown_203B30C->unkB0); break; default: for(index = 0; index < 4; index++) { - gUnknown_203B30C->unkF0.a0[index] = gUnknown_80E03C4; + gUnknown_203B30C->unkF0.id[index] = gUnknown_80E03C4; } } ResetUnusedInputStruct(); - xxx_call_save_unk_text_struct_800641C(&gUnknown_203B30C->unkF0, TRUE, TRUE); + ShowWindows(&gUnknown_203B30C->unkF0, TRUE, TRUE); } void sub_802F088(void) diff --git a/src/wonder_mail_4.c b/src/wonder_mail_4.c index 877debafa..28121c782 100644 --- a/src/wonder_mail_4.c +++ b/src/wonder_mail_4.c @@ -86,18 +86,18 @@ u32 sub_80306A8(u32 wonderMailType, u32 r1, DungeonPos *r2, u32 r3) gUnknown_203B320->wonderMailType = wonderMailType; gUnknown_203B320->s28.s0.unk34 = r1; - gUnknown_203B320->s28.s0.unk38 = &gUnknown_203B320->s28.s0.unk3C.a0[gUnknown_203B320->s28.s0.unk34]; - RestoreUnkTextStruct_8006518(&gUnknown_203B320->s28.s0.unk3C); + gUnknown_203B320->s28.s0.unk38 = &gUnknown_203B320->s28.s0.windows.id[gUnknown_203B320->s28.s0.unk34]; + RestoreUnkTextStruct_8006518(&gUnknown_203B320->s28.s0.windows); - gUnknown_203B320->s28.s0.unk3C.a0[gUnknown_203B320->s28.s0.unk34] = gUnknown_80E0854; + gUnknown_203B320->s28.s0.windows.id[gUnknown_203B320->s28.s0.unk34] = gUnknown_80E0854; gUnknown_203B320->s28.s0.unk38->unk14 = &gUnknown_203B320->s28.unk9C; if (r2 != 0) - gUnknown_203B320->s28.s0.unk3C.a0[gUnknown_203B320->s28.s0.unk34].pos = *r2; + gUnknown_203B320->s28.s0.windows.id[gUnknown_203B320->s28.s0.unk34].pos = *r2; sub_8012D08(gUnknown_203B320->s28.s0.unk38, r3); ResetUnusedInputStruct(); - xxx_call_save_unk_text_struct_800641C(&gUnknown_203B320->s28.s0.unk3C, TRUE, TRUE); + ShowWindows(&gUnknown_203B320->s28.s0.windows, TRUE, TRUE); sub_8013818(&gUnknown_203B320->s28.s0.input, sub_8030A74(), r3, r1); sub_80308A0(); sub_803092C(); @@ -154,9 +154,9 @@ void sub_803084C(void) { if(gUnknown_203B320 != NULL) { - gUnknown_203B320->s28.s0.unk3C.a0[gUnknown_203B320->s28.s0.unk34] = gUnknown_80E083C; + gUnknown_203B320->s28.s0.windows.id[gUnknown_203B320->s28.s0.unk34] = gUnknown_80E083C; ResetUnusedInputStruct(); - xxx_call_save_unk_text_struct_800641C(&gUnknown_203B320->s28.s0.unk3C, TRUE, TRUE); + ShowWindows(&gUnknown_203B320->s28.s0.windows, TRUE, TRUE); MemoryFree(gUnknown_203B320); gUnknown_203B320 = NULL; } @@ -174,7 +174,7 @@ void sub_80308A0(void) gUnknown_203B320->s28.unk9C.f2 = 12; gUnknown_203B320->s28.unk9C.f3 = 0; ResetUnusedInputStruct(); - xxx_call_save_unk_text_struct_800641C(&gUnknown_203B320->s28.s0.unk3C, TRUE, TRUE); + ShowWindows(&gUnknown_203B320->s28.s0.windows, TRUE, TRUE); SUB_80095E4_CALL(gUnknown_203B320->s28.s0); } diff --git a/src/wonder_mail_5.c b/src/wonder_mail_5.c index f65d2e112..bd84f6619 100644 --- a/src/wonder_mail_5.c +++ b/src/wonder_mail_5.c @@ -63,9 +63,9 @@ bool8 sub_8030D40(u8 mailIndex, s32 windowID) gUnknown_203B324->mailIndex = mailIndex; sub_801317C(&gUnknown_203B324->unk0); gUnknown_203B324->windowID = windowID; - gUnknown_203B324->unk14 = &gUnknown_203B324->unk18.a0[windowID]; + gUnknown_203B324->unk14 = &gUnknown_203B324->unk18.id[windowID]; RestoreUnkTextStruct_8006518(&gUnknown_203B324->unk18); - gUnknown_203B324->unk18.a0[gUnknown_203B324->windowID] = gUnknown_80E091C; + gUnknown_203B324->unk18.id[gUnknown_203B324->windowID] = gUnknown_80E091C; sub_8030DD4(); return TRUE; } @@ -95,9 +95,9 @@ void sub_8030DE4(void) { if(gUnknown_203B324 != NULL) { - gUnknown_203B324->unk18.a0[gUnknown_203B324->windowID] = gUnknown_80E0900; + gUnknown_203B324->unk18.id[gUnknown_203B324->windowID] = gUnknown_80E0900; ResetUnusedInputStruct(); - xxx_call_save_unk_text_struct_800641C(&gUnknown_203B324->unk18, TRUE, TRUE); + ShowWindows(&gUnknown_203B324->unk18, TRUE, TRUE); MemoryFree(gUnknown_203B324); gUnknown_203B324 = NULL; } @@ -106,7 +106,7 @@ void sub_8030DE4(void) void sub_8030E2C(void) { ResetUnusedInputStruct(); - xxx_call_save_unk_text_struct_800641C(&gUnknown_203B324->unk18, TRUE, TRUE); + ShowWindows(&gUnknown_203B324->unk18, TRUE, TRUE); } void sub_8030E48(void) diff --git a/src/wonder_mail_6.c b/src/wonder_mail_6.c index 65539214d..8aa06d3eb 100644 --- a/src/wonder_mail_6.c +++ b/src/wonder_mail_6.c @@ -101,7 +101,7 @@ bool8 sub_8030F58(u32 wonderMailType) OpenedFile *file; ResetUnusedInputStruct(); - xxx_call_save_unk_text_struct_800641C(NULL, TRUE, TRUE); + ShowWindows(NULL, TRUE, TRUE); if (gUnknown_203B328 == NULL) { gUnknown_203B328 = MemoryAlloc(sizeof(struct unkStruct_203B328),8); MemoryFill8(gUnknown_203B328,0,sizeof(struct unkStruct_203B328)); @@ -184,36 +184,36 @@ static void sub_80310FC(void) switch(gUnknown_203B328->state) { case INIT_STATE: - gUnknown_203B328->unkA8.a0[1] = gUnknown_80E0990; - gUnknown_203B328->unkA8.a0[2] = gUnknown_80E0990; - gUnknown_203B328->unkA8.a0[3] = gUnknown_80E0990; + gUnknown_203B328->unkA8.id[1] = gUnknown_80E0990; + gUnknown_203B328->unkA8.id[2] = gUnknown_80E0990; + gUnknown_203B328->unkA8.id[3] = gUnknown_80E0990; break; case MAIN_MENU: - gUnknown_203B328->unkA8.a0[1] = gUnknown_80E09A8; - gUnknown_203B328->unkA8.a0[2] = gUnknown_80E0990; - gUnknown_203B328->unkA8.a0[3] = gUnknown_80E0990; - sub_8012CAC(&gUnknown_203B328->unkA8.a0[1], gUnknown_80E0968); + gUnknown_203B328->unkA8.id[1] = gUnknown_80E09A8; + gUnknown_203B328->unkA8.id[2] = gUnknown_80E0990; + gUnknown_203B328->unkA8.id[3] = gUnknown_80E0990; + sub_8012CAC(&gUnknown_203B328->unkA8.id[1], gUnknown_80E0968); break; case DELETE_SINGLE_MAIL_STATE: case DELETE_ALL_MAIL_STATE: - gUnknown_203B328->unkA8.a0[2] = gUnknown_80E09C0; - sub_8012CAC(&gUnknown_203B328->unkA8.a0[2], gUnknown_80E0948); + gUnknown_203B328->unkA8.id[2] = gUnknown_80E09C0; + sub_8012CAC(&gUnknown_203B328->unkA8.id[2], gUnknown_80E0948); break; case INFO_STATE: - gUnknown_203B328->unkA8.a0[0] = gUnknown_80E0990; - gUnknown_203B328->unkA8.a0[1] = gUnknown_80E0990; - gUnknown_203B328->unkA8.a0[2] = gUnknown_80E0990; - gUnknown_203B328->unkA8.a0[3] = gUnknown_80E0990; + gUnknown_203B328->unkA8.id[0] = gUnknown_80E0990; + gUnknown_203B328->unkA8.id[1] = gUnknown_80E0990; + gUnknown_203B328->unkA8.id[2] = gUnknown_80E0990; + gUnknown_203B328->unkA8.id[3] = gUnknown_80E0990; break; case 5: case 6: default: ResetUnusedInputStruct(); - xxx_call_save_unk_text_struct_800641C(NULL, TRUE, TRUE); + ShowWindows(NULL, TRUE, TRUE); break; } ResetUnusedInputStruct(); - xxx_call_save_unk_text_struct_800641C(&gUnknown_203B328->unkA8, TRUE, TRUE); + ShowWindows(&gUnknown_203B328->unkA8, TRUE, TRUE); } static void sub_8031258(void) diff --git a/src/wonder_mail_802C10C.c b/src/wonder_mail_802C10C.c index aea42f5c1..89c8caedb 100644 --- a/src/wonder_mail_802C10C.c +++ b/src/wonder_mail_802C10C.c @@ -29,18 +29,18 @@ bool8 sub_802C10C(s32 a0, DungeonPos *a1, s32 a2) gUnknown_203B2E0 = MemoryAlloc(sizeof(struct unkStruct_203B2E0), 8); gUnknown_203B2E0->unk8.s0.unk34 = a0; - gUnknown_203B2E0->unk8.s0.unk38 = &gUnknown_203B2E0->unk8.s0.unk3C.a0[a0]; - RestoreUnkTextStruct_8006518(&gUnknown_203B2E0->unk8.s0.unk3C); + gUnknown_203B2E0->unk8.s0.unk38 = &gUnknown_203B2E0->unk8.s0.windows.id[a0]; + RestoreUnkTextStruct_8006518(&gUnknown_203B2E0->unk8.s0.windows); - gUnknown_203B2E0->unk8.s0.unk3C.a0[gUnknown_203B2E0->unk8.s0.unk34] = sUnknown_80DFCB4; + gUnknown_203B2E0->unk8.s0.windows.id[gUnknown_203B2E0->unk8.s0.unk34] = sUnknown_80DFCB4; gUnknown_203B2E0->unk8.s0.unk38->unk14 = &gUnknown_203B2E0->unk8.unk9C; if (a1 != NULL) - gUnknown_203B2E0->unk8.s0.unk3C.a0[gUnknown_203B2E0->unk8.s0.unk34].pos = *a1; + gUnknown_203B2E0->unk8.s0.windows.id[gUnknown_203B2E0->unk8.s0.unk34].pos = *a1; sub_8012D34(gUnknown_203B2E0->unk8.s0.unk38, a2); ResetUnusedInputStruct(); - xxx_call_save_unk_text_struct_800641C(&gUnknown_203B2E0->unk8.s0.unk3C, TRUE, TRUE); + ShowWindows(&gUnknown_203B2E0->unk8.s0.windows, TRUE, TRUE); sub_8013848(&gUnknown_203B2E0->unk8.s0.input, CountPelipperBoardSlots(), a2, a0); gUnknown_203B2E0->unk8.s0.input.menuIndex = gUnknown_203B2E4; sub_8013984(&gUnknown_203B2E0->unk8.s0.input); @@ -84,7 +84,7 @@ u8 sub_802C26C(void) void sub_802C28C(bool8 cursorSprite) { ResetUnusedInputStruct(); - xxx_call_save_unk_text_struct_800641C(&gUnknown_203B2E0->unk8.s0.unk3C, FALSE, FALSE); + ShowWindows(&gUnknown_203B2E0->unk8.s0.windows, FALSE, FALSE); gUnknown_203B2E0->unk8.s0.input.unk22 = CountPelipperBoardSlots(); sub_8013984(&gUnknown_203B2E0->unk8.s0.input); sub_802C328(); @@ -98,9 +98,9 @@ void sub_802C2D4(void) { if (gUnknown_203B2E0 != NULL) { gUnknown_203B2E4 = gUnknown_203B2E0->unk8.s0.input.menuIndex; - gUnknown_203B2E0->unk8.s0.unk3C.a0[gUnknown_203B2E0->unk8.s0.unk34] = sUnknown_80DFC9C; + gUnknown_203B2E0->unk8.s0.windows.id[gUnknown_203B2E0->unk8.s0.unk34] = sUnknown_80DFC9C; ResetUnusedInputStruct(); - xxx_call_save_unk_text_struct_800641C(&gUnknown_203B2E0->unk8.s0.unk3C, TRUE, TRUE); + ShowWindows(&gUnknown_203B2E0->unk8.s0.windows, TRUE, TRUE); MemoryFree(gUnknown_203B2E0); gUnknown_203B2E0 = NULL; } diff --git a/src/wonder_mail_802C4C8.c b/src/wonder_mail_802C4C8.c index ef9653e16..57f3ef1f9 100644 --- a/src/wonder_mail_802C4C8.c +++ b/src/wonder_mail_802C4C8.c @@ -30,18 +30,18 @@ bool8 sub_802C4C8(s32 a0, DungeonPos *a1, u32 a2) gUnknown_203B2E8 = MemoryAlloc(sizeof(struct unkStruct_203B2E0), 8); gUnknown_203B2E8->unk8.s0.unk34 = a0; - gUnknown_203B2E8->unk8.s0.unk38 = &gUnknown_203B2E8->unk8.s0.unk3C.a0[a0]; - RestoreUnkTextStruct_8006518(&gUnknown_203B2E8->unk8.s0.unk3C); + gUnknown_203B2E8->unk8.s0.unk38 = &gUnknown_203B2E8->unk8.s0.windows.id[a0]; + RestoreUnkTextStruct_8006518(&gUnknown_203B2E8->unk8.s0.windows); - gUnknown_203B2E8->unk8.s0.unk3C.a0[gUnknown_203B2E8->unk8.s0.unk34] = sUnknown_80DFCFC; + gUnknown_203B2E8->unk8.s0.windows.id[gUnknown_203B2E8->unk8.s0.unk34] = sUnknown_80DFCFC; gUnknown_203B2E8->unk8.s0.unk38->unk14 = &gUnknown_203B2E8->unk8.unk9C; if (a1 != NULL) - gUnknown_203B2E8->unk8.s0.unk3C.a0[gUnknown_203B2E8->unk8.s0.unk34].pos = *a1; + gUnknown_203B2E8->unk8.s0.windows.id[gUnknown_203B2E8->unk8.s0.unk34].pos = *a1; sub_8012D34(gUnknown_203B2E8->unk8.s0.unk38, a2); ResetUnusedInputStruct(); - xxx_call_save_unk_text_struct_800641C(&gUnknown_203B2E8->unk8.s0.unk3C, TRUE, TRUE); + ShowWindows(&gUnknown_203B2E8->unk8.s0.windows, TRUE, TRUE); sub_8013848(&gUnknown_203B2E8->unk8.s0.input, CountAcceptedJobs(), a2, a0); gUnknown_203B2E8->unk8.s0.input.menuIndex = gUnknown_203B2EC; sub_8013984(&gUnknown_203B2E8->unk8.s0.input); @@ -85,7 +85,7 @@ u8 GetPelipperBoardSlotIndex(void) void sub_802C640(bool8 cursorSprite) { ResetUnusedInputStruct(); - xxx_call_save_unk_text_struct_800641C(&gUnknown_203B2E8->unk8.s0.unk3C, FALSE, FALSE); + ShowWindows(&gUnknown_203B2E8->unk8.s0.windows, FALSE, FALSE); gUnknown_203B2E8->unk8.s0.input.unk22 = CountAcceptedJobs(); sub_8013984(&gUnknown_203B2E8->unk8.s0.input); sub_802C6DC(); @@ -99,9 +99,9 @@ void sub_802C688(void) { if (gUnknown_203B2E8 != NULL) { gUnknown_203B2EC = gUnknown_203B2E8->unk8.s0.input.menuIndex; - gUnknown_203B2E8->unk8.s0.unk3C.a0[gUnknown_203B2E8->unk8.s0.unk34] = sUnknown_80DFCE4; + gUnknown_203B2E8->unk8.s0.windows.id[gUnknown_203B2E8->unk8.s0.unk34] = sUnknown_80DFCE4; ResetUnusedInputStruct(); - xxx_call_save_unk_text_struct_800641C(&gUnknown_203B2E8->unk8.s0.unk3C, TRUE, TRUE); + ShowWindows(&gUnknown_203B2E8->unk8.s0.windows, TRUE, TRUE); MemoryFree(gUnknown_203B2E8); gUnknown_203B2E8 = NULL; } diff --git a/src/wonder_mail_802C860.c b/src/wonder_mail_802C860.c index b33c75dbc..2c6fbad0b 100644 --- a/src/wonder_mail_802C860.c +++ b/src/wonder_mail_802C860.c @@ -87,20 +87,20 @@ static void sub_802C928(void) switch (sUnknown_203B2F0->state) { case 2: sub_802CAA4(); - sUnknown_203B2F0->unk19C.a0[2] = sUnknown_80DFD40; - sub_8012CAC(&sUnknown_203B2F0->unk19C.a0[2], sUnknown_203B2F0->unk10C); + sUnknown_203B2F0->unk19C.id[2] = sUnknown_80DFD40; + sub_8012CAC(&sUnknown_203B2F0->unk19C.id[2], sUnknown_203B2F0->unk10C); break; case 3: - sUnknown_203B2F0->unk19C.a0[3] = sUnknown_80DFD58; + sUnknown_203B2F0->unk19C.id[3] = sUnknown_80DFD58; break; default: for (i = 0; i < 4; i++) - sUnknown_203B2F0->unk19C.a0[i] = sUnknown_80DFD28; + sUnknown_203B2F0->unk19C.id[i] = sUnknown_80DFD28; break; } ResetUnusedInputStruct(); - xxx_call_save_unk_text_struct_800641C(&sUnknown_203B2F0->unk19C, TRUE, TRUE); + ShowWindows(&sUnknown_203B2F0->unk19C, TRUE, TRUE); } static void sub_802C9D8(void) diff --git a/src/wonder_mail_802CDD4.c b/src/wonder_mail_802CDD4.c index ec85fe3f5..80411a5f8 100644 --- a/src/wonder_mail_802CDD4.c +++ b/src/wonder_mail_802CDD4.c @@ -25,13 +25,13 @@ bool8 sub_802CDD4(u32 a0) sUnknown_203B2F4 = MemoryAlloc(sizeof(struct_Sub80095E4_2), 8); sUnknown_203B2F4->s0.unk34 = a0; - sUnknown_203B2F4->s0.unk38 = &sUnknown_203B2F4->s0.unk3C.a0[sUnknown_203B2F4->s0.unk34]; - RestoreUnkTextStruct_8006518(&sUnknown_203B2F4->s0.unk3C); - sUnknown_203B2F4->s0.unk3C.a0[sUnknown_203B2F4->s0.unk34] = sUnknown_80DFDA4; + sUnknown_203B2F4->s0.unk38 = &sUnknown_203B2F4->s0.windows.id[sUnknown_203B2F4->s0.unk34]; + RestoreUnkTextStruct_8006518(&sUnknown_203B2F4->s0.windows); + sUnknown_203B2F4->s0.windows.id[sUnknown_203B2F4->s0.unk34] = sUnknown_80DFDA4; sUnknown_203B2F4->s0.unk38->unk14 = &sUnknown_203B2F4->unk9C; sub_8012D34(sUnknown_203B2F4->s0.unk38, 4); ResetUnusedInputStruct(); - xxx_call_save_unk_text_struct_800641C(&sUnknown_203B2F4->s0.unk3C, TRUE, TRUE); + ShowWindows(&sUnknown_203B2F4->s0.windows, TRUE, TRUE); sub_8013848(&sUnknown_203B2F4->s0.input, 5, 4, a0); sub_802CF5C(); sub_802CFD0(); @@ -69,7 +69,7 @@ u8 sub_802CEBC(void) void sub_802CED8(bool8 cursorSprite) { ResetUnusedInputStruct(); - xxx_call_save_unk_text_struct_800641C(&sUnknown_203B2F4->s0.unk3C, FALSE, FALSE); + ShowWindows(&sUnknown_203B2F4->s0.windows, FALSE, FALSE); sub_8013984(&sUnknown_203B2F4->s0.input); sub_802CF5C(); sub_802CFD0(); @@ -81,9 +81,9 @@ void sub_802CED8(bool8 cursorSprite) void sub_802CF14(void) { if (sUnknown_203B2F4 != NULL) { - sUnknown_203B2F4->s0.unk3C.a0[sUnknown_203B2F4->s0.unk34] = sUnknown_80DFD8C; + sUnknown_203B2F4->s0.windows.id[sUnknown_203B2F4->s0.unk34] = sUnknown_80DFD8C; ResetUnusedInputStruct(); - xxx_call_save_unk_text_struct_800641C(&sUnknown_203B2F4->s0.unk3C, TRUE, TRUE); + ShowWindows(&sUnknown_203B2F4->s0.windows, TRUE, TRUE); MemoryFree(sUnknown_203B2F4); sUnknown_203B2F4 = NULL; } diff --git a/src/wonder_mail_802D098.c b/src/wonder_mail_802D098.c index 67f05bc99..bdd9c22c1 100644 --- a/src/wonder_mail_802D098.c +++ b/src/wonder_mail_802D098.c @@ -145,26 +145,26 @@ static void sub_802D1B8(void) switch (sUnknown_203B2F8->state) { case 13: sub_802D5A4(); - sUnknown_203B2F8->unk1A8.a0[2] = sUnknown_80DFE04; - sub_8012CAC(&sUnknown_203B2F8->unk1A8.a0[2], sUnknown_203B2F8->unk118); - sUnknown_203B2F8->unk1A8.a0[2].width = 6; + sUnknown_203B2F8->unk1A8.id[2] = sUnknown_80DFE04; + sub_8012CAC(&sUnknown_203B2F8->unk1A8.id[2], sUnknown_203B2F8->unk118); + sUnknown_203B2F8->unk1A8.id[2].width = 6; break; case 14: sub_802D63C(); - sUnknown_203B2F8->unk1A8.a0[3] = sUnknown_80DFE1C; - sub_8012CAC(&sUnknown_203B2F8->unk1A8.a0[3], sUnknown_203B2F8->unk158); - sUnknown_203B2F8->unk1A8.a0[3].width = 6; + sUnknown_203B2F8->unk1A8.id[3] = sUnknown_80DFE1C; + sub_8012CAC(&sUnknown_203B2F8->unk1A8.id[3], sUnknown_203B2F8->unk158); + sUnknown_203B2F8->unk1A8.id[3].width = 6; break; default: for (i = 0; i < 4; i++) - sUnknown_203B2F8->unk1A8.a0[i] = sUnknown_80DFDD4; + sUnknown_203B2F8->unk1A8.id[i] = sUnknown_80DFDD4; break; case WONDER_MAIL_EXIT: break; } ResetUnusedInputStruct(); - xxx_call_save_unk_text_struct_800641C(&sUnknown_203B2F8->unk1A8, TRUE, TRUE); + ShowWindows(&sUnknown_203B2F8->unk1A8, TRUE, TRUE); } static void sub_802D2A8(void) diff --git a/src/wonder_mail_main_menu.c b/src/wonder_mail_main_menu.c index ed505e690..6c2598492 100644 --- a/src/wonder_mail_main_menu.c +++ b/src/wonder_mail_main_menu.c @@ -95,7 +95,7 @@ bool8 CreateWonderMailMenu(void) s32 index; ResetUnusedInputStruct(); - xxx_call_save_unk_text_struct_800641C(NULL, TRUE, TRUE); + ShowWindows(NULL, TRUE, TRUE); gUnknown_203B3E8 = MemoryAlloc(sizeof(struct unkStruct_203B3E8), 8); MemoryFill8(gUnknown_203B3E8, 0, sizeof(struct unkStruct_203B3E8)); @@ -331,7 +331,7 @@ void HandlePasswordEntryScreen(void) case 3: sub_80155F0(); ResetUnusedInputStruct(); - xxx_call_save_unk_text_struct_800641C(&gUnknown_203B3E8->unk1EC, TRUE, TRUE); + ShowWindows(&gUnknown_203B3E8->unk1EC, TRUE, TRUE); if ( !DecodeWonderMailPassword(gUnknown_203B3E8->PasswordEntryBuffer, &gUnknown_203B3E8->UNK38.decodedMail) || !IsValidWonderMail(&gUnknown_203B3E8->UNK38.decodedMail) ) { // Invalid password @@ -349,7 +349,7 @@ void HandlePasswordEntryScreen(void) case 2: sub_80155F0(); ResetUnusedInputStruct(); - xxx_call_save_unk_text_struct_800641C(&gUnknown_203B3E8->unk1EC, TRUE, TRUE); + ShowWindows(&gUnknown_203B3E8->unk1EC, TRUE, TRUE); SetWonderMailMainMenuState(EXIT_TO_MAIN_MENU); break; } @@ -456,7 +456,7 @@ void WonderMailMainMenuCallback(void) break; case 3: ResetUnusedInputStruct(); - xxx_call_save_unk_text_struct_800641C(NULL, TRUE, TRUE); + ShowWindows(NULL, TRUE, TRUE); sub_802EF48(); break; case RECEIVE_WONDER_MAIL_MAIN_SCREEN: @@ -560,7 +560,7 @@ void WonderMailMainMenuCallback(void) case PASSWORD_ENTRY_SCREEN: RestoreUnkTextStruct_8006518(&gUnknown_203B3E8->unk1EC); ResetUnusedInputStruct(); - xxx_call_save_unk_text_struct_800641C(NULL, TRUE, TRUE); + ShowWindows(NULL, TRUE, TRUE); sub_80151C0(5,gUnknown_203B3E8->PasswordEntryBuffer); break; case PASSWORD_INVALID: diff --git a/src/world_map.c b/src/world_map.c new file mode 100644 index 000000000..74902a2ce --- /dev/null +++ b/src/world_map.c @@ -0,0 +1,541 @@ +#include "global.h" +#include "world_map.h" +#include "sprite.h" +#include "code_8004AA0.h" +#include "input.h" +#include "text.h" +#include "code_8009804.h" +#include "bg_palette_buffer.h" +#include "string_format.h" +#include "code_800D090.h" +#include "friend_area.h" +#include "bg_control.h" +#include "code_800558C.h" +#include "code_80118A4.h" +#include "code_800C9CC.h" +#include "game_options.h" +#include "play_time.h" +#include "pokemon.h" +#include "decompress.h" + +extern const DungeonPos gDungeonCoordinates[]; +extern const struct FriendAreaLocation gFriendAreaLocations[]; +extern const FileArchive gTitleMenuFileArchive; +extern const FileArchive gMonsterFileArchive; +extern const u8 gUnknown_80D40E4[]; +extern const u8 gUnknown_80D40EC[]; +extern const u8 gUnknown_80D405C[]; +extern const u8 gUnknown_80D40FC[]; +extern const u8 gUnknown_80D4104[]; +extern const u8 gUnknown_80D4120[]; +extern const u8 gUnknown_80D3EFC[]; +extern const u8 gUnknown_80D40F4[]; +extern const u8 gUnknown_80D4064[]; +extern const u8 gUnknown_80D406C[]; +extern const u8 gUnknown_80D407C[]; +extern const u8 gUnknown_80D4080[]; +extern const u8 gUnknown_80D4074[]; + +extern u16 gUnknown_2026E4E; + +extern u32 sub_809034C(u8 dungeonIndex, s32 speciesId_, u8 *buffer, bool32 param_4_, bool32 param_5_); +extern void sub_801178C(void); +extern void sub_80117C4(void); +extern void PlayCancelSoundEffect(void); +extern void PlayAcceptSoundEffect(void); +extern void PlayCursorUpDownSoundEffect(void); +extern s32 sprintf(char *, const char *, ...); +extern void sub_800CB20(void); +extern void xxx_call_update_bg_sound_input(void); +extern void CopyDungeonName1toBuffer(u8 *buffer, DungeonLocation *dungeonLocation); +extern s32 Atan2_4096(PixelPos *a); +extern void sub_80117AC(void); +extern void sub_8011760(void); + +EWRAM_INIT struct UnkStruct_203B0E8 *gUnknown_203B0E8 = NULL; +EWRAM_INIT Windows gUnknown_203B0EC = { + .id = { + [0] = { + .type = WINDOW_TYPE_NORMAL, + .pos = {2, 10}, + .width = 26, + .height = 9, + .unk10 = 9, + }, + [1] = { + .type = WINDOW_TYPE_NORMAL, + .pos = {23, 6}, + .width = 5, + .height = 3, + .unk10 = 3, + }, + [2] = { .type = WINDOW_TYPE_NORMAL,}, + [3] = { .type = WINDOW_TYPE_NORMAL,}, + } +}; + +static void ClearWindows(void); +static void AnimateSprites(bool8 a0); +static bool8 FadeScreen(void); +static void nullsub_24(void); +static void RunFrameActions(void); +static void UpdateMonSpritePosition(void); +static void UpdateBg(void); +static void sub_8010494(struct UnkStruct_sub_8010494 *r9); +static void AnimateMonPath(u8 id1, u8 id2); +static void sub_801059C(void); +static bool8 ShowYesNoWindow(u8 *str); +static void PrintDialogueMessage(const u8 *text); +static void FadeFromWorldMap(void); +static void CloseFiles(void); +static void PrintDungeonName(DungeonLocation *dungLocation); + +// Code is very similar to the functions in friend_areas_map_util.c + +void ShowWorldMap(struct UnkStruct_sub_8010268 *r5) +{ + s32 i, speciesId, var; + u8 text[1000]; + + gUnknown_203B0E8 = r5->unkB0; + gUnknown_2026E4E = 2566; + sub_80095CC(0, 0x14); + UpdateFadeInTile(2); + sub_801059C(); + sub_8010494(&r5->unk4); + sub_801178C(); + for (i = 0; i < 60; i++) { + RunFrameActions(); + } + AnimateMonPath(r5->unk4.unk0.id, r5->unk4.unk4.id); + PrintDungeonName(&r5->unk4.unk4); + for (i = 0; i < 60; i++) { + RunFrameActions(); + } + + if (r5->unk4.unk10) { + speciesId = r5->unk4.unk1C; + ASM_MATCH_TRICK(speciesId); + } + else { + speciesId = 0; + } + + var = sub_809034C(r5->unk4.unk4.id, speciesId, text, r5->unk4.unk6C, FALSE); + if (var == 0) { + r5->unkB4 = 1; + } + else if (var == 1) { + PrintDialogueMessage(text); + r5->unkB4 = 0; + } + else if (var == 2) { + if (ShowYesNoWindow(text)) { + r5->unkB4 = 1; + } + else { + r5->unkB4 = 0; + } + } + + FadeFromWorldMap(); + CloseFiles(); + nullsub_16(); +} + +// Heavy math function. +static void AnimateMonPath(u8 id1, u8 id2) +{ + s32 i, valMax, r3; + PixelPos pixelPos; + DungeonPos pos1 = gDungeonCoordinates[id1]; + DungeonPos pos2 = gDungeonCoordinates[id2]; + + valMax = max(abs(pos2.x - pos1.x), abs(pos2.y - pos1.y)); + valMax /= 2; + + pixelPos.x = pos1.x - pos2.x; + pixelPos.y = pos2.y - pos1.y; + r3 = Atan2_4096(&pixelPos) - 1024; + if (r3 < 0) { + r3 += 511; + } + r3 >>= 9; + r3 &= 7; + AxResInitFile(&gUnknown_203B0E8->monAxSprite, gUnknown_203B0E8->unk1100[3], 0, r3, 0, 0, TRUE); + + for (i = 0; i < valMax; i++) { + gUnknown_203B0E8->monSpritePos.x = ((((pos2.x - pos1.x) * (i << 8)) / valMax) / 256) + pos1.x; + gUnknown_203B0E8->monSpritePos.y = ((((pos2.y - pos1.y) * (i << 8)) / valMax) / 256) + pos1.y; + UpdateMonSpritePosition(); + UpdateBg(); + RunFrameActions(); + if (gRealInputs.pressed & A_BUTTON) + break; + if (gRealInputs.pressed & B_BUTTON) + break; + } + + gUnknown_203B0E8->monSpritePos = pos2; + UpdateMonSpritePosition(); + UpdateBg(); + RunFrameActions(); +} + +static void sub_8010494(struct UnkStruct_sub_8010494 *r9) +{ + s32 i; + for (i = 0; i < 64; i++) { + struct UnkStruct_Sub1 *structPtr = &gUnknown_203B0E8->unk0[i]; + u8 r0; + + if (i < 63) { + r0 = r9->unk6D[i]; + } + else { + r0 = 1; + } + + if (r0) { + structPtr->unk0 = 1; + AxResInitFile(&structPtr->unk8, gUnknown_203B0E8->unk1100[2], (i == 63) ? 12 : 1, 0, 0x40, 0, 1); + structPtr->unk4 = gDungeonCoordinates[i]; + } + else { + structPtr->unk0 = 0; + } + } + + AxResInitFile(&gUnknown_203B0E8->monAxSprite, gUnknown_203B0E8->unk1100[3], 0, 0, 0, 0, TRUE); + gUnknown_203B0E8->monSpritePos = gDungeonCoordinates[r9->unk0.id]; + gUnknown_203B0E8->bgPos.x = gUnknown_203B0E8->monSpritePos.x - 120; + gUnknown_203B0E8->bgPos.y = gUnknown_203B0E8->monSpritePos.y - 80; + UpdateMonSpritePosition(); + UpdateBg(); +} + +static void sub_801059C(void) +{ + u8 filename[0xC]; + s32 i, size; + + PokemonStruct1 *pokeStruct = GetPlayerPokemonStruct(); + OpenedFile *file = OpenFileAndGetFileDataPtr(gUnknown_80D4014[0], &gTitleMenuFileArchive); + OpenedFile *file2 = OpenFileAndGetFileDataPtr(gUnknown_80D4014[1], &gTitleMenuFileArchive); + + sprintf(filename, "ax%03d", pokeStruct->speciesNum); + gUnknown_203B0E8->unk1100[3] = OpenFileAndGetFileDataPtr(filename, &gMonsterFileArchive); + gUnknown_203B0E8->unk1100[2] = OpenFileAndGetFileDataPtr("wmapspr", &gTitleMenuFileArchive); + gUnknown_203B0E8->unk1100[4] = OpenFileAndGetFileDataPtr(gUnknown_80D4014[2], &gTitleMenuFileArchive); + gUnknown_203B0E8->unk1100[1] = OpenFileAndGetFileDataPtr("palet", &gMonsterFileArchive); + gUnknown_203B0E8->unk1100[0] = OpenFileAndGetFileDataPtr(gUnknown_80D4014[3], &gTitleMenuFileArchive); + gUnknown_203B0E8->unk52D4 = GetPokemonOverworldPalette(pokeStruct->speciesNum, 0); + + sub_8005610(gUnknown_203B0E8->unk1100[2], 0x40, 0x1F, 0); + + DecompressATGlobalFile((u32 *)(VRAM + 0x8000), 0x0, file); + sub_8004AA4(gUnknown_203B0E8->unk5150, gUnknown_203B0E8->unk1100[4], 0x10); + size = 0x4000; + DecompressATFile((u8 *) &gUnknown_203B0E8->unk1114, size, file2); + + gUnknown_203B0E8->brightness = 0; + gUnknown_203B0E8->bgPos.x = 0; + gUnknown_203B0E8->bgPos.y = 0; + + for (i = 0; i < 1500; i++) { + gUnknown_203B0E8->unk52E0[i] |= 0xFFFF; + gUnknown_203B0E8->unk5E98[i] = 0; + } + + CloseFile(file); + CloseFile(file2); + ShowWindows(NULL, 1, 1); +} + +static void CloseFiles(void) +{ + CloseFile(gUnknown_203B0E8->unk1100[4]); + CloseFile(gUnknown_203B0E8->unk1100[3]); + CloseFile(gUnknown_203B0E8->unk1100[2]); + CloseFile(gUnknown_203B0E8->unk1100[0]); + CloseFile(gUnknown_203B0E8->unk1100[1]); +} + +static void UpdateMonSpritePosition(void) +{ + if (gUnknown_203B0E8->monSpritePos.x - gUnknown_203B0E8->bgPos.x < 48) { + gUnknown_203B0E8->bgPos.x = gUnknown_203B0E8->monSpritePos.x - 48; + } + else if (gUnknown_203B0E8->monSpritePos.x - gUnknown_203B0E8->bgPos.x > 192) { + gUnknown_203B0E8->bgPos.x = gUnknown_203B0E8->monSpritePos.x - 192; + } + + if (gUnknown_203B0E8->monSpritePos.y - gUnknown_203B0E8->bgPos.y < 48) { + gUnknown_203B0E8->bgPos.y = gUnknown_203B0E8->monSpritePos.y - 48; + } + else if (gUnknown_203B0E8->monSpritePos.y - gUnknown_203B0E8->bgPos.y > 112) { + gUnknown_203B0E8->bgPos.y = gUnknown_203B0E8->monSpritePos.y - 112; + } + + if (gUnknown_203B0E8->bgPos.x < 0) { + gUnknown_203B0E8->bgPos.x = 0; + } + if (gUnknown_203B0E8->bgPos.y < 0) { + gUnknown_203B0E8->bgPos.y = 0; + } + if (gUnknown_203B0E8->bgPos.x >= 240) { + gUnknown_203B0E8->bgPos.x = 240; + } + if (gUnknown_203B0E8->bgPos.y >= 160) { + gUnknown_203B0E8->bgPos.y = 160; + } +} + +static void UpdateBg(void) +{ + s32 i, j; + s32 y1 = gUnknown_203B0E8->bgPos.y >> 3; + s32 y2 = y1; + + for (i = 0; i < 21; i++) { + s32 x1 = gUnknown_203B0E8->bgPos.x >> 3; + s32 x2 = x1; + + for (j = 0; j < 31; j++) { + x1 &= 0x1F; + y1 &= 0x1F; + + gUnknown_202B038[2][y1][x1] = gUnknown_203B0E8->unk3114[y2][x2]; + gUnknown_202B038[3][y1][x1] = gUnknown_203B0E8->unk1114[y2][x2]; + x2++; + x1++; + } + y2++; + y1++; + } + + sub_80098F8(2); + sub_80098F8(3); +} + +static void nullsub_24(void) +{ + +} + +static void FadeFromWorldMap(void) +{ + s32 i; + + ClearWindows(); + sub_80117C4(); + for (i = 0; i < 60; i++) { + gUnknown_203B0E8->brightness -= 2; + RunFrameActions(); + } +} + +static void ClearWindows(void) +{ + ShowWindows(NULL, TRUE, TRUE); +} + +static void RunFrameActions(void) +{ + SetBG2RegOffsets(gUnknown_203B0E8->bgPos.x, gUnknown_203B0E8->bgPos.y); + SetBG3RegOffsets(gUnknown_203B0E8->bgPos.x, gUnknown_203B0E8->bgPos.y); + AnimateSprites(TRUE); + FadeScreen(); + sub_8005838(NULL, 0); + nullsub_8(gGameOptionsRef->unkA); + sub_8005180(); + sub_80060EC(); + IncrementPlayTime(gPlayTimeRef); + sub_800CB20(); + LoadBufferedInputs(); + CopySpritesToOam(); + sub_8005304(); + TransferBGPaletteBuffer(); + xxx_call_update_bg_vram(); + nullsub_24(); + sub_8009908(); + xxx_call_update_bg_sound_input(); + sub_8011860(); + ResetSprites(FALSE); +} + +static bool8 FadeScreen(void) +{ + bool8 ret = FALSE; + + if (gUnknown_203B0E8->brightness < 31) { + s32 i; + RGB *color = (void *) gUnknown_203B0E8->unk1100[0]->data; + + if (++gUnknown_203B0E8->brightness >= 31) { + gUnknown_203B0E8->brightness = 31; + } + + for (i = 0; i < 224; color++, i++) { + SetBGPaletteBufferColorRGB(i, color, gUnknown_203B0E8->brightness, NULL); + } + + color = (void *) gUnknown_203B0E8->unk1100[1]->data; + for (i = 0; i < 240; color++, i++) { + SetBGPaletteBufferColorRGB(i + 256, color, gUnknown_203B0E8->brightness, NULL); + } + + ret = TRUE; + } + + return ret; +} + +static void AnimateSprites(bool8 a0) +{ + s32 i; + unkStruct_2039DB0 var_2C; + DungeonPos pos; + + sub_8004E8C(&var_2C); + var_2C.unk4 = 0xF3FF; + var_2C.unkA = 0x800; + pos = gUnknown_203B0E8->bgPos; + RunAxAnimationFrame(&gUnknown_203B0E8->monAxSprite); + if (a0) { + DoAxFrame_800558C(&gUnknown_203B0E8->monAxSprite, gUnknown_203B0E8->monSpritePos.x - pos.x, gUnknown_203B0E8->monSpritePos.y - pos.y, 3, gUnknown_203B0E8->unk52D4, &var_2C); + } + + for (i = 0; i < 64; i++) { + struct UnkStruct_Sub1 *structPtr = &gUnknown_203B0E8->unk0[i]; + if (structPtr->unk0) { + axdata *axPtr = &structPtr->unk8; + + RunAxAnimationFrame(axPtr); + if (a0) { + DoAxFrame_800558C(axPtr, structPtr->unk4.x - pos.x, structPtr->unk4.y - pos.y, 1, 0, &var_2C); + } + } + } +} + +static void PrintDungeonName(DungeonLocation *dungLocation) +{ + const s32 x = 12; + Windows windows = { + .id = { + [0] = { + .type = WINDOW_TYPE_NORMAL, + .pos = {x, 2}, + .width = 16, + .height = 2, + .unk10 = 2, + }, + [1] = {.type = WINDOW_TYPE_NORMAL}, + [2] = {.type = WINDOW_TYPE_NORMAL}, + [3] = {.type = WINDOW_TYPE_NORMAL}, + } + }; + + if (gUnknown_203B0E8->monSpritePos.y - gUnknown_203B0E8->bgPos.y <= 80) { + windows.id[0].pos.y = 17; + } + else { + windows.id[0].pos.y = 1; + } + + ShowWindows(&windows, TRUE, TRUE); + sub_80073B8(0); + CopyDungeonName1toBuffer(gFormatBuffer_Monsters[0], dungLocation); + PrintFormattedStringOnWindow(12, 2, _("{CENTER_ALIGN}{POKEMON_0}"), 0, '\0'); + sub_80073E0(0); +} + +static void PrintDialogueMessage(const u8 *text) +{ + s32 i, a; + CreateMenuDialogueBoxAndPortrait(text, NULL, 0, NULL, NULL, 3, 0, NULL, 0x301); + do { + DrawDialogueBoxString(); + RunFrameActions(); + } while (sub_80144A4(&a) != 0); + + for (i = 0; i < 10; i++) { + RunFrameActions(); + } +} + +static bool8 ShowYesNoWindow(u8 *str) +{ + s32 r2, i; + MenuInputStruct menuInput; + + r2 = 0; + for (i = 0; str[i] != '\0'; i++) { + if (str[i] == '\n') { + r2 += 12; + } + } + r2 += 11; + r2 /= 8; + + gUnknown_203B0EC.id[0].pos.y = 19 - r2; + gUnknown_203B0EC.id[0].unk10 = r2; + gUnknown_203B0EC.id[0].height = r2; + gUnknown_203B0EC.id[1].pos.y = 14 - r2; + ShowWindows(&gUnknown_203B0EC, TRUE, TRUE); + sub_80073B8(0); + PrintFormattedStringOnWindow(4, 0, str, 0, '\0'); + sub_80073E0(0); + sub_80073B8(1); + PrintFormattedStringOnWindow(10, 0, "Yes", 1, '\0'); + PrintFormattedStringOnWindow(10, 12, "No", 1, '\0'); + sub_80073E0(1); + + menuInput.menuIndex = 1; + menuInput.unk1A = 2; + menuInput.unk1C = 2; + menuInput.unk1E = 0; + menuInput.unk20 = 0; + menuInput.unk4 = 0; + menuInput.unk6 = 0; + menuInput.unk0 = 1; + menuInput.unkC = 0; + menuInput.unkE = 0; + menuInput.unk14.x = 0; + menuInput.unk14.y = 0; + menuInput.unk8.x = 8; + menuInput.unk8.y = 8; + sub_80137B0(&menuInput, 24); + sub_801317C(&menuInput.unk28); + while (1) { + AddMenuCursorSprite(&menuInput); + RunFrameActions(); + if (gRealInputs.repeated & DPAD_DOWN) { + MoveMenuCursorDown(&menuInput); + PlayCursorUpDownSoundEffect(); + } + if (gRealInputs.repeated & DPAD_UP) { + MoveMenuCursorUp(&menuInput); + PlayCursorUpDownSoundEffect(); + } + if ((gRealInputs.pressed & A_BUTTON) || menuInput.unk28.a_button) { + PlayAcceptSoundEffect(); + break; + } + } + + if (menuInput.menuIndex == 0) { + return TRUE; + } + else { + return FALSE; + } +} + +static UNUSED void GetDungeonCoords(u8 id, DungeonPos *pos) +{ + pos->x = gDungeonCoordinates[id].x; + pos->y = gDungeonCoordinates[id].y; +} + diff --git a/sym_ewram_init.txt b/sym_ewram_init.txt index 07ae580a0..f7c663a21 100644 --- a/sym_ewram_init.txt +++ b/sym_ewram_init.txt @@ -16,6 +16,7 @@ .include "src/code_800DAC0.o" .include "src/code_800ED38.o" .include "src/code_8010F28.o" +.include "src/world_map.o" .include "src/debug.o" .include "src/save.o" .include "src/save_read.o" From 31fc24a433850b359e212f00c29c33e6b6f13295 Mon Sep 17 00:00:00 2001 From: DizzyEggg Date: Sun, 23 Feb 2025 22:26:26 +0100 Subject: [PATCH 23/40] documenting friend area maps --- asm/code_2.s | 2 +- data/data_80CE77C.s | 402 ------------------- include/constants/friend_area.h | 4 +- include/friend_areas_map.h | 35 +- include/world_map.h | 4 +- ld_script.txt | 4 +- src/code_8010F28.c | 470 ----------------------- src/friend_areas_map.c | 658 ++++++++++++++++++++++++++++++++ src/friend_areas_map_util.c | 186 ++++----- src/world_map.c | 237 +++++++----- sym_ewram_init.txt | 2 +- 11 files changed, 932 insertions(+), 1072 deletions(-) delete mode 100644 src/code_8010F28.c create mode 100644 src/friend_areas_map.c diff --git a/asm/code_2.s b/asm/code_2.s index 2c42fd608..d7baabfaa 100644 --- a/asm/code_2.s +++ b/asm/code_2.s @@ -514,7 +514,7 @@ _08000A42: mov r1, sp strb r0, [r1, 0x5] mov r0, sp - bl sub_800F990 + bl ShowFriendAreasMap ldr r0, [sp, 0x8] bl MemoryFree mov r0, sp diff --git a/data/data_80CE77C.s b/data/data_80CE77C.s index a8e5026c9..4be6cdd8a 100644 --- a/data/data_80CE77C.s +++ b/data/data_80CE77C.s @@ -62,405 +62,3 @@ gStatusSprites: @ 80D3474 gUnknown_80D3564: @ 80D3564 .byte 0,0,0,0 -@ - .string "pksdir0\0" - .align 2,0 - -@ Friend Area Data - - .global gFriendAreaLocations -gFriendAreaLocations: @ 80D3570 -@ replacing .incbin "baserom.gba", 0x000d3570, 0x94c - .4byte gUnknown_80D3EAC - .byte 0xc5, 0x01, 0x71, 0x00, 0x08, 0x09, 0x0a, 0x27, 0x2f, 0x0b, 0x3f, 0x3f, 0x05, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x0c, 0x00, 0x02, 0x00, 0x07, 0x00 @ Mountain Range - .4byte gUnknown_80D3EA4 - .byte 0xcd, 0x01, 0x1c, 0x00, 0x30, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x0a, 0x00, 0x0c, 0x00 - .4byte gUnknown_80D3E9C - .byte 0x61, 0x01, 0x78, 0x00, 0x0d, 0x0e, 0x11, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x1b, 0x00, 0x07, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x0d, 0x00, 0xff, 0xff, 0x09, 0x00, 0xff, 0xff - .4byte gUnknown_80D3E8C - .byte 0x62, 0x01, 0x2d, 0x01, 0x0f, 0x0c, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x04, 0x00, 0x0e, 0x00, 0x12, 0x00, 0xff, 0xff, 0xff, 0xff - .4byte gUnknown_80D3E80 - .byte 0x94, 0x01, 0x02, 0x01, 0x34, 0x35, 0x28, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0xff, 0xff, 0x11, 0x00, 0xff, 0xff, 0x0b, 0x00, 0x08, 0x00, 0xff, 0xff, 0x0e, 0x00, 0x03, 0x00 - .4byte gUnknown_80D3E70 - .byte 0xc7, 0x01, 0x9d, 0x00, 0x12, 0x13, 0x14, 0x15, 0x3f, 0x3f, 0x3f, 0x3f, 0x0b, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0xff, 0xff, 0x07, 0x00, 0x08, 0x00 - .4byte gUnknown_80D3E60 - .byte 0x08, 0x01, 0x9d, 0x00, 0x16, 0x17, 0x18, 0x19, 0x3f, 0x3f, 0x3f, 0x3f, 0x10, 0x00, 0xff, 0xff, 0x1b, 0x00, 0x09, 0x00, 0x14, 0x00, 0x1a, 0x00, 0xff, 0xff, 0xff, 0xff - .4byte gUnknown_80D3E58 - .byte 0x97, 0x01, 0xa0, 0x00, 0x1a, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x08, 0x00, 0x0b, 0x00, 0x05, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x02, 0x00, 0x1b, 0x00, 0xff, 0xff - .4byte gUnknown_80D3E48 - .byte 0x98, 0x01, 0xcf, 0x00, 0x1b, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x04, 0x00, 0xff, 0xff, 0x0b, 0x00, 0x05, 0x00, 0x07, 0x00, 0x1b, 0x00, 0xff, 0xff, 0x0e, 0x00 - .4byte gUnknown_80D3E40 - .byte 0x33, 0x01, 0x79, 0x00, 0x1c, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0xff, 0xff, 0x1b, 0x00, 0x02, 0x00, 0x0d, 0x00, 0x0f, 0x00, 0x14, 0x00, 0xff, 0xff, 0x06, 0x00 - .4byte gUnknown_80D3E30 - .byte 0x82, 0x01, 0x1d, 0x00, 0x1d, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0xff, 0xff, 0x0c, 0x00, 0x01, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x0f, 0x00, 0x0d, 0x00 - .4byte gUnknown_80D3E20 - .byte 0xc6, 0x01, 0xd0, 0x00, 0x1e, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x05, 0x00, 0x07, 0x00, 0x08, 0x00, 0x04, 0x00 - .4byte gUnknown_80D3E18 - .byte 0xa2, 0x01, 0x46, 0x00, 0x1f, 0x20, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x07, 0x00, 0x00, 0x00, 0xff, 0xff, 0x01, 0x00, 0xff, 0xff, 0x0a, 0x00, 0x0d, 0x00, 0x02, 0x00 - .4byte gUnknown_80D3E10 - .byte 0x60, 0x01, 0x47, 0x00, 0x21, 0x23, 0x24, 0x22, 0x3f, 0x3f, 0x3f, 0x3f, 0x02, 0x00, 0xff, 0xff, 0x0c, 0x00, 0x0a, 0x00, 0xff, 0xff, 0x0f, 0x00, 0x14, 0x00, 0x09, 0x00 - .4byte gUnknown_80D3E08 - .byte 0x63, 0x01, 0x04, 0x01, 0x25, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x03, 0x00, 0xff, 0xff, 0x04, 0x00, 0x08, 0x00, 0x1b, 0x00, 0xff, 0xff, 0x12, 0x00, 0xff, 0xff - .4byte gUnknown_80D3E00 - .byte 0x36, 0x01, 0x1c, 0x00, 0x26, 0x29, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x09, 0x00, 0x0d, 0x00, 0x0a, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x18, 0x00, 0x14, 0x00 - .4byte gUnknown_80D3DF8 - .byte 0x07, 0x01, 0xcb, 0x00, 0x10, 0x2a, 0x32, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0xff, 0xff, 0x12, 0x00, 0xff, 0xff, 0x1b, 0x00, 0x06, 0x00, 0xff, 0xff, 0xff, 0xff, 0x19, 0x00 - .4byte gUnknown_80D3DF0 - .byte 0xc4, 0x01, 0x2d, 0x01, 0x2b, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x04, 0x00, 0xff, 0xff, 0xff, 0xff - .4byte gUnknown_80D3DE8 - .byte 0x31, 0x01, 0x05, 0x01, 0x2e, 0x2c, 0x2d, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0xff, 0xff, 0x03, 0x00, 0x0e, 0x00, 0xff, 0xff, 0xff, 0xff, 0x10, 0x00, 0x19, 0x00, 0xff, 0xff - .4byte gUnknown_80D3DE4 - .byte 0x2f, 0x00, 0x15, 0x00, 0x33, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x17, 0x00, 0x1a, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff - .4byte gUnknown_80D3DD4 - .byte 0x07, 0x01, 0x47, 0x00, 0x36, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x06, 0x00, 0x09, 0x00, 0x0d, 0x00, 0x0f, 0x00, 0xff, 0xff, 0x18, 0x00, 0xff, 0xff, 0xff, 0xff - .4byte gUnknown_80D3DC4 - .byte 0x5d, 0x00, 0x0c, 0x01, 0x37, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0xff, 0xff, 0xff, 0xff, 0x19, 0x00, 0xff, 0xff, 0xff, 0xff, 0x16, 0x00, 0xff, 0xff, 0xff, 0xff - .4byte gUnknown_80D3DB4 - .byte 0x2d, 0x00, 0xcb, 0x00, 0x38, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0xff, 0xff, 0x15, 0x00, 0xff, 0xff, 0xff, 0xff, 0x17, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff - .4byte gUnknown_80D3DA4 - .byte 0x2d, 0x00, 0x70, 0x00, 0x39, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x16, 0x00, 0xff, 0xff, 0xff, 0xff, 0x1a, 0x00, 0x13, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff - .4byte gUnknown_80D3D94 - .byte 0xd0, 0x00, 0x16, 0x00, 0x01, 0x03, 0x05, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0xff, 0xff, 0x14, 0x00, 0x0f, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x1a, 0x00 - .4byte gUnknown_80D3D84 - .byte 0xb2, 0x00, 0x0d, 0x01, 0x02, 0x04, 0x06, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0xff, 0xff, 0xff, 0xff, 0x12, 0x00, 0x10, 0x00, 0xff, 0xff, 0xff, 0xff, 0x15, 0x00, 0xff, 0xff - .4byte gUnknown_80D3D7C - .byte 0x81, 0x00, 0x42, 0x00, 0x07, 0x31, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0xff, 0xff, 0x06, 0x00, 0xff, 0xff, 0x18, 0x00, 0xff, 0xff, 0x13, 0x00, 0xff, 0xff, 0x17, 0x00 @ Beach - .4byte gUnknown_80D3D78 - .byte 0x63, 0x01, 0xa1, 0x00, 0x00, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x0e, 0x00, 0x08, 0x00, 0x07, 0x00, 0xff, 0xff, 0x02, 0x00, 0x09, 0x00, 0x06, 0x00, 0x10, 0x00 @ Team Name - .4byte gUnknown_80D3D70 - .byte 0x00, 0x00, 0x00, 0x00, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff - .4byte gUnknown_80D3D70 - .byte 0x00, 0x00, 0x00, 0x00, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff - .4byte gUnknown_80D3D70 - .byte 0x00, 0x00, 0x00, 0x00, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff - .4byte gUnknown_80D3D70 - .byte 0x00, 0x00, 0x00, 0x00, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff - .4byte gUnknown_80D3D70 - .byte 0x00, 0x00, 0x00, 0x00, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff - .4byte gUnknown_80D3D70 - .byte 0x00, 0x00, 0x00, 0x00, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff - .4byte gUnknown_80D3D70 - .byte 0x00, 0x00, 0x00, 0x00, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff - .4byte gUnknown_80D3D70 - .byte 0x00, 0x00, 0x00, 0x00, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff - .4byte gUnknown_80D3D70 - .byte 0x00, 0x00, 0x00, 0x00, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff - .4byte gUnknown_80D3D70 - .byte 0x00, 0x00, 0x00, 0x00, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff - .4byte gUnknown_80D3D70 - .byte 0x00, 0x00, 0x00, 0x00, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff - .4byte gUnknown_80D3D70 - .byte 0x00, 0x00, 0x00, 0x00, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff - .4byte gUnknown_80D3D70 - .byte 0x00, 0x00, 0x00, 0x00, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff - .4byte gUnknown_80D3D70 - .byte 0x00, 0x00, 0x00, 0x00, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff - .4byte gUnknown_80D3D70 - .byte 0x00, 0x00, 0x00, 0x00, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff - .4byte gUnknown_80D3D70 - .byte 0x00, 0x00, 0x00, 0x00, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff - .4byte gUnknown_80D3D70 - .byte 0x00, 0x00, 0x00, 0x00, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff - .4byte gUnknown_80D3D70 - .byte 0x00, 0x00, 0x00, 0x00, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff - .4byte gUnknown_80D3D70 - .byte 0x00, 0x00, 0x00, 0x00, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff - .4byte gUnknown_80D3D70 - .byte 0x00, 0x00, 0x00, 0x00, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff - .4byte gUnknown_80D3D70 - .byte 0x00, 0x00, 0x00, 0x00, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff - .4byte gUnknown_80D3D70 - .byte 0x00, 0x00, 0x00, 0x00, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff - .4byte gUnknown_80D3D70 - .byte 0x00, 0x00, 0x00, 0x00, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff - .4byte gUnknown_80D3D70 - .byte 0x00, 0x00, 0x00, 0x00, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff - .4byte gUnknown_80D3D70 - .byte 0x00, 0x00, 0x00, 0x00, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff - .4byte gUnknown_80D3D70 - .byte 0x00, 0x00, 0x00, 0x00, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff - .4byte gUnknown_80D3D70 - .byte 0x00, 0x00, 0x00, 0x00, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff - .4byte gUnknown_80D3D70 - .byte 0x00, 0x00, 0x00, 0x00, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff - .4byte gUnknown_80D3D70 - .byte 0x00, 0x00, 0x00, 0x00, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff - .4byte gUnknown_80D3D70 - .byte 0x00, 0x00, 0x00, 0x00, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff - .4byte gUnknown_80D3D70 - .byte 0x00, 0x00, 0x00, 0x00, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff - .4byte gUnknown_80D3D70 - .byte 0x00, 0x00, 0x00, 0x00, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff - .4byte gUnknown_80D3D70 - .byte 0x00, 0x00, 0x00, 0x00, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff - .4byte gUnknown_80D3D70 - .byte 0x00, 0x00, 0x00, 0x00, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff - .4byte gUnknown_80D3D70 - .byte 0x00, 0x00, 0x00, 0x00, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff - .4byte gUnknown_80D3D70 - .byte 0x00, 0x00, 0x00, 0x00, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff - @ Start of Friend Area String Pool (80D3D70) - @ These are what show on the map when going to Friend Areas - .global gUnknown_80D3D70 - gUnknown_80D3D70: - .string "ななし\0" - .align 2,0 - .global gUnknown_80D3D78 - gUnknown_80D3D78: - .string "$t\0" @ Team Name - .align 2,0 - .global gUnknown_80D3D7C - gUnknown_80D3D7C: - .string "Beach\0" - .align 2,0 - .global gUnknown_80D3D84 - gUnknown_80D3D84: - .string "Southern Sea\0" - .align 2,0 - .global gUnknown_80D3D94 - gUnknown_80D3D94: - .string "Northern Sea\0" - .align 2,0 - .global gUnknown_80D3DA4 - gUnknown_80D3DA4: - .string "Western Isles\0" - .align 2,0 - .global gUnknown_80D3DB4 - gUnknown_80D3DB4: - .string "Southwest Isles\0" - .align 2,0 - .global gUnknown_80D3DC4 - gUnknown_80D3DC4: - .string "Southern Isles\0" - .align 2,0 - .global gUnknown_80D3DD4 - gUnknown_80D3DD4: - .string "Northern Isles\0" - .align 2,0 - .global gUnknown_80D3DE4 - gUnknown_80D3DE4: - .string "Sky\0" - .align 2,0 - .global gUnknown_80D3DE8 - gUnknown_80D3DE8: - .string "Relics\0" - .align 2,0 - .global gUnknown_80D3DF0 - gUnknown_80D3DF0: - .string "Desert\0" - .align 2,0 - .global gUnknown_80D3DF8 - gUnknown_80D3DF8: - .string "Volcano\0" - .align 2,0 - .global gUnknown_80D3E00 - gUnknown_80D3E00: - .string "Ruins\0" - .align 2,0 - .global gUnknown_80D3E08 - gUnknown_80D3E08: - .string "Jungle\0" - .align 2,0 - .global gUnknown_80D3E10 - gUnknown_80D3E10: - .string "Cave\0" - .align 2,0 - .global gUnknown_80D3E18 - gUnknown_80D3E18: - .string "Marsh\0" - .align 2,0 - .global gUnknown_80D3E20 - gUnknown_80D3E20: - .string "Eastern Lakes\0" - .align 2,0 - .global gUnknown_80D3E30 - gUnknown_80D3E30: - .string "Northern Lakes\0" - .align 2,0 - .global gUnknown_80D3E40 - gUnknown_80D3E40: - .string "Pond\0" - .align 2,0 - .global gUnknown_80D3E48 - gUnknown_80D3E48: - .string "Eastern Ponds\0" - .align 2,0 - .global gUnknown_80D3E58 - gUnknown_80D3E58: - .string "River\0" - .align 2,0 - .global gUnknown_80D3E60 - gUnknown_80D3E60: - .string "Western Forest\0" - .align 2,0 - .global gUnknown_80D3E70 - gUnknown_80D3E70: - .string "Eastern Forest\0" - .align 2,0 - .global gUnknown_80D3E80 - gUnknown_80D3E80: - .string "Badlands\0" - .align 2,0 - .global gUnknown_80D3E8C - gUnknown_80D3E8C: - .string "South Plains\0" - .align 2,0 - .global gUnknown_80D3E9C - gUnknown_80D3E9C: - .string "Plains\0" - .align 2,0 - .global gUnknown_80D3EA4 - gUnknown_80D3EA4: - .string "Glacier\0" - .align 2,0 - .global gUnknown_80D3EAC - gUnknown_80D3EAC: - .string "Mountain Range\0" - .align 2,0 - - .global gUnknown_80D3EBC -gUnknown_80D3EBC: @ 80D3EBC -@ replacing .incbin "baserom.gba", 0x000d3ebc, 0x20 - .byte 0x80, 0x03 - .byte 0x80, 0x04 - .byte 0x80, 0x00 - .byte 0x80, 0x03 - .byte 0x80, 0x0f - .byte 0x80, 0x00 - .byte 0x80, 0x0c - .byte 0x80, 0x0f - .byte 0x80, 0x0b - .byte 0x80, 0x0c - .byte 0x80, 0x08 - .byte 0x80, 0x0b - .byte 0x80, 0x07 - .byte 0x80, 0x08 - .byte 0x80, 0x04 - .byte 0x80, 0x07 - - .global gUnknown_80D3EDC -gUnknown_80D3EDC: @ 80D3EDC - .byte 0xff, 0x00, 0x02, 0x01 - .byte 0x04, 0xff, 0x03, 0xff - .byte 0x06, 0x07, 0xff, 0xff - .byte 0x05, 0xff, 0xff, 0xff - - - .global gUnknown_80D3EEC -gUnknown_80D3EEC: @ 80D3EEC - .byte 0xff, 0xff, 0xff, 0x01 - .byte 0xff, 0xff, 0x03, 0xff - .byte 0xff, 0x07, 0xff, 0xff - .byte 0x05, 0xff, 0xff, 0xff - - .global gUnknown_80D3EFC -gUnknown_80D3EFC: @ 80D3EFC - .string "$t Team Base\0" - .align 2,0 - .string "pksdir0\0" - .align 2,0 - - .global gDungeonCoordinates -gDungeonCoordinates: @ 80D3F14 -@ replacing .incbin "baserom.gba", 0x000d3f14, 0x100 -@ 2 byte X and 2 byte Y - .2byte 172, 174 @ Tiny Woods - .2byte 171, 111 - .2byte 242, 126 - .2byte 232, 181 - .2byte 263, 155 - .2byte 298, 159 - .2byte 299, 142 - .2byte 203, 255 - .2byte 385, 166 - .2byte 388, 126 - .2byte 389, 109 - .2byte 417, 112 - .2byte 422, 101 - .2byte 432, 85 - .2byte 436, 69 - .2byte 442, 150 - .2byte 446, 163 - .2byte 365, 27 - .2byte 352, 12 - .2byte 133, 238 - .2byte 129, 143 - .2byte 344, 105 - .2byte 427, 62 - .2byte 27, 211 - .2byte 246, 315 - .2byte 443, 6 - .2byte 32, 279 - .2byte 404, 262 - .2byte 194, 63 - .2byte 159, 46 - .2byte 441, 310 - .2byte 231, 235 - .2byte 169, 287 - .2byte 441, 273 - .2byte 64, 87 - .2byte 80, 54 - .2byte 431, 225 - .2byte 27, 94 - .2byte 354, 298 - .2byte 336, 253 - .2byte 287, 222 - .2byte 63, 163 - .2byte 275, 111 - .2byte 202, 232 - .2byte 268, 302 - .2byte 336, 260 - .2byte 110, 79 - .2byte 225, 314 - .2byte 206, 314 - .2byte 11, 307 - .2byte 472, 25 - .2byte 250, 8 - .2byte 187, 190 - .2byte 205, 111 - .2byte 474, 6 - .2byte 183, 9 - .2byte 367, 214 - .2byte 278, 273 - .2byte 68, 305 - .2byte 270, 33 - .2byte 33, 39 - .2byte 217, 8 - .2byte 69, 280 - .2byte 192, 183 @ D63 - - .global gUnknown_80D4014 -gUnknown_80D4014: @ 80D4014 - .4byte wmp2font_text - .4byte wmp2mcc_text - .4byte wmp2cani_text - .4byte wmp2pal_text - .4byte wmp2fon1_text - - .global wmp2fon1_text - wmp2fon1_text: - .string "wmp2fon1\0" - .align 2,0 - - .global wmp2pal_text - wmp2pal_text: - .string "wmp2pal\0" - .align 2,0 - - .global wmp2cani_text - wmp2cani_text: - .string "wmp2cani\0" - .align 2,0 - - .global wmp2mcc_text - wmp2mcc_text: - .string "wmp2mcc\0" - .align 2,0 - - .global wmp2font_text - wmp2font_text: - .string "wmp2font\0" - .align 2,0 - - - diff --git a/include/constants/friend_area.h b/include/constants/friend_area.h index 99e9e878a..179a22a4f 100644 --- a/include/constants/friend_area.h +++ b/include/constants/friend_area.h @@ -1,9 +1,6 @@ #ifndef GUARD_CONSTANTS_FRIEND_AREA_H #define GUARD_CONSTANTS_FRIEND_AREA_H - -#define NUM_FRIEND_AREAS 58 - // Unlock Condition #define UNLOCK_SHOP_STORY 0 #define UNLOCK_SHOP_POST_GAME 1 @@ -68,5 +65,6 @@ #define SOUTHERN_ISLAND 55 #define ENCLOSED_ISLAND 56 #define FINAL_ISLAND 57 +#define NUM_FRIEND_AREAS 58 #endif diff --git a/include/friend_areas_map.h b/include/friend_areas_map.h index 032347320..2c217a061 100644 --- a/include/friend_areas_map.h +++ b/include/friend_areas_map.h @@ -8,29 +8,31 @@ #include "structs/str_position.h" #include "constants/direction.h" +#define MAX_AREAS_PER_LOCATION 8 + struct FriendAreaLocation { const u8 *name; - DungeonPos unk4; - u8 unk8[8]; + DungeonPos pos; + u8 areasIds[MAX_AREAS_PER_LOCATION]; s16 unk10[8]; }; -struct UnkStruct_4018 +struct MapLocation { - u8 unk4018; + bool8 isShown; s16 unk2[8]; axdata unk14; }; // size: 0x4DD8 -struct UnkBgStruct +struct FriendAreasMap { OpenedFile *unk0[5]; u16 unk14[64][64]; u16 unk2014[64][64]; const struct FriendAreaLocation *locations; - struct UnkStruct_4018 unk4018[32]; + struct MapLocation mapLocations[32]; s32 unk4A18; s32 unk4A1C; s32 unk4A20; @@ -48,16 +50,27 @@ struct UnkBgStruct s32 unk4DE0; s32 unk4DE4; s32 unk4DE8; - u8 unk4DEC[8]; + u8 displayedAreas[MAX_AREAS_PER_LOCATION]; u8 unk4DF4; s32 unk4DF8; MenuInputStruct menu; }; -extern struct UnkBgStruct *gUnknown_203B0E4; +extern struct FriendAreasMap *gFriendAreasMapPtr; + +struct struct_unk800F990 +{ + u32 unk0; + u8 unk4; + u8 unk5; + struct FriendAreasMap *unk8; + u8 unkC; +}; + +void ShowFriendAreasMap(struct struct_unk800F990 *param_1); +void PrintFriendAreaNameInMap(u8 *strBuffer, u8 index); +bool8 IsFriendAreaShownOnMap(u8 friendAreaId); -void sub_80101F8(u8 *strBuffer, u8 index); -bool8 sub_800FFE8(u8 friendAreaId); void FriendAreasMap_UpdateMonSpritePosition(void); void FriendAreasMap_UpdateBg(void); @@ -66,7 +79,7 @@ void FriendAreasMap_RunFrameActions(void); void FriendAreasMap_ShowDirectionArrows(void); void FriendAreasMap_PrintCurrAreaName(void); void FriendAreasMap_PrintAvailableSubAreas(void); -void sub_8010EF0(void); +void FriendAreasMap_CloseFiles(void); void sub_8010DA4(void); #endif diff --git a/include/world_map.h b/include/world_map.h index ef3625bde..37d821373 100644 --- a/include/world_map.h +++ b/include/world_map.h @@ -15,7 +15,7 @@ struct UnkStruct_Sub1 axdata unk8; }; -struct UnkStruct_203B0E8 +struct WorldMap { struct UnkStruct_Sub1 unk0[64]; OpenedFile *unk1100[5]; @@ -48,7 +48,7 @@ struct UnkStruct_sub_8010268 { u8 fill0[4]; struct UnkStruct_sub_8010494 unk4; - struct UnkStruct_203B0E8 *unkB0; + struct WorldMap *unkB0; u8 unkB4; }; diff --git a/ld_script.txt b/ld_script.txt index 9ee30bee9..2d40e95a1 100755 --- a/ld_script.txt +++ b/ld_script.txt @@ -89,7 +89,7 @@ SECTIONS { asm/code_800ED38.o(.text); src/code_800F034.o(.text); src/code_800F958.o(.text); - src/code_8010F28.o(.text); + src/friend_areas_map.o(.text); src/world_map.o(.text); src/friend_areas_map_util.o(.text); src/code_80118A4.o(.text); @@ -419,7 +419,7 @@ SECTIONS { src/code_800F034.o(.rodata); src/code_800F958.o(.rodata); data/data_80CE77C.o(.rodata); - src/code_8010F28.o(.rodata); + src/friend_areas_map.o(.rodata); src/world_map.o(.rodata); src/friend_areas_map_util.o(.rodata); data/data_80CE77C_2.o(.rodata); diff --git a/src/code_8010F28.c b/src/code_8010F28.c deleted file mode 100644 index 79616eb9f..000000000 --- a/src/code_8010F28.c +++ /dev/null @@ -1,470 +0,0 @@ -#include "global.h" -#include "friend_areas_map.h" -#include "sprite.h" -#include "code_8004AA0.h" -#include "input.h" -#include "text.h" -#include "code_8009804.h" -#include "bg_palette_buffer.h" -#include "string_format.h" -#include "code_800D090.h" -#include "friend_area.h" -#include "bg_control.h" -#include "code_800558C.h" -#include "code_80118A4.h" -#include "code_800C9CC.h" -#include "pokemon.h" -#include "decompress.h" - -extern u32 sub_809034C(u8 dungeonIndex, s32 speciesId_, u8 *buffer, bool32 param_4_, bool32 param_5_); -extern void sub_801178C(void); -extern void sub_80117C4(void); -extern void PlayCancelSoundEffect(void); -extern void PlayAcceptSoundEffect(void); -extern void PlayCursorUpDownSoundEffect(void); -extern s32 sprintf(char *, const char *, ...); -extern void sub_800CB20(void); -extern void xxx_call_update_bg_sound_input(void); -extern void CopyDungeonName1toBuffer(u8 *buffer, DungeonLocation *dungeonLocation); -extern s32 Atan2_4096(PixelPos *a); -extern void sub_80117AC(void); -extern void sub_8011760(void); - -EWRAM_INIT struct UnkBgStruct *gUnknown_203B0E4 = NULL; - - -extern const struct FriendAreaLocation gFriendAreaLocations[]; -extern u8 *const gUnknown_80D4014[]; -extern const FileArchive gTitleMenuFileArchive; -extern const FileArchive gMonsterFileArchive; -extern const u8 gUnknown_80D40E4[]; -extern const u8 gUnknown_80D40EC[]; -extern const u8 gUnknown_80D405C[]; -extern const u8 gUnknown_80D40FC[]; -extern const u8 gUnknown_80D4104[]; -extern const u8 gUnknown_80D4120[]; -extern const u8 gUnknown_80D3EFC[]; -extern const u8 gUnknown_80D40F4[]; -extern const u8 gUnknown_80D4064[]; -extern const u8 gUnknown_80D406C[]; -extern const u8 gUnknown_80D407C[]; -extern const u8 gUnknown_80D4080[]; -extern const u8 gUnknown_80D4074[]; - -void sub_8010960(void); -void sub_8010798(void); -void sub_8010858(void); -void sub_8010344(u8 id1, u8 id2); -void sub_801059C(void); -bool8 sub_8010C58(u8 *str); -void sub_8010C10(const u8 *text); -void sub_801091C(void); -void sub_801073C(void); -void sub_8010B74(DungeonLocation *dungLocation); -void MoveToNewArea(s32 a0, s32 a1, s32 count); -u8 GetNewSelectedArea(void); -s32 ChooseArea(s32 *a0, s32 *newAreaId); -bool8 ChooseSubArea(void); -void sub_800FC28(void); -void sub_800FC5C(u8 a0); - -extern u16 gUnknown_2026E4E; -extern u8 gUnknown_202DE18; -extern u8 gUnknown_202DE19; - -extern const u8 gUnknown_80D3EDC[]; -extern const u8 gUnknown_80D3EEC[]; - -struct TestStruct -{ - s16 max; - s16 min; -}; - -extern const struct TestStruct gUnknown_80D3EBC[]; - -struct struct_unk800F990 -{ - u32 unk0; - u8 unk4; - u8 unk5; - struct UnkBgStruct *unk8; - u8 unkC; -}; - -void sub_800F990(struct struct_unk800F990 *param_1) -{ - gUnknown_203B0E4 = param_1->unk8; - gUnknown_2026E4E = 0x1010; - sub_80095CC(0,0x14); - UpdateFadeInTile(2); - gUnknown_203B0E4->locations = gFriendAreaLocations; - gUnknown_203B0E4->unk4A2C = param_1->unk5; - sub_8010DA4(); - gUnknown_203B0E4->unk4A28 = -1; - gUnknown_203B0E4->unk4A1C = -1; - sub_800FC5C(param_1->unk4); - gUnknown_203B0E4->unk4A20 = gUnknown_203B0E4->unk4A24; - gUnknown_202DE18 = 0xff; - gUnknown_202DE19 = 0; - sub_8011760(); - while (1) { - s32 local_1c = 0; - s32 newAreaId = 0; - s32 iVar2 = ChooseArea(&local_1c, &newAreaId); - - if (iVar2 == 1) { - MoveToNewArea(local_1c, newAreaId, 0x32); - } - else if (iVar2 == 2) { - if (!ChooseSubArea()) - continue; - param_1->unkC = gUnknown_203B0E4->unk4DF4; - break; - } - else if (iVar2 == 3) { - if (gUnknown_203B0E4->unk4A18 == gUnknown_203B0E4->unk4A20) { - param_1->unkC = 0; - break; - } - MoveToNewArea(gUnknown_203B0E4->unk4A20,0,10); - } - } - - sub_800FC28(); - sub_8010EF0(); - nullsub_16(); -} - -s32 ChooseArea(s32 *a0, s32 *newAreaId) -{ - s32 ret = 0; - - FriendAreasMap_ShowDirectionArrows(); - FriendAreasMap_PrintCurrAreaName(); - while (ret == 0) { - s32 areaId; - - FriendAreasMap_RunFrameActions(); - areaId = GetNewSelectedArea(); - if (areaId != 0xFF) { - s32 r4 = gUnknown_203B0E4->unk4A18; - struct UnkStruct_4018 *ptr = &gUnknown_203B0E4->unk4018[r4]; - - if (ptr->unk2[areaId] >= 0) { - s32 id = ptr->unk2[areaId]; - struct UnkStruct_4018 *ptr2 = &gUnknown_203B0E4->unk4018[id]; - - if (ptr2->unk4018 != 0) { - ret = 1; - *a0 = id; - *newAreaId = areaId; - gUnknown_203B0E4->unk4A28 = areaId; - gUnknown_203B0E4->unk4A1C = r4; - } - } - } - - if (gRealInputs.pressed & A_BUTTON) { - PlayAcceptSoundEffect(); - ret = 2; - } - if (gRealInputs.pressed & B_BUTTON) { - PlayCancelSoundEffect(); - ret = 3; - } - } - return ret; -} - -bool8 ChooseSubArea(void) -{ - bool8 ret = FALSE; - - FriendAreasMap_PrintAvailableSubAreas(); - while (1) { - MenuInputStruct *menuPtr = &gUnknown_203B0E4->menu; - - AddMenuCursorSprite(menuPtr); - FriendAreasMap_RunFrameActions(); - if (gRealInputs.repeated & DPAD_DOWN) { - MoveMenuCursorDown(menuPtr); - PlayCursorUpDownSoundEffect(); - } - if (gRealInputs.repeated & DPAD_UP) { - MoveMenuCursorUp(menuPtr); - PlayCursorUpDownSoundEffect(); - } - - if ((gRealInputs.pressed & A_BUTTON) || menuPtr->unk28.a_button) { - PlayAcceptSoundEffect(); - gUnknown_203B0E4->unk4DF4 = gUnknown_203B0E4->unk4DEC[menuPtr->menuIndex]; - ret = TRUE; - break; - } - if ((gRealInputs.pressed & B_BUTTON) || menuPtr->unk28.b_button) { - PlayCancelSoundEffect(); - break; - } - } - - return ret; -} - -void sub_800FC28(void) -{ - s32 i; - - FriendAreasMap_HideTextWindowAndArrows(); - sub_80117AC(); - for (i = 0; i < 60; i++) { - gUnknown_203B0E4->brightness -= 2; - FriendAreasMap_RunFrameActions(); - } -} - -void sub_800FC5C(u8 a0) -{ - s32 var_48 = 0; - s32 i, j, k; - - for (i = 0; i < 32; i++) { - bool8 r7 = FALSE; - bool8 r10 = FALSE; - struct UnkStruct_4018 *r6 = &gUnknown_203B0E4->unk4018[i]; - const struct FriendAreaLocation *location = &gUnknown_203B0E4->locations[i]; - - for (j = 0; j < 8; j++) { - r6->unk2[j] = 0xFFFF; - } - for (j = 0; j < 8; j++) { - if (sub_800FFE8(location->unk8[j])) { - if (location->unk8[j] == a0) { - var_48 = i; - } - if (location->unk8[j] == 0) { - gUnknown_203B0E4->unk4A24 = i; - r10 = TRUE; - } - r7 = TRUE; - } - } - - if (r7) { - r6->unk4018 = 1; - AxResInitFile(&r6->unk14, gUnknown_203B0E4->unk0[2], (r10) ? 12 : 1, 0, 0x40, 0, 1); - } - else { - r6->unk4018 = 0; - } - } - - for (i = 0; i < 32; i++) { - s32 var1, var2; - struct UnkStruct_4018 *r3 = &gUnknown_203B0E4->unk4018[i]; - const struct FriendAreaLocation *location = &gUnknown_203B0E4->locations[i]; - - if (!r3->unk4018) { - continue; - } - - for (j = 0; j < 8; j++) { - r3->unk2[j] = 0xFFFF; - if (location->unk10[j] >= 0) { - struct UnkStruct_4018 *ptr = &gUnknown_203B0E4->unk4018[location->unk10[j]]; - if (ptr->unk4018) { - r3->unk2[j] = location->unk10[j]; - } - } - } - - var1 = gUnknown_203B0E4->unk4A28; - var2 = gUnknown_203B0E4->unk4A1C; - if (var1 >= 0 && var2 >= 0) { - struct UnkStruct_4018 *ptr = &gUnknown_203B0E4->unk4018[var2]; - if (ptr->unk4018) { - var1 += 4; - var1 &= 7; - r3->unk2[var1] = var2; - } - } - - for (j = 0; j < 8; j++) { - s32 var_40 = -1; - s32 var_3C = 999999; - - if (r3->unk2[j] >= 0) - continue; - - for (k = 0; k < 32; k++) { - bool8 r7; - PixelPos pixelPos; - s32 atanVal; - struct UnkStruct_4018 *ptr2_18 = &gUnknown_203B0E4->unk4018[k]; - const struct FriendAreaLocation *location2 = &gUnknown_203B0E4->locations[k]; - - if (k == i) - continue; - if (ptr2_18->unk4018 == 0) - continue; - - pixelPos.x = (location2->unk4.x - location->unk4.x) << 8; - pixelPos.y = (location2->unk4.y - location->unk4.y) << 8; - atanVal = Atan2_4096(&pixelPos); - pixelPos.x /= 4; - pixelPos.y /= 4; - pixelPos.x /= 256; - pixelPos.y /= 256; - if (pixelPos.x == 0) { - pixelPos.x = 1; - } - if (pixelPos.y == 0) { - pixelPos.y = 1; - } - - r7 = FALSE; - if (j == 2) { - while (atanVal >= 0x1000) { - atanVal -= 0x1000; - } - while (atanVal < 0) { - atanVal += 0x1000; - } - if (gUnknown_80D3EBC[j].max < atanVal || gUnknown_80D3EBC[j].min > atanVal) { - r7 = TRUE; - } - } - else { - if (gUnknown_80D3EBC[j].max <= atanVal && gUnknown_80D3EBC[j].min > atanVal) { - r7 = TRUE; - } - } - - if (r7) { - s32 sum = (pixelPos.x * pixelPos.x) + (pixelPos.y * pixelPos.y); - if (var_3C > sum) { - var_3C = sum; - var_40 = k; - } - } - } - - if (var_40 >= 0) { - r3->unk2[j] = var_40; - } - } - } - - AxResInitFile(&gUnknown_203B0E4->monAxSprite, gUnknown_203B0E4->unk0[3], 0, 0, 0, 0, TRUE); - gUnknown_203B0E4->unk4A18 = var_48; - gUnknown_203B0E4->monSpritePos = gUnknown_203B0E4->locations[var_48].unk4; - gUnknown_203B0E4->bgPos.x = gUnknown_203B0E4->monSpritePos.x - 120; - gUnknown_203B0E4->bgPos.y = gUnknown_203B0E4->monSpritePos.y - 80; - FriendAreasMap_UpdateMonSpritePosition(); - FriendAreasMap_UpdateBg(); -} - -bool8 sub_800FFE8(u8 friendAreaId) -{ - if (friendAreaId > 57) return FALSE; - if (friendAreaId == 0) return TRUE; - if (gFriendAreas[friendAreaId]) return TRUE; - - return FALSE; -} - -u8 GetNewSelectedArea(void) -{ - u8 sp1[16]; - u8 sp2[16]; - u8 *table; - u32 flag; - - memcpy(sp1, gUnknown_80D3EDC, 16); - memcpy(sp2, gUnknown_80D3EEC, 16); - flag = 0; - table = (gRealInputs.held & R_BUTTON) ? sp2 : sp1; - - if (gRealInputs.held & DPAD_DOWN) { - flag |= 1; - } - if (gRealInputs.held & DPAD_RIGHT) { - flag |= 2; - } - if (gRealInputs.held & DPAD_UP) { - flag |= 4; - } - if (gRealInputs.held & DPAD_LEFT) { - flag |= 8; - } - - if (gUnknown_202DE18 == table[flag]) { - if (++gUnknown_202DE19 >= 3) { - return table[flag]; - } - } - else { - gUnknown_202DE18 = table[flag]; - gUnknown_202DE19 = 0; - } - return 0xFF; -} - -void MoveToNewArea(s32 a0, s32 a1, s32 count) -{ - s32 i, arrayId; - DungeonPos pos1, pos2; - - AxResInitFile(&gUnknown_203B0E4->monAxSprite, gUnknown_203B0E4->unk0[3], 0, a1 & 7, 0, 0, TRUE); - FriendAreasMap_HideTextWindowAndArrows(); - - arrayId = gUnknown_203B0E4->unk4A18; - pos1 = gUnknown_203B0E4->locations[arrayId].unk4; - pos2 = gUnknown_203B0E4->locations[a0].unk4; - - PlayCursorUpDownSoundEffect(); - for (i = 0; i < count; i++) { - gUnknown_203B0E4->monSpritePos.x = ((((pos2.x - pos1.x) * (i << 8)) / count) / 256) + pos1.x; - gUnknown_203B0E4->monSpritePos.y = ((((pos2.y - pos1.y) * (i << 8)) / count) / 256) + pos1.y; - - FriendAreasMap_UpdateMonSpritePosition(); - FriendAreasMap_UpdateBg(); - FriendAreasMap_RunFrameActions(); - } - - gUnknown_203B0E4->unk4A18 = a0; - gUnknown_203B0E4->monSpritePos = gUnknown_203B0E4->locations[a0].unk4; - FriendAreasMap_UpdateMonSpritePosition(); - FriendAreasMap_UpdateBg(); - FriendAreasMap_RunFrameActions(); - AxResInitFile(&gUnknown_203B0E4->monAxSprite, gUnknown_203B0E4->unk0[3], 0, 0, 0, 0, TRUE); -} - -void sub_80101F8(u8 *strBuffer, u8 index) -{ - if (index == 0) { - FormatString(gUnknown_80D3EFC, strBuffer, strBuffer + 0x50, 0); - } - else { - WriteFriendAreaName(strBuffer, index, FALSE); - } -} - -void sub_8010224(u8 unk8, DungeonPos *dst) -{ - s32 i, j; - - for (i = 0; i < 32; i++) { - const struct FriendAreaLocation *location = &gFriendAreaLocations[i]; - for (j = 0; j < 8; j++) { - if (location->unk8[j] == unk8) { - dst->x = location->unk4.x; - dst->y = location->unk4.y; - return; - } - } - } - dst->x = 0; - dst->y = 0; -} - diff --git a/src/friend_areas_map.c b/src/friend_areas_map.c new file mode 100644 index 000000000..8cadad48b --- /dev/null +++ b/src/friend_areas_map.c @@ -0,0 +1,658 @@ +#include "global.h" +#include "globaldata.h" +#include "friend_areas_map.h" +#include "sprite.h" +#include "code_8004AA0.h" +#include "input.h" +#include "text.h" +#include "code_8009804.h" +#include "bg_palette_buffer.h" +#include "string_format.h" +#include "code_800D090.h" +#include "friend_area.h" +#include "bg_control.h" +#include "code_800558C.h" +#include "code_80118A4.h" +#include "code_800C9CC.h" +#include "pokemon.h" +#include "decompress.h" +#include "constants/friend_area.h" + +extern u32 sub_809034C(u8 dungeonIndex, s32 speciesId_, u8 *buffer, bool32 param_4_, bool32 param_5_); +extern void sub_801178C(void); +extern void sub_80117C4(void); +extern void PlayCancelSoundEffect(void); +extern void PlayAcceptSoundEffect(void); +extern void PlayCursorUpDownSoundEffect(void); +extern s32 sprintf(char *, const char *, ...); +extern void sub_800CB20(void); +extern void xxx_call_update_bg_sound_input(void); +extern void CopyDungeonName1toBuffer(u8 *buffer, DungeonLocation *dungeonLocation); +extern s32 Atan2_4096(PixelPos *a); +extern void sub_80117AC(void); +extern void sub_8011760(void); + +EWRAM_INIT struct FriendAreasMap *gFriendAreasMapPtr = NULL; + +extern const FileArchive gTitleMenuFileArchive; +extern const FileArchive gMonsterFileArchive; + +static void MoveToNewArea(s32 a0, s32 a1, s32 count); +static u8 GetNewSelectedArea(void); +static s32 ChooseArea(s32 *a0, s32 *newAreaId); +static bool8 ChooseSubArea(void); +static void FadeFromFriendAreasMap(void); +static void sub_800FC5C(u8 a0); + +extern u16 gUnknown_2026E4E; +extern u8 gUnknown_202DE18; +extern u8 gUnknown_202DE19; + +#define NO_AREA NUM_FRIEND_AREAS + 5 + + // ななし means without name +#define DUMMY_LOCATION \ +{ \ + .name = _("ななし"), \ + .pos = {0, 0}, \ + .areasIds = {NO_AREA, NO_AREA, NO_AREA, NO_AREA, NO_AREA, NO_AREA, NO_AREA, NO_AREA}, \ + .unk10 = {0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF}, \ +} + +static const struct FriendAreaLocation gFriendAreaLocations[64] = +{ + { + .name = "Mountain Range", + .pos = {0x1C5, 0x71}, + .areasIds = {8, 9, 0xA, 0x27, 0x2F, 0xB, 0x3F, 0x3F}, + .unk10 = {5, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xC, 2, 7}, + }, + { + .name = "Glacier", + .pos = {0x1CD, 0x1C}, + .areasIds = {0x30, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F}, + .unk10 = {0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xA, 0xC}, + }, + { + .name = "Plains", + .pos = {0x161, 0x78}, + .areasIds = {0xD, 0xE, 0x11, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F}, + .unk10 = {0x1B, 7, 0, 0xC, 0xD, 0xFFFF, 9, 0xFFFF}, + }, + { + .name = "South Plains", + .pos = {0x162, 0x12D}, + .areasIds = {0xF, 0xC, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F}, + .unk10 = {0xFFFF, 0xFFFF, 0xFFFF, 4, 0xE, 0x12, 0xFFFF, 0xFFFF}, + }, + { + .name = "Badlands", + .pos = {0x194, 0x102}, + .areasIds = {0x34, 0x35, 0x28, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F}, + .unk10 = {0xFFFF, 0x11, 0xFFFF, 0xB, 8, 0xFFFF, 0xE, 3}, + }, + { + .name = "Eastern Forest", + .pos = {0x1C7, 0x9D}, + .areasIds = {0x12, 0x13, 0x14, 0x15, 0x3F, 0x3F, 0x3F, 0x3F}, + .unk10 = {0xB, 0xFFFF, 0xFFFF, 0xFFFF, 0, 0xFFFF, 7, 8}, + }, + { + .name = "Western Forest", + .pos = {0x108, 0x9D}, + .areasIds = {0x16, 0x17, 0x18, 0x19, 0x3F, 0x3F, 0x3F, 0x3F}, + .unk10 = {0x10, 0xFFFF, 0x1B, 9, 0x14, 0x1A, 0xFFFF, 0xFFFF}, + }, + { + .name = "River", + .pos = {0x197, 0xA0}, + .areasIds = {0x1A, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F}, + .unk10 = {8, 0xB, 5, 0, 0xC, 2, 0x1B, 0xFFFF}, + }, + { + .name = "Eastern Ponds", + .pos = {0x198, 0xCF}, + .areasIds = {0x1B, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F}, + .unk10 = {4, 0xFFFF, 0xB, 5, 7, 0x1B, 0xFFFF, 0xE}, + }, + { + .name = "Pond", + .pos = {0x133, 0x79}, + .areasIds = {0x1C, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F}, + .unk10 = {0xFFFF, 0x1B, 2, 0xD, 0xF, 0x14, 0xFFFF, 6}, + }, + { + .name = "Northern Lakes", + .pos = {0x182, 0x1D}, + .areasIds = {0x1D, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F}, + .unk10 = {0xFFFF, 0xC, 1, 0xFFFF, 0xFFFF, 0xFFFF, 0xF, 0xD}, + }, + { + .name = "Eastern Lakes", + .pos = {0x1C6, 0xD0}, + .areasIds = {0x1E, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F}, + .unk10 = {0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 5, 7, 8, 4}, + }, + { + .name = "Marsh", + .pos = {0x1A2, 0x46}, + .areasIds = {0x1F, 0x20, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F}, + .unk10 = {7, 0, 0xFFFF, 1, 0xFFFF, 0xA, 0xD, 2}, + }, + { + .name = "Cave", + .pos = {0x160, 0x47}, + .areasIds = {0x21, 0x23, 0x24, 0x22, 0x3F, 0x3F, 0x3F, 0x3F}, + .unk10 = {2, 0xFFFF, 0xC, 0xA, 0xFFFF, 0xF, 0x14, 9}, + }, + { + .name = "Jungle", + .pos = {0x163, 0x104}, + .areasIds = {0x25, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F}, + .unk10 = {3, 0xFFFF, 4, 8, 0x1B, 0xFFFF, 0x12, 0xFFFF}, + }, + { + .name = "Ruins", + .pos = {0x136, 0x1C}, + .areasIds = {0x26, 0x29, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F}, + .unk10 = {9, 0xD, 0xA, 0xFFFF, 0xFFFF, 0xFFFF, 0x18, 0x14}, + }, + { + .name = "Volcano", + .pos = {0x107, 0xCB}, + .areasIds = {0x10, 0x2A, 0x32, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F}, + .unk10 = {0xFFFF, 0x12, 0xFFFF, 0x1B, 6, 0xFFFF, 0xFFFF, 0x19}, + }, + { + .name = "Desert", + .pos = {0x1C4, 0x12D}, + .areasIds = {0x2B, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F}, + .unk10 = {0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 4, 0xFFFF, 0xFFFF}, + }, + { + .name = "Relics", + .pos = {0x131, 0x105}, + .areasIds = {0x2E, 0x2C, 0x2D, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F}, + .unk10 = {0xFFFF, 3, 0xE, 0xFFFF, 0xFFFF, 0x10, 0x19, 0xFFFF}, + }, + { + .name = "Sky", + .pos = {0x2F, 0x15}, + .areasIds = {0x33, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F}, + .unk10 = {0x17, 0x1A, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF}, + }, + { + .name = "Northern Isles", + .pos = {0x107, 0x47}, + .areasIds = {0x36, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F}, + .unk10 = {6, 9, 0xD, 0xF, 0xFFFF, 0x18, 0xFFFF, 0xFFFF}, + }, + { + .name = "Southern Isles", + .pos = {0x5D, 0x10C}, + .areasIds = {0x37, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F}, + .unk10 = {0xFFFF, 0xFFFF, 0x19, 0xFFFF, 0xFFFF, 0x16, 0xFFFF, 0xFFFF}, + }, + { + .name = "Southwest Isles", + .pos = {0x2D, 0xCB}, + .areasIds = {0x38, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F}, + .unk10 = {0xFFFF, 0x15, 0xFFFF, 0xFFFF, 0x17, 0xFFFF, 0xFFFF, 0xFFFF}, + }, + { + .name = "Western Isles", + .pos = {0x2D, 0x70}, + .areasIds = {0x39, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F}, + .unk10 = {0x16, 0xFFFF, 0xFFFF, 0x1A, 0x13, 0xFFFF, 0xFFFF, 0xFFFF}, + }, + { + .name = "Northern Sea", + .pos = {0xD0, 0x16}, + .areasIds = {1, 3, 5, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F}, + .unk10 = {0xFFFF, 0x14, 0xF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0x1A}, + }, + { + .name = "Southern Sea", + .pos = {0xB2, 0x10D}, + .areasIds = {2, 4, 6, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F}, + .unk10 = {0xFFFF, 0xFFFF, 0x12, 0x10, 0xFFFF, 0xFFFF, 0x15, 0xFFFF}, + }, + { + .name = "Beach", + .pos = {0x81, 0x42}, + .areasIds = {7, 0x31, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F}, + .unk10 = {0xFFFF, 6, 0xFFFF, 0x18, 0xFFFF, 0x13, 0xFFFF, 0x17}, + }, + { + .name = _("$t"), + .pos = {0x163, 0xA1}, + .areasIds = {0, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F}, + .unk10 = {0xE, 8, 7, 0xFFFF, 2, 9, 6, 0x10}, + }, + DUMMY_LOCATION, + DUMMY_LOCATION, + DUMMY_LOCATION, + DUMMY_LOCATION, + DUMMY_LOCATION, + DUMMY_LOCATION, + DUMMY_LOCATION, + DUMMY_LOCATION, + DUMMY_LOCATION, + DUMMY_LOCATION, + DUMMY_LOCATION, + DUMMY_LOCATION, + DUMMY_LOCATION, + DUMMY_LOCATION, + DUMMY_LOCATION, + DUMMY_LOCATION, + DUMMY_LOCATION, + DUMMY_LOCATION, + DUMMY_LOCATION, + DUMMY_LOCATION, + DUMMY_LOCATION, + DUMMY_LOCATION, + DUMMY_LOCATION, + DUMMY_LOCATION, + DUMMY_LOCATION, + DUMMY_LOCATION, + DUMMY_LOCATION, + DUMMY_LOCATION, + DUMMY_LOCATION, + DUMMY_LOCATION, + DUMMY_LOCATION, + DUMMY_LOCATION, + DUMMY_LOCATION, + DUMMY_LOCATION, + DUMMY_LOCATION, + DUMMY_LOCATION, +}; + +void ShowFriendAreasMap(struct struct_unk800F990 *param_1) +{ + gFriendAreasMapPtr = param_1->unk8; + gUnknown_2026E4E = 0x1010; + sub_80095CC(0,0x14); + UpdateFadeInTile(2); + gFriendAreasMapPtr->locations = gFriendAreaLocations; + gFriendAreasMapPtr->unk4A2C = param_1->unk5; + sub_8010DA4(); + gFriendAreasMapPtr->unk4A28 = -1; + gFriendAreasMapPtr->unk4A1C = -1; + sub_800FC5C(param_1->unk4); + gFriendAreasMapPtr->unk4A20 = gFriendAreasMapPtr->unk4A24; + gUnknown_202DE18 = 0xff; + gUnknown_202DE19 = 0; + sub_8011760(); + while (1) { + s32 local_1c = 0; + s32 newAreaId = 0; + s32 iVar2 = ChooseArea(&local_1c, &newAreaId); + + if (iVar2 == 1) { + MoveToNewArea(local_1c, newAreaId, 0x32); + } + else if (iVar2 == 2) { + if (!ChooseSubArea()) + continue; + param_1->unkC = gFriendAreasMapPtr->unk4DF4; + break; + } + else if (iVar2 == 3) { + if (gFriendAreasMapPtr->unk4A18 == gFriendAreasMapPtr->unk4A20) { + param_1->unkC = 0; + break; + } + MoveToNewArea(gFriendAreasMapPtr->unk4A20,0,10); + } + } + + FadeFromFriendAreasMap(); + FriendAreasMap_CloseFiles(); + nullsub_16(); +} + +static s32 ChooseArea(s32 *a0, s32 *newAreaId) +{ + s32 ret = 0; + + FriendAreasMap_ShowDirectionArrows(); + FriendAreasMap_PrintCurrAreaName(); + while (ret == 0) { + s32 areaId; + + FriendAreasMap_RunFrameActions(); + areaId = GetNewSelectedArea(); + if (areaId != 0xFF) { + s32 r4 = gFriendAreasMapPtr->unk4A18; + struct MapLocation *ptr = &gFriendAreasMapPtr->mapLocations[r4]; + + if (ptr->unk2[areaId] >= 0) { + s32 id = ptr->unk2[areaId]; + struct MapLocation *ptr2 = &gFriendAreasMapPtr->mapLocations[id]; + + if (ptr2->isShown != 0) { + ret = 1; + *a0 = id; + *newAreaId = areaId; + gFriendAreasMapPtr->unk4A28 = areaId; + gFriendAreasMapPtr->unk4A1C = r4; + } + } + } + + if (gRealInputs.pressed & A_BUTTON) { + PlayAcceptSoundEffect(); + ret = 2; + } + if (gRealInputs.pressed & B_BUTTON) { + PlayCancelSoundEffect(); + ret = 3; + } + } + return ret; +} + +static bool8 ChooseSubArea(void) +{ + bool8 ret = FALSE; + + FriendAreasMap_PrintAvailableSubAreas(); + while (1) { + MenuInputStruct *menuPtr = &gFriendAreasMapPtr->menu; + + AddMenuCursorSprite(menuPtr); + FriendAreasMap_RunFrameActions(); + if (gRealInputs.repeated & DPAD_DOWN) { + MoveMenuCursorDown(menuPtr); + PlayCursorUpDownSoundEffect(); + } + if (gRealInputs.repeated & DPAD_UP) { + MoveMenuCursorUp(menuPtr); + PlayCursorUpDownSoundEffect(); + } + + if ((gRealInputs.pressed & A_BUTTON) || menuPtr->unk28.a_button) { + PlayAcceptSoundEffect(); + gFriendAreasMapPtr->unk4DF4 = gFriendAreasMapPtr->displayedAreas[menuPtr->menuIndex]; + ret = TRUE; + break; + } + if ((gRealInputs.pressed & B_BUTTON) || menuPtr->unk28.b_button) { + PlayCancelSoundEffect(); + break; + } + } + + return ret; +} + +static void FadeFromFriendAreasMap(void) +{ + s32 i; + + FriendAreasMap_HideTextWindowAndArrows(); + sub_80117AC(); + for (i = 0; i < 60; i++) { + gFriendAreasMapPtr->brightness -= 2; + FriendAreasMap_RunFrameActions(); + } +} + +struct MaxMin +{ + s16 min; + s16 max; +}; + +static const struct MaxMin sAtanRanges[] = +{ + {0x380, 0x480}, + {0x80, 0x380}, + {0xF80, 0x80}, + {0xC80, 0xF80}, + {0xB80, 0xC80}, + {0x880, 0xB80}, + {0x780, 0x880}, + {0x480, 0x780}, +}; + +static void sub_800FC5C(u8 a0) +{ + s32 var_48 = 0; + s32 i, j, k; + + for (i = 0; i < 32; i++) { + bool8 locationShown = FALSE; + bool8 areaIsBase = FALSE; + struct MapLocation *mapLocation = &gFriendAreasMapPtr->mapLocations[i]; + const struct FriendAreaLocation *location = &gFriendAreasMapPtr->locations[i]; + + for (j = 0; j < 8; j++) { + mapLocation->unk2[j] = -1; + } + for (j = 0; j < MAX_AREAS_PER_LOCATION; j++) { + if (IsFriendAreaShownOnMap(location->areasIds[j])) { + if (location->areasIds[j] == a0) { + var_48 = i; + } + if (location->areasIds[j] == 0) { + gFriendAreasMapPtr->unk4A24 = i; + areaIsBase = TRUE; + } + locationShown = TRUE; + } + } + + if (locationShown) { + mapLocation->isShown = TRUE; + AxResInitFile(&mapLocation->unk14, gFriendAreasMapPtr->unk0[2], (areaIsBase) ? 12 : 1, 0, 0x40, 0, 1); + } + else { + mapLocation->isShown = FALSE; + } + } + + for (i = 0; i < 32; i++) { + s32 var1, var2; + struct MapLocation *r3 = &gFriendAreasMapPtr->mapLocations[i]; + const struct FriendAreaLocation *location = &gFriendAreasMapPtr->locations[i]; + + if (!r3->isShown) { + continue; + } + + for (j = 0; j < 8; j++) { + r3->unk2[j] = -1; + if (location->unk10[j] >= 0) { + struct MapLocation *ptr = &gFriendAreasMapPtr->mapLocations[location->unk10[j]]; + if (ptr->isShown) { + r3->unk2[j] = location->unk10[j]; + } + } + } + + var1 = gFriendAreasMapPtr->unk4A28; + var2 = gFriendAreasMapPtr->unk4A1C; + if (var1 >= 0 && var2 >= 0) { + struct MapLocation *ptr = &gFriendAreasMapPtr->mapLocations[var2]; + if (ptr->isShown) { + var1 += 4; + var1 &= 7; + r3->unk2[var1] = var2; + } + } + + for (j = 0; j < 8; j++) { + s32 var_40 = -1; + s32 var_3C = 999999; + + if (r3->unk2[j] >= 0) + continue; + + for (k = 0; k < 32; k++) { + bool8 r7; + PixelPos pixelPos; + s32 atanVal; + struct MapLocation *ptr2_18 = &gFriendAreasMapPtr->mapLocations[k]; + const struct FriendAreaLocation *location2 = &gFriendAreasMapPtr->locations[k]; + + if (k == i) + continue; + if (ptr2_18->isShown == 0) + continue; + + pixelPos.x = (location2->pos.x - location->pos.x) << 8; + pixelPos.y = (location2->pos.y - location->pos.y) << 8; + atanVal = Atan2_4096(&pixelPos); + pixelPos.x /= 4; + pixelPos.y /= 4; + pixelPos.x /= 256; + pixelPos.y /= 256; + if (pixelPos.x == 0) { + pixelPos.x = 1; + } + if (pixelPos.y == 0) { + pixelPos.y = 1; + } + + r7 = FALSE; + if (j == 2) { + while (atanVal >= 0x1000) { + atanVal -= 0x1000; + } + while (atanVal < 0) { + atanVal += 0x1000; + } + if (sAtanRanges[j].min < atanVal || sAtanRanges[j].max > atanVal) { + r7 = TRUE; + } + } + else { + if (sAtanRanges[j].min <= atanVal && sAtanRanges[j].max > atanVal) { + r7 = TRUE; + } + } + + if (r7) { + s32 sum = (pixelPos.x * pixelPos.x) + (pixelPos.y * pixelPos.y); + if (var_3C > sum) { + var_3C = sum; + var_40 = k; + } + } + } + + if (var_40 >= 0) { + r3->unk2[j] = var_40; + } + } + } + + AxResInitFile(&gFriendAreasMapPtr->monAxSprite, gFriendAreasMapPtr->unk0[3], 0, 0, 0, 0, TRUE); + gFriendAreasMapPtr->unk4A18 = var_48; + gFriendAreasMapPtr->monSpritePos = gFriendAreasMapPtr->locations[var_48].pos; + gFriendAreasMapPtr->bgPos.x = gFriendAreasMapPtr->monSpritePos.x - 120; + gFriendAreasMapPtr->bgPos.y = gFriendAreasMapPtr->monSpritePos.y - 80; + FriendAreasMap_UpdateMonSpritePosition(); + FriendAreasMap_UpdateBg(); +} + +bool8 IsFriendAreaShownOnMap(u8 friendAreaId) +{ + if (friendAreaId >= NUM_FRIEND_AREAS) return FALSE; + if (friendAreaId == 0) return TRUE; + if (gFriendAreas[friendAreaId]) return TRUE; + + return FALSE; +} + +static u8 GetNewSelectedArea(void) +{ + u8 sp1[16] = {0xff, 0x00, 0x02, 0x01, 0x04, 0xff, 0x03, 0xff, 0x06, 0x07, 0xff, 0xff, 0x05, 0xff, 0xff, 0xff}; + u8 sp2[16] = {0xff, 0xff, 0xff, 0x01, 0xff, 0xff, 0x03, 0xff, 0xff, 0x07, 0xff, 0xff, 0x05, 0xff, 0xff, 0xff}; + u32 flag = 0; + u8 *table = (gRealInputs.held & R_BUTTON) ? sp2 : sp1; + + if (gRealInputs.held & DPAD_DOWN) { + flag |= 1; + } + if (gRealInputs.held & DPAD_RIGHT) { + flag |= 2; + } + if (gRealInputs.held & DPAD_UP) { + flag |= 4; + } + if (gRealInputs.held & DPAD_LEFT) { + flag |= 8; + } + + if (gUnknown_202DE18 == table[flag]) { + if (++gUnknown_202DE19 >= 3) { + return table[flag]; + } + } + else { + gUnknown_202DE18 = table[flag]; + gUnknown_202DE19 = 0; + } + return 0xFF; +} + +static void MoveToNewArea(s32 a0, s32 a1, s32 count) +{ + s32 i, arrayId; + DungeonPos pos1, pos2; + + AxResInitFile(&gFriendAreasMapPtr->monAxSprite, gFriendAreasMapPtr->unk0[3], 0, a1 & 7, 0, 0, TRUE); + FriendAreasMap_HideTextWindowAndArrows(); + + arrayId = gFriendAreasMapPtr->unk4A18; + pos1 = gFriendAreasMapPtr->locations[arrayId].pos; + pos2 = gFriendAreasMapPtr->locations[a0].pos; + + PlayCursorUpDownSoundEffect(); + for (i = 0; i < count; i++) { + gFriendAreasMapPtr->monSpritePos.x = ((((pos2.x - pos1.x) * (i << 8)) / count) / 256) + pos1.x; + gFriendAreasMapPtr->monSpritePos.y = ((((pos2.y - pos1.y) * (i << 8)) / count) / 256) + pos1.y; + + FriendAreasMap_UpdateMonSpritePosition(); + FriendAreasMap_UpdateBg(); + FriendAreasMap_RunFrameActions(); + } + + gFriendAreasMapPtr->unk4A18 = a0; + gFriendAreasMapPtr->monSpritePos = gFriendAreasMapPtr->locations[a0].pos; + FriendAreasMap_UpdateMonSpritePosition(); + FriendAreasMap_UpdateBg(); + FriendAreasMap_RunFrameActions(); + AxResInitFile(&gFriendAreasMapPtr->monAxSprite, gFriendAreasMapPtr->unk0[3], 0, 0, 0, 0, TRUE); +} + +void PrintFriendAreaNameInMap(u8 *strBuffer, u8 index) +{ + if (index == 0) { + FormatString("$t Team Base", strBuffer, strBuffer + 0x50, 0); + } + else { + WriteFriendAreaName(strBuffer, index, FALSE); + } +} + +static UNUSED void sub_8010224(u8 areaId, DungeonPos *dst) +{ + s32 i, j; + + for (i = 0; i < 32; i++) { + const struct FriendAreaLocation *location = &gFriendAreaLocations[i]; + for (j = 0; j < 8; j++) { + if (location->areasIds[j] == areaId) { + dst->x = location->pos.x; + dst->y = location->pos.y; + return; + } + } + } + dst->x = 0; + dst->y = 0; +} + diff --git a/src/friend_areas_map_util.c b/src/friend_areas_map_util.c index 86b9b74b9..baf3d0648 100644 --- a/src/friend_areas_map_util.c +++ b/src/friend_areas_map_util.c @@ -67,26 +67,26 @@ void sub_8010DA4(void) OpenedFile *file2 = OpenFileAndGetFileDataPtr(gUnknown_80D408C[1], &gTitleMenuFileArchive); sprintf(filename, "ax%03d", pokeStruct->speciesNum); - gUnknown_203B0E4->unk0[3] = OpenFileAndGetFileDataPtr(filename, &gMonsterFileArchive); - gUnknown_203B0E4->unk0[2] = OpenFileAndGetFileDataPtr("wmapspr", &gTitleMenuFileArchive); - gUnknown_203B0E4->unk0[4] = OpenFileAndGetFileDataPtr(gUnknown_80D408C[2], &gTitleMenuFileArchive); - gUnknown_203B0E4->unk0[1] = OpenFileAndGetFileDataPtr("palet", &gMonsterFileArchive); - gUnknown_203B0E4->unk0[0] = OpenFileAndGetFileDataPtr(gUnknown_80D408C[3], &gTitleMenuFileArchive); - gUnknown_203B0E4->unk4DD0 = GetPokemonOverworldPalette(pokeStruct->speciesNum, 0); + gFriendAreasMapPtr->unk0[3] = OpenFileAndGetFileDataPtr(filename, &gMonsterFileArchive); + gFriendAreasMapPtr->unk0[2] = OpenFileAndGetFileDataPtr("wmapspr", &gTitleMenuFileArchive); + gFriendAreasMapPtr->unk0[4] = OpenFileAndGetFileDataPtr(gUnknown_80D408C[2], &gTitleMenuFileArchive); + gFriendAreasMapPtr->unk0[1] = OpenFileAndGetFileDataPtr("palet", &gMonsterFileArchive); + gFriendAreasMapPtr->unk0[0] = OpenFileAndGetFileDataPtr(gUnknown_80D408C[3], &gTitleMenuFileArchive); + gFriendAreasMapPtr->unk4DD0 = GetPokemonOverworldPalette(pokeStruct->speciesNum, 0); - sub_8005610(gUnknown_203B0E4->unk0[2], 0x40, 0x1F, 0); + sub_8005610(gFriendAreasMapPtr->unk0[2], 0x40, 0x1F, 0); DecompressATGlobalFile((u32 *)(VRAM + 0x8000), 0x0, file); - sub_8004AA4(gUnknown_203B0E4->unk4C4C, gUnknown_203B0E4->unk0[4], 0x10); + sub_8004AA4(gFriendAreasMapPtr->unk4C4C, gFriendAreasMapPtr->unk0[4], 0x10); size = 0x4000; - DecompressATFile((u8 *) &gUnknown_203B0E4->unk14, size, file2); + DecompressATFile((u8 *) &gFriendAreasMapPtr->unk14, size, file2); - gUnknown_203B0E4->brightness = 0; - gUnknown_203B0E4->bgPos.x = 0; - gUnknown_203B0E4->bgPos.y = 0; + gFriendAreasMapPtr->brightness = 0; + gFriendAreasMapPtr->bgPos.x = 0; + gFriendAreasMapPtr->bgPos.y = 0; for (i = 0; i < NUM_DIRECTIONS; i++) { - ResetFlags(&gUnknown_203B0E4->arrowSprites[i]); + ResetFlags(&gFriendAreasMapPtr->arrowSprites[i]); } CloseFile(file); @@ -94,13 +94,13 @@ void sub_8010DA4(void) ShowWindows(NULL, 1, 1); } -void sub_8010EF0(void) +void FriendAreasMap_CloseFiles(void) { - CloseFile(gUnknown_203B0E4->unk0[4]); - CloseFile(gUnknown_203B0E4->unk0[2]); - CloseFile(gUnknown_203B0E4->unk0[3]); - CloseFile(gUnknown_203B0E4->unk0[0]); - CloseFile(gUnknown_203B0E4->unk0[1]); + CloseFile(gFriendAreasMapPtr->unk0[4]); + CloseFile(gFriendAreasMapPtr->unk0[2]); + CloseFile(gFriendAreasMapPtr->unk0[3]); + CloseFile(gFriendAreasMapPtr->unk0[0]); + CloseFile(gFriendAreasMapPtr->unk0[1]); } static void AnimateSprites(void) @@ -112,29 +112,29 @@ static void AnimateSprites(void) sub_8004E8C(&var_30); var_30.unk4 = 0xF3FF; var_30.unkA = 0x800; - bgPos = gUnknown_203B0E4->bgPos; - RunAxAnimationFrame(&gUnknown_203B0E4->monAxSprite); - DoAxFrame_800558C(&gUnknown_203B0E4->monAxSprite, gUnknown_203B0E4->monSpritePos.x - bgPos.x, gUnknown_203B0E4->monSpritePos.y - bgPos.y, 3, gUnknown_203B0E4->unk4DD0, &var_30); + bgPos = gFriendAreasMapPtr->bgPos; + RunAxAnimationFrame(&gFriendAreasMapPtr->monAxSprite); + DoAxFrame_800558C(&gFriendAreasMapPtr->monAxSprite, gFriendAreasMapPtr->monSpritePos.x - bgPos.x, gFriendAreasMapPtr->monSpritePos.y - bgPos.y, 3, gFriendAreasMapPtr->unk4DD0, &var_30); for (i = 0; i < 32; i++) { - struct UnkStruct_4018 *r0 = &gUnknown_203B0E4->unk4018[i]; - const struct FriendAreaLocation *location = &gUnknown_203B0E4->locations[i]; - if (r0->unk4018 != 0) { + struct MapLocation *r0 = &gFriendAreasMapPtr->mapLocations[i]; + const struct FriendAreaLocation *location = &gFriendAreasMapPtr->locations[i]; + if (r0->isShown) { RunAxAnimationFrame(&r0->unk14); - DoAxFrame_800558C(&r0->unk14, location->unk4.x - bgPos.x, location->unk4.y- bgPos.y, 1, 0, &var_30); + DoAxFrame_800558C(&r0->unk14, location->pos.x - bgPos.x, location->pos.y- bgPos.y, 1, 0, &var_30); } } for (dir = 0; dir < NUM_DIRECTIONS; dir++) { - if (CheckAxFlag8000(&gUnknown_203B0E4->arrowSprites[dir])) { - RunAxAnimationFrame(&gUnknown_203B0E4->arrowSprites[dir]); + if (CheckAxFlag8000(&gFriendAreasMapPtr->arrowSprites[dir])) { + RunAxAnimationFrame(&gFriendAreasMapPtr->arrowSprites[dir]); // Hide non-diagonal arrows when R button is pressed. if ((gRealInputs.held & R_BUTTON) && (dir % 2) == 0) continue; - DoAxFrame_800558C(&gUnknown_203B0E4->arrowSprites[dir], - (gUnknown_80D40C4[dir].x + gUnknown_203B0E4->monSpritePos.x) - bgPos.x, - (gUnknown_80D40C4[dir].y + gUnknown_203B0E4->monSpritePos.y) - bgPos.y, + DoAxFrame_800558C(&gFriendAreasMapPtr->arrowSprites[dir], + (gUnknown_80D40C4[dir].x + gFriendAreasMapPtr->monSpritePos.x) - bgPos.x, + (gUnknown_80D40C4[dir].y + gFriendAreasMapPtr->monSpritePos.y) - bgPos.y, 2, 0, &var_30); } } @@ -143,19 +143,19 @@ static void AnimateSprites(void) void FriendAreasMap_UpdateBg(void) { s32 i, j; - s32 y1 = gUnknown_203B0E4->bgPos.y >> 3; + s32 y1 = gFriendAreasMapPtr->bgPos.y >> 3; s32 y2 = y1; for (i = 0; i < 21; i++) { - s32 x1 = gUnknown_203B0E4->bgPos.x >> 3; + s32 x1 = gFriendAreasMapPtr->bgPos.x >> 3; s32 x2 = x1; for (j = 0; j < 31; j++) { x1 &= 0x1F; y1 &= 0x1F; - gUnknown_202B038[2][y1][x1] = gUnknown_203B0E4->unk2014[y2][x2]; - gUnknown_202B038[3][y1][x1] = gUnknown_203B0E4->unk14[y2][x2]; + gUnknown_202B038[2][y1][x1] = gFriendAreasMapPtr->unk2014[y2][x2]; + gUnknown_202B038[3][y1][x1] = gFriendAreasMapPtr->unk14[y2][x2]; x2++; x1++; } @@ -172,12 +172,12 @@ void FriendAreasMap_HideTextWindowAndArrows(void) s32 i; ShowWindows(NULL, TRUE, TRUE); - gUnknown_203B0E4->unk4DDC = 0; - gUnknown_203B0E4->unk4DE0 = 0; - gUnknown_203B0E4->unk4DE4 = 0; - gUnknown_203B0E4->unk4DE8 = 0; + gFriendAreasMapPtr->unk4DDC = 0; + gFriendAreasMapPtr->unk4DE0 = 0; + gFriendAreasMapPtr->unk4DE4 = 0; + gFriendAreasMapPtr->unk4DE8 = 0; for (i = 0; i < NUM_DIRECTIONS; i++) { - ResetFlags(&gUnknown_203B0E4->arrowSprites[i]); + ResetFlags(&gFriendAreasMapPtr->arrowSprites[i]); } } @@ -185,21 +185,21 @@ static bool8 FadeScreen(void) { bool8 ret = FALSE; - if (gUnknown_203B0E4->brightness < 31) { + if (gFriendAreasMapPtr->brightness < 31) { s32 i; - RGB *color = (void *) gUnknown_203B0E4->unk0[0]->data; + RGB *color = (void *) gFriendAreasMapPtr->unk0[0]->data; - if (++gUnknown_203B0E4->brightness >= 31) { - gUnknown_203B0E4->brightness = 31; + if (++gFriendAreasMapPtr->brightness >= 31) { + gFriendAreasMapPtr->brightness = 31; } for (i = 0; i < 224; color++, i++) { - SetBGPaletteBufferColorRGB(i, color, gUnknown_203B0E4->brightness, NULL); + SetBGPaletteBufferColorRGB(i, color, gFriendAreasMapPtr->brightness, NULL); } - color = (void *) gUnknown_203B0E4->unk0[1]->data; + color = (void *) gFriendAreasMapPtr->unk0[1]->data; for (i = 0; i < 240; color++, i++) { - SetBGPaletteBufferColorRGB(i + 256, color, gUnknown_203B0E4->brightness, NULL); + SetBGPaletteBufferColorRGB(i + 256, color, gFriendAreasMapPtr->brightness, NULL); } ret = TRUE; @@ -210,45 +210,45 @@ static bool8 FadeScreen(void) void FriendAreasMap_UpdateMonSpritePosition(void) { - if (gUnknown_203B0E4->monSpritePos.x - gUnknown_203B0E4->bgPos.x < 48) { - gUnknown_203B0E4->bgPos.x = gUnknown_203B0E4->monSpritePos.x - 48; + if (gFriendAreasMapPtr->monSpritePos.x - gFriendAreasMapPtr->bgPos.x < 48) { + gFriendAreasMapPtr->bgPos.x = gFriendAreasMapPtr->monSpritePos.x - 48; } - else if (gUnknown_203B0E4->monSpritePos.x - gUnknown_203B0E4->bgPos.x > 192) { - gUnknown_203B0E4->bgPos.x = gUnknown_203B0E4->monSpritePos.x - 192; + else if (gFriendAreasMapPtr->monSpritePos.x - gFriendAreasMapPtr->bgPos.x > 192) { + gFriendAreasMapPtr->bgPos.x = gFriendAreasMapPtr->monSpritePos.x - 192; } - if (gUnknown_203B0E4->monSpritePos.y - gUnknown_203B0E4->bgPos.y < 48) { - gUnknown_203B0E4->bgPos.y = gUnknown_203B0E4->monSpritePos.y - 48; + if (gFriendAreasMapPtr->monSpritePos.y - gFriendAreasMapPtr->bgPos.y < 48) { + gFriendAreasMapPtr->bgPos.y = gFriendAreasMapPtr->monSpritePos.y - 48; } - else if (gUnknown_203B0E4->monSpritePos.y - gUnknown_203B0E4->bgPos.y > 112) { - gUnknown_203B0E4->bgPos.y = gUnknown_203B0E4->monSpritePos.y - 112; + else if (gFriendAreasMapPtr->monSpritePos.y - gFriendAreasMapPtr->bgPos.y > 112) { + gFriendAreasMapPtr->bgPos.y = gFriendAreasMapPtr->monSpritePos.y - 112; } - if (gUnknown_203B0E4->bgPos.x < 0) { - gUnknown_203B0E4->bgPos.x = 0; + if (gFriendAreasMapPtr->bgPos.x < 0) { + gFriendAreasMapPtr->bgPos.x = 0; } - if (gUnknown_203B0E4->bgPos.y < 0) { - gUnknown_203B0E4->bgPos.y = 0; + if (gFriendAreasMapPtr->bgPos.y < 0) { + gFriendAreasMapPtr->bgPos.y = 0; } - if (gUnknown_203B0E4->bgPos.x > 239) { - gUnknown_203B0E4->bgPos.x = 239; + if (gFriendAreasMapPtr->bgPos.x > 239) { + gFriendAreasMapPtr->bgPos.x = 239; } - if (gUnknown_203B0E4->bgPos.y > 151) { - gUnknown_203B0E4->bgPos.y = 151; + if (gFriendAreasMapPtr->bgPos.y > 151) { + gFriendAreasMapPtr->bgPos.y = 151; } } void FriendAreasMap_ShowDirectionArrows(void) { s32 i; - struct UnkStruct_4018 *r9 = &gUnknown_203B0E4->unk4018[gUnknown_203B0E4->unk4A18]; + struct MapLocation *r9 = &gFriendAreasMapPtr->mapLocations[gFriendAreasMapPtr->unk4A18]; for (i = 0; i < NUM_DIRECTIONS; i++) { - ResetFlags(&gUnknown_203B0E4->arrowSprites[i]); + ResetFlags(&gFriendAreasMapPtr->arrowSprites[i]); if (r9->unk2[i] >= 0) { - struct UnkStruct_4018 *ptr = &gUnknown_203B0E4->unk4018[r9->unk2[i]]; - if (ptr->unk4018 != 0) { - AxResInitFile(&gUnknown_203B0E4->arrowSprites[i], gUnknown_203B0E4->unk0[2], i + 4, 0, 0x40, 0, TRUE); + struct MapLocation *ptr = &gFriendAreasMapPtr->mapLocations[r9->unk2[i]]; + if (ptr->isShown != 0) { + AxResInitFile(&gFriendAreasMapPtr->arrowSprites[i], gFriendAreasMapPtr->unk0[2], i + 4, 0, 0x40, 0, TRUE); } } } @@ -257,8 +257,8 @@ void FriendAreasMap_ShowDirectionArrows(void) void FriendAreasMap_PrintCurrAreaName(void) { u8 txt[200]; - s32 id = gUnknown_203B0E4->unk4A18; - const struct FriendAreaLocation *location = &gUnknown_203B0E4->locations[id]; + s32 id = gFriendAreasMapPtr->unk4A18; + const struct FriendAreaLocation *location = &gFriendAreasMapPtr->locations[id]; Windows windows = {0}; windows.id[0].type = WINDOW_TYPE_NORMAL; @@ -271,7 +271,7 @@ void FriendAreasMap_PrintCurrAreaName(void) windows.id[2].type = WINDOW_TYPE_NORMAL; windows.id[3].type = WINDOW_TYPE_NORMAL; - if (gUnknown_203B0E4->monSpritePos.y - gUnknown_203B0E4->bgPos.y <= 80) { + if (gFriendAreasMapPtr->monSpritePos.y - gFriendAreasMapPtr->bgPos.y <= 80) { windows.id[0].pos.y = 17; } else { @@ -283,18 +283,18 @@ void FriendAreasMap_PrintCurrAreaName(void) sprintfStatic(txt, _("{CENTER_ALIGN}%s"), location->name); PrintFormattedStringOnWindow(12, 2, txt, 0, '\0'); sub_80073E0(0); - gUnknown_203B0E4->unk4DDC = (windows.id[0].pos.x * 8) - 5; - gUnknown_203B0E4->unk4DE0 = (windows.id[0].pos.y * 8) + 5; - gUnknown_203B0E4->unk4DE4 = (windows.id[0].width * 8) + 10; - gUnknown_203B0E4->unk4DE8 = (windows.id[0].height * 8) + 10; + gFriendAreasMapPtr->unk4DDC = (windows.id[0].pos.x * 8) - 5; + gFriendAreasMapPtr->unk4DE0 = (windows.id[0].pos.y * 8) + 5; + gFriendAreasMapPtr->unk4DE4 = (windows.id[0].width * 8) + 10; + gFriendAreasMapPtr->unk4DE8 = (windows.id[0].height * 8) + 10; } void FriendAreasMap_PrintAvailableSubAreas(void) { s32 i, count, var; - s32 id = gUnknown_203B0E4->unk4A18; - const struct FriendAreaLocation *location = &gUnknown_203B0E4->locations[id]; - MenuInputStruct *menuInput = &gUnknown_203B0E4->menu; + s32 id = gFriendAreasMapPtr->unk4A18; + const struct FriendAreaLocation *location = &gFriendAreasMapPtr->locations[id]; + MenuInputStruct *menuInput = &gFriendAreasMapPtr->menu; WindowHeader header; Windows windows = { .id = { @@ -319,14 +319,14 @@ void FriendAreasMap_PrintAvailableSubAreas(void) }; count = 0; - for (i = 0; i < 8; i++) { - if (sub_800FFE8(location->unk8[i])) { - gUnknown_203B0E4->unk4DEC[count] = location->unk8[i]; + for (i = 0; i < MAX_AREAS_PER_LOCATION; i++) { + if (IsFriendAreaShownOnMap(location->areasIds[i])) { + gFriendAreasMapPtr->displayedAreas[count] = location->areasIds[i]; count++; } } - gUnknown_203B0E4->unk4DF8 = count; + gFriendAreasMapPtr->unk4DF8 = count; header.f0 = 1; header.f1 = 0; header.f2 = 18; @@ -352,24 +352,24 @@ void FriendAreasMap_PrintAvailableSubAreas(void) ShowWindows(&windows, TRUE, TRUE); - gUnknown_203B0E4->unk4DDC = 0; - gUnknown_203B0E4->unk4DE0 = 0; - gUnknown_203B0E4->unk4DE4 = 0; - gUnknown_203B0E4->unk4DE8 = 0; + gFriendAreasMapPtr->unk4DDC = 0; + gFriendAreasMapPtr->unk4DE0 = 0; + gFriendAreasMapPtr->unk4DE4 = 0; + gFriendAreasMapPtr->unk4DE8 = 0; sub_80073B8(0); PrintFormattedStringOnWindow(16, 0, _("Where would you like to go?"), 0, '\0'); for (i = 0; i < count; i++) { unkStruct_8092638 unkFriendAreaStruct; s32 r4 = sub_8013800(menuInput, i); - u8 r5 = gUnknown_203B0E4->unk4DEC[i]; + u8 areaId = gFriendAreasMapPtr->displayedAreas[i]; - sub_80101F8(gFormatBuffer_Items[0], r5); - if (r5 == 0) { + PrintFriendAreaNameInMap(gFormatBuffer_Items[0], areaId); + if (areaId == 0) { PrintFormattedStringOnWindow(12, r4, _("{MOVE_ITEM_0}"), 0, '\0'); } else { - sub_80926F8(r5, &unkFriendAreaStruct, gUnknown_203B0E4->unk4A2C); + sub_80926F8(areaId, &unkFriendAreaStruct, gFriendAreasMapPtr->unk4A2C); gFormatArgs[0] = unkFriendAreaStruct.unk2; gFormatArgs[1] = unkFriendAreaStruct.numPokemon; PrintFormattedStringOnWindow(12, r4, _("{MOVE_ITEM_0}($v02/$v12)"), 0, '\0'); @@ -381,10 +381,10 @@ void FriendAreasMap_PrintAvailableSubAreas(void) void FriendAreasMap_RunFrameActions(void) { - SetBG2RegOffsets(gUnknown_203B0E4->bgPos.x, gUnknown_203B0E4->bgPos.y); - SetBG3RegOffsets(gUnknown_203B0E4->bgPos.x, gUnknown_203B0E4->bgPos.y); + SetBG2RegOffsets(gFriendAreasMapPtr->bgPos.x, gFriendAreasMapPtr->bgPos.y); + SetBG3RegOffsets(gFriendAreasMapPtr->bgPos.x, gFriendAreasMapPtr->bgPos.y); AnimateSprites(); - sub_8004AF0(FadeScreen(), gUnknown_203B0E4->unk4C4C, 0xB0, 16, gUnknown_203B0E4->brightness, NULL); + sub_8004AF0(FadeScreen(), gFriendAreasMapPtr->unk4C4C, 0xB0, 16, gFriendAreasMapPtr->brightness, NULL); sub_8005838(NULL, 0); nullsub_8(gGameOptionsRef->unkA); sub_8005180(); diff --git a/src/world_map.c b/src/world_map.c index 74902a2ce..2664928b3 100644 --- a/src/world_map.c +++ b/src/world_map.c @@ -1,4 +1,5 @@ #include "global.h" +#include "globaldata.h" #include "world_map.h" #include "sprite.h" #include "code_8004AA0.h" @@ -18,23 +19,8 @@ #include "pokemon.h" #include "decompress.h" -extern const DungeonPos gDungeonCoordinates[]; -extern const struct FriendAreaLocation gFriendAreaLocations[]; extern const FileArchive gTitleMenuFileArchive; extern const FileArchive gMonsterFileArchive; -extern const u8 gUnknown_80D40E4[]; -extern const u8 gUnknown_80D40EC[]; -extern const u8 gUnknown_80D405C[]; -extern const u8 gUnknown_80D40FC[]; -extern const u8 gUnknown_80D4104[]; -extern const u8 gUnknown_80D4120[]; -extern const u8 gUnknown_80D3EFC[]; -extern const u8 gUnknown_80D40F4[]; -extern const u8 gUnknown_80D4064[]; -extern const u8 gUnknown_80D406C[]; -extern const u8 gUnknown_80D407C[]; -extern const u8 gUnknown_80D4080[]; -extern const u8 gUnknown_80D4074[]; extern u16 gUnknown_2026E4E; @@ -52,8 +38,8 @@ extern s32 Atan2_4096(PixelPos *a); extern void sub_80117AC(void); extern void sub_8011760(void); -EWRAM_INIT struct UnkStruct_203B0E8 *gUnknown_203B0E8 = NULL; -EWRAM_INIT Windows gUnknown_203B0EC = { +static EWRAM_INIT struct WorldMap *sWorldMapPtr = NULL; +static EWRAM_INIT Windows sWorldMapWindows = { .id = { [0] = { .type = WINDOW_TYPE_NORMAL, @@ -97,7 +83,7 @@ void ShowWorldMap(struct UnkStruct_sub_8010268 *r5) s32 i, speciesId, var; u8 text[1000]; - gUnknown_203B0E8 = r5->unkB0; + sWorldMapPtr = r5->unkB0; gUnknown_2026E4E = 2566; sub_80095CC(0, 0x14); UpdateFadeInTile(2); @@ -143,6 +129,74 @@ void ShowWorldMap(struct UnkStruct_sub_8010268 *r5) nullsub_16(); } +static const DungeonPos gDungeonCoordinates[] = +{ + [DUNGEON_TINY_WOODS] = {172, 174}, + [DUNGEON_THUNDERWAVE_CAVE] = {171, 111}, + [DUNGEON_MT_STEEL] = {242, 126}, + [DUNGEON_SINISTER_WOODS] = {232, 181}, + [DUNGEON_SILENT_CHASM] = {263, 155}, + [DUNGEON_MT_THUNDER] = {298, 159}, + [DUNGEON_MT_THUNDER_PEAK] = {299, 142}, + [DUNGEON_GREAT_CANYON] = {203, 255}, + [DUNGEON_LAPIS_CAVE] = {385, 166}, + [DUNGEON_MT_BLAZE] = {388, 126}, + [DUNGEON_MT_BLAZE_PEAK] = {389, 109}, + [DUNGEON_FROSTY_FOREST] = {417, 112}, + [DUNGEON_FROSTY_GROTTO] = {422, 101}, + [DUNGEON_MT_FREEZE] = {432, 85}, + [DUNGEON_MT_FREEZE_PEAK] = {436, 69}, + [DUNGEON_MAGMA_CAVERN] = {442, 150}, + [DUNGEON_MAGMA_CAVERN_PIT] = {446, 163}, + [DUNGEON_SKY_TOWER] = {365, 27}, + [DUNGEON_SKY_TOWER_SUMMIT] = {352, 12}, + [DUNGEON_STORMY_SEA] = {133, 238}, + [DUNGEON_SILVER_TRENCH] = {129, 143}, + [DUNGEON_METEOR_CAVE] = {344, 105}, + [DUNGEON_MT_FREEZE_PEAK_2] = {427, 62}, + [DUNGEON_WESTERN_CAVE] = {27, 211}, + [DUNGEON_BOSS_3] = {246, 315}, + [DUNGEON_BOSS_4] = {443, 6}, + [DUNGEON_WISH_CAVE] = {32, 279}, + [DUNGEON_BURIED_RELIC] = {404, 262}, + [DUNGEON_PITFALL_VALLEY] = {194, 63}, + [DUNGEON_NORTHERN_RANGE] = {159, 46}, + [DUNGEON_BOSS_9] = {441, 310}, + [DUNGEON_DESERT_REGION] = {231, 235}, + [DUNGEON_SOUTHERN_CAVERN] = {169, 287}, + [DUNGEON_WYVERN_HILL] = {441, 273}, + [DUNGEON_FIERY_FIELD] = {64, 87}, + [DUNGEON_NORTHWIND_FIELD] = {80, 54}, + [DUNGEON_SOLAR_CAVE] = {431, 225}, + [DUNGEON_LIGHTNING_FIELD] = {27, 94}, + [DUNGEON_DARKNIGHT_RELIC] = {354, 298}, + [DUNGEON_WONDROUS_SEA] = {336, 253}, + [DUNGEON_MURKY_CAVE] = {287, 222}, + [DUNGEON_GRAND_SEA] = {63, 163}, + [DUNGEON_UPROAR_FOREST] = {275, 111}, + [DUNGEON_ODDITY_CAVE] = {202, 232}, + [DUNGEON_REMAINS_ISLAND] = {268, 302}, + [DUNGEON_MARVELOUS_SEA] = {336, 260}, + [DUNGEON_FANTASY_STRAIT] = {110, 79}, + [DUNGEON_ROCK_PATH] = {225, 314}, + [DUNGEON_SNOW_PATH] = {206, 314}, + [DUNGEON_AUTOPILOT] = {11, 307}, + [DUNGEON_D50] = {472, 25}, + [DUNGEON_D51] = {250, 8}, + [DUNGEON_NORMAL_MAZE] = {187, 190}, + [DUNGEON_HOWLING_FOREST] = {205, 111}, + [DUNGEON_D54] = {474, 6}, + [DUNGEON_POISON_MAZE] = {183, 9}, + [DUNGEON_WATERFALL_POND] = {367, 214}, + [DUNGEON_UNKNOWN_RELIC] = {278, 273}, + [DUNGEON_JOYOUS_TOWER] = {68, 305}, + [DUNGEON_FAR_OFF_SEA] = {270, 33}, + [DUNGEON_MT_FARAWAY] = {33, 39}, + [DUNGEON_D61] = {217, 8}, + [DUNGEON_PURITY_FOREST] = {69, 280}, + [DUNGEON_OUT_ON_RESCUE] = {192, 183}, +}; + // Heavy math function. static void AnimateMonPath(u8 id1, u8 id2) { @@ -162,11 +216,11 @@ static void AnimateMonPath(u8 id1, u8 id2) } r3 >>= 9; r3 &= 7; - AxResInitFile(&gUnknown_203B0E8->monAxSprite, gUnknown_203B0E8->unk1100[3], 0, r3, 0, 0, TRUE); + AxResInitFile(&sWorldMapPtr->monAxSprite, sWorldMapPtr->unk1100[3], 0, r3, 0, 0, TRUE); for (i = 0; i < valMax; i++) { - gUnknown_203B0E8->monSpritePos.x = ((((pos2.x - pos1.x) * (i << 8)) / valMax) / 256) + pos1.x; - gUnknown_203B0E8->monSpritePos.y = ((((pos2.y - pos1.y) * (i << 8)) / valMax) / 256) + pos1.y; + sWorldMapPtr->monSpritePos.x = ((((pos2.x - pos1.x) * (i << 8)) / valMax) / 256) + pos1.x; + sWorldMapPtr->monSpritePos.y = ((((pos2.y - pos1.y) * (i << 8)) / valMax) / 256) + pos1.y; UpdateMonSpritePosition(); UpdateBg(); RunFrameActions(); @@ -176,7 +230,7 @@ static void AnimateMonPath(u8 id1, u8 id2) break; } - gUnknown_203B0E8->monSpritePos = pos2; + sWorldMapPtr->monSpritePos = pos2; UpdateMonSpritePosition(); UpdateBg(); RunFrameActions(); @@ -186,7 +240,7 @@ static void sub_8010494(struct UnkStruct_sub_8010494 *r9) { s32 i; for (i = 0; i < 64; i++) { - struct UnkStruct_Sub1 *structPtr = &gUnknown_203B0E8->unk0[i]; + struct UnkStruct_Sub1 *structPtr = &sWorldMapPtr->unk0[i]; u8 r0; if (i < 63) { @@ -198,7 +252,7 @@ static void sub_8010494(struct UnkStruct_sub_8010494 *r9) if (r0) { structPtr->unk0 = 1; - AxResInitFile(&structPtr->unk8, gUnknown_203B0E8->unk1100[2], (i == 63) ? 12 : 1, 0, 0x40, 0, 1); + AxResInitFile(&structPtr->unk8, sWorldMapPtr->unk1100[2], (i == 63) ? 12 : 1, 0, 0x40, 0, 1); structPtr->unk4 = gDungeonCoordinates[i]; } else { @@ -206,14 +260,23 @@ static void sub_8010494(struct UnkStruct_sub_8010494 *r9) } } - AxResInitFile(&gUnknown_203B0E8->monAxSprite, gUnknown_203B0E8->unk1100[3], 0, 0, 0, 0, TRUE); - gUnknown_203B0E8->monSpritePos = gDungeonCoordinates[r9->unk0.id]; - gUnknown_203B0E8->bgPos.x = gUnknown_203B0E8->monSpritePos.x - 120; - gUnknown_203B0E8->bgPos.y = gUnknown_203B0E8->monSpritePos.y - 80; + AxResInitFile(&sWorldMapPtr->monAxSprite, sWorldMapPtr->unk1100[3], 0, 0, 0, 0, TRUE); + sWorldMapPtr->monSpritePos = gDungeonCoordinates[r9->unk0.id]; + sWorldMapPtr->bgPos.x = sWorldMapPtr->monSpritePos.x - 120; + sWorldMapPtr->bgPos.y = sWorldMapPtr->monSpritePos.y - 80; UpdateMonSpritePosition(); UpdateBg(); } +static char *const gUnknown_80D4014[] = +{ + "wmp2font", + "wmp2mcc", + "wmp2cani", + "wmp2pal", + "wmp2fon1", +}; + static void sub_801059C(void) { u8 filename[0xC]; @@ -224,27 +287,27 @@ static void sub_801059C(void) OpenedFile *file2 = OpenFileAndGetFileDataPtr(gUnknown_80D4014[1], &gTitleMenuFileArchive); sprintf(filename, "ax%03d", pokeStruct->speciesNum); - gUnknown_203B0E8->unk1100[3] = OpenFileAndGetFileDataPtr(filename, &gMonsterFileArchive); - gUnknown_203B0E8->unk1100[2] = OpenFileAndGetFileDataPtr("wmapspr", &gTitleMenuFileArchive); - gUnknown_203B0E8->unk1100[4] = OpenFileAndGetFileDataPtr(gUnknown_80D4014[2], &gTitleMenuFileArchive); - gUnknown_203B0E8->unk1100[1] = OpenFileAndGetFileDataPtr("palet", &gMonsterFileArchive); - gUnknown_203B0E8->unk1100[0] = OpenFileAndGetFileDataPtr(gUnknown_80D4014[3], &gTitleMenuFileArchive); - gUnknown_203B0E8->unk52D4 = GetPokemonOverworldPalette(pokeStruct->speciesNum, 0); + sWorldMapPtr->unk1100[3] = OpenFileAndGetFileDataPtr(filename, &gMonsterFileArchive); + sWorldMapPtr->unk1100[2] = OpenFileAndGetFileDataPtr("wmapspr", &gTitleMenuFileArchive); + sWorldMapPtr->unk1100[4] = OpenFileAndGetFileDataPtr(gUnknown_80D4014[2], &gTitleMenuFileArchive); + sWorldMapPtr->unk1100[1] = OpenFileAndGetFileDataPtr("palet", &gMonsterFileArchive); + sWorldMapPtr->unk1100[0] = OpenFileAndGetFileDataPtr(gUnknown_80D4014[3], &gTitleMenuFileArchive); + sWorldMapPtr->unk52D4 = GetPokemonOverworldPalette(pokeStruct->speciesNum, 0); - sub_8005610(gUnknown_203B0E8->unk1100[2], 0x40, 0x1F, 0); + sub_8005610(sWorldMapPtr->unk1100[2], 0x40, 0x1F, 0); DecompressATGlobalFile((u32 *)(VRAM + 0x8000), 0x0, file); - sub_8004AA4(gUnknown_203B0E8->unk5150, gUnknown_203B0E8->unk1100[4], 0x10); + sub_8004AA4(sWorldMapPtr->unk5150, sWorldMapPtr->unk1100[4], 0x10); size = 0x4000; - DecompressATFile((u8 *) &gUnknown_203B0E8->unk1114, size, file2); + DecompressATFile((u8 *) &sWorldMapPtr->unk1114, size, file2); - gUnknown_203B0E8->brightness = 0; - gUnknown_203B0E8->bgPos.x = 0; - gUnknown_203B0E8->bgPos.y = 0; + sWorldMapPtr->brightness = 0; + sWorldMapPtr->bgPos.x = 0; + sWorldMapPtr->bgPos.y = 0; for (i = 0; i < 1500; i++) { - gUnknown_203B0E8->unk52E0[i] |= 0xFFFF; - gUnknown_203B0E8->unk5E98[i] = 0; + sWorldMapPtr->unk52E0[i] |= 0xFFFF; + sWorldMapPtr->unk5E98[i] = 0; } CloseFile(file); @@ -254,59 +317,59 @@ static void sub_801059C(void) static void CloseFiles(void) { - CloseFile(gUnknown_203B0E8->unk1100[4]); - CloseFile(gUnknown_203B0E8->unk1100[3]); - CloseFile(gUnknown_203B0E8->unk1100[2]); - CloseFile(gUnknown_203B0E8->unk1100[0]); - CloseFile(gUnknown_203B0E8->unk1100[1]); + CloseFile(sWorldMapPtr->unk1100[4]); + CloseFile(sWorldMapPtr->unk1100[3]); + CloseFile(sWorldMapPtr->unk1100[2]); + CloseFile(sWorldMapPtr->unk1100[0]); + CloseFile(sWorldMapPtr->unk1100[1]); } static void UpdateMonSpritePosition(void) { - if (gUnknown_203B0E8->monSpritePos.x - gUnknown_203B0E8->bgPos.x < 48) { - gUnknown_203B0E8->bgPos.x = gUnknown_203B0E8->monSpritePos.x - 48; + if (sWorldMapPtr->monSpritePos.x - sWorldMapPtr->bgPos.x < 48) { + sWorldMapPtr->bgPos.x = sWorldMapPtr->monSpritePos.x - 48; } - else if (gUnknown_203B0E8->monSpritePos.x - gUnknown_203B0E8->bgPos.x > 192) { - gUnknown_203B0E8->bgPos.x = gUnknown_203B0E8->monSpritePos.x - 192; + else if (sWorldMapPtr->monSpritePos.x - sWorldMapPtr->bgPos.x > 192) { + sWorldMapPtr->bgPos.x = sWorldMapPtr->monSpritePos.x - 192; } - if (gUnknown_203B0E8->monSpritePos.y - gUnknown_203B0E8->bgPos.y < 48) { - gUnknown_203B0E8->bgPos.y = gUnknown_203B0E8->monSpritePos.y - 48; + if (sWorldMapPtr->monSpritePos.y - sWorldMapPtr->bgPos.y < 48) { + sWorldMapPtr->bgPos.y = sWorldMapPtr->monSpritePos.y - 48; } - else if (gUnknown_203B0E8->monSpritePos.y - gUnknown_203B0E8->bgPos.y > 112) { - gUnknown_203B0E8->bgPos.y = gUnknown_203B0E8->monSpritePos.y - 112; + else if (sWorldMapPtr->monSpritePos.y - sWorldMapPtr->bgPos.y > 112) { + sWorldMapPtr->bgPos.y = sWorldMapPtr->monSpritePos.y - 112; } - if (gUnknown_203B0E8->bgPos.x < 0) { - gUnknown_203B0E8->bgPos.x = 0; + if (sWorldMapPtr->bgPos.x < 0) { + sWorldMapPtr->bgPos.x = 0; } - if (gUnknown_203B0E8->bgPos.y < 0) { - gUnknown_203B0E8->bgPos.y = 0; + if (sWorldMapPtr->bgPos.y < 0) { + sWorldMapPtr->bgPos.y = 0; } - if (gUnknown_203B0E8->bgPos.x >= 240) { - gUnknown_203B0E8->bgPos.x = 240; + if (sWorldMapPtr->bgPos.x >= 240) { + sWorldMapPtr->bgPos.x = 240; } - if (gUnknown_203B0E8->bgPos.y >= 160) { - gUnknown_203B0E8->bgPos.y = 160; + if (sWorldMapPtr->bgPos.y >= 160) { + sWorldMapPtr->bgPos.y = 160; } } static void UpdateBg(void) { s32 i, j; - s32 y1 = gUnknown_203B0E8->bgPos.y >> 3; + s32 y1 = sWorldMapPtr->bgPos.y >> 3; s32 y2 = y1; for (i = 0; i < 21; i++) { - s32 x1 = gUnknown_203B0E8->bgPos.x >> 3; + s32 x1 = sWorldMapPtr->bgPos.x >> 3; s32 x2 = x1; for (j = 0; j < 31; j++) { x1 &= 0x1F; y1 &= 0x1F; - gUnknown_202B038[2][y1][x1] = gUnknown_203B0E8->unk3114[y2][x2]; - gUnknown_202B038[3][y1][x1] = gUnknown_203B0E8->unk1114[y2][x2]; + gUnknown_202B038[2][y1][x1] = sWorldMapPtr->unk3114[y2][x2]; + gUnknown_202B038[3][y1][x1] = sWorldMapPtr->unk1114[y2][x2]; x2++; x1++; } @@ -330,7 +393,7 @@ static void FadeFromWorldMap(void) ClearWindows(); sub_80117C4(); for (i = 0; i < 60; i++) { - gUnknown_203B0E8->brightness -= 2; + sWorldMapPtr->brightness -= 2; RunFrameActions(); } } @@ -342,8 +405,8 @@ static void ClearWindows(void) static void RunFrameActions(void) { - SetBG2RegOffsets(gUnknown_203B0E8->bgPos.x, gUnknown_203B0E8->bgPos.y); - SetBG3RegOffsets(gUnknown_203B0E8->bgPos.x, gUnknown_203B0E8->bgPos.y); + SetBG2RegOffsets(sWorldMapPtr->bgPos.x, sWorldMapPtr->bgPos.y); + SetBG3RegOffsets(sWorldMapPtr->bgPos.x, sWorldMapPtr->bgPos.y); AnimateSprites(TRUE); FadeScreen(); sub_8005838(NULL, 0); @@ -368,21 +431,21 @@ static bool8 FadeScreen(void) { bool8 ret = FALSE; - if (gUnknown_203B0E8->brightness < 31) { + if (sWorldMapPtr->brightness < 31) { s32 i; - RGB *color = (void *) gUnknown_203B0E8->unk1100[0]->data; + RGB *color = (void *) sWorldMapPtr->unk1100[0]->data; - if (++gUnknown_203B0E8->brightness >= 31) { - gUnknown_203B0E8->brightness = 31; + if (++sWorldMapPtr->brightness >= 31) { + sWorldMapPtr->brightness = 31; } for (i = 0; i < 224; color++, i++) { - SetBGPaletteBufferColorRGB(i, color, gUnknown_203B0E8->brightness, NULL); + SetBGPaletteBufferColorRGB(i, color, sWorldMapPtr->brightness, NULL); } - color = (void *) gUnknown_203B0E8->unk1100[1]->data; + color = (void *) sWorldMapPtr->unk1100[1]->data; for (i = 0; i < 240; color++, i++) { - SetBGPaletteBufferColorRGB(i + 256, color, gUnknown_203B0E8->brightness, NULL); + SetBGPaletteBufferColorRGB(i + 256, color, sWorldMapPtr->brightness, NULL); } ret = TRUE; @@ -400,14 +463,14 @@ static void AnimateSprites(bool8 a0) sub_8004E8C(&var_2C); var_2C.unk4 = 0xF3FF; var_2C.unkA = 0x800; - pos = gUnknown_203B0E8->bgPos; - RunAxAnimationFrame(&gUnknown_203B0E8->monAxSprite); + pos = sWorldMapPtr->bgPos; + RunAxAnimationFrame(&sWorldMapPtr->monAxSprite); if (a0) { - DoAxFrame_800558C(&gUnknown_203B0E8->monAxSprite, gUnknown_203B0E8->monSpritePos.x - pos.x, gUnknown_203B0E8->monSpritePos.y - pos.y, 3, gUnknown_203B0E8->unk52D4, &var_2C); + DoAxFrame_800558C(&sWorldMapPtr->monAxSprite, sWorldMapPtr->monSpritePos.x - pos.x, sWorldMapPtr->monSpritePos.y - pos.y, 3, sWorldMapPtr->unk52D4, &var_2C); } for (i = 0; i < 64; i++) { - struct UnkStruct_Sub1 *structPtr = &gUnknown_203B0E8->unk0[i]; + struct UnkStruct_Sub1 *structPtr = &sWorldMapPtr->unk0[i]; if (structPtr->unk0) { axdata *axPtr = &structPtr->unk8; @@ -437,7 +500,7 @@ static void PrintDungeonName(DungeonLocation *dungLocation) } }; - if (gUnknown_203B0E8->monSpritePos.y - gUnknown_203B0E8->bgPos.y <= 80) { + if (sWorldMapPtr->monSpritePos.y - sWorldMapPtr->bgPos.y <= 80) { windows.id[0].pos.y = 17; } else { @@ -479,11 +542,11 @@ static bool8 ShowYesNoWindow(u8 *str) r2 += 11; r2 /= 8; - gUnknown_203B0EC.id[0].pos.y = 19 - r2; - gUnknown_203B0EC.id[0].unk10 = r2; - gUnknown_203B0EC.id[0].height = r2; - gUnknown_203B0EC.id[1].pos.y = 14 - r2; - ShowWindows(&gUnknown_203B0EC, TRUE, TRUE); + sWorldMapWindows.id[0].pos.y = 19 - r2; + sWorldMapWindows.id[0].unk10 = r2; + sWorldMapWindows.id[0].height = r2; + sWorldMapWindows.id[1].pos.y = 14 - r2; + ShowWindows(&sWorldMapWindows, TRUE, TRUE); sub_80073B8(0); PrintFormattedStringOnWindow(4, 0, str, 0, '\0'); sub_80073E0(0); diff --git a/sym_ewram_init.txt b/sym_ewram_init.txt index f7c663a21..39685f199 100644 --- a/sym_ewram_init.txt +++ b/sym_ewram_init.txt @@ -15,7 +15,7 @@ .include "src/cpu.o" .include "src/code_800DAC0.o" .include "src/code_800ED38.o" -.include "src/code_8010F28.o" +.include "src/friend_areas_map.o" .include "src/world_map.o" .include "src/debug.o" .include "src/save.o" From f184a6750d8a23866090eb3536a8342f4ad301ec Mon Sep 17 00:00:00 2001 From: DizzyEggg Date: Sun, 23 Feb 2025 23:26:54 +0100 Subject: [PATCH 24/40] more documentation of friend areas map --- include/friend_areas_map.h | 27 ++-- src/friend_areas_map.c | 309 ++++++++++++++++++------------------ src/friend_areas_map_util.c | 36 ++--- sym_ewram.txt | 6 +- 4 files changed, 188 insertions(+), 190 deletions(-) diff --git a/include/friend_areas_map.h b/include/friend_areas_map.h index 2c217a061..85420d0cc 100644 --- a/include/friend_areas_map.h +++ b/include/friend_areas_map.h @@ -10,33 +10,35 @@ #define MAX_AREAS_PER_LOCATION 8 -struct FriendAreaLocation +struct FriendAreaLocationInfo { const u8 *name; DungeonPos pos; u8 areasIds[MAX_AREAS_PER_LOCATION]; - s16 unk10[8]; + s16 adjacentLocations[NUM_DIRECTIONS]; }; struct MapLocation { bool8 isShown; - s16 unk2[8]; - axdata unk14; + s16 locationsByDirection[NUM_DIRECTIONS]; + axdata sprite; }; +#define NUM_FRIEND_AREA_LOCATIONS 32 + // size: 0x4DD8 struct FriendAreasMap { OpenedFile *unk0[5]; u16 unk14[64][64]; u16 unk2014[64][64]; - const struct FriendAreaLocation *locations; - struct MapLocation mapLocations[32]; - s32 unk4A18; + const struct FriendAreaLocationInfo *locationsInfo; + struct MapLocation mapLocations[NUM_FRIEND_AREA_LOCATIONS]; + s32 currLocationId; s32 unk4A1C; - s32 unk4A20; - s32 unk4A24; + s32 locationIdOnBPress; + s32 teamBaseLocationId; s32 unk4A28; u8 unk4A2C; axdata arrowSprites[NUM_DIRECTIONS]; @@ -51,7 +53,7 @@ struct FriendAreasMap s32 unk4DE4; s32 unk4DE8; u8 displayedAreas[MAX_AREAS_PER_LOCATION]; - u8 unk4DF4; + u8 chosenFriendAreaId; s32 unk4DF8; MenuInputStruct menu; }; @@ -61,7 +63,7 @@ extern struct FriendAreasMap *gFriendAreasMapPtr; struct struct_unk800F990 { u32 unk0; - u8 unk4; + u8 startingFriendAreaId; u8 unk5; struct FriendAreasMap *unk8; u8 unkC; @@ -71,7 +73,6 @@ void ShowFriendAreasMap(struct struct_unk800F990 *param_1); void PrintFriendAreaNameInMap(u8 *strBuffer, u8 index); bool8 IsFriendAreaShownOnMap(u8 friendAreaId); - void FriendAreasMap_UpdateMonSpritePosition(void); void FriendAreasMap_UpdateBg(void); void FriendAreasMap_HideTextWindowAndArrows(void); @@ -80,6 +81,6 @@ void FriendAreasMap_ShowDirectionArrows(void); void FriendAreasMap_PrintCurrAreaName(void); void FriendAreasMap_PrintAvailableSubAreas(void); void FriendAreasMap_CloseFiles(void); -void sub_8010DA4(void); +void FriendAreasMap_InitGfx(void); #endif diff --git a/src/friend_areas_map.c b/src/friend_areas_map.c index 8cadad48b..83b6520c5 100644 --- a/src/friend_areas_map.c +++ b/src/friend_areas_map.c @@ -33,20 +33,20 @@ extern void sub_80117AC(void); extern void sub_8011760(void); EWRAM_INIT struct FriendAreasMap *gFriendAreasMapPtr = NULL; +EWRAM_DATA static u8 sCurrDirection = 0; +EWRAM_DATA static u8 sHeldDpadCounter = 0; extern const FileArchive gTitleMenuFileArchive; extern const FileArchive gMonsterFileArchive; -static void MoveToNewArea(s32 a0, s32 a1, s32 count); -static u8 GetNewSelectedArea(void); -static s32 ChooseArea(s32 *a0, s32 *newAreaId); -static bool8 ChooseSubArea(void); +static void MoveToNewLocation(s32 a0, s32 a1, s32 count); +static u8 GetChosenDirection(void); +static s32 ChooseLocation(s32 *a0, s32 *newDirection); +static bool8 ChooseAreaInLocation(void); static void FadeFromFriendAreasMap(void); -static void sub_800FC5C(u8 a0); +static void InitMapLocations(u8 startingFriendAreaId); extern u16 gUnknown_2026E4E; -extern u8 gUnknown_202DE18; -extern u8 gUnknown_202DE19; #define NO_AREA NUM_FRIEND_AREAS + 5 @@ -56,178 +56,178 @@ extern u8 gUnknown_202DE19; .name = _("ななし"), \ .pos = {0, 0}, \ .areasIds = {NO_AREA, NO_AREA, NO_AREA, NO_AREA, NO_AREA, NO_AREA, NO_AREA, NO_AREA}, \ - .unk10 = {0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF}, \ + .adjacentLocations = {0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF}, \ } -static const struct FriendAreaLocation gFriendAreaLocations[64] = +static const struct FriendAreaLocationInfo gFriendAreaLocations[64] = { { .name = "Mountain Range", .pos = {0x1C5, 0x71}, .areasIds = {8, 9, 0xA, 0x27, 0x2F, 0xB, 0x3F, 0x3F}, - .unk10 = {5, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xC, 2, 7}, + .adjacentLocations = {5, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xC, 2, 7}, }, { .name = "Glacier", .pos = {0x1CD, 0x1C}, .areasIds = {0x30, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F}, - .unk10 = {0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xA, 0xC}, + .adjacentLocations = {0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xA, 0xC}, }, { .name = "Plains", .pos = {0x161, 0x78}, .areasIds = {0xD, 0xE, 0x11, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F}, - .unk10 = {0x1B, 7, 0, 0xC, 0xD, 0xFFFF, 9, 0xFFFF}, + .adjacentLocations = {0x1B, 7, 0, 0xC, 0xD, 0xFFFF, 9, 0xFFFF}, }, { .name = "South Plains", .pos = {0x162, 0x12D}, .areasIds = {0xF, 0xC, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F}, - .unk10 = {0xFFFF, 0xFFFF, 0xFFFF, 4, 0xE, 0x12, 0xFFFF, 0xFFFF}, + .adjacentLocations = {0xFFFF, 0xFFFF, 0xFFFF, 4, 0xE, 0x12, 0xFFFF, 0xFFFF}, }, { .name = "Badlands", .pos = {0x194, 0x102}, .areasIds = {0x34, 0x35, 0x28, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F}, - .unk10 = {0xFFFF, 0x11, 0xFFFF, 0xB, 8, 0xFFFF, 0xE, 3}, + .adjacentLocations = {0xFFFF, 0x11, 0xFFFF, 0xB, 8, 0xFFFF, 0xE, 3}, }, { .name = "Eastern Forest", .pos = {0x1C7, 0x9D}, .areasIds = {0x12, 0x13, 0x14, 0x15, 0x3F, 0x3F, 0x3F, 0x3F}, - .unk10 = {0xB, 0xFFFF, 0xFFFF, 0xFFFF, 0, 0xFFFF, 7, 8}, + .adjacentLocations = {0xB, 0xFFFF, 0xFFFF, 0xFFFF, 0, 0xFFFF, 7, 8}, }, { .name = "Western Forest", .pos = {0x108, 0x9D}, .areasIds = {0x16, 0x17, 0x18, 0x19, 0x3F, 0x3F, 0x3F, 0x3F}, - .unk10 = {0x10, 0xFFFF, 0x1B, 9, 0x14, 0x1A, 0xFFFF, 0xFFFF}, + .adjacentLocations = {0x10, 0xFFFF, 0x1B, 9, 0x14, 0x1A, 0xFFFF, 0xFFFF}, }, { .name = "River", .pos = {0x197, 0xA0}, .areasIds = {0x1A, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F}, - .unk10 = {8, 0xB, 5, 0, 0xC, 2, 0x1B, 0xFFFF}, + .adjacentLocations = {8, 0xB, 5, 0, 0xC, 2, 0x1B, 0xFFFF}, }, { .name = "Eastern Ponds", .pos = {0x198, 0xCF}, .areasIds = {0x1B, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F}, - .unk10 = {4, 0xFFFF, 0xB, 5, 7, 0x1B, 0xFFFF, 0xE}, + .adjacentLocations = {4, 0xFFFF, 0xB, 5, 7, 0x1B, 0xFFFF, 0xE}, }, { .name = "Pond", .pos = {0x133, 0x79}, .areasIds = {0x1C, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F}, - .unk10 = {0xFFFF, 0x1B, 2, 0xD, 0xF, 0x14, 0xFFFF, 6}, + .adjacentLocations = {0xFFFF, 0x1B, 2, 0xD, 0xF, 0x14, 0xFFFF, 6}, }, { .name = "Northern Lakes", .pos = {0x182, 0x1D}, .areasIds = {0x1D, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F}, - .unk10 = {0xFFFF, 0xC, 1, 0xFFFF, 0xFFFF, 0xFFFF, 0xF, 0xD}, + .adjacentLocations = {0xFFFF, 0xC, 1, 0xFFFF, 0xFFFF, 0xFFFF, 0xF, 0xD}, }, { .name = "Eastern Lakes", .pos = {0x1C6, 0xD0}, .areasIds = {0x1E, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F}, - .unk10 = {0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 5, 7, 8, 4}, + .adjacentLocations = {0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 5, 7, 8, 4}, }, { .name = "Marsh", .pos = {0x1A2, 0x46}, .areasIds = {0x1F, 0x20, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F}, - .unk10 = {7, 0, 0xFFFF, 1, 0xFFFF, 0xA, 0xD, 2}, + .adjacentLocations = {7, 0, 0xFFFF, 1, 0xFFFF, 0xA, 0xD, 2}, }, { .name = "Cave", .pos = {0x160, 0x47}, .areasIds = {0x21, 0x23, 0x24, 0x22, 0x3F, 0x3F, 0x3F, 0x3F}, - .unk10 = {2, 0xFFFF, 0xC, 0xA, 0xFFFF, 0xF, 0x14, 9}, + .adjacentLocations = {2, 0xFFFF, 0xC, 0xA, 0xFFFF, 0xF, 0x14, 9}, }, { .name = "Jungle", .pos = {0x163, 0x104}, .areasIds = {0x25, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F}, - .unk10 = {3, 0xFFFF, 4, 8, 0x1B, 0xFFFF, 0x12, 0xFFFF}, + .adjacentLocations = {3, 0xFFFF, 4, 8, 0x1B, 0xFFFF, 0x12, 0xFFFF}, }, { .name = "Ruins", .pos = {0x136, 0x1C}, .areasIds = {0x26, 0x29, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F}, - .unk10 = {9, 0xD, 0xA, 0xFFFF, 0xFFFF, 0xFFFF, 0x18, 0x14}, + .adjacentLocations = {9, 0xD, 0xA, 0xFFFF, 0xFFFF, 0xFFFF, 0x18, 0x14}, }, { .name = "Volcano", .pos = {0x107, 0xCB}, .areasIds = {0x10, 0x2A, 0x32, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F}, - .unk10 = {0xFFFF, 0x12, 0xFFFF, 0x1B, 6, 0xFFFF, 0xFFFF, 0x19}, + .adjacentLocations = {0xFFFF, 0x12, 0xFFFF, 0x1B, 6, 0xFFFF, 0xFFFF, 0x19}, }, { .name = "Desert", .pos = {0x1C4, 0x12D}, .areasIds = {0x2B, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F}, - .unk10 = {0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 4, 0xFFFF, 0xFFFF}, + .adjacentLocations = {0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 4, 0xFFFF, 0xFFFF}, }, { .name = "Relics", .pos = {0x131, 0x105}, .areasIds = {0x2E, 0x2C, 0x2D, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F}, - .unk10 = {0xFFFF, 3, 0xE, 0xFFFF, 0xFFFF, 0x10, 0x19, 0xFFFF}, + .adjacentLocations = {0xFFFF, 3, 0xE, 0xFFFF, 0xFFFF, 0x10, 0x19, 0xFFFF}, }, { .name = "Sky", .pos = {0x2F, 0x15}, .areasIds = {0x33, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F}, - .unk10 = {0x17, 0x1A, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF}, + .adjacentLocations = {0x17, 0x1A, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF}, }, { .name = "Northern Isles", .pos = {0x107, 0x47}, .areasIds = {0x36, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F}, - .unk10 = {6, 9, 0xD, 0xF, 0xFFFF, 0x18, 0xFFFF, 0xFFFF}, + .adjacentLocations = {6, 9, 0xD, 0xF, 0xFFFF, 0x18, 0xFFFF, 0xFFFF}, }, { .name = "Southern Isles", .pos = {0x5D, 0x10C}, .areasIds = {0x37, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F}, - .unk10 = {0xFFFF, 0xFFFF, 0x19, 0xFFFF, 0xFFFF, 0x16, 0xFFFF, 0xFFFF}, + .adjacentLocations = {0xFFFF, 0xFFFF, 0x19, 0xFFFF, 0xFFFF, 0x16, 0xFFFF, 0xFFFF}, }, { .name = "Southwest Isles", .pos = {0x2D, 0xCB}, .areasIds = {0x38, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F}, - .unk10 = {0xFFFF, 0x15, 0xFFFF, 0xFFFF, 0x17, 0xFFFF, 0xFFFF, 0xFFFF}, + .adjacentLocations = {0xFFFF, 0x15, 0xFFFF, 0xFFFF, 0x17, 0xFFFF, 0xFFFF, 0xFFFF}, }, { .name = "Western Isles", .pos = {0x2D, 0x70}, .areasIds = {0x39, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F}, - .unk10 = {0x16, 0xFFFF, 0xFFFF, 0x1A, 0x13, 0xFFFF, 0xFFFF, 0xFFFF}, + .adjacentLocations = {0x16, 0xFFFF, 0xFFFF, 0x1A, 0x13, 0xFFFF, 0xFFFF, 0xFFFF}, }, { .name = "Northern Sea", .pos = {0xD0, 0x16}, .areasIds = {1, 3, 5, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F}, - .unk10 = {0xFFFF, 0x14, 0xF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0x1A}, + .adjacentLocations = {0xFFFF, 0x14, 0xF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0x1A}, }, { .name = "Southern Sea", .pos = {0xB2, 0x10D}, .areasIds = {2, 4, 6, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F}, - .unk10 = {0xFFFF, 0xFFFF, 0x12, 0x10, 0xFFFF, 0xFFFF, 0x15, 0xFFFF}, + .adjacentLocations = {0xFFFF, 0xFFFF, 0x12, 0x10, 0xFFFF, 0xFFFF, 0x15, 0xFFFF}, }, { - .name = "Beach", - .pos = {0x81, 0x42}, - .areasIds = {7, 0x31, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F}, - .unk10 = {0xFFFF, 6, 0xFFFF, 0x18, 0xFFFF, 0x13, 0xFFFF, 0x17}, + .name = "Beach", + .pos = {0x81, 0x42}, + .areasIds = {7, 0x31, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F}, + .adjacentLocations = {0xFFFF, 6, 0xFFFF, 0x18, 0xFFFF, 0x13, 0xFFFF, 0x17}, }, { - .name = _("$t"), - .pos = {0x163, 0xA1}, - .areasIds = {0, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F}, - .unk10 = {0xE, 8, 7, 0xFFFF, 2, 9, 6, 0x10}, + .name = _("$t"), + .pos = {0x163, 0xA1}, + .areasIds = {0, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F}, + .adjacentLocations = {0xE, 8, 7, 0xFFFF, 2, 9, 6, 0x10}, }, DUMMY_LOCATION, DUMMY_LOCATION, @@ -273,36 +273,36 @@ void ShowFriendAreasMap(struct struct_unk800F990 *param_1) gUnknown_2026E4E = 0x1010; sub_80095CC(0,0x14); UpdateFadeInTile(2); - gFriendAreasMapPtr->locations = gFriendAreaLocations; + gFriendAreasMapPtr->locationsInfo = gFriendAreaLocations; gFriendAreasMapPtr->unk4A2C = param_1->unk5; - sub_8010DA4(); + FriendAreasMap_InitGfx(); gFriendAreasMapPtr->unk4A28 = -1; gFriendAreasMapPtr->unk4A1C = -1; - sub_800FC5C(param_1->unk4); - gFriendAreasMapPtr->unk4A20 = gFriendAreasMapPtr->unk4A24; - gUnknown_202DE18 = 0xff; - gUnknown_202DE19 = 0; + InitMapLocations(param_1->startingFriendAreaId); + gFriendAreasMapPtr->locationIdOnBPress = gFriendAreasMapPtr->teamBaseLocationId; + sCurrDirection = 0xff; + sHeldDpadCounter = 0; sub_8011760(); while (1) { - s32 local_1c = 0; - s32 newAreaId = 0; - s32 iVar2 = ChooseArea(&local_1c, &newAreaId); + s32 newLocationId = 0; + s32 newDirection = 0; + s32 iVar2 = ChooseLocation(&newLocationId, &newDirection); if (iVar2 == 1) { - MoveToNewArea(local_1c, newAreaId, 0x32); + MoveToNewLocation(newLocationId, newDirection, 50); } else if (iVar2 == 2) { - if (!ChooseSubArea()) + if (!ChooseAreaInLocation()) continue; - param_1->unkC = gFriendAreasMapPtr->unk4DF4; + param_1->unkC = gFriendAreasMapPtr->chosenFriendAreaId; break; } else if (iVar2 == 3) { - if (gFriendAreasMapPtr->unk4A18 == gFriendAreasMapPtr->unk4A20) { + if (gFriendAreasMapPtr->currLocationId == gFriendAreasMapPtr->locationIdOnBPress) { param_1->unkC = 0; break; } - MoveToNewArea(gFriendAreasMapPtr->unk4A20,0,10); + MoveToNewLocation(gFriendAreasMapPtr->locationIdOnBPress,0,10); } } @@ -311,31 +311,31 @@ void ShowFriendAreasMap(struct struct_unk800F990 *param_1) nullsub_16(); } -static s32 ChooseArea(s32 *a0, s32 *newAreaId) +static s32 ChooseLocation(s32 *newLocationId, s32 *newDirection) { s32 ret = 0; FriendAreasMap_ShowDirectionArrows(); FriendAreasMap_PrintCurrAreaName(); while (ret == 0) { - s32 areaId; + s32 direction; FriendAreasMap_RunFrameActions(); - areaId = GetNewSelectedArea(); - if (areaId != 0xFF) { - s32 r4 = gFriendAreasMapPtr->unk4A18; - struct MapLocation *ptr = &gFriendAreasMapPtr->mapLocations[r4]; + direction = GetChosenDirection(); + if (direction != 0xFF) { + s32 currLocationId = gFriendAreasMapPtr->currLocationId; + struct MapLocation *currLocation = &gFriendAreasMapPtr->mapLocations[currLocationId]; - if (ptr->unk2[areaId] >= 0) { - s32 id = ptr->unk2[areaId]; - struct MapLocation *ptr2 = &gFriendAreasMapPtr->mapLocations[id]; + if (currLocation->locationsByDirection[direction] >= 0) { + s32 newlocId = currLocation->locationsByDirection[direction]; + struct MapLocation *newLocation = &gFriendAreasMapPtr->mapLocations[newlocId]; - if (ptr2->isShown != 0) { + if (newLocation->isShown) { ret = 1; - *a0 = id; - *newAreaId = areaId; - gFriendAreasMapPtr->unk4A28 = areaId; - gFriendAreasMapPtr->unk4A1C = r4; + *newLocationId = newlocId; + *newDirection = direction; + gFriendAreasMapPtr->unk4A28 = direction; + gFriendAreasMapPtr->unk4A1C = currLocationId; } } } @@ -352,7 +352,7 @@ static s32 ChooseArea(s32 *a0, s32 *newAreaId) return ret; } -static bool8 ChooseSubArea(void) +static bool8 ChooseAreaInLocation(void) { bool8 ret = FALSE; @@ -373,7 +373,7 @@ static bool8 ChooseSubArea(void) if ((gRealInputs.pressed & A_BUTTON) || menuPtr->unk28.a_button) { PlayAcceptSoundEffect(); - gFriendAreasMapPtr->unk4DF4 = gFriendAreasMapPtr->displayedAreas[menuPtr->menuIndex]; + gFriendAreasMapPtr->chosenFriendAreaId = gFriendAreasMapPtr->displayedAreas[menuPtr->menuIndex]; ret = TRUE; break; } @@ -404,7 +404,7 @@ struct MaxMin s16 max; }; -static const struct MaxMin sAtanRanges[] = +static const struct MaxMin sDistanceRanges[] = { {0x380, 0x480}, {0x80, 0x380}, @@ -416,27 +416,27 @@ static const struct MaxMin sAtanRanges[] = {0x480, 0x780}, }; -static void sub_800FC5C(u8 a0) +static void InitMapLocations(u8 startingFriendAreaId) { - s32 var_48 = 0; + s32 startingLocationId = 0; s32 i, j, k; - for (i = 0; i < 32; i++) { + for (i = 0; i < NUM_FRIEND_AREA_LOCATIONS; i++) { bool8 locationShown = FALSE; bool8 areaIsBase = FALSE; struct MapLocation *mapLocation = &gFriendAreasMapPtr->mapLocations[i]; - const struct FriendAreaLocation *location = &gFriendAreasMapPtr->locations[i]; + const struct FriendAreaLocationInfo *locationInfo = &gFriendAreasMapPtr->locationsInfo[i]; - for (j = 0; j < 8; j++) { - mapLocation->unk2[j] = -1; + for (j = 0; j < NUM_DIRECTIONS; j++) { + mapLocation->locationsByDirection[j] = -1; } for (j = 0; j < MAX_AREAS_PER_LOCATION; j++) { - if (IsFriendAreaShownOnMap(location->areasIds[j])) { - if (location->areasIds[j] == a0) { - var_48 = i; + if (IsFriendAreaShownOnMap(locationInfo->areasIds[j])) { + if (locationInfo->areasIds[j] == startingFriendAreaId) { + startingLocationId = i; } - if (location->areasIds[j] == 0) { - gFriendAreasMapPtr->unk4A24 = i; + if (locationInfo->areasIds[j] == 0) { + gFriendAreasMapPtr->teamBaseLocationId = i; areaIsBase = TRUE; } locationShown = TRUE; @@ -445,28 +445,29 @@ static void sub_800FC5C(u8 a0) if (locationShown) { mapLocation->isShown = TRUE; - AxResInitFile(&mapLocation->unk14, gFriendAreasMapPtr->unk0[2], (areaIsBase) ? 12 : 1, 0, 0x40, 0, 1); + AxResInitFile(&mapLocation->sprite, gFriendAreasMapPtr->unk0[2], (areaIsBase) ? 12 : 1, 0, 0x40, 0, 1); } else { mapLocation->isShown = FALSE; } } - for (i = 0; i < 32; i++) { + for (i = 0; i < NUM_FRIEND_AREA_LOCATIONS; i++) { s32 var1, var2; - struct MapLocation *r3 = &gFriendAreasMapPtr->mapLocations[i]; - const struct FriendAreaLocation *location = &gFriendAreasMapPtr->locations[i]; + struct MapLocation *mapLocation = &gFriendAreasMapPtr->mapLocations[i]; + const struct FriendAreaLocationInfo *locationInfo = &gFriendAreasMapPtr->locationsInfo[i]; - if (!r3->isShown) { + if (!mapLocation->isShown) { continue; } - for (j = 0; j < 8; j++) { - r3->unk2[j] = -1; - if (location->unk10[j] >= 0) { - struct MapLocation *ptr = &gFriendAreasMapPtr->mapLocations[location->unk10[j]]; + // Grab locations which are next to each other. + for (j = 0; j < NUM_DIRECTIONS; j++) { + mapLocation->locationsByDirection[j] = -1; + if (locationInfo->adjacentLocations[j] >= 0) { + struct MapLocation *ptr = &gFriendAreasMapPtr->mapLocations[locationInfo->adjacentLocations[j]]; if (ptr->isShown) { - r3->unk2[j] = location->unk10[j]; + mapLocation->locationsByDirection[j] = locationInfo->adjacentLocations[j]; } } } @@ -478,31 +479,32 @@ static void sub_800FC5C(u8 a0) if (ptr->isShown) { var1 += 4; var1 &= 7; - r3->unk2[var1] = var2; + mapLocation->locationsByDirection[var1] = var2; } } - for (j = 0; j < 8; j++) { - s32 var_40 = -1; - s32 var_3C = 999999; + // Find locations which are the closest from each other. + for (j = 0; j < NUM_DIRECTIONS; j++) { + s32 foundLocationId = -1; + s32 biggestDistance = 999999; - if (r3->unk2[j] >= 0) + if (mapLocation->locationsByDirection[j] >= 0) continue; - for (k = 0; k < 32; k++) { - bool8 r7; + for (k = 0; k < NUM_FRIEND_AREA_LOCATIONS; k++) { + bool8 valid; PixelPos pixelPos; s32 atanVal; - struct MapLocation *ptr2_18 = &gFriendAreasMapPtr->mapLocations[k]; - const struct FriendAreaLocation *location2 = &gFriendAreasMapPtr->locations[k]; + struct MapLocation *mapLocation2Info = &gFriendAreasMapPtr->mapLocations[k]; + const struct FriendAreaLocationInfo *location2Info = &gFriendAreasMapPtr->locationsInfo[k]; if (k == i) continue; - if (ptr2_18->isShown == 0) + if (!mapLocation2Info->isShown) continue; - pixelPos.x = (location2->pos.x - location->pos.x) << 8; - pixelPos.y = (location2->pos.y - location->pos.y) << 8; + pixelPos.x = (location2Info->pos.x - locationInfo->pos.x) << 8; + pixelPos.y = (location2Info->pos.y - locationInfo->pos.y) << 8; atanVal = Atan2_4096(&pixelPos); pixelPos.x /= 4; pixelPos.y /= 4; @@ -515,42 +517,42 @@ static void sub_800FC5C(u8 a0) pixelPos.y = 1; } - r7 = FALSE; - if (j == 2) { + valid = FALSE; + if (j == DIRECTION_EAST) { while (atanVal >= 0x1000) { atanVal -= 0x1000; } while (atanVal < 0) { atanVal += 0x1000; } - if (sAtanRanges[j].min < atanVal || sAtanRanges[j].max > atanVal) { - r7 = TRUE; + if (sDistanceRanges[j].min < atanVal || sDistanceRanges[j].max > atanVal) { + valid = TRUE; } } else { - if (sAtanRanges[j].min <= atanVal && sAtanRanges[j].max > atanVal) { - r7 = TRUE; + if (sDistanceRanges[j].min <= atanVal && sDistanceRanges[j].max > atanVal) { + valid = TRUE; } } - if (r7) { + if (valid) { s32 sum = (pixelPos.x * pixelPos.x) + (pixelPos.y * pixelPos.y); - if (var_3C > sum) { - var_3C = sum; - var_40 = k; + if (biggestDistance > sum) { + biggestDistance = sum; + foundLocationId = k; } } } - if (var_40 >= 0) { - r3->unk2[j] = var_40; + if (foundLocationId >= 0) { + mapLocation->locationsByDirection[j] = foundLocationId; } } } AxResInitFile(&gFriendAreasMapPtr->monAxSprite, gFriendAreasMapPtr->unk0[3], 0, 0, 0, 0, TRUE); - gFriendAreasMapPtr->unk4A18 = var_48; - gFriendAreasMapPtr->monSpritePos = gFriendAreasMapPtr->locations[var_48].pos; + gFriendAreasMapPtr->currLocationId = startingLocationId; + gFriendAreasMapPtr->monSpritePos = gFriendAreasMapPtr->locationsInfo[startingLocationId].pos; gFriendAreasMapPtr->bgPos.x = gFriendAreasMapPtr->monSpritePos.x - 120; gFriendAreasMapPtr->bgPos.y = gFriendAreasMapPtr->monSpritePos.y - 80; FriendAreasMap_UpdateMonSpritePosition(); @@ -566,62 +568,62 @@ bool8 IsFriendAreaShownOnMap(u8 friendAreaId) return FALSE; } -static u8 GetNewSelectedArea(void) +static u8 GetChosenDirection(void) { - u8 sp1[16] = {0xff, 0x00, 0x02, 0x01, 0x04, 0xff, 0x03, 0xff, 0x06, 0x07, 0xff, 0xff, 0x05, 0xff, 0xff, 0xff}; - u8 sp2[16] = {0xff, 0xff, 0xff, 0x01, 0xff, 0xff, 0x03, 0xff, 0xff, 0x07, 0xff, 0xff, 0x05, 0xff, 0xff, 0xff}; - u32 flag = 0; - u8 *table = (gRealInputs.held & R_BUTTON) ? sp2 : sp1; + u8 dirsAll[] = {0xff, DIRECTION_SOUTH, DIRECTION_EAST, DIRECTION_SOUTHEAST, DIRECTION_NORTH, 0xff, DIRECTION_NORTHEAST, 0xff, DIRECTION_WEST, DIRECTION_SOUTHWEST, 0xff, 0xff, DIRECTION_NORTHWEST, 0xff, 0xff, 0xff}; + u8 dirsDiagonal[] = {0xff, 0xff, 0xff, DIRECTION_SOUTHEAST, 0xff, 0xff, DIRECTION_NORTHEAST, 0xff, 0xff, DIRECTION_SOUTHWEST, 0xff, 0xff, DIRECTION_NORTHWEST, 0xff, 0xff, 0xff}; + u32 id = 0; + u8 *dirs = (gRealInputs.held & R_BUTTON) ? dirsDiagonal : dirsAll; if (gRealInputs.held & DPAD_DOWN) { - flag |= 1; + id |= 1; } if (gRealInputs.held & DPAD_RIGHT) { - flag |= 2; + id |= 2; } if (gRealInputs.held & DPAD_UP) { - flag |= 4; + id |= 4; } if (gRealInputs.held & DPAD_LEFT) { - flag |= 8; + id |= 8; } - if (gUnknown_202DE18 == table[flag]) { - if (++gUnknown_202DE19 >= 3) { - return table[flag]; + if (sCurrDirection == dirs[id]) { + if (++sHeldDpadCounter >= 3) { // It'll only choose a New Area, if the DPAD was held for more than 3 frames. + return dirs[id]; } } else { - gUnknown_202DE18 = table[flag]; - gUnknown_202DE19 = 0; + sCurrDirection = dirs[id]; + sHeldDpadCounter = 0; } return 0xFF; } -static void MoveToNewArea(s32 a0, s32 a1, s32 count) +static void MoveToNewLocation(s32 destLocationId, s32 a1, s32 nFrames) { - s32 i, arrayId; - DungeonPos pos1, pos2; + s32 i, currLocationId; + DungeonPos startingPos, dstPos; AxResInitFile(&gFriendAreasMapPtr->monAxSprite, gFriendAreasMapPtr->unk0[3], 0, a1 & 7, 0, 0, TRUE); FriendAreasMap_HideTextWindowAndArrows(); - arrayId = gFriendAreasMapPtr->unk4A18; - pos1 = gFriendAreasMapPtr->locations[arrayId].pos; - pos2 = gFriendAreasMapPtr->locations[a0].pos; + currLocationId = gFriendAreasMapPtr->currLocationId; + startingPos = gFriendAreasMapPtr->locationsInfo[currLocationId].pos; + dstPos = gFriendAreasMapPtr->locationsInfo[destLocationId].pos; PlayCursorUpDownSoundEffect(); - for (i = 0; i < count; i++) { - gFriendAreasMapPtr->monSpritePos.x = ((((pos2.x - pos1.x) * (i << 8)) / count) / 256) + pos1.x; - gFriendAreasMapPtr->monSpritePos.y = ((((pos2.y - pos1.y) * (i << 8)) / count) / 256) + pos1.y; + for (i = 0; i < nFrames; i++) { + gFriendAreasMapPtr->monSpritePos.x = ((((dstPos.x - startingPos.x) * (i << 8)) / nFrames) / 256) + startingPos.x; + gFriendAreasMapPtr->monSpritePos.y = ((((dstPos.y - startingPos.y) * (i << 8)) / nFrames) / 256) + startingPos.y; FriendAreasMap_UpdateMonSpritePosition(); FriendAreasMap_UpdateBg(); FriendAreasMap_RunFrameActions(); } - gFriendAreasMapPtr->unk4A18 = a0; - gFriendAreasMapPtr->monSpritePos = gFriendAreasMapPtr->locations[a0].pos; + gFriendAreasMapPtr->currLocationId = destLocationId; + gFriendAreasMapPtr->monSpritePos = gFriendAreasMapPtr->locationsInfo[destLocationId].pos; FriendAreasMap_UpdateMonSpritePosition(); FriendAreasMap_UpdateBg(); FriendAreasMap_RunFrameActions(); @@ -638,16 +640,16 @@ void PrintFriendAreaNameInMap(u8 *strBuffer, u8 index) } } -static UNUSED void sub_8010224(u8 areaId, DungeonPos *dst) +static UNUSED void GetAreaMapPosition(u8 areaId, DungeonPos *dst) { s32 i, j; - for (i = 0; i < 32; i++) { - const struct FriendAreaLocation *location = &gFriendAreaLocations[i]; - for (j = 0; j < 8; j++) { - if (location->areasIds[j] == areaId) { - dst->x = location->pos.x; - dst->y = location->pos.y; + for (i = 0; i < NUM_FRIEND_AREA_LOCATIONS; i++) { + const struct FriendAreaLocationInfo *locationInfo = &gFriendAreaLocations[i]; + for (j = 0; j < MAX_AREAS_PER_LOCATION; j++) { + if (locationInfo->areasIds[j] == areaId) { + dst->x = locationInfo->pos.x; + dst->y = locationInfo->pos.y; return; } } @@ -655,4 +657,3 @@ static UNUSED void sub_8010224(u8 areaId, DungeonPos *dst) dst->x = 0; dst->y = 0; } - diff --git a/src/friend_areas_map_util.c b/src/friend_areas_map_util.c index baf3d0648..0585052f2 100644 --- a/src/friend_areas_map_util.c +++ b/src/friend_areas_map_util.c @@ -57,7 +57,7 @@ static const DungeonPos gUnknown_80D40C4[] = {-24, 24}, }; -void sub_8010DA4(void) +void FriendAreasMap_InitGfx(void) { u8 filename[0xC]; s32 i, size; @@ -116,12 +116,12 @@ static void AnimateSprites(void) RunAxAnimationFrame(&gFriendAreasMapPtr->monAxSprite); DoAxFrame_800558C(&gFriendAreasMapPtr->monAxSprite, gFriendAreasMapPtr->monSpritePos.x - bgPos.x, gFriendAreasMapPtr->monSpritePos.y - bgPos.y, 3, gFriendAreasMapPtr->unk4DD0, &var_30); - for (i = 0; i < 32; i++) { - struct MapLocation *r0 = &gFriendAreasMapPtr->mapLocations[i]; - const struct FriendAreaLocation *location = &gFriendAreasMapPtr->locations[i]; - if (r0->isShown) { - RunAxAnimationFrame(&r0->unk14); - DoAxFrame_800558C(&r0->unk14, location->pos.x - bgPos.x, location->pos.y- bgPos.y, 1, 0, &var_30); + for (i = 0; i < NUM_FRIEND_AREA_LOCATIONS; i++) { + struct MapLocation *mapLocation = &gFriendAreasMapPtr->mapLocations[i]; + const struct FriendAreaLocationInfo *locationInfo = &gFriendAreasMapPtr->locationsInfo[i]; + if (mapLocation->isShown) { + RunAxAnimationFrame(&mapLocation->sprite); + DoAxFrame_800558C(&mapLocation->sprite, locationInfo->pos.x - bgPos.x, locationInfo->pos.y- bgPos.y, 1, 0, &var_30); } } @@ -241,13 +241,13 @@ void FriendAreasMap_UpdateMonSpritePosition(void) void FriendAreasMap_ShowDirectionArrows(void) { s32 i; - struct MapLocation *r9 = &gFriendAreasMapPtr->mapLocations[gFriendAreasMapPtr->unk4A18]; + struct MapLocation *currLocation = &gFriendAreasMapPtr->mapLocations[gFriendAreasMapPtr->currLocationId]; for (i = 0; i < NUM_DIRECTIONS; i++) { ResetFlags(&gFriendAreasMapPtr->arrowSprites[i]); - if (r9->unk2[i] >= 0) { - struct MapLocation *ptr = &gFriendAreasMapPtr->mapLocations[r9->unk2[i]]; - if (ptr->isShown != 0) { + if (currLocation->locationsByDirection[i] >= 0) { + struct MapLocation *ptr = &gFriendAreasMapPtr->mapLocations[currLocation->locationsByDirection[i]]; + if (ptr->isShown) { AxResInitFile(&gFriendAreasMapPtr->arrowSprites[i], gFriendAreasMapPtr->unk0[2], i + 4, 0, 0x40, 0, TRUE); } } @@ -257,8 +257,8 @@ void FriendAreasMap_ShowDirectionArrows(void) void FriendAreasMap_PrintCurrAreaName(void) { u8 txt[200]; - s32 id = gFriendAreasMapPtr->unk4A18; - const struct FriendAreaLocation *location = &gFriendAreasMapPtr->locations[id]; + s32 id = gFriendAreasMapPtr->currLocationId; + const struct FriendAreaLocationInfo *locationInfo = &gFriendAreasMapPtr->locationsInfo[id]; Windows windows = {0}; windows.id[0].type = WINDOW_TYPE_NORMAL; @@ -280,7 +280,7 @@ void FriendAreasMap_PrintCurrAreaName(void) ShowWindows(&windows, TRUE, TRUE); sub_80073B8(0); - sprintfStatic(txt, _("{CENTER_ALIGN}%s"), location->name); + sprintfStatic(txt, _("{CENTER_ALIGN}%s"), locationInfo->name); PrintFormattedStringOnWindow(12, 2, txt, 0, '\0'); sub_80073E0(0); gFriendAreasMapPtr->unk4DDC = (windows.id[0].pos.x * 8) - 5; @@ -292,8 +292,8 @@ void FriendAreasMap_PrintCurrAreaName(void) void FriendAreasMap_PrintAvailableSubAreas(void) { s32 i, count, var; - s32 id = gFriendAreasMapPtr->unk4A18; - const struct FriendAreaLocation *location = &gFriendAreasMapPtr->locations[id]; + s32 id = gFriendAreasMapPtr->currLocationId; + const struct FriendAreaLocationInfo *locationInfo = &gFriendAreasMapPtr->locationsInfo[id]; MenuInputStruct *menuInput = &gFriendAreasMapPtr->menu; WindowHeader header; Windows windows = { @@ -320,8 +320,8 @@ void FriendAreasMap_PrintAvailableSubAreas(void) count = 0; for (i = 0; i < MAX_AREAS_PER_LOCATION; i++) { - if (IsFriendAreaShownOnMap(location->areasIds[i])) { - gFriendAreasMapPtr->displayedAreas[count] = location->areasIds[i]; + if (IsFriendAreaShownOnMap(locationInfo->areasIds[i])) { + gFriendAreasMapPtr->displayedAreas[count] = locationInfo->areasIds[i]; count++; } } diff --git a/sym_ewram.txt b/sym_ewram.txt index 7e5738f9f..cd558365f 100644 --- a/sym_ewram.txt +++ b/sym_ewram.txt @@ -116,11 +116,7 @@ gUnknown_202DBB8: /* 202DBB8 (sub_800D6AC / data_80B9BB8) */ gUnknown_202DCF8: /* 202DCF8 (sub_80001E8 - sub_800D9B8) */ .space 0x120 -gUnknown_202DE18: /* 202DE18 (sub_800F990 - sub_8010014) */ - .space 0x1 -gUnknown_202DE19: /* 202DE19 (sub_800F990 - sub_8010014) */ - .space 0x3 - + .include "src/friend_areas_map.o" .include "src/code_80118A4.o" .space 0x2 From 040c4a486edf7cae8489a0b8f3b468356a0a6d0b Mon Sep 17 00:00:00 2001 From: DizzyEggg Date: Mon, 24 Feb 2025 11:20:40 +0100 Subject: [PATCH 25/40] more documentation --- asm/code_8023868.s | 2 +- asm/code_803B050.s | 2 +- asm/code_805D8C8.s | 40 +-- asm/code_805D8C8_1.s | 2 +- asm/ground_lives.s | 6 +- include/friend_area.h | 16 +- include/friend_areas_map.h | 39 +- include/menu_input.h | 2 +- include/structs/menu.h | 2 +- src/adventure_log.c | 14 +- src/code_801C8C4.c | 6 +- src/code_801D9E4.c | 4 +- src/code_801EE10.c | 2 +- src/code_801F428.c | 2 +- src/code_8023144.c | 6 +- src/code_805D8C8_1.c | 38 +- src/code_8066D04.c | 4 +- src/code_806FDF4.c | 4 +- src/code_8072F3C.c | 4 +- src/friend_area.c | 48 +-- src/friend_areas_map.c | 699 +++++++++++++++++++++++++----------- src/friend_areas_map_util.c | 16 +- src/hints_menu1.c | 2 +- src/iq_skill_list_menu.c | 2 +- src/kecleon_bros2.c | 4 +- src/kecleon_bros3.c | 4 +- src/kecleon_bros4.c | 20 +- src/makuhita_dojo2.c | 2 +- src/menu_input.c | 23 +- src/options_menu2.c | 2 +- src/personality_test2.c | 2 +- src/pokemon_3.c | 8 +- src/pokemon_news1.c | 2 +- src/pokemon_news3.c | 4 +- src/wigglytuff_shop1.c | 10 +- src/wigglytuff_shop3.c | 4 +- src/wonder_mail_4.c | 2 +- src/wonder_mail_802C10C.c | 2 +- src/wonder_mail_802C4C8.c | 2 +- src/wonder_mail_802CDD4.c | 2 +- src/world_map.c | 2 +- 41 files changed, 687 insertions(+), 370 deletions(-) diff --git a/asm/code_8023868.s b/asm/code_8023868.s index 1657a6d7f..3f2e8d83d 100644 --- a/asm/code_8023868.s +++ b/asm/code_8023868.s @@ -866,7 +866,7 @@ _08023F02: lsls r2, 2 adds r0, r2 adds r1, r7, 0 - bl sub_8013800 + bl GetMenuEntryYCoord adds r1, r0, 0 mov r4, r8 ldr r0, [r4] diff --git a/asm/code_803B050.s b/asm/code_803B050.s index 42bb8306e..47d122d7c 100644 --- a/asm/code_803B050.s +++ b/asm/code_803B050.s @@ -354,7 +354,7 @@ _0803B2DC: ldr r1, _0803B340 adds r4, r1 adds r1, r5, 0 - bl sub_8013800 + bl GetMenuEntryYCoord adds r1, r0, 0 ldr r2, [r4, 0x4] ldr r0, [r6] diff --git a/asm/code_805D8C8.s b/asm/code_805D8C8.s index 551333802..89960c859 100644 --- a/asm/code_805D8C8.s +++ b/asm/code_805D8C8.s @@ -3496,7 +3496,7 @@ _0806361E: bl BufferMoveName ldr r0, _08063690 mov r1, r9 - bl sub_8013800 + bl GetMenuEntryYCoord adds r4, r0, 0 ldrb r1, [r7] movs r0, 0x2 @@ -7171,7 +7171,7 @@ _080652D2: bl PrintFormattedStringOnWindow adds r0, r4, 0 movs r1, 0 - bl sub_8013800 + bl GetMenuEntryYCoord adds r1, r0, 0 ldr r0, _080653E0 ldr r2, [r0] @@ -7181,7 +7181,7 @@ _080652D2: bl PrintFormattedStringOnWindow adds r0, r4, 0 movs r1, 0x1 - bl sub_8013800 + bl GetMenuEntryYCoord adds r1, r0, 0 ldr r0, _080653E4 ldr r2, [r0] @@ -7191,7 +7191,7 @@ _080652D2: bl PrintFormattedStringOnWindow adds r0, r4, 0 movs r1, 0x2 - bl sub_8013800 + bl GetMenuEntryYCoord adds r1, r0, 0 ldr r0, _080653E8 ldr r2, [r0] @@ -7202,7 +7202,7 @@ _080652D2: movs r5, 0x4 adds r0, r4, 0 movs r1, 0x3 - bl sub_8013800 + bl GetMenuEntryYCoord adds r1, r0, 0 ldr r0, _080653EC ldr r2, [r0] @@ -7225,7 +7225,7 @@ _080652D2: movs r5, 0x5 adds r0, r4, 0 movs r1, 0x4 - bl sub_8013800 + bl GetMenuEntryYCoord adds r1, r0, 0 ldr r0, _080653F0 ldr r2, [r0] @@ -7248,7 +7248,7 @@ _080653F4: movs r5, 0x5 adds r0, r4, 0 movs r1, 0x4 - bl sub_8013800 + bl GetMenuEntryYCoord adds r1, r0, 0 ldr r0, _08065440 ldr r2, [r0] @@ -7259,7 +7259,7 @@ _080653F4: _0806540E: ldr r0, _08065444 adds r1, r5, 0 - bl sub_8013800 + bl GetMenuEntryYCoord adds r1, r0, 0 ldr r0, _08065448 ldr r2, [r0] @@ -7381,7 +7381,7 @@ sub_806544C: bl PrintFormattedStringOnWindow adds r0, r4, 0 movs r1, 0 - bl sub_8013800 + bl GetMenuEntryYCoord adds r1, r0, 0 ldr r6, _08065570 movs r2, 0xAC @@ -7394,7 +7394,7 @@ sub_806544C: bl PrintFormattedStringOnWindow adds r0, r4, 0 movs r1, 0x1 - bl sub_8013800 + bl GetMenuEntryYCoord adds r1, r0, 0 movs r2, 0xB8 lsls r2, 1 @@ -7512,15 +7512,15 @@ CreateFieldGameOptionsMenu: bl sub_80137B0 adds r0, r4, 0 movs r1, 0 - bl sub_8013800 + bl GetMenuEntryYCoord str r0, [sp, 0x4] adds r0, r4, 0 movs r1, 0x1 - bl sub_8013800 + bl GetMenuEntryYCoord str r0, [sp, 0x8] adds r0, r4, 0 movs r1, 0x2 - bl sub_8013800 + bl GetMenuEntryYCoord str r0, [sp, 0xC] movs r0, 0 bl sub_80073B8 @@ -7666,23 +7666,23 @@ CreateFieldDungeonMenu: bl sub_80137B0 adds r0, r4, 0 movs r1, 0 - bl sub_8013800 + bl GetMenuEntryYCoord str r0, [sp, 0x4] adds r0, r4, 0 movs r1, 0x1 - bl sub_8013800 + bl GetMenuEntryYCoord str r0, [sp, 0x8] adds r0, r4, 0 movs r1, 0x2 - bl sub_8013800 + bl GetMenuEntryYCoord str r0, [sp, 0xC] adds r0, r4, 0 movs r1, 0x3 - bl sub_8013800 + bl GetMenuEntryYCoord str r0, [sp, 0x10] adds r0, r4, 0 movs r1, 0x4 - bl sub_8013800 + bl GetMenuEntryYCoord str r0, [sp, 0x14] movs r0, 0 bl sub_80073B8 @@ -7961,7 +7961,7 @@ CreateFieldOthersMenu: _08065A0A: ldr r0, _08065A7C adds r1, r4, 0 - bl sub_8013800 + bl GetMenuEntryYCoord stm r5!, {r0} adds r4, 0x1 cmp r4, 0 @@ -8418,7 +8418,7 @@ sub_8065CAC: _08065D7A: ldr r0, _08065DB0 adds r1, r4, 0 - bl sub_8013800 + bl GetMenuEntryYCoord adds r1, r0, 0 ldm r5!, {r2} movs r0, 0 diff --git a/asm/code_805D8C8_1.s b/asm/code_805D8C8_1.s index b5e0739e1..1030d0ad7 100644 --- a/asm/code_805D8C8_1.s +++ b/asm/code_805D8C8_1.s @@ -526,7 +526,7 @@ _08068D1C: add r1, sp, 0x214 movs r2, 0 movs r3, 0 - bl sub_8092638 + bl GetFriendAreaCapacity2 movs r7, 0 add r1, sp, 0x1F0 ldrh r0, [r1] diff --git a/asm/ground_lives.s b/asm/ground_lives.s index 6bde62e41..2b94740ca 100644 --- a/asm/ground_lives.s +++ b/asm/ground_lives.s @@ -720,7 +720,7 @@ _080A7D12: mov r1, sp movs r2, 0 movs r3, 0 - bl sub_8092638 + bl GetFriendAreaCapacity2 mov r0, sp movs r1, 0 ldrsh r0, [r0, r1] @@ -923,7 +923,7 @@ _080A7EB8: mov r1, sp movs r2, 0 movs r3, 0 - bl sub_8092638 + bl GetFriendAreaCapacity2 mov r0, sp movs r1, 0 ldrsh r0, [r0, r1] @@ -2965,7 +2965,7 @@ _080A8DF8: adds r1, r4, 0 movs r2, 0 movs r3, 0 - bl sub_8092638 + bl GetFriendAreaCapacity2 movs r1, 0 ldrsh r0, [r4, r1] cmp r5, r0 diff --git a/include/friend_area.h b/include/friend_area.h index 5e6144a49..8ce8cde2b 100644 --- a/include/friend_area.h +++ b/include/friend_area.h @@ -10,13 +10,13 @@ typedef struct FriendAreaSettings } FriendAreaSettings; // size: 0xC -typedef struct unkStruct_8092638 -{ - /* 0x0 */ s16 numPokemon; - s16 unk2; +typedef struct FriendAreaCapacity +{ + /* 0x0 */ s16 maxPokemon; + /* 0x2 */ s16 currNoPokemon; /* 0x4 */ bool8 hasFriendArea; s32 unk8; -} unkStruct_8092638; +} FriendAreaCapacity; extern bool8 *gFriendAreas; @@ -38,7 +38,7 @@ void sub_8092404(u8, u16 *, bool8, bool8); void sub_809249C(u8 friendArea, bool8 clear); void sub_8092558(u8 *buffer, u8 index); void WriteFriendAreaName(u8 *buffer, u8 index, bool8 printPrice); -void sub_8092638(u8 friendArea, unkStruct_8092638 *, bool8 checkLeader, bool8 checkDungeon); -void sub_80926F8(u8, unkStruct_8092638 *, u8); +void GetFriendAreaCapacity2(u8 friendArea, FriendAreaCapacity *dst, bool8 checkLeader, bool8 checkPartner); +void GetFriendAreaCapacity(u8 areaId, FriendAreaCapacity *dst, bool8 checkPartner); -#endif // GUARD_FRIEND_AREA_H \ No newline at end of file +#endif // GUARD_FRIEND_AREA_H diff --git a/include/friend_areas_map.h b/include/friend_areas_map.h index 85420d0cc..6ceadb188 100644 --- a/include/friend_areas_map.h +++ b/include/friend_areas_map.h @@ -25,7 +25,42 @@ struct MapLocation axdata sprite; }; -#define NUM_FRIEND_AREA_LOCATIONS 32 +enum FriendAreaLocations +{ + LOCATION_MOUNTAIN_RANGE, + LOCATION_GLACIER, + LOCATION_PLAINS, + LOCATION_SOUTH_PLAINS, + LOCATION_BADLANDS, + LOCATION_EASTERN_FOREST, + LOCATION_WESTERN_FOREST, + LOCATION_RIVER, + LOCATION_EASTERN_PONDS, + LOCATION_POND, + LOCATION_NORTHERN_LAKES, + LOCATION_EASTERN_LAKES, + LOCATION_MARSH, + LOCATION_CAVE, + LOCATION_JUNGLE, + LOCATION_RUINS, + LOCATION_VOLCANO, + LOCATION_DESERT, + LOCATION_RELICS, + LOCATION_SKY, + LOCATION_NORTHERN_ISLES, + LOCATION_SOUTHERN_ISLES, + LOCATION_SOUTHWEST_ISLES, + LOCATION_WESTERN_ISLES, + LOCATION_NORTHERN_SEA, + LOCATION_SOUTHERN_SEA, + LOCATION_BEACH, + LOCATION_TEAM_BASE, + LOCATION_UNUSED_28, + LOCATION_UNUSED_29, + LOCATION_UNUSED_30, + LOCATION_UNUSED_31, + NUM_FRIEND_AREA_LOCATIONS +}; // size: 0x4DD8 struct FriendAreasMap @@ -65,7 +100,7 @@ struct struct_unk800F990 u32 unk0; u8 startingFriendAreaId; u8 unk5; - struct FriendAreasMap *unk8; + struct FriendAreasMap *friendAreasMapPtr; u8 unkC; }; diff --git a/include/menu_input.h b/include/menu_input.h index 158b098f9..338b6f411 100644 --- a/include/menu_input.h +++ b/include/menu_input.h @@ -31,7 +31,7 @@ void sub_8013780(MenuInputStruct *param_1, s32 param_2); s32 sub_80137A8(MenuInputStruct *param_1); void sub_80137B0(MenuInputStruct *param_1, s32 param_2); void sub_80137F8(MenuInputStruct *param_1, u32 param_2); -s32 sub_8013800(MenuInputStruct *param_1, s32 param_2); +s32 GetMenuEntryYCoord(MenuInputStruct *menu, s32 entryId); void sub_8013818(MenuInputStruct *param_1, s32 param_2, u32 param_3, s32 param_4); void sub_8013848(MenuInputStruct *param_1, s32 param_2, u32 param_3, s32 param_4); void sub_8013878(MenuInputStruct *param_1, s32 param_2); diff --git a/include/structs/menu.h b/include/structs/menu.h index 9c49bfc89..78c36955d 100644 --- a/include/structs/menu.h +++ b/include/structs/menu.h @@ -24,7 +24,7 @@ typedef struct MenuInputStruct { s32 unk0; u16 unk4; - s16 unk6; + s16 firstEntryY; DungeonPos unk8; s16 unkC; // Maybe DungeonPos s16 unkE; diff --git a/src/adventure_log.c b/src/adventure_log.c index 1e84bafbd..5e658c0f2 100644 --- a/src/adventure_log.c +++ b/src/adventure_log.c @@ -107,31 +107,31 @@ static void DisplayAdventureLog(void) case AA_NUM_FLOORS_EXPLORED: { s32 v1 = GetAdventureFloorsExplored(); gFormatArgs[0] = (s16)v1; - PrintFormattedStringOnWindow(8, sub_8013800(&sAdventureLog->s0.input, i), GetAdventureLogLine(aa), sAdventureLog->s0.unk34, 0); + PrintFormattedStringOnWindow(8, GetMenuEntryYCoord(&sAdventureLog->s0.input, i), GetAdventureLogLine(aa), sAdventureLog->s0.unk34, 0); break; } case AA_NUM_MOVES_LEARNED: { s32 v2 = GetAdventureMovesLearned(); gFormatArgs[0] = (s16)v2; - PrintFormattedStringOnWindow(8, sub_8013800(&sAdventureLog->s0.input, i), GetAdventureLogLine(aa), sAdventureLog->s0.unk34, 0); + PrintFormattedStringOnWindow(8, GetMenuEntryYCoord(&sAdventureLog->s0.input, i), GetAdventureLogLine(aa), sAdventureLog->s0.unk34, 0); break; } case AA_NUM_THIEVING_SUCCESSES: { s32 v3 = GetThievingSuccesses(); gFormatArgs[0] = (s16)v3; - PrintFormattedStringOnWindow(8, sub_8013800(&sAdventureLog->s0.input, i), GetAdventureLogLine(aa), sAdventureLog->s0.unk34, 0); + PrintFormattedStringOnWindow(8, GetMenuEntryYCoord(&sAdventureLog->s0.input, i), GetAdventureLogLine(aa), sAdventureLog->s0.unk34, 0); break; } case AA_NUM_FRIEND_RESCUE_SUCCESSES: { s32 v4 = GetFriendRescueSuccesses(); gFormatArgs[0] = v4; - PrintFormattedStringOnWindow(8, sub_8013800(&sAdventureLog->s0.input, i), GetAdventureLogLine(aa), sAdventureLog->s0.unk34, 0); + PrintFormattedStringOnWindow(8, GetMenuEntryYCoord(&sAdventureLog->s0.input, i), GetAdventureLogLine(aa), sAdventureLog->s0.unk34, 0); break; } case AA_NUM_POKEMON_EVOLVED: { s32 v5 = GetAdventureNumEvolved(); gFormatArgs[0] = v5; - PrintFormattedStringOnWindow(8, sub_8013800(&sAdventureLog->s0.input, i), GetAdventureLogLine(aa), sAdventureLog->s0.unk34, 0); + PrintFormattedStringOnWindow(8, GetMenuEntryYCoord(&sAdventureLog->s0.input, i), GetAdventureLogLine(aa), sAdventureLog->s0.unk34, 0); break; } case AA_NUM_POKEMON_JOINED: { @@ -140,13 +140,13 @@ static void DisplayAdventureLog(void) // fallthrough } default: { - PrintFormattedStringOnWindow(8, sub_8013800(&sAdventureLog->s0.input, i), GetAdventureLogLine(aa), sAdventureLog->s0.unk34, 0); + PrintFormattedStringOnWindow(8, GetMenuEntryYCoord(&sAdventureLog->s0.input, i), GetAdventureLogLine(aa), sAdventureLog->s0.unk34, 0); break; } } } else - PrintStringOnWindow(8, sub_8013800(&sAdventureLog->s0.input, i), sPlaceholder, sAdventureLog->s0.unk34, 0); + PrintStringOnWindow(8, GetMenuEntryYCoord(&sAdventureLog->s0.input, i), sPlaceholder, sAdventureLog->s0.unk34, 0); } sub_80073E0(sAdventureLog->s0.unk34); diff --git a/src/code_801C8C4.c b/src/code_801C8C4.c index 873cd8769..f21141930 100644 --- a/src/code_801C8C4.c +++ b/src/code_801C8C4.c @@ -161,13 +161,13 @@ void sub_801CCD8(void) for(index = 0; index < sUnknown_203B244->unk4B4.s0.input.unk1A; index++) { itemID = sUnknown_203B244->itemIDs[(sUnknown_203B244->unk4B4.s0.input.unk1E * sUnknown_203B244->unk4B4.s0.input.unk1C) + index]; BufferItemName(buffer, itemID, NULL); - y = sub_8013800(&sUnknown_203B244->unk4B4.s0.input, index); + y = GetMenuEntryYCoord(&sUnknown_203B244->unk4B4.s0.input, index); PrintStringOnWindow(8, y, buffer, sUnknown_203B244->unk4B4.s0.unk34, 0); - y2 = sub_8013800(&sUnknown_203B244->unk4B4.s0.input, index); + y2 = GetMenuEntryYCoord(&sUnknown_203B244->unk4B4.s0.input, index); sub_8012BC4((sUnknown_203B244->unk4B4.s0.unk38->width * 8) - 2, y2, gTeamInventoryRef->teamStorage[itemID], 3, 5, sUnknown_203B244->unk4B4.s0.unk34); if (sub_801CFE0(itemID) & 1) - sub_8007B7C(sUnknown_203B244->unk4B4.s0.unk34, 8, sub_8013800(&sUnknown_203B244->unk4B4.s0.input, index), (sUnknown_203B244->unk4B4.s0.unk38->width - 1) * '\b', 10); // TODO: Ghidra being crazy + sub_8007B7C(sUnknown_203B244->unk4B4.s0.unk34, 8, GetMenuEntryYCoord(&sUnknown_203B244->unk4B4.s0.input, index), (sUnknown_203B244->unk4B4.s0.unk38->width - 1) * '\b', 10); // TODO: Ghidra being crazy } sub_80073E0(sUnknown_203B244->unk4B4.s0.unk34); diff --git a/src/code_801D9E4.c b/src/code_801D9E4.c index b985c1165..7e89b77d7 100644 --- a/src/code_801D9E4.c +++ b/src/code_801D9E4.c @@ -125,10 +125,10 @@ static void sub_801DBD4(void) temp = &gGroundConversion_811BAF4[index]; temp2 = &gUnknown_81188F0[temp->unk4]; - y = sub_8013800(&sUnknown_203B258->s0.input, counter); + y = GetMenuEntryYCoord(&sUnknown_203B258->s0.input, counter); PrintStringOnWindow(8, y, temp2->text1, sUnknown_203B258->s0.unk34, 0); - y = sub_8013800(&sUnknown_203B258->s0.input, counter); + y = GetMenuEntryYCoord(&sUnknown_203B258->s0.input, counter); PrintStringOnWindow(62, y, temp->text, sUnknown_203B258->s0.unk34, 0); } diff --git a/src/code_801EE10.c b/src/code_801EE10.c index 21782d8ac..2c6f83344 100644 --- a/src/code_801EE10.c +++ b/src/code_801EE10.c @@ -316,7 +316,7 @@ void sub_801F280(bool8 param_1) } sub_80928A0(gFormatBuffer_Items[0],move,&uStack_30); - y = sub_8013800(&gUnknown_203B270->input,i); + y = GetMenuEntryYCoord(&gUnknown_203B270->input,i); linkChain = MoveFlagLinkChain(move); x = !linkChain ? 0x8 : 0xD; if (!linkChain && i != 0) { diff --git a/src/code_801F428.c b/src/code_801F428.c index 7bb562c36..eb64879f6 100644 --- a/src/code_801F428.c +++ b/src/code_801F428.c @@ -147,7 +147,7 @@ void sub_801F700(void) for(index = 0; index < gUnknown_203B274->s348.s0.input.unk1A; index++) { sub_8092C84(buffer2,gUnknown_203B274->unk4->unk0[gUnknown_203B274->s348.s0.input.unk1E * gUnknown_203B274->s348.s0.input.unk1C + index]); - y = sub_8013800(&gUnknown_203B274->s348.s0.input, index); + y = GetMenuEntryYCoord(&gUnknown_203B274->s348.s0.input, index); PrintStringOnWindow(8,y,buffer2,gUnknown_203B274->s348.s0.unk34,0); } sub_80073E0(gUnknown_203B274->s348.s0.unk34); diff --git a/src/code_8023144.c b/src/code_8023144.c index feda01dcd..ead836f78 100644 --- a/src/code_8023144.c +++ b/src/code_8023144.c @@ -156,7 +156,7 @@ static void sub_80234BC(void) s32 i; u8 buffer2[256]; u8 buffer1[100]; - unkStruct_8092638 auStack_2c; + FriendAreaCapacity auStack_2c; CallPrepareTextbox_8008C54(gUnknown_3001B5C->s35C.s0.unk34); sub_80073B8(gUnknown_3001B5C->s35C.s0.unk34); @@ -165,9 +165,9 @@ static void sub_80234BC(void) sub_8012BC4((gUnknown_3001B5C->s35C.unk9C.f2 * 8) + 4, 0, gUnknown_3001B5C->s35C.s0.input.unk1E + 1, 2, 7, gUnknown_3001B5C->s35C.s0.unk34); for (i = 0; i < gUnknown_3001B5C->s35C.s0.input.unk1A; i++) { - y = sub_8013800(&gUnknown_3001B5C->s35C.s0.input, i); + y = GetMenuEntryYCoord(&gUnknown_3001B5C->s35C.s0.input, i); species = gUnknown_3001B5C->unkC[(gUnknown_3001B5C->s35C.s0.input.unk1E * gUnknown_3001B5C->s35C.s0.input.unk1C) + i]; - sub_8092638(GetFriendArea(species), &auStack_2c, FALSE, FALSE); + GetFriendAreaCapacity2(GetFriendArea(species), &auStack_2c, FALSE, FALSE); color = COLOR_WHITE_2; if (auStack_2c.hasFriendArea) color = HasRecruitedMon(species) ? COLOR_CYAN : COLOR_GREEN; diff --git a/src/code_805D8C8_1.c b/src/code_805D8C8_1.c index 49ed091e3..d1ae4c198 100644 --- a/src/code_805D8C8_1.c +++ b/src/code_805D8C8_1.c @@ -1561,7 +1561,7 @@ void DrawFieldMenu(u8 a0) gUnknown_202EE10.unk1C = 5; gUnknown_202EE10.unk1E = 0; gUnknown_202EE10.unk4 = 0; - gUnknown_202EE10.unk6 = 2; + gUnknown_202EE10.firstEntryY = 2; gUnknown_202EE10.unkC = 0; gUnknown_202EE10.unkE = 0; gUnknown_202EE10.unk0 = 0; @@ -1592,19 +1592,19 @@ void DrawFieldMenu(u8 a0) gUnknown_202749A[5] = 7; } - y = sub_8013800(&gUnknown_202EE10, 0); + y = GetMenuEntryYCoord(&gUnknown_202EE10, 0); PrintStringOnWindow(8, y, gFieldMenuMovesPtr, 0, 0); - y = sub_8013800(&gUnknown_202EE10, 1); + y = GetMenuEntryYCoord(&gUnknown_202EE10, 1); PrintStringOnWindow(8, y, gFieldMenuItemsPtr, 0, 0); - y = sub_8013800(&gUnknown_202EE10, 2); + y = GetMenuEntryYCoord(&gUnknown_202EE10, 2); PrintStringOnWindow(8, y, gFieldMenuTeamPtr, 0, 0); - y = sub_8013800(&gUnknown_202EE10, 3); + y = GetMenuEntryYCoord(&gUnknown_202EE10, 3); PrintStringOnWindow(8, y, gFieldMenuOthersPtr, 0, 0); - y = sub_8013800(&gUnknown_202EE10, 4); + y = GetMenuEntryYCoord(&gUnknown_202EE10, 4); PrintStringOnWindow(8, y, gFieldMenuGroundPtr, 0, 0); sub_80073E0(0); @@ -1708,7 +1708,7 @@ void sub_805FC30(Windows *a0, s32 a1) gUnknown_202EE10.unk1E = 0; gUnknown_202EE10.unk20 = 0; gUnknown_202EE10.unk4 = 0; - gUnknown_202EE10.unk6 = 0; + gUnknown_202EE10.firstEntryY = 0; gUnknown_202EE10.unk0 = 1; gUnknown_202EE10.unkC = 0; gUnknown_202EE10.unkE = 0; @@ -1729,7 +1729,7 @@ void sub_805FC30(Windows *a0, s32 a1) r4 = (sub_8044F3C(i) != 0) ? 7 : 2; sprintfStatic(text, gUnknown_8106B50, r4, sub_8044EC8(i)); - y = sub_8013800(&gUnknown_202EE10, i); + y = GetMenuEntryYCoord(&gUnknown_202EE10, i); PrintStringOnWindow(8, y, text, 1, 0); } sub_80073E0(1); @@ -2066,7 +2066,7 @@ static void CreateFieldItemMenu(s32 a0, Entity *a1, bool8 a2, bool8 a3, Windows windows->id[0].unk10 = 0x10; windows->id[0].height = 0x10; a5->f2 = 0xC; - gUnknown_202EE10.unk6 = 0x10; + gUnknown_202EE10.firstEntryY = 0x10; gUnknown_202EE10.unk1C = 0xA; gDungeon->unk181e8.unk18212 = 1; break; @@ -2074,7 +2074,7 @@ static void CreateFieldItemMenu(s32 a0, Entity *a1, bool8 a2, bool8 a3, Windows windows->id[0].unk10 = 4; windows->id[0].height = 4; a5->f2 = 6; - gUnknown_202EE10.unk6 = 0x12; + gUnknown_202EE10.firstEntryY = 0x12; gUnknown_202EE10.unk1C = 1; break; case 3: @@ -2082,7 +2082,7 @@ static void CreateFieldItemMenu(s32 a0, Entity *a1, bool8 a2, bool8 a3, Windows windows->id[0].unk10 = 4; windows->id[0].height = 4; a5->f2 = 0xC; - gUnknown_202EE10.unk6 = 0x12; + gUnknown_202EE10.firstEntryY = 0x12; gUnknown_202EE10.unk1C = 1; break; } @@ -2112,7 +2112,7 @@ static void CreateFieldItemMenu(s32 a0, Entity *a1, bool8 a2, bool8 a3, Windows if (ItemExists(&gTeamInventoryRef->teamItems[i])) { gUnknown_202EE10.unk1A++; sub_8090E14(txtBuff, &gTeamInventoryRef->teamItems[i], &gUnknown_8106B60); - y = sub_8013800(&gUnknown_202EE10, i); + y = GetMenuEntryYCoord(&gUnknown_202EE10, i); PrintFormattedStringOnWindow(8, y, txtBuff, 0, 0); } else { @@ -2126,7 +2126,7 @@ static void CreateFieldItemMenu(s32 a0, Entity *a1, bool8 a2, bool8 a3, Windows if (ItemExists(&gTeamInventoryRef->teamItems[i + 10])) { gUnknown_202EE10.unk1A++; sub_8090E14(txtBuff, &gTeamInventoryRef->teamItems[i + 10], &gUnknown_8106B60); - y = sub_8013800(&gUnknown_202EE10, i); + y = GetMenuEntryYCoord(&gUnknown_202EE10, i); PrintFormattedStringOnWindow(8, y, txtBuff, 0, 0); } else { @@ -2141,7 +2141,7 @@ static void CreateFieldItemMenu(s32 a0, Entity *a1, bool8 a2, bool8 a3, Windows if (item->flags & ITEM_FLAG_EXISTS) { gUnknown_202EE10.unk1A++; sub_8090E14(txtBuff, item, &gUnknown_8106B60); - y = sub_8013800(&gUnknown_202EE10, 0); + y = GetMenuEntryYCoord(&gUnknown_202EE10, 0); PrintFormattedStringOnWindow(8, y, txtBuff, 0, 0); } if (a3) { @@ -2156,7 +2156,7 @@ static void CreateFieldItemMenu(s32 a0, Entity *a1, bool8 a2, bool8 a3, Windows if (item->flags & ITEM_FLAG_EXISTS) { gUnknown_202EE10.unk1A++; sub_8090E14(txtBuff, item, &gUnknown_8106B60); - y = sub_8013800(&gUnknown_202EE10, 0); + y = GetMenuEntryYCoord(&gUnknown_202EE10, 0); PrintFormattedStringOnWindow(8, y, txtBuff, 0, 0); } } @@ -2171,7 +2171,7 @@ static void CreateFieldItemMenu(s32 a0, Entity *a1, bool8 a2, bool8 a3, Windows if (item->flags & ITEM_FLAG_EXISTS) { gUnknown_202EE10.unk1A++; sub_8090E14(txtBuff, item, &gUnknown_8106B60); - y = sub_8013800(&gUnknown_202EE10, 0); + y = GetMenuEntryYCoord(&gUnknown_202EE10, 0); PrintFormattedStringOnWindow(8, y, txtBuff, 0, 0); } } @@ -2723,7 +2723,7 @@ void DrawFieldTeamMenu(struct UnkFieldTeamMenuStruct *a0, Windows *windows, bool gUnknown_202EE10.unk1E = 0; gUnknown_202EE10.unk20 = 0; gUnknown_202EE10.unk4 = 0; - gUnknown_202EE10.unk6 = (r10 != FALSE) * 16; + gUnknown_202EE10.firstEntryY = (r10 != FALSE) * 16; gUnknown_202EE10.unkC = 0; gUnknown_202EE10.unkE = 0; gUnknown_202EE10.unk14.x = 0; @@ -2790,7 +2790,7 @@ void DrawFieldTeamMenu(struct UnkFieldTeamMenuStruct *a0, Windows *windows, bool gFormatArgs[0] = monInfo->HP; gFormatArgs[1] = monInfo->maxHPStat; - y = sub_8013800(&gUnknown_202EE10, i); + y = GetMenuEntryYCoord(&gUnknown_202EE10, i); if (monInfo->isTeamLeader) { PrintFormattedStringOnWindow(9, y, gUnknown_8106BD4, 0, 0); } @@ -2922,7 +2922,7 @@ void ShowTacticsMenu(ActionContainer *a0) gUnknown_202EE10.unk1E = 0; gUnknown_202EE10.unk20 = 0; gUnknown_202EE10.unk4 = 0; - gUnknown_202EE10.unk6 = 16; + gUnknown_202EE10.firstEntryY = 16; gUnknown_202EE10.unkC = 0; gUnknown_202EE10.unkE = 0; gUnknown_202EE10.unk14.x = 0; diff --git a/src/code_8066D04.c b/src/code_8066D04.c index 011cb323a..cf89b3ff9 100644 --- a/src/code_8066D04.c +++ b/src/code_8066D04.c @@ -994,7 +994,7 @@ void sub_8067A80(u8 a0, s32 a1, s32 a2, PokemonStruct1 **a3) gUnknown_202EE10.unk1E = 0; gUnknown_202EE10.unk20 = 0; gUnknown_202EE10.unk4 = 0; - gUnknown_202EE10.unk6 = 18; + gUnknown_202EE10.firstEntryY = 18; gUnknown_202EE10.unkC = 0; gUnknown_202EE10.unkE = 0; gUnknown_202EE10.unk14.x = 0; @@ -1292,7 +1292,7 @@ void sub_806806C(PokemonStruct1 *a0) gUnknown_202EE10.menuIndex = 0; gUnknown_202EE10.unk1C = 0; gUnknown_202EE10.unk4 = 0; - gUnknown_202EE10.unk6 = 16; + gUnknown_202EE10.firstEntryY = 16; gUnknown_202EE10.unk14.x = 0; gUnknown_202EE10.unk0 = 0; diff --git a/src/code_806FDF4.c b/src/code_806FDF4.c index cfe23f002..1df01e6f7 100644 --- a/src/code_806FDF4.c +++ b/src/code_806FDF4.c @@ -329,7 +329,7 @@ bool8 sub_806F9BC(s16 species) { u8 friendArea; s32 id; - unkStruct_8092638 auStack_18; + FriendAreaCapacity auStack_18; id = species; if (((gDungeon->unk644.unk14 == 0) || (sub_808529C(id) == 0)) || @@ -359,7 +359,7 @@ bool8 sub_806F9BC(s16 species) else { if (GetUnk12(id) == 0) { friendArea = GetFriendArea(id); - sub_8092638(friendArea, &auStack_18, FALSE, FALSE); + GetFriendAreaCapacity2(friendArea, &auStack_18, FALSE, FALSE); if (auStack_18.hasFriendArea == FALSE) return FALSE; } diff --git a/src/code_8072F3C.c b/src/code_8072F3C.c index 4539f1369..1e8a4ac13 100644 --- a/src/code_8072F3C.c +++ b/src/code_8072F3C.c @@ -203,7 +203,7 @@ void sub_802FA50(void) if (gUnknown_203B314->unkB8 != 0) { for(counter = 0; counter < gUnknown_203B314->sBC.s0.input.unk1A; counter++) { - y = sub_8013800(&gUnknown_203B314->sBC.s0.input,counter); + y = GetMenuEntryYCoord(&gUnknown_203B314->sBC.s0.input,counter); index = gUnknown_203B314->sBC.s0.input.unk1E * gUnknown_203B314->sBC.s0.input.unk1C + counter; sVar1 = gUnknown_203B314->unk0[index]; if (gUnknown_203B314->unk5C[index] != 0) { @@ -218,7 +218,7 @@ void sub_802FA50(void) else { for(counter = 0; counter < gUnknown_203B314->sBC.s0.input.unk1A; counter++) { - y2 = sub_8013800(&gUnknown_203B314->sBC.s0.input,counter); + y2 = GetMenuEntryYCoord(&gUnknown_203B314->sBC.s0.input,counter); text = sub_80974A0(gUnknown_203B314->unk0[gUnknown_203B314->sBC.s0.input.unk1E * gUnknown_203B314->sBC.s0.input.unk1C + counter]); PrintStringOnWindow(8,y2,text,gUnknown_203B314->sBC.s0.unk34,0); } diff --git a/src/friend_area.c b/src/friend_area.c index 400375320..4bcb888df 100644 --- a/src/friend_area.c +++ b/src/friend_area.c @@ -155,7 +155,7 @@ bool8 HasAllFriendAreas(void) return TRUE; } -void sub_8092638(u8 friendArea, unkStruct_8092638 *param_2, bool8 checkLeader, bool8 checkDungeon) +void GetFriendAreaCapacity2(u8 friendArea, FriendAreaCapacity *dst, bool8 checkLeader, bool8 checkPartner) { PokemonStruct1 *pokeStruct; s32 i; @@ -166,30 +166,30 @@ void sub_8092638(u8 friendArea, unkStruct_8092638 *param_2, bool8 checkLeader, b for (i = 0; i < friendArea; i++) iVar4 += sFriendAreaSettings[i].num_pokemon; - param_2->unk8 = iVar4; - param_2->hasFriendArea = gFriendAreas[i]; + dst->unk8 = iVar4; + dst->hasFriendArea = gFriendAreas[i]; - if (param_2->hasFriendArea) { - param_2->unk2 = 0; - param_2->numPokemon = sFriendAreaSettings[i].num_pokemon; + if (dst->hasFriendArea) { + dst->currNoPokemon = 0; + dst->maxPokemon = sFriendAreaSettings[i].num_pokemon; - for (i = 0; i < param_2->numPokemon; i++, iVar4++) { + for (i = 0; i < dst->maxPokemon; i++, iVar4++) { pokeStruct = &gRecruitedPokemonRef->pokemon[iVar4]; if (PokemonFlag1(pokeStruct) && (!checkLeader || !IsMonTeamLeader(pokeStruct)) && - (!checkDungeon || pokeStruct->dungeonLocation.id != DUNGEON_JOIN_LOCATION_PARTNER)) { - param_2->unk2++; + (!checkPartner || pokeStruct->dungeonLocation.id != DUNGEON_JOIN_LOCATION_PARTNER)) { + dst->currNoPokemon++; } } } else { - param_2->unk2 = 0; - param_2->numPokemon = 0; + dst->currNoPokemon = 0; + dst->maxPokemon = 0; } } -void sub_80926F8(u8 a0, unkStruct_8092638 *a1, u8 a2) +void GetFriendAreaCapacity(u8 areaId, FriendAreaCapacity *dst, bool8 checkPartner) { PokemonStruct1 *mon; s32 r5; @@ -198,30 +198,30 @@ void sub_80926F8(u8 a0, unkStruct_8092638 *a1, u8 a2) r5 = 0; - for (i = 0; i < a0; i++) + for (i = 0; i < areaId; i++) r5 += sFriendAreaSettings[i].num_pokemon; - a1->unk8 = r5; - a1->hasFriendArea = gFriendAreas[i]; + dst->unk8 = r5; + dst->hasFriendArea = gFriendAreas[i]; - if (a1->hasFriendArea) { - a1->unk2 = 0; - a1->numPokemon = sFriendAreaSettings[i].num_pokemon; - max = a1->numPokemon; + if (dst->hasFriendArea) { + dst->currNoPokemon = 0; + dst->maxPokemon = sFriendAreaSettings[i].num_pokemon; + max = dst->maxPokemon; for (i = 0; i < max; i++, r5++) { mon = &gRecruitedPokemonRef->pokemon[r5]; if (PokemonFlag1(mon)) { - if (mon->isTeamLeader || (a2 == 0 && mon->dungeonLocation.id == DUNGEON_JOIN_LOCATION_PARTNER)) - a1->numPokemon--; + if (mon->isTeamLeader || (!checkPartner && mon->dungeonLocation.id == DUNGEON_JOIN_LOCATION_PARTNER)) + dst->maxPokemon--; else - a1->unk2++; + dst->currNoPokemon++; } } } else { - a1->unk2 = 0; - a1->numPokemon = 0; + dst->currNoPokemon = 0; + dst->maxPokemon = 0; } } diff --git a/src/friend_areas_map.c b/src/friend_areas_map.c index 83b6520c5..14e8fdb52 100644 --- a/src/friend_areas_map.c +++ b/src/friend_areas_map.c @@ -50,230 +50,515 @@ extern u16 gUnknown_2026E4E; #define NO_AREA NUM_FRIEND_AREAS + 5 - // ななし means without name + // ななし means 'without name' #define DUMMY_LOCATION \ { \ .name = _("ななし"), \ .pos = {0, 0}, \ .areasIds = {NO_AREA, NO_AREA, NO_AREA, NO_AREA, NO_AREA, NO_AREA, NO_AREA, NO_AREA}, \ - .adjacentLocations = {0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF}, \ + .adjacentLocations = {-1, -1, -1, -1, -1, -1, -1, -1}, \ } -static const struct FriendAreaLocationInfo gFriendAreaLocations[64] = +// The second set is all dummies, maybe it was used for testing purposes? +static const struct FriendAreaLocationInfo sFriendAreaLocations[2][NUM_FRIEND_AREA_LOCATIONS] = { { - .name = "Mountain Range", - .pos = {0x1C5, 0x71}, - .areasIds = {8, 9, 0xA, 0x27, 0x2F, 0xB, 0x3F, 0x3F}, - .adjacentLocations = {5, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xC, 2, 7}, + [LOCATION_MOUNTAIN_RANGE] = + { + .name = "Mountain Range", + .pos = {0x1C5, 0x71}, + .areasIds = {MT_DEEPGREEN, MT_CLEFT, MT_MOONVIEW, MT_DISCIPLINE, DARKNESS_RIDGE, RAINBOW_PEAK, NO_AREA, NO_AREA}, + .adjacentLocations = { + [DIRECTION_SOUTH] = LOCATION_EASTERN_FOREST, + [DIRECTION_SOUTHEAST] = -1, + [DIRECTION_EAST] = -1, + [DIRECTION_NORTHEAST] = -1, + [DIRECTION_NORTH] = -1, + [DIRECTION_NORTHWEST] = LOCATION_MARSH, + [DIRECTION_WEST] = LOCATION_PLAINS, + [DIRECTION_SOUTHWEST] = LOCATION_RIVER, + }, + }, + [LOCATION_GLACIER] = + { + .name = "Glacier", + .pos = {0x1CD, 0x1C}, + .areasIds = {FRIGID_CAVERN, NO_AREA, NO_AREA, NO_AREA, NO_AREA, NO_AREA, NO_AREA, NO_AREA}, + .adjacentLocations = { + [DIRECTION_SOUTH] = -1, + [DIRECTION_SOUTHEAST] = -1, + [DIRECTION_EAST] = -1, + [DIRECTION_NORTHEAST] = -1, + [DIRECTION_NORTH] = -1, + [DIRECTION_NORTHWEST] = -1, + [DIRECTION_WEST] = LOCATION_NORTHERN_LAKES, + [DIRECTION_SOUTHWEST] = LOCATION_MARSH, + }, + }, + [LOCATION_PLAINS] = + { + .name = "Plains", + .pos = {0x161, 0x78}, + .areasIds = {BEAU_PLAINS, SKY_BLUE_PLAINS, SACRED_FIELD, NO_AREA, NO_AREA, NO_AREA, NO_AREA, NO_AREA}, + .adjacentLocations = { + [DIRECTION_SOUTH] = LOCATION_TEAM_BASE, + [DIRECTION_SOUTHEAST] = LOCATION_RIVER, + [DIRECTION_EAST] = 0, + [DIRECTION_NORTHEAST] = LOCATION_MARSH, + [DIRECTION_NORTH] = LOCATION_CAVE, + [DIRECTION_NORTHWEST] = -1, + [DIRECTION_WEST] = LOCATION_POND, + [DIRECTION_SOUTHWEST] = -1, + }, + }, + [LOCATION_SOUTH_PLAINS] = + { + .name = "South Plains", + .pos = {0x162, 0x12D}, + .areasIds = {SAFARI, WILD_PLAINS, NO_AREA, NO_AREA, NO_AREA, NO_AREA, NO_AREA, NO_AREA}, + .adjacentLocations = { + [DIRECTION_SOUTH] = -1, + [DIRECTION_SOUTHEAST] = -1, + [DIRECTION_EAST] = -1, + [DIRECTION_NORTHEAST] = LOCATION_BADLANDS, + [DIRECTION_NORTH] = LOCATION_JUNGLE, + [DIRECTION_NORTHWEST] = LOCATION_RELICS, + [DIRECTION_WEST] = -1, + [DIRECTION_SOUTHWEST] = -1, + }, + }, + [LOCATION_BADLANDS] = + { + .name = "Badlands", + .pos = {0x194, 0x102}, + .areasIds = {RAVAGED_FIELD, MAGNETIC_QUARRY, THUNDER_MEADOW, NO_AREA, NO_AREA, NO_AREA, NO_AREA, NO_AREA}, + .adjacentLocations = { + [DIRECTION_SOUTH] = -1, + [DIRECTION_SOUTHEAST] = LOCATION_DESERT, + [DIRECTION_EAST] = -1, + [DIRECTION_NORTHEAST] = LOCATION_EASTERN_LAKES, + [DIRECTION_NORTH] = LOCATION_EASTERN_PONDS, + [DIRECTION_NORTHWEST] = -1, + [DIRECTION_WEST] = LOCATION_JUNGLE, + [DIRECTION_SOUTHWEST] = LOCATION_SOUTH_PLAINS, + }, + }, + [LOCATION_EASTERN_FOREST] = + { + .name = "Eastern Forest", + .pos = {0x1C7, 0x9D}, + .areasIds = {MIST_RISE_FOREST, FLYAWAY_FOREST, OVERGROWN_FOREST, ENERGETIC_FOREST, NO_AREA, NO_AREA, NO_AREA, NO_AREA}, + .adjacentLocations = { + [DIRECTION_SOUTH] = LOCATION_EASTERN_LAKES, + [DIRECTION_SOUTHEAST] = -1, + [DIRECTION_EAST] = -1, + [DIRECTION_NORTHEAST] = -1, + [DIRECTION_NORTH] = 0, + [DIRECTION_NORTHWEST] = -1, + [DIRECTION_WEST] = LOCATION_RIVER, + [DIRECTION_SOUTHWEST] = LOCATION_EASTERN_PONDS, + }, + }, + [LOCATION_WESTERN_FOREST] = + { + .name = "Western Forest", + .pos = {0x108, 0x9D}, + .areasIds = {MUSHROOM_FOREST, HEALING_FOREST, TRANSFORM_FOREST, SECRETIVE_FOREST, NO_AREA, NO_AREA, NO_AREA, NO_AREA}, + .adjacentLocations = { + [DIRECTION_SOUTH] = LOCATION_VOLCANO, + [DIRECTION_SOUTHEAST] = -1, + [DIRECTION_EAST] = LOCATION_TEAM_BASE, + [DIRECTION_NORTHEAST] = LOCATION_POND, + [DIRECTION_NORTH] = LOCATION_NORTHERN_ISLES, + [DIRECTION_NORTHWEST] = LOCATION_BEACH, + [DIRECTION_WEST] = -1, + [DIRECTION_SOUTHWEST] = -1, + }, + }, + [LOCATION_RIVER] = + { + .name = "River", + .pos = {0x197, 0xA0}, + .areasIds = {RUB_A_DUB_RIVER, NO_AREA, NO_AREA, NO_AREA, NO_AREA, NO_AREA, NO_AREA, NO_AREA}, + .adjacentLocations = { + [DIRECTION_SOUTH] = LOCATION_EASTERN_PONDS, + [DIRECTION_SOUTHEAST] = LOCATION_EASTERN_LAKES, + [DIRECTION_EAST] = LOCATION_EASTERN_FOREST, + [DIRECTION_NORTHEAST] = LOCATION_MOUNTAIN_RANGE, + [DIRECTION_NORTH] = LOCATION_MARSH, + [DIRECTION_NORTHWEST] = LOCATION_PLAINS, + [DIRECTION_WEST] = LOCATION_TEAM_BASE, + [DIRECTION_SOUTHWEST] = -1, + }, + }, + [LOCATION_EASTERN_PONDS] = + { + .name = "Eastern Ponds", + .pos = {0x198, 0xCF}, + .areasIds = {TADPOLE_POND, NO_AREA, NO_AREA, NO_AREA, NO_AREA, NO_AREA, NO_AREA, NO_AREA}, + .adjacentLocations = { + [DIRECTION_SOUTH] = LOCATION_BADLANDS, + [DIRECTION_SOUTHEAST] = -1, + [DIRECTION_EAST] = LOCATION_EASTERN_LAKES, + [DIRECTION_NORTHEAST] = LOCATION_EASTERN_FOREST, + [DIRECTION_NORTH] = LOCATION_RIVER, + [DIRECTION_NORTHWEST] = LOCATION_TEAM_BASE, + [DIRECTION_WEST] = -1, + [DIRECTION_SOUTHWEST] = LOCATION_JUNGLE, + }, + }, + [LOCATION_POND] = + { + .name = "Pond", + .pos = {0x133, 0x79}, + .areasIds = {TURTLESHELL_POND, NO_AREA, NO_AREA, NO_AREA, NO_AREA, NO_AREA, NO_AREA, NO_AREA}, + .adjacentLocations = { + [DIRECTION_SOUTH] = -1, + [DIRECTION_SOUTHEAST] = LOCATION_TEAM_BASE, + [DIRECTION_EAST] = LOCATION_PLAINS, + [DIRECTION_NORTHEAST] = LOCATION_CAVE, + [DIRECTION_NORTH] = LOCATION_RUINS, + [DIRECTION_NORTHWEST] = LOCATION_NORTHERN_ISLES, + [DIRECTION_WEST] = -1, + [DIRECTION_SOUTHWEST] = LOCATION_WESTERN_FOREST, + }, + }, + [LOCATION_NORTHERN_LAKES] = + { + .name = "Northern Lakes", + .pos = {0x182, 0x1D}, + .areasIds = {MYSTIC_LAKE, NO_AREA, NO_AREA, NO_AREA, NO_AREA, NO_AREA, NO_AREA, NO_AREA}, + .adjacentLocations = { + [DIRECTION_SOUTH] = -1, + [DIRECTION_SOUTHEAST] = LOCATION_MARSH, + [DIRECTION_EAST] = 1, + [DIRECTION_NORTHEAST] = -1, + [DIRECTION_NORTH] = -1, + [DIRECTION_NORTHWEST] = -1, + [DIRECTION_WEST] = LOCATION_RUINS, + [DIRECTION_SOUTHWEST] = LOCATION_CAVE, + }, + }, + [LOCATION_EASTERN_LAKES] = + { + .name = "Eastern Lakes", + .pos = {0x1C6, 0xD0}, + .areasIds = {WATERFALL_LAKE, NO_AREA, NO_AREA, NO_AREA, NO_AREA, NO_AREA, NO_AREA, NO_AREA}, + .adjacentLocations = { + [DIRECTION_SOUTH] = -1, + [DIRECTION_SOUTHEAST] = -1, + [DIRECTION_EAST] = -1, + [DIRECTION_NORTHEAST] = -1, + [DIRECTION_NORTH] = LOCATION_EASTERN_FOREST, + [DIRECTION_NORTHWEST] = LOCATION_RIVER, + [DIRECTION_WEST] = LOCATION_EASTERN_PONDS, + [DIRECTION_SOUTHWEST] = LOCATION_BADLANDS, + }, + }, + [LOCATION_MARSH] = + { + .name = "Marsh", + .pos = {0x1A2, 0x46}, + .areasIds = {PEANUT_SWAMP, POISON_SWAMP, NO_AREA, NO_AREA, NO_AREA, NO_AREA, NO_AREA, NO_AREA}, + .adjacentLocations = { + [DIRECTION_SOUTH] = LOCATION_RIVER, + [DIRECTION_SOUTHEAST] = LOCATION_MOUNTAIN_RANGE, + [DIRECTION_EAST] = -1, + [DIRECTION_NORTHEAST] = 1, + [DIRECTION_NORTH] = -1, + [DIRECTION_NORTHWEST] = LOCATION_NORTHERN_LAKES, + [DIRECTION_WEST] = LOCATION_CAVE, + [DIRECTION_SOUTHWEST] = LOCATION_PLAINS, + }, + }, + [LOCATION_CAVE] = + { + .name = "Cave", + .pos = {0x160, 0x47}, + .areasIds = {ECHO_CAVE, DRAGON_CAVE, BOULDER_CAVE, CRYPTIC_CAVE, NO_AREA, NO_AREA, NO_AREA, NO_AREA}, + .adjacentLocations = { + [DIRECTION_SOUTH] = LOCATION_PLAINS, + [DIRECTION_SOUTHEAST] = -1, + [DIRECTION_EAST] = LOCATION_MARSH, + [DIRECTION_NORTHEAST] = LOCATION_NORTHERN_LAKES, + [DIRECTION_NORTH] = -1, + [DIRECTION_NORTHWEST] = LOCATION_RUINS, + [DIRECTION_WEST] = LOCATION_NORTHERN_ISLES, + [DIRECTION_SOUTHWEST] = LOCATION_POND, + }, + }, + [LOCATION_JUNGLE] = + { + .name = "Jungle", + .pos = {0x163, 0x104}, + .areasIds = {JUNGLE, NO_AREA, NO_AREA, NO_AREA, NO_AREA, NO_AREA, NO_AREA, NO_AREA}, + .adjacentLocations = { + [DIRECTION_SOUTH] = LOCATION_SOUTH_PLAINS, + [DIRECTION_SOUTHEAST] = -1, + [DIRECTION_EAST] = LOCATION_BADLANDS, + [DIRECTION_NORTHEAST] = LOCATION_EASTERN_PONDS, + [DIRECTION_NORTH] = LOCATION_TEAM_BASE, + [DIRECTION_NORTHWEST] = -1, + [DIRECTION_WEST] = LOCATION_RELICS, + [DIRECTION_SOUTHWEST] = -1, + }, + }, + [LOCATION_RUINS] = + { + .name = "Ruins", + .pos = {0x136, 0x1C}, + .areasIds = {DECREPIT_LAB, POWER_PLANT, NO_AREA, NO_AREA, NO_AREA, NO_AREA, NO_AREA, NO_AREA}, + .adjacentLocations = { + [DIRECTION_SOUTH] = LOCATION_POND, + [DIRECTION_SOUTHEAST] = LOCATION_CAVE, + [DIRECTION_EAST] = LOCATION_NORTHERN_LAKES, + [DIRECTION_NORTHEAST] = -1, + [DIRECTION_NORTH] = -1, + [DIRECTION_NORTHWEST] = -1, + [DIRECTION_WEST] = LOCATION_NORTHERN_SEA, + [DIRECTION_SOUTHWEST] = LOCATION_NORTHERN_ISLES, + }, + }, + [LOCATION_VOLCANO] = + { + .name = "Volcano", + .pos = {0x107, 0xCB}, + .areasIds = {SCORCHED_PLAINS, CRATER, VOLCANIC_PIT, NO_AREA, NO_AREA, NO_AREA, NO_AREA, NO_AREA}, + .adjacentLocations = { + [DIRECTION_SOUTH] = -1, + [DIRECTION_SOUTHEAST] = LOCATION_RELICS, + [DIRECTION_EAST] = -1, + [DIRECTION_NORTHEAST] = LOCATION_TEAM_BASE, + [DIRECTION_NORTH] = LOCATION_WESTERN_FOREST, + [DIRECTION_NORTHWEST] = -1, + [DIRECTION_WEST] = -1, + [DIRECTION_SOUTHWEST] = LOCATION_SOUTHERN_SEA, + }, + }, + [LOCATION_DESERT] = + { + .name = "Desert", + .pos = {0x1C4, 0x12D}, + .areasIds = {FURNACE_DESERT, NO_AREA, NO_AREA, NO_AREA, NO_AREA, NO_AREA, NO_AREA, NO_AREA}, + .adjacentLocations = { + [DIRECTION_SOUTH] = -1, + [DIRECTION_SOUTHEAST] = -1, + [DIRECTION_EAST] = -1, + [DIRECTION_NORTHEAST] = -1, + [DIRECTION_NORTH] = -1, + [DIRECTION_NORTHWEST] = LOCATION_BADLANDS, + [DIRECTION_WEST] = -1, + [DIRECTION_SOUTHWEST] = -1, + }, + }, + [LOCATION_RELICS] = + { + .name = "Relics", + .pos = {0x131, 0x105}, + .areasIds = {ANCIENT_RELIC, AGED_CHAMBER_AN, AGED_CHAMBER_O_EXCLAIM, NO_AREA, NO_AREA, NO_AREA, NO_AREA, NO_AREA}, + .adjacentLocations = { + [DIRECTION_SOUTH] = -1, + [DIRECTION_SOUTHEAST] = LOCATION_SOUTH_PLAINS, + [DIRECTION_EAST] = LOCATION_JUNGLE, + [DIRECTION_NORTHEAST] = -1, + [DIRECTION_NORTH] = -1, + [DIRECTION_NORTHWEST] = LOCATION_VOLCANO, + [DIRECTION_WEST] = LOCATION_SOUTHERN_SEA, + [DIRECTION_SOUTHWEST] = -1, + }, + }, + [LOCATION_SKY] = + { + .name = "Sky", + .pos = {0x2F, 0x15}, + .areasIds = {STRATOS_LOOKOUT, NO_AREA, NO_AREA, NO_AREA, NO_AREA, NO_AREA, NO_AREA, NO_AREA}, + .adjacentLocations = { + [DIRECTION_SOUTH] = LOCATION_WESTERN_ISLES, + [DIRECTION_SOUTHEAST] = LOCATION_BEACH, + [DIRECTION_EAST] = -1, + [DIRECTION_NORTHEAST] = -1, + [DIRECTION_NORTH] = -1, + [DIRECTION_NORTHWEST] = -1, + [DIRECTION_WEST] = -1, + [DIRECTION_SOUTHWEST] = -1, + }, + }, + [LOCATION_NORTHERN_ISLES] = + { + .name = "Northern Isles", + .pos = {0x107, 0x47}, + .areasIds = {LEGENDARY_ISLAND, NO_AREA, NO_AREA, NO_AREA, NO_AREA, NO_AREA, NO_AREA, NO_AREA}, + .adjacentLocations = { + [DIRECTION_SOUTH] = 6, + [DIRECTION_SOUTHEAST] = 9, + [DIRECTION_EAST] = 0xD, + [DIRECTION_NORTHEAST] = 0xF, + [DIRECTION_NORTH] = -1, + [DIRECTION_NORTHWEST] = 0x18, + [DIRECTION_WEST] = -1, + [DIRECTION_SOUTHWEST] = -1, + }, + }, + [LOCATION_SOUTHERN_ISLES] = + { + .name = "Southern Isles", + .pos = {0x5D, 0x10C}, + .areasIds = {SOUTHERN_ISLAND, NO_AREA, NO_AREA, NO_AREA, NO_AREA, NO_AREA, NO_AREA, NO_AREA}, + .adjacentLocations = { + [DIRECTION_SOUTH] = -1, + [DIRECTION_SOUTHEAST] = -1, + [DIRECTION_EAST] = LOCATION_SOUTHERN_SEA, + [DIRECTION_NORTHEAST] = -1, + [DIRECTION_NORTH] = -1, + [DIRECTION_NORTHWEST] = LOCATION_SOUTHWEST_ISLES, + [DIRECTION_WEST] = -1, + [DIRECTION_SOUTHWEST] = -1, + }, + }, + [LOCATION_SOUTHWEST_ISLES] = + { + .name = "Southwest Isles", + .pos = {0x2D, 0xCB}, + .areasIds = {ENCLOSED_ISLAND, NO_AREA, NO_AREA, NO_AREA, NO_AREA, NO_AREA, NO_AREA, NO_AREA}, + .adjacentLocations = { + [DIRECTION_SOUTH] = -1, + [DIRECTION_SOUTHEAST] = LOCATION_SOUTHERN_ISLES, + [DIRECTION_EAST] = -1, + [DIRECTION_NORTHEAST] = -1, + [DIRECTION_NORTH] = LOCATION_WESTERN_ISLES, + [DIRECTION_NORTHWEST] = -1, + [DIRECTION_WEST] = -1, + [DIRECTION_SOUTHWEST] = -1, + }, + }, + [LOCATION_WESTERN_ISLES] = + { + .name = "Western Isles", + .pos = {0x2D, 0x70}, + .areasIds = {FINAL_ISLAND, NO_AREA, NO_AREA, NO_AREA, NO_AREA, NO_AREA, NO_AREA, NO_AREA}, + .adjacentLocations = { + [DIRECTION_SOUTH] = LOCATION_SOUTHWEST_ISLES, + [DIRECTION_SOUTHEAST] = -1, + [DIRECTION_EAST] = -1, + [DIRECTION_NORTHEAST] = LOCATION_BEACH, + [DIRECTION_NORTH] = LOCATION_SKY, + [DIRECTION_NORTHWEST] = -1, + [DIRECTION_WEST] = -1, + [DIRECTION_SOUTHWEST] = -1, + }, + }, + [LOCATION_NORTHERN_SEA] = + { + .name = "Northern Sea", + .pos = {0xD0, 0x16}, + .areasIds = {BOUNTIFUL_SEA, SERENE_SEA, DEEP_SEA_CURRENT, NO_AREA, NO_AREA, NO_AREA, NO_AREA, NO_AREA}, + .adjacentLocations = { + [DIRECTION_SOUTH] = -1, + [DIRECTION_SOUTHEAST] = LOCATION_NORTHERN_ISLES, + [DIRECTION_EAST] = LOCATION_RUINS, + [DIRECTION_NORTHEAST] = -1, + [DIRECTION_NORTH] = -1, + [DIRECTION_NORTHWEST] = -1, + [DIRECTION_WEST] = -1, + [DIRECTION_SOUTHWEST] = LOCATION_BEACH, + }, + }, + [LOCATION_SOUTHERN_SEA] = + { + .name = "Southern Sea", + .pos = {0xB2, 0x10D}, + .areasIds = {TREASURE_SEA, DEEP_SEA_FLOOR, SEAFLOOR_CAVE, NO_AREA, NO_AREA, NO_AREA, NO_AREA, NO_AREA}, + .adjacentLocations = { + [DIRECTION_SOUTH] = -1, + [DIRECTION_SOUTHEAST] = -1, + [DIRECTION_EAST] = LOCATION_RELICS, + [DIRECTION_NORTHEAST] = LOCATION_VOLCANO, + [DIRECTION_NORTH] = -1, + [DIRECTION_NORTHWEST] = -1, + [DIRECTION_WEST] = LOCATION_SOUTHERN_ISLES, + [DIRECTION_SOUTHWEST] = -1, + }, + }, + [LOCATION_BEACH] = + { + .name = "Beach", + .pos = {0x81, 0x42}, + .areasIds = {SHALLOW_BEACH, ICE_FLOE_BEACH, NO_AREA, NO_AREA, NO_AREA, NO_AREA, NO_AREA, NO_AREA}, + .adjacentLocations = { + [DIRECTION_SOUTH] = -1, + [DIRECTION_SOUTHEAST] = LOCATION_WESTERN_FOREST, + [DIRECTION_EAST] = -1, + [DIRECTION_NORTHEAST] = LOCATION_NORTHERN_SEA, + [DIRECTION_NORTH] = -1, + [DIRECTION_NORTHWEST] = LOCATION_SKY, + [DIRECTION_WEST] = -1, + [DIRECTION_SOUTHWEST] = LOCATION_WESTERN_ISLES, + }, + }, + [LOCATION_TEAM_BASE] = + { + .name = _("$t"), + .pos = {0x163, 0xA1}, + .areasIds = {FRIEND_AREA_NONE, NO_AREA, NO_AREA, NO_AREA, NO_AREA, NO_AREA, NO_AREA, NO_AREA}, + .adjacentLocations = { + [DIRECTION_SOUTH] = LOCATION_JUNGLE, + [DIRECTION_SOUTHEAST] = LOCATION_EASTERN_PONDS, + [DIRECTION_EAST] = LOCATION_RIVER, + [DIRECTION_NORTHEAST] = -1, + [DIRECTION_NORTH] = LOCATION_PLAINS, + [DIRECTION_NORTHWEST] = LOCATION_POND, + [DIRECTION_WEST] = LOCATION_WESTERN_FOREST, + [DIRECTION_SOUTHWEST] = LOCATION_VOLCANO, + }, + }, + [LOCATION_UNUSED_28] = DUMMY_LOCATION, + [LOCATION_UNUSED_29] = DUMMY_LOCATION, + [LOCATION_UNUSED_30] = DUMMY_LOCATION, + [LOCATION_UNUSED_31] = DUMMY_LOCATION, }, { - .name = "Glacier", - .pos = {0x1CD, 0x1C}, - .areasIds = {0x30, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F}, - .adjacentLocations = {0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xA, 0xC}, - }, - { - .name = "Plains", - .pos = {0x161, 0x78}, - .areasIds = {0xD, 0xE, 0x11, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F}, - .adjacentLocations = {0x1B, 7, 0, 0xC, 0xD, 0xFFFF, 9, 0xFFFF}, - }, - { - .name = "South Plains", - .pos = {0x162, 0x12D}, - .areasIds = {0xF, 0xC, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F}, - .adjacentLocations = {0xFFFF, 0xFFFF, 0xFFFF, 4, 0xE, 0x12, 0xFFFF, 0xFFFF}, - }, - { - .name = "Badlands", - .pos = {0x194, 0x102}, - .areasIds = {0x34, 0x35, 0x28, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F}, - .adjacentLocations = {0xFFFF, 0x11, 0xFFFF, 0xB, 8, 0xFFFF, 0xE, 3}, - }, - { - .name = "Eastern Forest", - .pos = {0x1C7, 0x9D}, - .areasIds = {0x12, 0x13, 0x14, 0x15, 0x3F, 0x3F, 0x3F, 0x3F}, - .adjacentLocations = {0xB, 0xFFFF, 0xFFFF, 0xFFFF, 0, 0xFFFF, 7, 8}, - }, - { - .name = "Western Forest", - .pos = {0x108, 0x9D}, - .areasIds = {0x16, 0x17, 0x18, 0x19, 0x3F, 0x3F, 0x3F, 0x3F}, - .adjacentLocations = {0x10, 0xFFFF, 0x1B, 9, 0x14, 0x1A, 0xFFFF, 0xFFFF}, - }, - { - .name = "River", - .pos = {0x197, 0xA0}, - .areasIds = {0x1A, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F}, - .adjacentLocations = {8, 0xB, 5, 0, 0xC, 2, 0x1B, 0xFFFF}, - }, - { - .name = "Eastern Ponds", - .pos = {0x198, 0xCF}, - .areasIds = {0x1B, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F}, - .adjacentLocations = {4, 0xFFFF, 0xB, 5, 7, 0x1B, 0xFFFF, 0xE}, - }, - { - .name = "Pond", - .pos = {0x133, 0x79}, - .areasIds = {0x1C, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F}, - .adjacentLocations = {0xFFFF, 0x1B, 2, 0xD, 0xF, 0x14, 0xFFFF, 6}, - }, - { - .name = "Northern Lakes", - .pos = {0x182, 0x1D}, - .areasIds = {0x1D, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F}, - .adjacentLocations = {0xFFFF, 0xC, 1, 0xFFFF, 0xFFFF, 0xFFFF, 0xF, 0xD}, - }, - { - .name = "Eastern Lakes", - .pos = {0x1C6, 0xD0}, - .areasIds = {0x1E, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F}, - .adjacentLocations = {0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 5, 7, 8, 4}, - }, - { - .name = "Marsh", - .pos = {0x1A2, 0x46}, - .areasIds = {0x1F, 0x20, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F}, - .adjacentLocations = {7, 0, 0xFFFF, 1, 0xFFFF, 0xA, 0xD, 2}, - }, - { - .name = "Cave", - .pos = {0x160, 0x47}, - .areasIds = {0x21, 0x23, 0x24, 0x22, 0x3F, 0x3F, 0x3F, 0x3F}, - .adjacentLocations = {2, 0xFFFF, 0xC, 0xA, 0xFFFF, 0xF, 0x14, 9}, - }, - { - .name = "Jungle", - .pos = {0x163, 0x104}, - .areasIds = {0x25, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F}, - .adjacentLocations = {3, 0xFFFF, 4, 8, 0x1B, 0xFFFF, 0x12, 0xFFFF}, - }, - { - .name = "Ruins", - .pos = {0x136, 0x1C}, - .areasIds = {0x26, 0x29, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F}, - .adjacentLocations = {9, 0xD, 0xA, 0xFFFF, 0xFFFF, 0xFFFF, 0x18, 0x14}, - }, - { - .name = "Volcano", - .pos = {0x107, 0xCB}, - .areasIds = {0x10, 0x2A, 0x32, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F}, - .adjacentLocations = {0xFFFF, 0x12, 0xFFFF, 0x1B, 6, 0xFFFF, 0xFFFF, 0x19}, - }, - { - .name = "Desert", - .pos = {0x1C4, 0x12D}, - .areasIds = {0x2B, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F}, - .adjacentLocations = {0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 4, 0xFFFF, 0xFFFF}, - }, - { - .name = "Relics", - .pos = {0x131, 0x105}, - .areasIds = {0x2E, 0x2C, 0x2D, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F}, - .adjacentLocations = {0xFFFF, 3, 0xE, 0xFFFF, 0xFFFF, 0x10, 0x19, 0xFFFF}, - }, - { - .name = "Sky", - .pos = {0x2F, 0x15}, - .areasIds = {0x33, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F}, - .adjacentLocations = {0x17, 0x1A, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF}, - }, - { - .name = "Northern Isles", - .pos = {0x107, 0x47}, - .areasIds = {0x36, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F}, - .adjacentLocations = {6, 9, 0xD, 0xF, 0xFFFF, 0x18, 0xFFFF, 0xFFFF}, - }, - { - .name = "Southern Isles", - .pos = {0x5D, 0x10C}, - .areasIds = {0x37, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F}, - .adjacentLocations = {0xFFFF, 0xFFFF, 0x19, 0xFFFF, 0xFFFF, 0x16, 0xFFFF, 0xFFFF}, - }, - { - .name = "Southwest Isles", - .pos = {0x2D, 0xCB}, - .areasIds = {0x38, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F}, - .adjacentLocations = {0xFFFF, 0x15, 0xFFFF, 0xFFFF, 0x17, 0xFFFF, 0xFFFF, 0xFFFF}, - }, - { - .name = "Western Isles", - .pos = {0x2D, 0x70}, - .areasIds = {0x39, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F}, - .adjacentLocations = {0x16, 0xFFFF, 0xFFFF, 0x1A, 0x13, 0xFFFF, 0xFFFF, 0xFFFF}, - }, - { - .name = "Northern Sea", - .pos = {0xD0, 0x16}, - .areasIds = {1, 3, 5, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F}, - .adjacentLocations = {0xFFFF, 0x14, 0xF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0x1A}, - }, - { - .name = "Southern Sea", - .pos = {0xB2, 0x10D}, - .areasIds = {2, 4, 6, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F}, - .adjacentLocations = {0xFFFF, 0xFFFF, 0x12, 0x10, 0xFFFF, 0xFFFF, 0x15, 0xFFFF}, - }, - { - .name = "Beach", - .pos = {0x81, 0x42}, - .areasIds = {7, 0x31, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F}, - .adjacentLocations = {0xFFFF, 6, 0xFFFF, 0x18, 0xFFFF, 0x13, 0xFFFF, 0x17}, - }, - { - .name = _("$t"), - .pos = {0x163, 0xA1}, - .areasIds = {0, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F}, - .adjacentLocations = {0xE, 8, 7, 0xFFFF, 2, 9, 6, 0x10}, - }, - DUMMY_LOCATION, - DUMMY_LOCATION, - DUMMY_LOCATION, - DUMMY_LOCATION, - DUMMY_LOCATION, - DUMMY_LOCATION, - DUMMY_LOCATION, - DUMMY_LOCATION, - DUMMY_LOCATION, - DUMMY_LOCATION, - DUMMY_LOCATION, - DUMMY_LOCATION, - DUMMY_LOCATION, - DUMMY_LOCATION, - DUMMY_LOCATION, - DUMMY_LOCATION, - DUMMY_LOCATION, - DUMMY_LOCATION, - DUMMY_LOCATION, - DUMMY_LOCATION, - DUMMY_LOCATION, - DUMMY_LOCATION, - DUMMY_LOCATION, - DUMMY_LOCATION, - DUMMY_LOCATION, - DUMMY_LOCATION, - DUMMY_LOCATION, - DUMMY_LOCATION, - DUMMY_LOCATION, - DUMMY_LOCATION, - DUMMY_LOCATION, - DUMMY_LOCATION, - DUMMY_LOCATION, - DUMMY_LOCATION, - DUMMY_LOCATION, - DUMMY_LOCATION, + DUMMY_LOCATION, + DUMMY_LOCATION, + DUMMY_LOCATION, + DUMMY_LOCATION, + DUMMY_LOCATION, + DUMMY_LOCATION, + DUMMY_LOCATION, + DUMMY_LOCATION, + DUMMY_LOCATION, + DUMMY_LOCATION, + DUMMY_LOCATION, + DUMMY_LOCATION, + DUMMY_LOCATION, + DUMMY_LOCATION, + DUMMY_LOCATION, + DUMMY_LOCATION, + DUMMY_LOCATION, + DUMMY_LOCATION, + DUMMY_LOCATION, + DUMMY_LOCATION, + DUMMY_LOCATION, + DUMMY_LOCATION, + DUMMY_LOCATION, + DUMMY_LOCATION, + DUMMY_LOCATION, + DUMMY_LOCATION, + DUMMY_LOCATION, + DUMMY_LOCATION, + DUMMY_LOCATION, + DUMMY_LOCATION, + DUMMY_LOCATION, + DUMMY_LOCATION, + } }; void ShowFriendAreasMap(struct struct_unk800F990 *param_1) { - gFriendAreasMapPtr = param_1->unk8; + gFriendAreasMapPtr = param_1->friendAreasMapPtr; gUnknown_2026E4E = 0x1010; sub_80095CC(0,0x14); UpdateFadeInTile(2); - gFriendAreasMapPtr->locationsInfo = gFriendAreaLocations; + gFriendAreasMapPtr->locationsInfo = sFriendAreaLocations[0]; gFriendAreasMapPtr->unk4A2C = param_1->unk5; FriendAreasMap_InitGfx(); gFriendAreasMapPtr->unk4A28 = -1; @@ -645,7 +930,7 @@ static UNUSED void GetAreaMapPosition(u8 areaId, DungeonPos *dst) s32 i, j; for (i = 0; i < NUM_FRIEND_AREA_LOCATIONS; i++) { - const struct FriendAreaLocationInfo *locationInfo = &gFriendAreaLocations[i]; + const struct FriendAreaLocationInfo *locationInfo = &sFriendAreaLocations[0][i]; for (j = 0; j < MAX_AREAS_PER_LOCATION; j++) { if (locationInfo->areasIds[j] == areaId) { dst->x = locationInfo->pos.x; diff --git a/src/friend_areas_map_util.c b/src/friend_areas_map_util.c index 0585052f2..33c675372 100644 --- a/src/friend_areas_map_util.c +++ b/src/friend_areas_map_util.c @@ -337,7 +337,7 @@ void FriendAreasMap_PrintAvailableSubAreas(void) menuInput->unk1E = 0; menuInput->unk20 = 0; menuInput->unk4 = 0; - menuInput->unk6 = 16; + menuInput->firstEntryY = 16; menuInput->unk0 = 0; menuInput->unkC = 0; menuInput->unkE = 0; @@ -360,19 +360,19 @@ void FriendAreasMap_PrintAvailableSubAreas(void) PrintFormattedStringOnWindow(16, 0, _("Where would you like to go?"), 0, '\0'); for (i = 0; i < count; i++) { - unkStruct_8092638 unkFriendAreaStruct; - s32 r4 = sub_8013800(menuInput, i); + FriendAreaCapacity friendAreaCapacity; + s32 y = GetMenuEntryYCoord(menuInput, i); u8 areaId = gFriendAreasMapPtr->displayedAreas[i]; PrintFriendAreaNameInMap(gFormatBuffer_Items[0], areaId); if (areaId == 0) { - PrintFormattedStringOnWindow(12, r4, _("{MOVE_ITEM_0}"), 0, '\0'); + PrintFormattedStringOnWindow(12, y, _("{MOVE_ITEM_0}"), 0, '\0'); } else { - sub_80926F8(areaId, &unkFriendAreaStruct, gFriendAreasMapPtr->unk4A2C); - gFormatArgs[0] = unkFriendAreaStruct.unk2; - gFormatArgs[1] = unkFriendAreaStruct.numPokemon; - PrintFormattedStringOnWindow(12, r4, _("{MOVE_ITEM_0}($v02/$v12)"), 0, '\0'); + GetFriendAreaCapacity(areaId, &friendAreaCapacity, gFriendAreasMapPtr->unk4A2C); + gFormatArgs[0] = friendAreaCapacity.currNoPokemon; + gFormatArgs[1] = friendAreaCapacity.maxPokemon; + PrintFormattedStringOnWindow(12, y, _("{MOVE_ITEM_0}($v02/$v12)"), 0, '\0'); } } diff --git a/src/hints_menu1.c b/src/hints_menu1.c index acd26f4b1..790f6214f 100644 --- a/src/hints_menu1.c +++ b/src/hints_menu1.c @@ -108,7 +108,7 @@ static void DrawHintSelectionMenu(void) PrintStringOnWindow(16, 0, sHints, sUnknown_203B264->unk34, 0); for (hintIndex = 0; hintIndex < HINT_MAX; hintIndex++) { - y = sub_8013800(&sUnknown_203B264->input, hintIndex); + y = GetMenuEntryYCoord(&sUnknown_203B264->input, hintIndex); PrintStringOnWindow(10, y, gCommonHints[hintIndex].heading, sUnknown_203B264->unk34, 0); } diff --git a/src/iq_skill_list_menu.c b/src/iq_skill_list_menu.c index 4d93ae2f8..b289a5cf6 100644 --- a/src/iq_skill_list_menu.c +++ b/src/iq_skill_list_menu.c @@ -132,7 +132,7 @@ void BuildIQSkillList(void) for (counter = 0; counter < sIQSkillListMenu->s24.s0.input.unk1A; counter++) { skillIndex = sIQSkillListMenu->iqSkills[(sIQSkillListMenu->s24.s0.input.unk1E * sIQSkillListMenu->s24.s0.input.unk1C) + counter]; - y = sub_8013800(&sIQSkillListMenu->s24.s0.input, counter); + y = GetMenuEntryYCoord(&sIQSkillListMenu->s24.s0.input, counter); strncpy(gFormatBuffer_Items[1], GetIQSkillName(skillIndex), 80); if (IsIQSkillSet(&sIQSkillListMenu->pokeStruct->IQSkills, 1 << skillIndex)) diff --git a/src/kecleon_bros2.c b/src/kecleon_bros2.c index bc497fc01..ffe7467e5 100644 --- a/src/kecleon_bros2.c +++ b/src/kecleon_bros2.c @@ -145,12 +145,12 @@ void sub_801A0D8(void) buyPrice = GetStackBuyPrice(&item); if (buyPrice <= gTeamInventoryRef->teamMoney) { - y = sub_8013800(&gUnknown_203B214->s0.input, index); + y = GetMenuEntryYCoord(&gUnknown_203B214->s0.input, index); PrintStringOnWindow(8, y, auStack204, gUnknown_203B214->s0.unk34, 0); } else { sprintfStatic(auStack112, sFmtRed, auStack204); - y = sub_8013800(&gUnknown_203B214->s0.input, index); + y = GetMenuEntryYCoord(&gUnknown_203B214->s0.input, index); PrintStringOnWindow(8, y, auStack112, gUnknown_203B214->s0.unk34, 0); } } diff --git a/src/kecleon_bros3.c b/src/kecleon_bros3.c index 2ee00f174..af8b70663 100644 --- a/src/kecleon_bros3.c +++ b/src/kecleon_bros3.c @@ -146,12 +146,12 @@ void sub_801A4A4(void) buyPrice = GetStackBuyPrice(&item); if (buyPrice <= gTeamInventoryRef->teamMoney) { - y = sub_8013800(&gUnknown_203B21C->s0.input, index); + y = GetMenuEntryYCoord(&gUnknown_203B21C->s0.input, index); PrintStringOnWindow(8, y, buffer1, gUnknown_203B21C->s0.unk34, 0); } else { sprintfStatic(buffer2, sFmtRed, buffer1); - y = sub_8013800(&gUnknown_203B21C->s0.input, index); + y = GetMenuEntryYCoord(&gUnknown_203B21C->s0.input, index); PrintStringOnWindow(8, y, buffer2, gUnknown_203B21C->s0.unk34, 0); } } diff --git a/src/kecleon_bros4.c b/src/kecleon_bros4.c index 5205aff80..e7d83f4dd 100644 --- a/src/kecleon_bros4.c +++ b/src/kecleon_bros4.c @@ -205,7 +205,7 @@ void sub_801A9E0(void) switch (gUnknown_203B224->unk0) { case 0: { sub_8090E14(buf1, &item, 0); - PrintStringOnWindow(8, sub_8013800(&gUnknown_203B224->unk54.s0.input, r7), buf1, gUnknown_203B224->unk54.s0.unk34, 0); + PrintStringOnWindow(8, GetMenuEntryYCoord(&gUnknown_203B224->unk54.s0.input, r7), buf1, gUnknown_203B224->unk54.s0.unk34, 0); break; } case 1: @@ -218,7 +218,7 @@ void sub_801A9E0(void) item.flags = 1; sub_8090E14(buf1, &item, &thing); - PrintStringOnWindow(8, sub_8013800(&gUnknown_203B224->unk54.s0.input, r7), buf1, gUnknown_203B224->unk54.s0.unk34, 0); + PrintStringOnWindow(8, GetMenuEntryYCoord(&gUnknown_203B224->unk54.s0.input, r7), buf1, gUnknown_203B224->unk54.s0.unk34, 0); break; } case 3: { @@ -231,10 +231,10 @@ void sub_801A9E0(void) sub_8090E14(buf1, &item, &thing); if (gUnknown_203B224->unk4[teamItemIndex] != 0 || sub_801ADA0(teamItemIndex)) - PrintStringOnWindow(8,sub_8013800(&gUnknown_203B224->unk54.s0.input,r7), buf1, gUnknown_203B224->unk54.s0.unk34, 0); + PrintStringOnWindow(8,GetMenuEntryYCoord(&gUnknown_203B224->unk54.s0.input,r7), buf1, gUnknown_203B224->unk54.s0.unk34, 0); else { strncpy(gFormatBuffer_Items[0], buf1, 80); - PrintFormattedStringOnWindow(8, sub_8013800(&gUnknown_203B224->unk54.s0.input, r7), sFmtMoveItem0, gUnknown_203B224->unk54.s0.unk34, 0); + PrintFormattedStringOnWindow(8, GetMenuEntryYCoord(&gUnknown_203B224->unk54.s0.input, r7), sFmtMoveItem0, gUnknown_203B224->unk54.s0.unk34, 0); } break; } @@ -252,15 +252,15 @@ void sub_801A9E0(void) if (GetStackSellPrice(&item) + gTeamInventoryRef->teamMoney > MAX_TEAM_MONEY) { sprintfStatic(buf2, sFmtRed, buf1); - PrintStringOnWindow(8, sub_8013800(&gUnknown_203B224->unk54.s0.input, r7), buf2, gUnknown_203B224->unk54.s0.unk34, 0); + PrintStringOnWindow(8, GetMenuEntryYCoord(&gUnknown_203B224->unk54.s0.input, r7), buf2, gUnknown_203B224->unk54.s0.unk34, 0); } else - PrintStringOnWindow(8, sub_8013800(&gUnknown_203B224->unk54.s0.input, r7), buf1, gUnknown_203B224->unk54.s0.unk34, 0); + PrintStringOnWindow(8, GetMenuEntryYCoord(&gUnknown_203B224->unk54.s0.input, r7), buf1, gUnknown_203B224->unk54.s0.unk34, 0); } else { sub_8090E14(buf1, &item, 0); strncpy(gFormatBuffer_Items[0], buf1, 80); - PrintFormattedStringOnWindow(8, sub_8013800(&gUnknown_203B224->unk54.s0.input, r7), sFmtMoveItem0, gUnknown_203B224->unk54.s0.unk34, 0); + PrintFormattedStringOnWindow(8, GetMenuEntryYCoord(&gUnknown_203B224->unk54.s0.input, r7), sFmtMoveItem0, gUnknown_203B224->unk54.s0.unk34, 0); } break; } @@ -275,17 +275,17 @@ void sub_801A9E0(void) sub_8090E14(buf1, &item, &thing); if (IsGummiItem(item.id)) - PrintStringOnWindow(8, sub_8013800(&gUnknown_203B224->unk54.s0.input, r7), buf1, gUnknown_203B224->unk54.s0.unk34, 0); + PrintStringOnWindow(8, GetMenuEntryYCoord(&gUnknown_203B224->unk54.s0.input, r7), buf1, gUnknown_203B224->unk54.s0.unk34, 0); else { strncpy(gFormatBuffer_Items[0], buf1, 80); - PrintFormattedStringOnWindow(8, sub_8013800(&gUnknown_203B224->unk54.s0.input, r7), sFmtMoveItem0, gUnknown_203B224->unk54.s0.unk34, 0); + PrintFormattedStringOnWindow(8, GetMenuEntryYCoord(&gUnknown_203B224->unk54.s0.input, r7), sFmtMoveItem0, gUnknown_203B224->unk54.s0.unk34, 0); } break; } } if (sub_801AED0(teamItemIndex) & 1) - sub_8007B7C(gUnknown_203B224->unk54.s0.unk34, 8, sub_8013800(&gUnknown_203B224->unk54.s0.input, r7), (gUnknown_203B224->unk54.s0.unk38->width - 2) * 8, 10); + sub_8007B7C(gUnknown_203B224->unk54.s0.unk34, 8, GetMenuEntryYCoord(&gUnknown_203B224->unk54.s0.input, r7), (gUnknown_203B224->unk54.s0.unk38->width - 2) * 8, 10); } sub_80073E0(gUnknown_203B224->unk54.s0.unk34); diff --git a/src/makuhita_dojo2.c b/src/makuhita_dojo2.c index 1eadac9ea..de517e53b 100644 --- a/src/makuhita_dojo2.c +++ b/src/makuhita_dojo2.c @@ -130,7 +130,7 @@ static void MakuhitaDojo_DrawCourseList(void) mazeIndex = sub_80A2668(iVar6); - y = sub_8013800(&sMakuhitaDojoWork2->s30.s0.input, i); + y = GetMenuEntryYCoord(&sMakuhitaDojoWork2->s30.s0.input, i); color = COLOR_WHITE_2; // COLOR_WHITE again? if ((bool8)IsMazeCompleted(mazeIndex)) { PrintStringOnWindow(8, y, sStarBullet, sMakuhitaDojoWork2->s30.s0.unk34, 0); diff --git a/src/menu_input.c b/src/menu_input.c index e933c3e84..388a1418e 100644 --- a/src/menu_input.c +++ b/src/menu_input.c @@ -424,7 +424,7 @@ void sub_8012EBC(MenuStruct *param_1) color = colorArray[0]; // Use the default white sprintfStatic(buffer,gUnknown_80D4828, color, textPtr); - y = sub_8013800(¶m_1->input, counter); + y = GetMenuEntryYCoord(¶m_1->input, counter); PrintFormattedStringOnWindow(8, y, buffer, param_1->index, 0); menuItemsPtr++; counter++; @@ -552,9 +552,9 @@ static void sub_8013134(MenuInputStruct *param_1, u32 menuItemCounter, u32 index param_1->unk4 = 0; if (temp->unkC == 6) - param_1->unk6 = 16; + param_1->firstEntryY = 16; else - param_1->unk6 = 2; + param_1->firstEntryY = 2; param_1->unkC = 0; param_1->unkE = 0; @@ -701,7 +701,7 @@ void UpdateMenuCursorSpriteCoords(MenuInputStruct *param_1) index = param_1->unk0; temp = &gUnknown_2027370[index]; param_1->unk8.x = temp->unk0 * 8 + param_1->unk4; - param_1->unk8.y = temp->unk2 * 8 + sub_8013800(param_1, param_1->menuIndex); + param_1->unk8.y = temp->unk2 * 8 + GetMenuEntryYCoord(param_1, param_1->menuIndex); } void MoveMenuCursorDown(MenuInputStruct *param_1) @@ -810,15 +810,12 @@ void sub_80137F8(MenuInputStruct *param_1, u32 param_2) param_1->unk10 = param_2 << 8; } -s32 sub_8013800(MenuInputStruct *param_1, s32 param_2) +s32 GetMenuEntryYCoord(MenuInputStruct *menu, s32 entryId) { - s32 iVar1; - s32 iVar2; + s32 firstY = menu->firstEntryY; + s32 iVar1 = entryId * menu->unk10; - iVar2 = param_1->unk6; - iVar1 = param_2 * param_1->unk10; - - return iVar2 + (iVar1 / 256); + return firstY + (iVar1 / 256); } void sub_8013818(MenuInputStruct *param_1, s32 param_2, u32 param_3, s32 param_4) @@ -957,9 +954,9 @@ void sub_8013984(MenuInputStruct *param_1) param_1->unk4 = 0; if (ptr->unkC == 6) - param_1->unk6 = 16; + param_1->firstEntryY = 16; else - param_1->unk6 = 0; + param_1->firstEntryY = 0; if (param_1->unk20 < 2) param_1->unkC = 0; diff --git a/src/options_menu2.c b/src/options_menu2.c index 7b72b4a49..b7f943857 100644 --- a/src/options_menu2.c +++ b/src/options_menu2.c @@ -104,7 +104,7 @@ static void CreateOptionsMenu(void) sub_80073B8(sUnknown_203B260->unk44); PrintStringOnWindow(16, 0, sGameOptions,sUnknown_203B260->unk44, 0); - y = sub_8013800(&sUnknown_203B260->input, 0); + y = GetMenuEntryYCoord(&sUnknown_203B260->input, 0); PrintStringOnWindow(8, y, sUnknown_80DC064, sUnknown_203B260->unk44, 0); switch (sUnknown_203B260->optionsMenu->windowColor) { diff --git a/src/personality_test2.c b/src/personality_test2.c index 8f6bfadd0..b40f611e8 100644 --- a/src/personality_test2.c +++ b/src/personality_test2.c @@ -129,7 +129,7 @@ static void RedrawPartnerSelectionMenu(void) monCounter = 0; while (monCounter < gUnknown_203B404->s18.s0.input.unk1A) { - yCoord = sub_8013800(&gUnknown_203B404->s18.s0.input, monCounter); + yCoord = GetMenuEntryYCoord(&gUnknown_203B404->s18.s0.input, monCounter); monName = GetMonSpecies(gUnknown_203B404->PartnerArray[monCounter]); PrintStringOnWindow(8, yCoord, monName, gUnknown_203B404->s18.s0.unk34, 0); monCounter++; diff --git a/src/pokemon_3.c b/src/pokemon_3.c index a726eef0a..3bf28ef8f 100644 --- a/src/pokemon_3.c +++ b/src/pokemon_3.c @@ -928,7 +928,7 @@ void sub_808F468(PokemonStruct1 *param_1, EvolveStatus *evolveStatus, u8 param_3 u8 friendArea; u8 uVar2; s32 numPokemon; - unkStruct_8092638 local_40; // sp 0x0 + FriendAreaCapacity local_40; // sp 0x0 unkEvolve evolveConditions; // r7 s32 index, index2; #ifndef NONMATCHING @@ -961,17 +961,17 @@ void sub_808F468(PokemonStruct1 *param_1, EvolveStatus *evolveStatus, u8 param_3 if ((evolveConditions.preEvolution.evolveType == EVOLVE_TYPE_NONE) || (param_1->speciesNum != evolveConditions.preEvolution.evolveFrom)) continue; friendArea = ((u8 (*)(s32))GetFriendArea)(index2); // UB uVar2 = GetFriendArea(param_1->speciesNum); - sub_8092638(friendArea,&local_40,FALSE,FALSE); + GetFriendAreaCapacity2(friendArea,&local_40,FALSE,FALSE); if (!local_40.hasFriendArea) { evolveStatus->evolutionConditionStatus |= EVOLUTION_LACK_FRIEND_AREA; evolFlag = TRUE; } else { - numPokemon = local_40.unk2; + numPokemon = local_40.currNoPokemon; if (friendArea == uVar2) { numPokemon--; } - if (local_40.numPokemon <= numPokemon) { + if (local_40.maxPokemon <= numPokemon) { evolveStatus->evolutionConditionStatus |= EVOLUTION_LACK_ROOM; evolFlag = TRUE; } diff --git a/src/pokemon_news1.c b/src/pokemon_news1.c index d06398eb0..92770b943 100644 --- a/src/pokemon_news1.c +++ b/src/pokemon_news1.c @@ -139,7 +139,7 @@ static void CreatePKMNNewsMenu(void) sub_8012BC4((sUnknown_80DFBE8.f2 * 8) + 4, 0, sUnknown_203B2CC->s38.input.unk1E + 1, 2, 7, sUnknown_203B2CC->s38.unk34); for (index = 0; index < sUnknown_203B2CC->s38.input.unk1A; index++) { - y = sub_8013800(&sUnknown_203B2CC->s38.input, index); + y = GetMenuEntryYCoord(&sUnknown_203B2CC->s38.input, index); new_index = (sUnknown_203B2CC->s38.input.unk1E * sUnknown_203B2CC->s38.input.unk1C) + index; mailIndex = sUnknown_203B2CC->receivedNewsletters[new_index]; sub_803B6B0(10, y, 6, sUnknown_203B2CC->s38.unk34); diff --git a/src/pokemon_news3.c b/src/pokemon_news3.c index 1c3bec43e..ee129ad59 100644 --- a/src/pokemon_news3.c +++ b/src/pokemon_news3.c @@ -136,10 +136,10 @@ void CreateMailMenu(void) for (i = 0; i < sUnknown_203B2D8->unk4.s0.input.unk1A; i++) { mail = GetMailboxSlotInfo(sUnknown_203B2D8->unk0[(sUnknown_203B2D8->unk4.s0.input.unk1E * sUnknown_203B2D8->unk4.s0.input.unk1C) + i]); local.unk0[0] = sUnknown_203B2D8->unk4.s0.unk34; - local.y = sub_8013800(&sUnknown_203B2D8->unk4.s0.input, i); + local.y = GetMenuEntryYCoord(&sUnknown_203B2D8->unk4.s0.input, i); if (mail->mailType == MAIL_TYPE_UNK1) { - y = sub_8013800(&sUnknown_203B2D8->unk4.s0.input, i); + y = GetMenuEntryYCoord(&sUnknown_203B2D8->unk4.s0.input, i); sub_803B6B0(10, y, 6, sUnknown_203B2D8->unk4.s0.unk34); PrintPokeNameToBuffer(gFormatBuffer_Monsters[0], GetPlayerPokemonStruct()); sprintfStatic(buffer, GetPokemonMailHeadline(mail->unk4.dungeon.floor), gFormatBuffer_Monsters[0]); diff --git a/src/wigglytuff_shop1.c b/src/wigglytuff_shop1.c index 50e85bf9c..bf89f2253 100644 --- a/src/wigglytuff_shop1.c +++ b/src/wigglytuff_shop1.c @@ -143,22 +143,22 @@ void sub_8021494(void) WriteFriendAreaName(buffer1, friendAreaIndex, TRUE); if (GetFriendAreaPrice(friendAreaIndex) <= gTeamInventoryRef->teamMoney) - PrintStringOnWindow(8,sub_8013800(&sWigglytuffShop1Work->s40.s0.input, i), buffer1, sWigglytuffShop1Work->s40.s0.unk34, 0); + PrintStringOnWindow(8,GetMenuEntryYCoord(&sWigglytuffShop1Work->s40.s0.input, i), buffer1, sWigglytuffShop1Work->s40.s0.unk34, 0); else { sprintfStatic(buffer2, sFmtRedString, buffer1); - PrintStringOnWindow(8, sub_8013800(&sWigglytuffShop1Work->s40.s0.input, i), buffer2, sWigglytuffShop1Work->s40.s0.unk34, 0); + PrintStringOnWindow(8, GetMenuEntryYCoord(&sWigglytuffShop1Work->s40.s0.input, i), buffer2, sWigglytuffShop1Work->s40.s0.unk34, 0); } } else if (sWigglytuffShop1Work->mode == 0) { if (gFriendAreas[friendAreaIndex] == TRUE) - PrintStringOnWindow(8, sub_8013800(&sWigglytuffShop1Work->s40.s0.input, i), GetFriendAreaName(friendAreaIndex), sWigglytuffShop1Work->s40.s0.unk34, 0); + PrintStringOnWindow(8, GetMenuEntryYCoord(&sWigglytuffShop1Work->s40.s0.input, i), GetFriendAreaName(friendAreaIndex), sWigglytuffShop1Work->s40.s0.unk34, 0); else { sprintfStatic(buffer2, sFmtGreenString, GetFriendAreaName(friendAreaIndex)); - PrintStringOnWindow(8, sub_8013800(&sWigglytuffShop1Work->s40.s0.input, i), buffer2, sWigglytuffShop1Work->s40.s0.unk34, 0); + PrintStringOnWindow(8, GetMenuEntryYCoord(&sWigglytuffShop1Work->s40.s0.input, i), buffer2, sWigglytuffShop1Work->s40.s0.unk34, 0); } } else - PrintStringOnWindow(8, sub_8013800(&sWigglytuffShop1Work->s40.s0.input, i), GetFriendAreaName(friendAreaIndex), sWigglytuffShop1Work->s40.s0.unk34, 0); + PrintStringOnWindow(8, GetMenuEntryYCoord(&sWigglytuffShop1Work->s40.s0.input, i), GetFriendAreaName(friendAreaIndex), sWigglytuffShop1Work->s40.s0.unk34, 0); } sub_80073E0(sWigglytuffShop1Work->s40.s0.unk34); diff --git a/src/wigglytuff_shop3.c b/src/wigglytuff_shop3.c index fa817ad23..87c0e8bbc 100644 --- a/src/wigglytuff_shop3.c +++ b/src/wigglytuff_shop3.c @@ -165,7 +165,7 @@ static void sub_8021D5C(void) static void UpdateWigglytuffDialogue(void) { u8 *string; - unkStruct_8092638 uStack_14; + FriendAreaCapacity uStack_14; switch (sWigglytuffShop3Work->state) { case WIGGLYTUFF_INIT: @@ -273,7 +273,7 @@ static void UpdateWigglytuffDialogue(void) sub_8023354(TRUE); break; case DISPLAY_POKEMON_FRIEND_AREA_INFO: - sub_8092638(sWigglytuffShop3Work->chosenFriendArea, &uStack_14, FALSE, FALSE); + GetFriendAreaCapacity2(sWigglytuffShop3Work->chosenFriendArea, &uStack_14, FALSE, FALSE); if (uStack_14.hasFriendArea) sWigglytuffShop3Work->fallbackState = WIGGLYTUFF_CHECK_HAS_FRIEND_AREA; diff --git a/src/wonder_mail_4.c b/src/wonder_mail_4.c index 28121c782..7541ff91e 100644 --- a/src/wonder_mail_4.c +++ b/src/wonder_mail_4.c @@ -200,7 +200,7 @@ void sub_803092C(void) for (index = 0; index < gUnknown_203B320->s28.s0.input.unk1A; index++) { mail = GetMailatIndex(gUnknown_203B320->unk0[(gUnknown_203B320->s28.s0.input.unk1E * gUnknown_203B320->s28.s0.input.unk1C) + index]); local.unk0[0] = gUnknown_203B320->s28.s0.unk34; - local.y = sub_8013800(&gUnknown_203B320->s28.s0.input,index); + local.y = GetMenuEntryYCoord(&gUnknown_203B320->s28.s0.input,index); local.mailTitleType = 7; local.mailMissionType = MISSION_TYPE_FRIEND_RESCUE; local.mailStatus = MAIL_STATUS_SUSPENDED; diff --git a/src/wonder_mail_802C10C.c b/src/wonder_mail_802C10C.c index 89c8caedb..b37dec5bf 100644 --- a/src/wonder_mail_802C10C.c +++ b/src/wonder_mail_802C10C.c @@ -140,7 +140,7 @@ void DrawPelipperBoardJobMenu(void) slotIndex = (gUnknown_203B2E0->pelipperBoardSlots[(gUnknown_203B2E0->unk8.s0.input.unk1E * gUnknown_203B2E0->unk8.s0.input.unk1C) + i]); mail = GetPelipperBoardSlotInfo(slotIndex); local.unk0[0] = gUnknown_203B2E0->unk8.s0.unk34; - local.y = sub_8013800(&gUnknown_203B2E0->unk8.s0.input, i); + local.y = GetMenuEntryYCoord(&gUnknown_203B2E0->unk8.s0.input, i); sub_803B35C(mail, &local); if (IsMailinJobSlot(GetPelipperBoardSlotInfo(slotIndex))) diff --git a/src/wonder_mail_802C4C8.c b/src/wonder_mail_802C4C8.c index 57f3ef1f9..66d4b380a 100644 --- a/src/wonder_mail_802C4C8.c +++ b/src/wonder_mail_802C4C8.c @@ -139,7 +139,7 @@ void DrawJobListMenu(void) for (i = 0; i < gUnknown_203B2E8->unk8.s0.input.unk1A; i++) { mail = GetJobSlotInfo(gUnknown_203B2E8->pelipperBoardSlots[(gUnknown_203B2E8->unk8.s0.input.unk1E * gUnknown_203B2E8->unk8.s0.input.unk1C) + i]); local.unk0[0] = gUnknown_203B2E8->unk8.s0.unk34; - local.y = sub_8013800(&gUnknown_203B2E8->unk8.s0.input, i); + local.y = GetMenuEntryYCoord(&gUnknown_203B2E8->unk8.s0.input, i); sub_803B35C(mail, &local); CreateRescueTitle(&local); } diff --git a/src/wonder_mail_802CDD4.c b/src/wonder_mail_802CDD4.c index 80411a5f8..ce6a6d4d2 100644 --- a/src/wonder_mail_802CDD4.c +++ b/src/wonder_mail_802CDD4.c @@ -120,7 +120,7 @@ void sub_802CFD0(void) iVar1 = sub_803B344((sUnknown_203B2F4->s0.input.unk1E * sUnknown_203B2F4->s0.input.unk1C) + r5); local.unk0[0] = sUnknown_203B2F4->s0.unk34; - local.y = sub_8013800(&sUnknown_203B2F4->s0.input, r5); + local.y = GetMenuEntryYCoord(&sUnknown_203B2F4->s0.input, r5); sub_803B35C(&iVar1->mail, &local); local.unk43 = 1; diff --git a/src/world_map.c b/src/world_map.c index 2664928b3..7b562bdf0 100644 --- a/src/world_map.c +++ b/src/world_map.c @@ -561,7 +561,7 @@ static bool8 ShowYesNoWindow(u8 *str) menuInput.unk1E = 0; menuInput.unk20 = 0; menuInput.unk4 = 0; - menuInput.unk6 = 0; + menuInput.firstEntryY = 0; menuInput.unk0 = 1; menuInput.unkC = 0; menuInput.unkE = 0; From bca598f1313a495678653302c19b34e0f54c9cd3 Mon Sep 17 00:00:00 2001 From: DizzyEggg Date: Mon, 24 Feb 2025 11:33:29 +0100 Subject: [PATCH 26/40] friend areas map final touches --- include/friend_areas_map.h | 2 +- src/friend_areas_map.c | 22 +++++++++++----------- src/friend_areas_map_util.c | 2 +- 3 files changed, 13 insertions(+), 13 deletions(-) diff --git a/include/friend_areas_map.h b/include/friend_areas_map.h index 6ceadb188..2559c92ad 100644 --- a/include/friend_areas_map.h +++ b/include/friend_areas_map.h @@ -89,7 +89,7 @@ struct FriendAreasMap s32 unk4DE8; u8 displayedAreas[MAX_AREAS_PER_LOCATION]; u8 chosenFriendAreaId; - s32 unk4DF8; + s32 displayedAreasCount; MenuInputStruct menu; }; diff --git a/src/friend_areas_map.c b/src/friend_areas_map.c index 14e8fdb52..4930ba5a2 100644 --- a/src/friend_areas_map.c +++ b/src/friend_areas_map.c @@ -39,9 +39,9 @@ EWRAM_DATA static u8 sHeldDpadCounter = 0; extern const FileArchive gTitleMenuFileArchive; extern const FileArchive gMonsterFileArchive; -static void MoveToNewLocation(s32 a0, s32 a1, s32 count); +static void MoveToNewLocation(s32 destLocationId, s32 direction, s32 nFrames); static u8 GetChosenDirection(void); -static s32 ChooseLocation(s32 *a0, s32 *newDirection); +static s32 ChooseLocation(s32 *newLocationId, s32 *newDirection); static bool8 ChooseAreaInLocation(void); static void FadeFromFriendAreasMap(void); static void InitMapLocations(u8 startingFriendAreaId); @@ -571,23 +571,23 @@ void ShowFriendAreasMap(struct struct_unk800F990 *param_1) while (1) { s32 newLocationId = 0; s32 newDirection = 0; - s32 iVar2 = ChooseLocation(&newLocationId, &newDirection); + s32 inputRet = ChooseLocation(&newLocationId, &newDirection); - if (iVar2 == 1) { + if (inputRet == 1) { MoveToNewLocation(newLocationId, newDirection, 50); } - else if (iVar2 == 2) { + else if (inputRet == 2) { if (!ChooseAreaInLocation()) continue; param_1->unkC = gFriendAreasMapPtr->chosenFriendAreaId; break; } - else if (iVar2 == 3) { + else if (inputRet == 3) { if (gFriendAreasMapPtr->currLocationId == gFriendAreasMapPtr->locationIdOnBPress) { param_1->unkC = 0; break; } - MoveToNewLocation(gFriendAreasMapPtr->locationIdOnBPress,0,10); + MoveToNewLocation(gFriendAreasMapPtr->locationIdOnBPress, DIRECTION_SOUTH, 10); } } @@ -603,7 +603,7 @@ static s32 ChooseLocation(s32 *newLocationId, s32 *newDirection) FriendAreasMap_ShowDirectionArrows(); FriendAreasMap_PrintCurrAreaName(); while (ret == 0) { - s32 direction; + u8 direction; FriendAreasMap_RunFrameActions(); direction = GetChosenDirection(); @@ -763,7 +763,7 @@ static void InitMapLocations(u8 startingFriendAreaId) struct MapLocation *ptr = &gFriendAreasMapPtr->mapLocations[var2]; if (ptr->isShown) { var1 += 4; - var1 &= 7; + var1 &= DIRECTION_MASK; mapLocation->locationsByDirection[var1] = var2; } } @@ -885,12 +885,12 @@ static u8 GetChosenDirection(void) return 0xFF; } -static void MoveToNewLocation(s32 destLocationId, s32 a1, s32 nFrames) +static void MoveToNewLocation(s32 destLocationId, s32 direction, s32 nFrames) { s32 i, currLocationId; DungeonPos startingPos, dstPos; - AxResInitFile(&gFriendAreasMapPtr->monAxSprite, gFriendAreasMapPtr->unk0[3], 0, a1 & 7, 0, 0, TRUE); + AxResInitFile(&gFriendAreasMapPtr->monAxSprite, gFriendAreasMapPtr->unk0[3], 0, direction & DIRECTION_MASK, 0, 0, TRUE); FriendAreasMap_HideTextWindowAndArrows(); currLocationId = gFriendAreasMapPtr->currLocationId; diff --git a/src/friend_areas_map_util.c b/src/friend_areas_map_util.c index 33c675372..9a92d4889 100644 --- a/src/friend_areas_map_util.c +++ b/src/friend_areas_map_util.c @@ -326,7 +326,7 @@ void FriendAreasMap_PrintAvailableSubAreas(void) } } - gFriendAreasMapPtr->unk4DF8 = count; + gFriendAreasMapPtr->displayedAreasCount = count; header.f0 = 1; header.f1 = 0; header.f2 = 18; From 793e31ca7c8ef7d96ee2d1b52fd4d844613c6ff8 Mon Sep 17 00:00:00 2001 From: DizzyEggg Date: Mon, 24 Feb 2025 17:30:19 +0100 Subject: [PATCH 27/40] Match sub_803D4D0 and sub_8091E94 --- include/structs/str_dungeon.h | 4 +- src/code_803D110.c | 320 +++------------------------------- src/items.c | 256 +++++---------------------- 3 files changed, 71 insertions(+), 509 deletions(-) diff --git a/include/structs/str_dungeon.h b/include/structs/str_dungeon.h index ab1811197..234960a92 100644 --- a/include/structs/str_dungeon.h +++ b/include/structs/str_dungeon.h @@ -148,8 +148,8 @@ typedef struct FloorProperties typedef struct UnkDungeonGlobal_unk1C590 { - s16 unk0[NUM_ITEM_CATEGORIES]; - s16 unk18[NUMBER_OF_ITEM_IDS]; + s16 categoryValues[NUM_ITEM_CATEGORIES]; + s16 itemValues[NUMBER_OF_ITEM_IDS]; } UnkDungeonGlobal_unk1C590; typedef struct UnkDungeonGlobal_unk1CD98 diff --git a/src/code_803D110.c b/src/code_803D110.c index 6ad89ca20..6bfc465d5 100644 --- a/src/code_803D110.c +++ b/src/code_803D110.c @@ -72,11 +72,9 @@ s32 sub_803DC6C(u32 chr, s32 strWidth, s32 a2); struct UnkStruct_sub_803DC6C *sub_803DEC8(s32 chr); void sub_803DD30(u8 *a0, u32 *a1); -// TODO https://decomp.me/scratch/nXUH3 -/* void sub_803D4D0(void) { - u16 spArray[252]; + s16 spArray[NUM_ITEM_CATEGORIES + NUMBER_OF_ITEM_IDS]; s32 i, j, k; OpenedFile *file; struct UnkDungeonFileData *strPtr; @@ -87,19 +85,18 @@ void sub_803D4D0(void) gDungeon->unk1C570 = gDungeon->unk644.dungeonLocation2; file = OpenFileAndGetFileDataPtr(gUnknown_80F4D8C, &gDungeonFileArchive); - - strPtr = &file->data.dungData->unk0[gDungeon->unk1C570.id][gDungeon->unk1C570.floor]; + strPtr = &((struct UnkDataFileStruct *)(file->data))->unk0[gDungeon->unk1C570.id][gDungeon->unk1C570.floor]; gDungeon->unk1CEC8 = GetDungeonFloorCount(gDungeon->unk644.dungeonLocation.id); gDungeon->unk14 = sub_80902C8(gDungeon->unk644.dungeonLocation.id); - gDungeon->unk1C574 = file->data.dungData->unk4[strPtr->unk0]; + gDungeon->unk1C574 = ((struct UnkDataFileStruct *)(file->data))->unk4[strPtr->unk0]; for (i = 0; i < 20; i++) { - gDungeon->unk1CD70[i] = file->data.dungData->unk10[strPtr->unk4][i]; + gDungeon->unk1CD70[i] = ((struct UnkDataFileStruct *)(file->data))->unk10[strPtr->unk4][i]; } for (i = 0; i < 31; i++) { - gDungeon->unk1CD98[i] = file->data.dungData->unkC[strPtr->unk2][i]; + gDungeon->unk1CD98[i] = ((struct UnkDataFileStruct *)(file->data))->unkC[strPtr->unk2][i]; if (ExtractSpeciesIndex(&gDungeon->unk1CD98[i]) == 0) break; } @@ -110,311 +107,36 @@ void sub_803D4D0(void) for (i = 0; i < 4; i++) { - u16 *src = file->data.dungData->unk8[strPtr->unk6[i]]; + u16 *src = ((struct UnkDataFileStruct *)(file->data))->unk8[strPtr->unk6[i]]; + s32 arrId = 0; - for (j = 0; j < 252; src++) { - if (*src > 29999) { - for (k = *src - 30000; k != 0; k--) { + for (j = 0; j < NUM_ITEM_CATEGORIES + NUMBER_OF_ITEM_IDS; ) { + if (src[arrId] >= 30000) { + for (k = src[arrId] - 30000; k != 0; k--) { spArray[j++] = 0; } } else { - spArray[j++] = *src; + spArray[j++] = src[arrId]; } + arrId++; } - for (j = 0; j < 12; j++) { - gDungeon->unk1C590[i].unk0[j] = spArray[j]; + arrId = 0; + for (j = 0; j < NUM_ITEM_CATEGORIES; j++) { + gDungeon->unk1C590[i].categoryValues[arrId] = spArray[arrId]; + arrId++; } - for (j = 0; j < 240; j++) { - gDungeon->unk1C590[i].unk18[j] = spArray[12 + j]; + for (j = 0; j < NUMBER_OF_ITEM_IDS; j++) { + gDungeon->unk1C590[i].itemValues[j] = spArray[arrId]; + arrId++; } } CloseFile(file); } -*/ -// - -NAKED void sub_803D4D0(void) -{ - asm_unified(" .text\n" -" push {r4-r7,lr}\n" -" mov r7, r10\n" -" mov r6, r9\n" -" mov r5, r8\n" -" push {r5-r7}\n" -" sub sp, 0x1FC\n" -" ldr r6, _0803D654\n" -" ldr r1, [r6]\n" -" movs r4, 0xC9\n" -" lsls r4, 3\n" -" adds r0, r1, r4\n" -" ldr r2, _0803D658\n" -" adds r1, r2\n" -" bl sub_80901D8\n" -" ldr r0, [r6]\n" -" ldr r3, _0803D65C\n" -" adds r2, r0, r3\n" -" adds r1, r0, r4\n" -" ldrh r0, [r2]\n" -" ldrh r4, [r1]\n" -" cmp r0, r4\n" -" bne _0803D500\n" -" b _0803D6E0\n" -"_0803D500:\n" -" ldr r0, [r1]\n" -" str r0, [r2]\n" -" ldr r0, _0803D660\n" -" ldr r1, _0803D664\n" -" bl OpenFileAndGetFileDataPtr\n" -" mov r9, r0\n" -" ldr r3, [r0, 0x4]\n" -" ldr r2, [r6]\n" -" ldr r7, _0803D65C\n" -" adds r0, r2, r7\n" -" ldrb r1, [r0]\n" -" ldr r0, [r3]\n" -" lsls r1, 2\n" -" adds r1, r0\n" -" ldr r3, _0803D668\n" -" adds r0, r2, r3\n" -" ldrb r0, [r0]\n" -" lsls r0, 4\n" -" ldr r1, [r1]\n" -" adds r1, r0\n" -" mov r8, r1\n" -" ldr r4, _0803D658\n" -" adds r2, r4\n" -" ldrb r0, [r2]\n" -" bl GetDungeonFloorCount\n" -" ldr r1, [r6]\n" -" ldr r7, _0803D66C\n" -" adds r1, r7\n" -" strb r0, [r1]\n" -" ldr r0, [r6]\n" -" adds r0, r4\n" -" ldrb r0, [r0]\n" -" bl sub_80902C8\n" -" ldr r1, [r6]\n" -" strh r0, [r1, 0x14]\n" -" mov r2, r9\n" -" ldr r0, [r2, 0x4]\n" -" mov r3, r8\n" -" movs r4, 0\n" -" ldrsh r2, [r3, r4]\n" -" ldr r3, [r0, 0x4]\n" -" lsls r0, r2, 3\n" -" subs r0, r2\n" -" lsls r0, 2\n" -" ldr r7, _0803D670\n" -" adds r1, r7\n" -" adds r0, r3\n" -" ldm r0!, {r2-r4}\n" -" stm r1!, {r2-r4}\n" -" ldm r0!, {r2,r3,r7}\n" -" stm r1!, {r2,r3,r7}\n" -" ldr r0, [r0]\n" -" str r0, [r1]\n" -" movs r5, 0\n" -" mov r10, r6\n" -" ldr r4, _0803D674\n" -"_0803D576:\n" -" mov r6, r10\n" -" ldr r2, [r6]\n" -" lsls r3, r5, 1\n" -" adds r2, r4\n" -" adds r2, r3\n" -" mov r7, r9\n" -" ldr r1, [r7, 0x4]\n" -" mov r6, r8\n" -" movs r7, 0x4\n" -" ldrsh r0, [r6, r7]\n" -" ldr r1, [r1, 0x10]\n" -" lsls r0, 2\n" -" adds r0, r1\n" -" ldr r0, [r0]\n" -" adds r3, r0\n" -" ldrh r0, [r3]\n" -" strh r0, [r2]\n" -" adds r5, 0x1\n" -" cmp r5, 0x13\n" -" ble _0803D576\n" -" movs r5, 0\n" -" adds r6, 0x6\n" -" str r6, [sp, 0x1F8]\n" -" ldr r6, _0803D678\n" -" mov r10, r6\n" -"_0803D5A8:\n" -" ldr r1, _0803D654\n" -" ldr r0, [r1]\n" -" lsls r3, r5, 3\n" -" mov r2, r10\n" -" adds r4, r0, r2\n" -" adds r4, r3\n" -" mov r12, r4\n" -" mov r4, r9\n" -" ldr r2, [r4, 0x4]\n" -" mov r7, r8\n" -" movs r4, 0x2\n" -" ldrsh r1, [r7, r4]\n" -" ldr r2, [r2, 0xC]\n" -" lsls r1, 2\n" -" adds r1, r2\n" -" ldr r1, [r1]\n" -" adds r3, r1\n" -" ldr r1, [r3]\n" -" ldr r2, [r3, 0x4]\n" -" mov r7, r12\n" -" str r1, [r7]\n" -" str r2, [r7, 0x4]\n" -" adds r0, r6\n" -" bl ExtractSpeciesIndex\n" -" lsls r0, 16\n" -" cmp r0, 0\n" -" beq _0803D5E8\n" -" adds r6, 0x8\n" -" adds r5, 0x1\n" -" cmp r5, 0x1E\n" -" ble _0803D5A8\n" -"_0803D5E8:\n" -" cmp r5, 0x1F\n" -" bgt _0803D606\n" -" ldr r6, _0803D654\n" -" lsls r0, r5, 3\n" -" ldr r1, _0803D678\n" -" adds r4, r0, r1\n" -"_0803D5F4:\n" -" ldr r0, [r6]\n" -" adds r0, r4\n" -" movs r1, 0\n" -" bl sub_808E9C4\n" -" adds r4, 0x8\n" -" adds r5, 0x1\n" -" cmp r5, 0x1F\n" -" ble _0803D5F4\n" -"_0803D606:\n" -" movs r5, 0\n" -" ldr r2, _0803D67C\n" -" mov r10, r2\n" -"_0803D60C:\n" -" mov r3, r9\n" -" ldr r1, [r3, 0x4]\n" -" lsls r0, r5, 1\n" -" ldr r4, [sp, 0x1F8]\n" -" adds r0, r4, r0\n" -" movs r6, 0\n" -" ldrsh r0, [r0, r6]\n" -" ldr r1, [r1, 0x8]\n" -" lsls r0, 2\n" -" adds r0, r1\n" -" movs r4, 0\n" -" adds r7, r5, 0x1\n" -" mov r8, r7\n" -" lsls r1, r5, 6\n" -" mov r12, r1\n" -" ldr r3, [r0]\n" -" mov r2, sp\n" -"_0803D62E:\n" -" ldrh r0, [r3]\n" -" cmp r0, r10\n" -" bls _0803D684\n" -" ldrh r0, [r3]\n" -" ldr r6, _0803D680\n" -" adds r1, r0, r6\n" -" cmp r1, 0\n" -" beq _0803D68A\n" -" movs r6, 0\n" -" lsls r0, r4, 1\n" -" add r0, sp\n" -"_0803D644:\n" -" strh r6, [r0]\n" -" adds r0, 0x2\n" -" adds r2, 0x2\n" -" adds r4, 0x1\n" -" subs r1, 0x1\n" -" cmp r1, 0\n" -" bne _0803D644\n" -" b _0803D68A\n" -" .align 2, 0\n" -"_0803D654: .4byte gDungeon\n" -"_0803D658: .4byte 0x00000644\n" -"_0803D65C: .4byte 0x0001c570\n" -"_0803D660: .4byte gUnknown_80F4D8C\n" -"_0803D664: .4byte gDungeonFileArchive\n" -"_0803D668: .4byte 0x0001c571\n" -"_0803D66C: .4byte 0x0001cec8\n" -"_0803D670: .4byte 0x0001c574\n" -"_0803D674: .4byte 0x0001cd70\n" -"_0803D678: .4byte 0x0001cd98\n" -"_0803D67C: .4byte 0x0000752f\n" -"_0803D680: .4byte 0xffff8ad0\n" -"_0803D684:\n" -" strh r0, [r2]\n" -" adds r2, 0x2\n" -" adds r4, 0x1\n" -"_0803D68A:\n" -" adds r3, 0x2\n" -" cmp r4, 0xFB\n" -" ble _0803D62E\n" -" ldr r7, _0803D6F0\n" -" mov r1, r12\n" -" subs r0, r1, r5\n" -" movs r4, 0xB\n" -" mov r3, sp\n" -" lsls r2, r0, 3\n" -" ldr r6, _0803D6F4\n" -"_0803D69E:\n" -" ldr r0, [r7]\n" -" adds r0, r6\n" -" adds r0, r2\n" -" ldrh r1, [r3]\n" -" strh r1, [r0]\n" -" adds r3, 0x2\n" -" adds r2, 0x2\n" -" subs r4, 0x1\n" -" cmp r4, 0\n" -" bge _0803D69E\n" -" ldr r6, _0803D6F0\n" -" mov r2, r12\n" -" subs r0, r2, r5\n" -" lsls r3, r0, 3\n" -" add r2, sp, 0x18\n" -" ldr r5, _0803D6F8\n" -" movs r4, 0xEF\n" -"_0803D6C0:\n" -" ldr r0, [r6]\n" -" adds r0, r5\n" -" adds r0, r3\n" -" ldrh r1, [r2]\n" -" strh r1, [r0]\n" -" adds r2, 0x2\n" -" adds r3, 0x2\n" -" subs r4, 0x1\n" -" cmp r4, 0\n" -" bge _0803D6C0\n" -" mov r5, r8\n" -" cmp r5, 0x3\n" -" ble _0803D60C\n" -" mov r0, r9\n" -" bl CloseFile\n" -"_0803D6E0:\n" -" add sp, 0x1FC\n" -" pop {r3-r5}\n" -" mov r8, r3\n" -" mov r9, r4\n" -" mov r10, r5\n" -" pop {r4-r7}\n" -" pop {r0}\n" -" bx r0\n" -" .align 2, 0\n" -"_0803D6F0: .4byte gDungeon\n" -"_0803D6F4: .4byte 0x0001c590\n" -"_0803D6F8: .4byte 0x0001c5a8\n"); -} - u8 sub_803D6FC(void) { s32 i; @@ -433,7 +155,7 @@ u8 sub_803D73C(s32 a0) s32 rand = DungeonRandInt(10000); u8 category = NUM_ITEM_CATEGORIES; for (i = 0; i < NUM_ITEM_CATEGORIES; i++) { - if (gDungeon->unk1C590[a0].unk0[i] != 0 && gDungeon->unk1C590[a0].unk0[i] >= rand) { + if (gDungeon->unk1C590[a0].categoryValues[i] != 0 && gDungeon->unk1C590[a0].categoryValues[i] >= rand) { category = i; break; } @@ -443,7 +165,7 @@ u8 sub_803D73C(s32 a0) rand = DungeonRandInt(10000); for (i = 0; i < NUMBER_OF_ITEM_IDS; i++) { - if (gDungeon->unk1C590[a0].unk18[i] != 0 && GetItemCategory(i) == category && gDungeon->unk1C590[a0].unk18[i] >= rand) { + if (gDungeon->unk1C590[a0].itemValues[i] != 0 && GetItemCategory(i) == category && gDungeon->unk1C590[a0].itemValues[i] >= rand) { return i; } } diff --git a/src/items.c b/src/items.c index d5ee5352f..f8cc8f8a5 100644 --- a/src/items.c +++ b/src/items.c @@ -33,7 +33,7 @@ EWRAM_DATA ItemDataEntry *gItemParametersData = {0}; EWRAM_DATA TeamInventory gTeamInventory = {0}; EWRAM_INIT TeamInventory *gTeamInventoryRef = {NULL}; -extern s32 sub_8091E94(s32 a1, s32 a2, s32 a3); +extern u8 sub_8091E94(s32 a1, s32 a2, s32 a3); extern void SortKecleonShopInventory(); bool8 AddKecleonWareItem(u8); @@ -1195,223 +1195,63 @@ u8 xxx_bit_lut_lookup_8091E50(u8 i0, u8 i1) return (gUnknown_8108F64[i0][i1 >> 3] >> (i1 & 7)) & 1; } +extern const u16* gUnknown_8108E58[]; -extern u16* gUnknown_8108E58[]; - -struct UnkStruct_8091E94 { - s16 unk0[12]; - s16 unk18[0xf0]; -}; - -NAKED -s32 sub_8091E94(s32 a1, s32 a2, s32 a3) +u8 sub_8091E94(s32 a0, s32 a1, s32 a2) { -#if 0 - // this is about as good as I got it so far - s32 i; - u8 item_type; - s32 result; + s32 id, i, arrId; + u8 foundCategory, ret; + struct UnkDungeonGlobal_unk1C590 data; + s16 rawArray[NUM_ITEM_CATEGORIES + NUMBER_OF_ITEM_IDS]; + const u16 *ptr = gUnknown_8108E58[a0 - 1]; - // struct of 12 + 0xf0 (NUMBER_OF_ITEM_IDS) hwords? - struct UnkStruct_8091E94 s1; - u16 s2[12 + 0xf0]; - s32 data_index; - // 30000: level up exp required? + id = 0; + arrId = 0; + while (id < NUM_ITEM_CATEGORIES + NUMBER_OF_ITEM_IDS) { + if (ptr[arrId] >= 30000) { + s32 a = ptr[arrId] - 30000; - data_index = 0; - // compressed data? - for (i = 0; i < 252; i++) { - if (gUnknown_8108E58[a1 - 1][i] > 29999) { - s32 j; - for (j = gUnknown_8108E58[a1 - 1][i] - 30000; j != 0; j--) { - s2[data_index++] = 0; - } + while (a != 0) { + rawArray[id++] = 0; + a--; + } + } + else { + rawArray[id++] = ptr[arrId]; + } + arrId++; } - else { - s2[data_index++] = gUnknown_8108E58[a1 - 1][i]; + + arrId = 0; + for (id = 0; id < NUM_ITEM_CATEGORIES; id++) { + data.categoryValues[arrId] = rawArray[arrId]; + arrId++; } - } - for (i = 0; i < 12; i++) { - s1.unk0[i] = s2[i]; - } - - for (i = 0; i < 240; i++) { - s1.unk18[i] = s2[12 + i]; - } - - item_type = 0; - for (i = 0; i < 12; i++) { - if (s1.unk0[i] && s1.unk0[i] >= a2){ - item_type = i; - break; + for (id = 0; id < NUMBER_OF_ITEM_IDS; id++) { + data.itemValues[id] = rawArray[arrId]; + arrId++; } - } - result = 70; - if (item_type != 12) { - s32 j; - for (j = 0; j < 240; j++) { - if (s1.unk18[j] && (GetItemCategory(j) == item_type) && (s1.unk18[j] >= a3)) { - return result; - } + foundCategory = NUM_ITEM_CATEGORIES; + for (i = 0; i < NUM_ITEM_CATEGORIES; i++) { + if (data.categoryValues[i] != 0 && data.categoryValues[i] >= a1) { + foundCategory = i; + break; + } } - result = j; - } - return result; -#else - asm_unified("\tpush {r4-r7,lr}\n" -"\tmov r7, r10\n" -"\tmov r6, r9\n" -"\tmov r5, r8\n" -"\tpush {r5-r7}\n" -"\tldr r4, _08091EE4\n" -"\tadd sp, r4\n" -"\tmov r8, r1\n" -"\tmov r10, r2\n" -"\tldr r1, _08091EE8\n" -"\tsubs r0, 0x1\n" -"\tlsls r0, 2\n" -"\tadds r0, r1\n" -"\tmovs r3, 0\n" -"\tadd r1, sp, 0x18\n" -"\tmov r9, r1\n" -"\tldr r2, _08091EEC\n" -"\tmov r12, r2\n" -"\tadd r6, sp, 0x1F8\n" -"\tldr r2, [r0]\n" -"\tadds r7, r6, 0\n" -"\tmovs r4, 0\n" -"_08091EC0:\n" -"\tldrh r1, [r2]\n" -"\tcmp r1, r12\n" -"\tbls _08091EF4\n" -"\tldrh r0, [r2]\n" -"\tldr r1, _08091EF0\n" -"\tadds r0, r1\n" -"\tcmp r0, 0\n" -"\tbeq _08091EFC\n" -"\tmovs r5, 0\n" -"\tadds r1, r7, r4\n" -"_08091ED4:\n" -"\tstrh r5, [r1]\n" -"\tadds r1, 0x2\n" -"\tadds r4, 0x2\n" -"\tadds r3, 0x1\n" -"\tsubs r0, 0x1\n" -"\tcmp r0, 0\n" -"\tbne _08091ED4\n" -"\tb _08091EFC\n" -"\t.align 2, 0\n" -"_08091EE4: .4byte 0xfffffc10\n" -"_08091EE8: .4byte gUnknown_8108E58\n" -"_08091EEC: .4byte 0x0000752f\n" -"_08091EF0: .4byte 0xffff8ad0\n" -"_08091EF4:\n" -"\tadds r0, r6, r4\n" -"\tstrh r1, [r0]\n" -"\tadds r4, 0x2\n" -"\tadds r3, 0x1\n" -"_08091EFC:\n" -"\tadds r2, 0x2\n" -"\tcmp r3, 0xFB\n" -"\tble _08091EC0\n" -"\tmovs r3, 0xB\n" -"\tadd r2, sp, 0x1F8\n" -"\tmov r1, sp\n" -"_08091F08:\n" -"\tldrh r0, [r2]\n" -"\tstrh r0, [r1]\n" -"\tadds r2, 0x2\n" -"\tadds r1, 0x2\n" -"\tsubs r3, 0x1\n" -"\tcmp r3, 0\n" -"\tbge _08091F08\n" -"\tmov r2, r9\n" -"\tadd r1, sp, 0x210\n" -"\tmovs r3, 0xEF\n" -"_08091F1C:\n" -"\tldrh r0, [r1]\n" -"\tstrh r0, [r2]\n" -"\tadds r1, 0x2\n" -"\tadds r2, 0x2\n" -"\tsubs r3, 0x1\n" -"\tcmp r3, 0\n" -"\tbge _08091F1C\n" -"\tmovs r7, 0xC\n" -"\tmovs r6, 0\n" -"\tmov r0, sp\n" -"\tmovs r2, 0\n" -"\tldrsh r0, [r0, r2]\n" -"\tcmp r0, 0\n" -"\tbeq _08091F4A\n" -"\tmov r0, sp\n" -"\tmovs r1, 0\n" -"\tldrsh r0, [r0, r1]\n" -"\tcmp r0, r8\n" -"\tblt _08091F4A\n" -"\tmovs r7, 0\n" -"\tb _08091F66\n" -"_08091F46:\n" -"\tmov r8, r5\n" -"\tb _08091F9C\n" -"_08091F4A:\n" -"\tadds r6, 0x1\n" -"\tcmp r6, 0xB\n" -"\tbgt _08091F66\n" -"\tlsls r0, r6, 1\n" -"\tmov r2, sp\n" -"\tadds r1, r2, r0\n" -"\tmovs r2, 0\n" -"\tldrsh r0, [r1, r2]\n" -"\tcmp r0, 0\n" -"\tbeq _08091F4A\n" -"\tcmp r0, r8\n" -"\tblt _08091F4A\n" -"\tlsls r0, r6, 24\n" -"\tlsrs r7, r0, 24\n" -"_08091F66:\n" -"\tmovs r0, 0x46\n" -"\tmov r8, r0\n" -"\tcmp r7, 0xC\n" -"\tbeq _08091F9C\n" -"\tmovs r6, 0\n" -"\tmov r4, r9\n" -"_08091F72:\n" -"\tmovs r1, 0\n" -"\tldrsh r0, [r4, r1]\n" -"\tcmp r0, 0\n" -"\tbeq _08091F94\n" -"\tlsls r0, r6, 24\n" -"\tlsrs r5, r0, 24\n" -"\tadds r0, r5, 0\n" -"\tbl GetItemCategory\n" -"\tlsls r0, 24\n" -"\tlsrs r0, 24\n" -"\tcmp r0, r7\n" -"\tbne _08091F94\n" -"\tmovs r2, 0\n" -"\tldrsh r0, [r4, r2]\n" -"\tcmp r0, r10\n" -"\tbge _08091F46\n" -"_08091F94:\n" -"\tadds r4, 0x2\n" -"\tadds r6, 0x1\n" -"\tcmp r6, 0xEF\n" -"\tble _08091F72\n" -"_08091F9C:\n" -"\tmov r0, r8\n" -"\tmovs r3, 0xFC\n" -"\tlsls r3, 2\n" -"\tadd sp, r3\n" -"\tpop {r3-r5}\n" -"\tmov r8, r3\n" -"\tmov r9, r4\n" -"\tmov r10, r5\n" -"\tpop {r4-r7}\n" -"\tpop {r1}\n" -"\tbx r1\n"); -#endif + + ret = ITEM_PLAIN_SEED; + if (foundCategory != NUM_ITEM_CATEGORIES) { + for (i = 0; i < NUMBER_OF_ITEM_IDS; i++) { + if (data.itemValues[i] != 0 && GetItemCategory(i) == foundCategory && data.itemValues[i] >= a2) { + ret = i; + break; + } + } + } + + return ret; } void ClearAllItems_8091FB4(void) From c0c8d5f51dd1fb357941f1c9016dab44c523682e Mon Sep 17 00:00:00 2001 From: DizzyEggg Date: Mon, 24 Feb 2025 21:26:57 +0100 Subject: [PATCH 28/40] Match sub_808E9EC --- src/pokemon_3.c | 210 ++++++++++-------------------------------------- 1 file changed, 42 insertions(+), 168 deletions(-) diff --git a/src/pokemon_3.c b/src/pokemon_3.c index a726eef0a..6707b9e48 100644 --- a/src/pokemon_3.c +++ b/src/pokemon_3.c @@ -23,24 +23,12 @@ extern u8 *gTacticsDescriptions[]; extern u8 *gTactics[]; extern u32 gIQSkillGroups[]; -struct unkStruct_808E9EC -{ - u32 unk0; - u32 unk4; - u32 unk8; - u32 unkC; - u8 unk10; - u8 unk11; - u8 unk12; - u8 unk13; -}; - extern SpriteOAM gShadowSprites[3]; // Shadow sprites of some kind -extern s16 gUnknown_810AC60; // 0xC -extern s16 gUnknown_810AC62; // 0xC -extern s16 gUnknown_810AC68; // 0x8 -extern s16 gUnknown_810AC64; // 0x8 -extern s16 gUnknown_810AC66; // 0x8 +extern const s16 gUnknown_810AC60; // 0xC +extern const s16 gUnknown_810AC62; // 0xC +extern const s16 gUnknown_810AC68; // 0x8 +extern const s16 gUnknown_810AC64; // 0x8 +extern const s16 gUnknown_810AC66; // 0x8 extern u8 *gUnknown_810DD58[]; extern u8 *gEvolutionStrings[]; extern u8 *gExpPts810DD9C_Ptr[]; @@ -310,166 +298,52 @@ s32 ExtractLevel(UnkDungeonGlobal_unk1CD98 *r0) return (r0->unk0 >> 9); } -// Unused -#ifdef NONMATCHING -void sub_808E9EC(PokemonStruct1 *r0, struct unkStruct_808E9EC *r1) +struct UnusedOffenseStruct { - u8 pokeAtt; - u8 r4; - u32 reg1_8; - s16 reg1; + s32 att[2]; + s32 def[2]; + u8 atkBoost; + u8 spAtkBoost; + u8 defBoost; + u8 spDefBoost; +}; - pokeAtt = r0->offense.att[0]; - - r1->unk0 = pokeAtt; - r1->unk4 = r0->offense.att[1]; - r1->unk8 = r0->offense.def[0]; - r1->unkC = r0->offense.def[1]; - r1->unk10 = 0; - r1->unk11 = 0; - r1->unk12 = 0; - r1->unk13 = 0; - if(r0->heldItem.id != 0) - { - r4 = r0->heldItem.id; - if(r4 == 0x13) - { - r1->unk10 = gUnknown_810AC60; - r1->unk0 = pokeAtt + gUnknown_810AC60; +UNUSED static void GetMonOffenseStats(PokemonStruct1 *mon, struct UnusedOffenseStruct *dst) +{ + dst->att[0] = mon->offense.att[0]; + dst->att[1] = mon->offense.att[1]; + dst->def[0] = mon->offense.def[0]; + dst->def[1] = mon->offense.def[1]; + dst->atkBoost = 0; + dst->spAtkBoost = 0; + dst->defBoost = 0; + dst->spDefBoost = 0; + if (mon->heldItem.id != ITEM_NOTHING) { + u16 itemId = mon->heldItem.id; + if (itemId == ITEM_POWER_BAND) { + dst->atkBoost += gUnknown_810AC60; + dst->att[0] += gUnknown_810AC60; } - if(r4 == 0x21) - { - r1->unk11 += gUnknown_810AC62; - r1->unk4 += gUnknown_810AC62; + if (itemId == ITEM_SPECIAL_BAND) { + dst->spAtkBoost += gUnknown_810AC62; + dst->att[1] += gUnknown_810AC62; } - if(r4 == 0x2B) - { - // TODO: regs get a little f**ked - reg1_8 = (u8)gUnknown_810AC68; - r1->unk10 += reg1_8; - r1->unk11 += reg1_8; - - reg1 = gUnknown_810AC68; - r1->unk0 += reg1; - r1->unk4 += reg1; + if (itemId == ITEM_MUNCH_BELT) { + dst->atkBoost += gUnknown_810AC68; + dst->spAtkBoost += gUnknown_810AC68; + dst->att[0] += gUnknown_810AC68; + dst->att[1] += gUnknown_810AC68; } - if(r4 == 0x1E) - { - r1->unk12 += gUnknown_810AC64; - r1->unk8 += gUnknown_810AC64; + if (itemId == ITEM_DEF_SCARF) { + dst->defBoost += gUnknown_810AC64; + dst->def[0] += gUnknown_810AC64; } - if(r4 == 0x22) - { - r1->unk13 += gUnknown_810AC66; - r1->unkC += gUnknown_810AC66; + if (itemId == ITEM_ZINC_BAND) { + dst->spDefBoost += gUnknown_810AC66; + dst->def[1] += gUnknown_810AC66; } } } -#else -NAKED -void sub_808E9EC(PokemonStruct1 *r0, struct unkStruct_808E9EC *r1) -{ - asm_unified("\tpush {r4-r6,lr}\n" - "\tadds r3, r1, 0\n" - "\tldrb r2, [r0, 0x18]\n" - "\tstr r2, [r3]\n" - "\tldrb r1, [r0, 0x19]\n" - "\tstr r1, [r3, 0x4]\n" - "\tldrb r1, [r0, 0x1A]\n" - "\tstr r1, [r3, 0x8]\n" - "\tldrb r1, [r0, 0x1B]\n" - "\tstr r1, [r3, 0xC]\n" - "\tmovs r1, 0\n" - "\tstrb r1, [r3, 0x10]\n" - "\tstrb r1, [r3, 0x11]\n" - "\tstrb r1, [r3, 0x12]\n" - "\tstrb r1, [r3, 0x13]\n" - "\tadds r1, r0, 0\n" - "\tadds r1, 0x28\n" - "\tldrb r0, [r1]\n" - "\tcmp r0, 0\n" - "\tbeq _0808EA96\n" - "\tadds r4, r0, 0\n" - "\tadds r5, r4, 0\n" - "\tcmp r4, 0x13\n" - "\tbne _0808EA2A\n" - "\tldr r1, _0808EA9C\n" - "\tldrh r0, [r1]\n" - "\tstrb r0, [r3, 0x10]\n" - "\tmovs r6, 0\n" - "\tldrsh r0, [r1, r6]\n" - "\tadds r0, r2, r0\n" - "\tstr r0, [r3]\n" -"_0808EA2A:\n" - "\tcmp r4, 0x21\n" - "\tbne _0808EA42\n" - "\tldr r1, _0808EAA0\n" - "\tldrb r0, [r1]\n" - "\tldrb r2, [r3, 0x11]\n" - "\tadds r0, r2\n" - "\tstrb r0, [r3, 0x11]\n" - "\tmovs r6, 0\n" - "\tldrsh r1, [r1, r6]\n" - "\tldr r0, [r3, 0x4]\n" - "\tadds r0, r1\n" - "\tstr r0, [r3, 0x4]\n" -"_0808EA42:\n" - "\tcmp r4, 0x2B\n" - "\tbne _0808EA66\n" - "\tldr r2, _0808EAA4\n" - "\tldrb r0, [r2]\n" - "\tldrb r6, [r3, 0x10]\n" - "\tadds r1, r0, r6\n" - "\tstrb r1, [r3, 0x10]\n" - "\tldrb r1, [r3, 0x11]\n" - "\tadds r0, r1\n" - "\tstrb r0, [r3, 0x11]\n" - "\tmovs r6, 0\n" - "\tldrsh r1, [r2, r6]\n" - "\tldr r0, [r3]\n" - "\tadds r0, r1\n" - "\tstr r0, [r3]\n" - "\tldr r0, [r3, 0x4]\n" - "\tadds r0, r1\n" - "\tstr r0, [r3, 0x4]\n" -"_0808EA66:\n" - "\tcmp r4, 0x1E\n" - "\tbne _0808EA7E\n" - "\tldr r1, _0808EAA8\n" - "\tldrb r0, [r1]\n" - "\tldrb r2, [r3, 0x12]\n" - "\tadds r0, r2\n" - "\tstrb r0, [r3, 0x12]\n" - "\tmovs r6, 0\n" - "\tldrsh r1, [r1, r6]\n" - "\tldr r0, [r3, 0x8]\n" - "\tadds r0, r1\n" - "\tstr r0, [r3, 0x8]\n" -"_0808EA7E:\n" - "\tcmp r5, 0x22\n" - "\tbne _0808EA96\n" - "\tldr r1, _0808EAAC\n" - "\tldrb r0, [r1]\n" - "\tldrb r2, [r3, 0x13]\n" - "\tadds r0, r2\n" - "\tstrb r0, [r3, 0x13]\n" - "\tmovs r6, 0\n" - "\tldrsh r1, [r1, r6]\n" - "\tldr r0, [r3, 0xC]\n" - "\tadds r0, r1\n" - "\tstr r0, [r3, 0xC]\n" -"_0808EA96:\n" - "\tpop {r4-r6}\n" - "\tpop {r0}\n" - "\tbx r0\n" - "\t.align 2, 0\n" -"_0808EA9C: .4byte gUnknown_810AC60\n" -"_0808EAA0: .4byte gUnknown_810AC62\n" -"_0808EAA4: .4byte gUnknown_810AC68\n" -"_0808EAA8: .4byte gUnknown_810AC64\n" -"_0808EAAC: .4byte gUnknown_810AC66"); -} -#endif u8 *GetIQSkillName(u8 skill) { From 4330d57165ad067218cc6201a08e089d9866c911 Mon Sep 17 00:00:00 2001 From: DizzyEggg Date: Mon, 24 Feb 2025 21:37:16 +0100 Subject: [PATCH 29/40] Remove NAKED define from globalh. --- include/global.h | 2 -- 1 file changed, 2 deletions(-) diff --git a/include/global.h b/include/global.h index f6fb1b249..de3274263 100644 --- a/include/global.h +++ b/include/global.h @@ -54,8 +54,6 @@ static inline void InlineStrncpy(u8 *dst, const u8 *src, s32 n) #define asm_unified(x) asm(".syntax unified\n" x "\n.syntax divided\n") -#define NAKED __attribute__((naked)) - #define ARRAY_COUNT(array) (sizeof(array) / sizeof((array)[0])) #define ARRAY_COUNT_INT(array) ((s32)(sizeof(array) / sizeof((array)[0]))) // When an int is needed to match. From 3b01545f371c8774890d233cdf6d13213cceb0db Mon Sep 17 00:00:00 2001 From: DizzyEggg Date: Tue, 25 Feb 2025 09:56:49 +0100 Subject: [PATCH 30/40] Put stuff in EWRAM_DATA/IWRAM_DATA --- src/code_2.c | 16 +++++----- src/code_800558C.c | 27 ++++++++-------- src/code_800E9A8.c | 6 ++-- src/code_800E9E4.c | 12 +++---- src/code_800F034.c | 12 +++---- src/code_803E724.c | 5 +-- src/code_8073CF0.c | 3 +- src/code_80869E4.c | 2 +- src/dungeon_map_access.c | 2 +- src/event_flag.c | 2 +- src/ground_main.c | 12 +++---- src/other_menus2.c | 9 +++--- src/sound_names.c | 8 ++--- src/text.c | 11 +++---- src/thank_you_wonder_mail.c | 10 ++---- sym_ewram.txt | 62 ++++++------------------------------- sym_iwram.txt | 10 ++---- 17 files changed, 75 insertions(+), 134 deletions(-) diff --git a/src/code_2.c b/src/code_2.c index 487eb5262..a8f6ee9b7 100644 --- a/src/code_2.c +++ b/src/code_2.c @@ -39,7 +39,7 @@ extern void nullsub_33(void); extern u32 sub_80009D0(u32); extern u16 gUnknown_2026E4E; -extern s32 gTitleBrightness; +EWRAM_DATA s32 sTitleBrightness = 0; // TODO: figure out the struct struct UnkStruct203B040 @@ -106,12 +106,12 @@ void GameLoop(void) LoadTitleScreen(); SetBG2RegOffsets(0, 0); SetBG3RegOffsets(0, 0); - gTitleBrightness = 0; - while (gTitleBrightness < 32) { + sTitleBrightness = 0; + while (sTitleBrightness < 32) { s32 i; - gTitleBrightness++; + sTitleBrightness++; for (i = 0; i < 240; i++) - SetBGPaletteBufferColorRGB(i, &((RGB*)gTitlePaletteFile->data)[i], gTitleBrightness, NULL); + SetBGPaletteBufferColorRGB(i, &((RGB*)gTitlePaletteFile->data)[i], sTitleBrightness, NULL); xxx_update_stuff(0); } if (tmp3) { @@ -148,11 +148,11 @@ void GameLoop(void) if (nextMenu == MENU_NEW_GAME) break; } DeleteMainMenu(); - while (gTitleBrightness > 0) { + while (sTitleBrightness > 0) { s32 i; - gTitleBrightness--; + sTitleBrightness--; for (i = 0; i < 240; i++) - SetBGPaletteBufferColorRGB(i, &((RGB*)gTitlePaletteFile->data)[i], gTitleBrightness, NULL); + SetBGPaletteBufferColorRGB(i, &((RGB*)gTitlePaletteFile->data)[i], sTitleBrightness, NULL); xxx_update_stuff(0); } CloseFile(gTitlePaletteFile); diff --git a/src/code_800558C.c b/src/code_800558C.c index c7935f7cf..8d4a3262c 100644 --- a/src/code_800558C.c +++ b/src/code_800558C.c @@ -6,18 +6,19 @@ #include "math.h" #include "sprite.h" -extern u8 gUnknown_2026E38; -extern u32 *gUnknown_2026E3C; -extern s32 gUnknown_2026E40; -extern s32 gUnknown_2026E44; -extern s32 gUnknown_2026E48; -extern bool8 gUnknown_2026E4C; -extern u16 gUnknown_2026E4E; -extern bool32 gUnknown_2026E50; -extern bool32 gUnknown_2026E54; -extern u32 *gUnknown_2026E58; -extern s16 gUnknown_2026E60[]; -extern s16 gUnknown_20270E8[]; +EWRAM_DATA u8 gUnknown_2026E38 = 0; +EWRAM_DATA u32 *gUnknown_2026E3C = 0; +EWRAM_DATA s32 gUnknown_2026E40 = 0; +EWRAM_DATA s32 gUnknown_2026E44 = 0; +EWRAM_DATA s32 gUnknown_2026E48 = 0; +EWRAM_DATA bool8 gUnknown_2026E4C = 0; +EWRAM_DATA u16 gUnknown_2026E4E = 0; +EWRAM_DATA bool32 gUnknown_2026E50 = 0; +EWRAM_DATA bool32 gUnknown_2026E54 = 0; +EWRAM_DATA u32 *gUnknown_2026E58 = NULL; +UNUSED EWRAM_DATA static u32 sUnused0 = 0; +EWRAM_DATA static s16 gUnknown_2026E60[324] = {0}; +EWRAM_DATA static s16 gUnknown_20270E8[324] = {0}; EWRAM_INIT s16 *gUnknown_203B078 = NULL; @@ -239,7 +240,7 @@ void sub_8005838(s32 *a0, u8 kind) if (!gUnknown_2026E4C) kind = 0; - r3 = !gUnknown_2026E54 ? (s16 *) &gUnknown_2026E60 : (s16*) &gUnknown_20270E8; + r3 = !gUnknown_2026E54 ? gUnknown_2026E60 : gUnknown_20270E8; r2 = gUnknown_203B078; if (r2 == NULL) diff --git a/src/code_800E9A8.c b/src/code_800E9A8.c index 329e485fc..c02a9fed8 100644 --- a/src/code_800E9A8.c +++ b/src/code_800E9A8.c @@ -7,7 +7,7 @@ s32 sub_800E2C0(u32); -struct unkStruct_203B0CC *gUnknown_203B0CC; +extern struct unkStruct_203B0CC *gUnknown_203B0CC; void sub_800DE38(struct unkStruct_203B0CC_sub *); void sub_800DE8C(struct unkStruct_203B0CC_sub *, DungeonPos *); @@ -48,7 +48,7 @@ bool8 sub_800E838(u16 *param_1, s32 param_2) } // TODO: look at this later -// https://decomp.me/scratch/luz2f +// https://decomp.me/scratch/luz2f u32 sub_800E890(unkStruct_80416E0 *param_1) { param_1->unk14 = sub_800E900(param_1->unk0); @@ -101,7 +101,7 @@ bool8 sub_800E90C(DungeonPos *param_1) } } - if(ptr->unk10 > 0) + if(ptr->unk10 > 0) ptr->unk10--; sub_800DCD0(ptr); if(ptr->unk54 == 0) diff --git a/src/code_800E9E4.c b/src/code_800E9E4.c index b5120a88d..2235958dc 100644 --- a/src/code_800E9E4.c +++ b/src/code_800E9E4.c @@ -8,14 +8,14 @@ u32 sub_800F19C(s32); s32 sub_800EBBC(s32); s32 sub_800EC68(s32); -struct unkStruct_203B0CC *gUnknown_203B0CC; +extern struct unkStruct_203B0CC *gUnknown_203B0CC; extern unkStruct_80B9C60 gUnknown_80B9C60; extern s32 gUnknown_80B9C9C[8]; extern s16 gUnknown_80CE73C[20]; -unkStruct_80CE37C gUnknown_80CE37C[1]; +extern unkStruct_80CE37C gUnknown_80CE37C[1]; extern unkStruct_80BDBC4 gUnknown_80BDBC4[430]; extern unkStruct_80B9CC4 gUnknown_80B9CC4[448]; @@ -56,13 +56,13 @@ s32 sub_800EA84(s32 *param_1) unkStruct_80BDBC4 *ret1; u32 size; ret1 = sub_800ECB8(param_1[0]); - + stack[1].unk00[0] = ret1->unk0; stack[1].unk00[1] = param_1[4]; stack[1].unk00[2] = param_1[3]; stack[1].unk00[3] = param_1[1]; stack[1].unk00[4] = param_1[2]; - + ret1 = sub_800ECB8(param_1[0]); stack[1].unk00[5] = sub_800EBBC(ret1->unk0); stack[1].unk00[6] = 0x0000ffff; @@ -137,13 +137,13 @@ s32 sub_800EBC8(s32 *param_1) unkStruct_80BDBC4 *ret1; u32 size; ret1 = sub_800ECB8(param_1[0]); - + stack[1].unk00[0] = ret1->unk4; stack[1].unk00[1] = param_1[4]; stack[1].unk00[2] = param_1[3]; stack[1].unk00[3] = param_1[1]; stack[1].unk00[4] = param_1[2]; - + ret1 = sub_800ECB8(param_1[0]); stack[1].unk00[5] = sub_800EC68(ret1->unk4); stack[1].unk00[6] = 0x0000ffff; diff --git a/src/code_800F034.c b/src/code_800F034.c index ef2398231..6f08b8b99 100644 --- a/src/code_800F034.c +++ b/src/code_800F034.c @@ -16,7 +16,7 @@ struct unkStruct_203B0D4 struct unkStruct_800F18C unk0[2]; }; -struct unkStruct_203B0D4 *gUnknown_203B0D4; +extern struct unkStruct_203B0D4 *gUnknown_203B0D4; ALIGNED(4) static const u8 gUnknown_80CE77C[] = "efob%03d"; ALIGNED(4) static const u8 gUnknown_80CE788[] = "efbg%03d"; @@ -53,7 +53,7 @@ void sub_800F094(void) { gUnknown_203B0D4->unk0[index].effectID = -1; gUnknown_203B0D4->unk0[index].counter = 0; - } + } } s32 sub_800F0C0(s32 animType, s32 effectID) @@ -81,7 +81,7 @@ s32 sub_800F0F4(s32 animType, s32 effectID) return -1; } -void sub_800F13C(s32 index, OpenedFile *file, unkStruct_80B9CC4 * r2) +void sub_800F13C(s32 index, OpenedFile *file, unkStruct_80B9CC4 * r2) { if(gUnknown_203B0D4->unk0[index].counter == 0) gUnknown_203B0D4->unk0[index].effectID = r2->effectId; @@ -101,9 +101,9 @@ void sub_800F15C(s32 effectID) } } -struct unkStruct_800F18C *sub_800F18C(s32 index) +struct unkStruct_800F18C *sub_800F18C(s32 index) { - return &gUnknown_203B0D4->unk0[index]; + return &gUnknown_203B0D4->unk0[index]; } s32 sub_800F19C(s32 index) @@ -135,6 +135,6 @@ OpenedFile * sub_800F1C0(u32 animType, s32 effectID) void sub_800F204(OpenedFile *file) { - CloseFile(file); + CloseFile(file); } diff --git a/src/code_803E724.c b/src/code_803E724.c index c640b874d..25eac700c 100644 --- a/src/code_803E724.c +++ b/src/code_803E724.c @@ -61,7 +61,6 @@ extern u8 gUnknown_20274A5; extern Palette32 gFontPalette[8]; extern s32 gUnknown_202EDCC; -extern u32 gUnknown_3001018[]; extern void sub_8040A84(); extern void sub_8083D44(void); @@ -1153,6 +1152,8 @@ void sub_803F9CC(void) gUnknown_20274A5 = TRUE; } +IWRAM_DATA static u32 gUnknown_3001018[96] = {0}; + void sub_803FA4C(s32 a0, s32 a1, bool8 a2) { s32 i; @@ -1214,7 +1215,7 @@ void sub_803FA4C(s32 a0, s32 a1, bool8 a2) r5 = 0; } } - sub_80098BC((void *) VRAM + 0x5980, gUnknown_3001018, 0x180); + sub_80098BC((void *) VRAM + 0x5980, gUnknown_3001018, sizeof(gUnknown_3001018)); } void sub_803FB74(void) diff --git a/src/code_8073CF0.c b/src/code_8073CF0.c index c425bc7a1..f2ad85430 100644 --- a/src/code_8073CF0.c +++ b/src/code_8073CF0.c @@ -64,7 +64,6 @@ extern void sub_8075900(Entity *pokemon, u8 r1); extern void sub_806A5B8(Entity *); extern void sub_807EC28(bool8); -extern s32 gUnknown_202F378; extern u8 gUnknown_202F32D; extern const u8 *gMonTerrifiedCouldntPickUpItem; @@ -91,6 +90,8 @@ extern const DungeonPos gUnknown_80F4D44[]; bool8 UseAttack(Entity *a0); void sub_8075050(EntityInfo *info, Unk_Entity_x184 *strPtr); +static EWRAM_DATA s32 gUnknown_202F378 = 0; + void HandleEatAIAction(Entity *pokemon) { sub_8067110(pokemon); diff --git a/src/code_80869E4.c b/src/code_80869E4.c index 33f398c27..80578f4d5 100644 --- a/src/code_80869E4.c +++ b/src/code_80869E4.c @@ -15,7 +15,7 @@ // ??? extern u32 gDungeonBrightness; -EWRAM_DATA unkStruct_202F3D0 gUnknown_202F3D0 = {0}; +EWRAM_DATA static unkStruct_202F3D0 gUnknown_202F3D0 = {0}; // data_8107010.s extern u32 gUnknown_8107314[]; diff --git a/src/dungeon_map_access.c b/src/dungeon_map_access.c index c0d47fe11..5c03f2c51 100644 --- a/src/dungeon_map_access.c +++ b/src/dungeon_map_access.c @@ -157,7 +157,7 @@ void sub_8049884(void) } } -void sub_80498A8(int x,int y) +void sub_80498A8(s32 x,s32 y) { volatile u32 sp_0x0; volatile u32 sp_0x4; diff --git a/src/event_flag.c b/src/event_flag.c index 572a97f5f..9f32181fa 100644 --- a/src/event_flag.c +++ b/src/event_flag.c @@ -14,7 +14,7 @@ #include "pokemon.h" #include "pokemon_3.h" -extern u8 gScriptVarBuffer[0x400]; +EWRAM_DATA u8 gScriptVarBuffer[0x400] = {0}; struct GroundEventTableEntry { diff --git a/src/ground_main.c b/src/ground_main.c index 5c22c7a5d..f05411939 100644 --- a/src/ground_main.c +++ b/src/ground_main.c @@ -44,8 +44,8 @@ EWRAM_DATA u16 gUnknown_20398BC = {0}; EWRAM_DATA u16 gUnknown_20398BE = {0}; EWRAM_DATA u32 gUnknown_20398C0 = {0}; EWRAM_DATA s16 gUnknown_20398C4 = {0}; -struct unkStruct_20398C8 gUnknown_20398C8; -extern u8 gUnknown_2039950; +EWRAM_DATA struct unkStruct_20398C8 gUnknown_20398C8 = {0}; +EWRAM_DATA u8 gUnknown_2039950 = 0; EWRAM_INIT bool8 gUnknown_203B49C = {0}; EWRAM_INIT u8 gUnknown_203B49D = {0}; @@ -395,7 +395,7 @@ u8 sub_80990EC(struct unkStruct_20398C8 *param_1, s16 param_2) sub_80A8EC0(auStack_98, 0x5b); BoundedCopyStringtoBuffer(nameBuffer, auStack_98, POKEMON_NAME_LENGTH); { - struct unkStruct_808D144 stack = + struct unkStruct_808D144 stack = { .name = nameBuffer, .speciesNum = MONSTER_GENGAR, @@ -413,7 +413,7 @@ u8 sub_80990EC(struct unkStruct_20398C8 *param_1, s16 param_2) sub_808D144(¶m_1->unk18, &stack); } } - break; + break; case 4: param_1->unkB = 0; break; @@ -431,7 +431,7 @@ u8 sub_80991E0(struct unkStruct_20398C8 *param_1,short *param_2) *param_2 = gUnknown_20398C4; if (gUnknown_203B49C) { memcpy(param_1, &gUnknown_20398C8, sizeof(struct unkStruct_20398C8)); - return TRUE; + return TRUE; } else { return sub_80990EC(param_1,gUnknown_20398C4); @@ -441,7 +441,7 @@ u8 sub_80991E0(struct unkStruct_20398C8 *param_1,short *param_2) void sub_8099220(struct unkStruct_20398C8 *param_1, s16 param_2) { s32 param_2_s32 = (s16)param_2; - if (param_1 != NULL) + if (param_1 != NULL) { gUnknown_203B49C = TRUE; gUnknown_203B49D = 0; diff --git a/src/other_menus2.c b/src/other_menus2.c index c8e9717bd..2c5c17b30 100644 --- a/src/other_menus2.c +++ b/src/other_menus2.c @@ -20,9 +20,10 @@ typedef struct unkStruct_800D670 // rescue_password_menu.c extern s32 gCommsTimeout; // Counts to 100 and then errors if other player hasn't connected -extern s32 gUnknown_202EC40[2]; -extern s32 gUnknown_202EC48; -extern s32 gUnknown_202EC38; +EWRAM_DATA static s32 gUnknown_202EC38 = 0; +UNUSED EWRAM_DATA static u8 sUnused = 0; +EWRAM_DATA static s32 gUnknown_202EC40[2] = {0}; +EWRAM_DATA static s32 gUnknown_202EC48 = 0; extern struct UnkStruct_203B184 *gUnknown_203B184; @@ -190,7 +191,7 @@ s32 sub_8037C10(bool8 a0) if (sub_800D588()) ret = gUnknown_202EC40[1]; else - ret = gUnknown_202EC40[0]; + ret = gUnknown_202EC40[0]; } return ret; diff --git a/src/sound_names.c b/src/sound_names.c index 75cf95255..8fbca344e 100644 --- a/src/sound_names.c +++ b/src/sound_names.c @@ -16,8 +16,6 @@ struct SoundNamesStruct }; // Forward declarations -static const char sText_Table[]; -static const char sText_Header[]; static const char sText_PKDSoundData[]; const struct SoundNamesStruct gSoundNamesStruct; @@ -33,14 +31,12 @@ ALIGNED(4) UNUSED static const char sPksDir1[] = "pksdir0"; const struct SoundNamesStruct gSoundNamesStruct = { - .headerText = sText_Header, + .headerText = "HEADER", .soundDataBankText = sText_PKDSoundData, - .tableText = sText_Table, + .tableText = "TABLE", .sfxNames = gSfxNames, }; -ALIGNED(4) static const char sText_Table[] = "TABLE"; -ALIGNED(4) static const char sText_Header[] = "HEADER"; ALIGNED(4) UNUSED static const char sPksDir2[] = "pksdir0"; ALIGNED(4) static const char sText_PKDSoundData[] = "PKD Sound Data Bank"; diff --git a/src/text.c b/src/text.c index c5d72ce51..d5c4014f4 100644 --- a/src/text.c +++ b/src/text.c @@ -15,8 +15,6 @@ struct CharMapStruct struct unkChar *unk4; }; -// data.s - // data2.s extern const char gUnknown_80B88B0[]; // "font" extern const char gUnknown_80B88B8[]; // "fontsp" @@ -25,9 +23,6 @@ extern const char gUnknown_80B88C0[]; // "fontsppa" // system_sbin.s extern const struct FileArchive gSystemFileArchive; -// Todo fix gUnknown_3000E94 being accessed as s16/u8 -extern s16 gUnknown_3000E94[]; - EWRAM_DATA UnkTextStruct1 gUnknown_2027370[4] = {0}; EWRAM_DATA static struct CharMapStruct *sCharmaps[2] = {NULL}; EWRAM_DATA static s16 sCharacterSpacing = 0; @@ -46,6 +41,8 @@ EWRAM_DATA static u32 sTextShadowMask = 0; // Some text color info is stored; re EWRAM_DATA static u8 sDrawTextShadow = 0; EWRAM_DATA ALIGNED(4) u16 gUnknown_202B038[4][32][32] = {0}; +IWRAM_DATA static s16 gUnknown_3000E94[161] = {0}; + // These text-related functions were deemed important as they're copied and run from IWRAM for improved performance. static void sub_8272774(UnkTextStruct1 *txtStructs, s32 id); static void sub_8272884(UnkTextStruct1 *txtStructs, s32 id); @@ -2861,7 +2858,7 @@ static void sub_800898C(void) { s32 i; - for (i = 0; i < 161; i++) { + for (i = 0; i < ARRAY_COUNT_INT(gUnknown_3000E94); i++) { gUnknown_3000E94[i] = 0xF0F0; } } @@ -2873,7 +2870,7 @@ static void sub_80089AC(const UnkTextStruct2 *r4, DungeonPos *r5_Str) if (r4->unk0 & 0x40) return; - r6 = (void*) &gUnknown_3000E94; + r6 = (u8*) gUnknown_3000E94; if (r4->unk4 == 1) { s32 r12 = (r4->pos.x + r5_Str->x) * 8; s32 r5 = (r4->pos.y + r5_Str->y) * 8; diff --git a/src/thank_you_wonder_mail.c b/src/thank_you_wonder_mail.c index 9870dc165..d2b8dfe3f 100644 --- a/src/thank_you_wonder_mail.c +++ b/src/thank_you_wonder_mail.c @@ -95,9 +95,6 @@ const UnkTextStruct2 gUnknown_80DED60 = NULL }; -extern const u8 SendItem_Text[]; -extern const u8 DontSendItem_Text[]; - const MenuItem gUnknown_80DED78[] = { {"Confirm", CONFIRM_ACTION}, @@ -149,15 +146,12 @@ const MenuItem gUnknown_80DEE60[] = const MenuItem gUnknown_80DEE7C[] = { - {SendItem_Text, SEND_ITEM_ACTION}, - {DontSendItem_Text, NO_SEND_ITEM_ACTION}, + {"Send Item", SEND_ITEM_ACTION}, + {_("Don't Send Item"), NO_SEND_ITEM_ACTION}, {"Cancel", CANCEL_ACTION}, {}, }; -ALIGNED(4) static const u8 DontSendItem_Text[] = _("Don't Send Item"); -ALIGNED(4) static const u8 SendItem_Text[] = "Send Item"; - const MenuItem gUnknown_80DEEBC[] = { {"Send w/o Item", NO_SEND_ITEM_ACTION}, diff --git a/sym_ewram.txt b/sym_ewram.txt index 7e5738f9f..4bf8e7c54 100644 --- a/sym_ewram.txt +++ b/sym_ewram.txt @@ -1,42 +1,14 @@ .include "src/m4a.o" + .include "src/code_2.o" + .space 0x4 -gTitleBrightness: /* 2000A80 (GameLoop) */ - .space 0x8 - -gScriptVarBuffer: /* 2000A88 (ThoroughlyResetScriptVars - RestoreGlobalScriptVars) */ - .space 0x400 - + .include "src/event_flag.o" .include "src/memory.o" .include "src/bg_palette_buffer.o" .include "src/input.o" .include "src/sprite.o" - -gUnknown_2026E38: /* 2026E38 (sub_80057E8 - VBlank_CB) */ - .space 0x4 -gUnknown_2026E3C: /* 2026E3C (sub_80057E8 - VBlank_CB) */ - .space 0x4 -gUnknown_2026E40: /* 2026E40 (sub_8005838) */ - .space 0x4 -gUnknown_2026E44: /* 2026E44 (sub_8005838) */ - .space 0x4 -gUnknown_2026E48: /* 2026E48 (sub_8005838) */ - .space 0x4 -gUnknown_2026E4C: /* 2026E4C (sub_80057E8 - sub_8005838) */ - .space 0x2 -gUnknown_2026E4E: /* 2026E4E (GameLoop - GroundWeather_Select) */ - .space 0x2 -gUnknown_2026E50: /* 2026E50 (sub_80057E8 - sub_80060EC) */ - .space 0x4 -gUnknown_2026E54: /* 2026E54 (sub_80057E8 - sub_80060EC) */ - .space 0x4 -gUnknown_2026E58: /* 2026E58 (sub_80057E8 - sub_80060EC) */ - .space 0x8 -gUnknown_2026E60: /* 2026E60 (sub_8005838) */ - .space 0x288 -gUnknown_20270E8: /* 20270E8 (sub_8005838) */ - .space 0x288 - + .include "src/code_800558C.o" .include "src/text.o" @@ -128,15 +100,7 @@ gUnknown_202DE19: /* 202DE19 (sub_800F990 - sub_8010014) */ .space 4 .include "src/string_format.o" .space 4 - - -gUnknown_202EC38: /* 202EC38 (sub_8037B28) */ - .space 0x8 -gUnknown_202EC40: /* 202EC40 (sub_8037A48 - sub_8037C10) */ - .space 0x8 -gUnknown_202EC48: /* 202EC48 (sub_8037D64) */ - .space 0x4 - + .include "src/other_menus2.o" .include "src/rescue_password_menu.o" .space 0x2 @@ -258,14 +222,10 @@ gUnknown_202F32D: /* 202F32D (sub_8072CF4 - UseAttack) */ .space 0x3 .include "src/dungeon_ai_items.o" - -gUnknown_202F378: /* 202F378 (sub_8074FB0 - UseAttack) */ - .space 0x8 - + .include "src/code_8073CF0.o" + .space 0x4 .include "src/dungeon_ai_attack.o" - -gUnknown_202F3D0: /* 202F3D0 (sub_80867F4 - sub_8086854) */ - .space 0x8 + .include "src/code_80869E4.o" gUnknown_202F3D8: /* 202F3D8 (sub_8085B4C - sub_8085B80) */ .space 0x8 @@ -289,12 +249,8 @@ gUnknown_202F3D8: /* 202F3D8 (sub_8085B4C - sub_8085B80) */ .include "src/exclusive_pokemon.o" .space 0x4 .include "src/ground_main.o" - .space 0x2 -gUnknown_20398C8: /* 20398C8 (sub_80991E0 - sub_809927C) */ - .space 0x88 /* This should be a "struct WonderMailStruct_203B2C0_sub", at least I think so due to its size. Kermalis */ -gUnknown_2039950: /* 2039950 (xxx_script_related_8098468 - sub_809927C) */ - .space 0x8 + .space 0x7 gUnknown_2039958: /* 2039958 (sub_809977C - sub_8099BE4) */ .space 0x10 diff --git a/sym_iwram.txt b/sym_iwram.txt index 5c61b39d2..908f47ef4 100644 --- a/sym_iwram.txt +++ b/sym_iwram.txt @@ -6,13 +6,7 @@ gUnknown_3000400: /* 3000400 */ gUnknown_3000C00: /* 3000C00 */ .space 0x294 -gUnknown_3000E94: /* 3000E94 */ - .space 0x144 - +.include "src/text.o" .include "src/music.o" - -gUnknown_3001018: /* 3001018 */ - .space 0x180 - +.include "src/code_803E724.o" .include "src/code_8094D28.o" - From 37e5bd599de3f03ed96bd0888de0c9462257c072 Mon Sep 17 00:00:00 2001 From: DizzyEggg Date: Tue, 25 Feb 2025 10:55:07 +0100 Subject: [PATCH 31/40] Move gFontPalette to EWRAM --- asm/code_803D110.s | 2 +- asm/code_8040094.s | 2 +- asm/code_8099360.s | 6 +++--- include/code_8009804.h | 2 ++ include/structs/rgb.h | 5 ----- src/code_8009804.c | 22 +++++++++++----------- src/code_803D110.c | 5 ++--- src/code_803E724.c | 35 ++++++++++++++++------------------- src/dungeon_message.c | 8 ++++---- sym_ewram.txt | 35 +---------------------------------- 10 files changed, 41 insertions(+), 81 deletions(-) diff --git a/asm/code_803D110.s b/asm/code_803D110.s index e081c6be1..c89b8b4ae 100644 --- a/asm/code_803D110.s +++ b/asm/code_803D110.s @@ -250,5 +250,5 @@ _0803E458: .4byte gDungeon _0803E45C: .4byte 0x00018217 _0803E460: .4byte 0x00018218 _0803E464: .4byte gDungeonBrightness -_0803E468: .4byte gUnknown_202D058 +_0803E468: .4byte gFontPalette + 0x20 thumb_func_end sub_803E250 diff --git a/asm/code_8040094.s b/asm/code_8040094.s index b728bf652..48176725e 100644 --- a/asm/code_8040094.s +++ b/asm/code_8040094.s @@ -150,7 +150,7 @@ _08040256: .align 2, 0 _0804026C: .4byte gUnknown_202EE04 _08040270: .4byte gUnknown_202EE01 -_08040274: .4byte gUnknown_202D03C +_08040274: .4byte gFontPalette + 0x4 _08040278: adds r5, r6, 0 adds r5, 0xE0 diff --git a/asm/code_8099360.s b/asm/code_8099360.s index 3b4fdac75..5acfafb4a 100644 --- a/asm/code_8099360.s +++ b/asm/code_8099360.s @@ -31,12 +31,12 @@ sub_8099690: _080996BC: .4byte gUnknown_8116028 _080996C0: .4byte gSystemFileArchive _080996C4: .4byte gGameOptionsRef -_080996C8: .4byte gFontPaletteAlt +_080996C8: .4byte gFontPalette + 0x40 _080996CC: ldr r4, _080996D0 b _080996D6 .align 2, 0 -_080996D0: .4byte gUnknown_202D1B8 +_080996D0: .4byte gFontPalette + 0x180 _080996D4: ldr r4, _08099704 _080996D6: @@ -61,7 +61,7 @@ _080996E4: pop {r0} bx r0 .align 2, 0 -_08099704: .4byte gUnknown_202D1F8 +_08099704: .4byte gFontPalette + 0x1C0 thumb_func_end sub_8099690 thumb_func_start sub_8099708 diff --git a/include/code_8009804.h b/include/code_8009804.h index 4441c6abb..b388eb0ee 100644 --- a/include/code_8009804.h +++ b/include/code_8009804.h @@ -3,6 +3,8 @@ #include "structs/rgb.h" +extern RGB gFontPalette[128]; + // size: 0xC struct unkStruct_202D240 { diff --git a/include/structs/rgb.h b/include/structs/rgb.h index 8bdd6058f..b4c9ad9f3 100644 --- a/include/structs/rgb.h +++ b/include/structs/rgb.h @@ -8,9 +8,4 @@ typedef struct RGB u8 b; } RGB; -typedef struct Palette32 -{ - RGB pal[16]; -} Palette32; - #endif // GUARD_RGB_H diff --git a/src/code_8009804.c b/src/code_8009804.c index 92fb68549..0ba651473 100644 --- a/src/code_8009804.c +++ b/src/code_8009804.c @@ -8,11 +8,11 @@ extern const u8 gUnknown_80B88CC[]; extern const struct FileArchive gSystemFileArchive; // 8300500 -extern Palette32 gFontPalette[8]; -extern u8 gUnknown_202D238[4]; -extern s32 gUnknown_202D23C; -extern u32 gUnknown_202D2A0; -extern struct unkStruct_202D240 gUnknown_202D240[8]; +EWRAM_DATA RGB gFontPalette[128] = {0}; +EWRAM_DATA static u8 gUnknown_202D238[4] = {0}; +EWRAM_DATA static s32 gUnknown_202D23C = 0; +EWRAM_DATA static struct unkStruct_202D240 gUnknown_202D240[8] = {0}; +EWRAM_DATA u32 gUnknown_202D2A0 = 0; typedef struct Palette256 { @@ -45,9 +45,9 @@ void InitFontPalette(void) CpuCopy(gFontPalette, fontpalFile->data, sizeof(gFontPalette)); if (sub_80063B0() == 1) - ptr = gFontPalette[0].pal; + ptr = &gFontPalette[0]; else - ptr = gFontPalette[1].pal; + ptr = &gFontPalette[16]; for (i = 0; i < 16; ptr++, i++) SetBGPaletteBufferColorArray(i + 240, ptr); @@ -64,11 +64,11 @@ void vram_related_8009804(void) for (i = 0; i < 0x13C0; i++) *dest++ = 0; - dest = (u32 *)0x06007000; + dest = (u32 *)(VRAM + 0x7000); for (i = 0; i < 0x400; i++) *dest++ = 0; - dest = (u32 *)0x06008000; + dest = (u32 *)(VRAM + 0x8000); for (i = 0; i < 0x2000; i++) *dest++ = 0; @@ -85,7 +85,7 @@ void vram_related_8009804(void) *dest++ = 0; dest = (u32 *)OAM; - for (i = 0; i < 256; i++) + for (i = 0; i < OAM_SIZE / 4; i++) *dest++ = 0xA000A0; // TODO: Macro or explanation } @@ -150,7 +150,7 @@ void SetFontsBaseColor(RGB a0) s32 i; for (i = 0; i < 8; i++) - gFontPalette[i].pal[1] = a0; + gFontPalette[16 * i + 1] = a0; } UNUSED static void sub_8009A10(struct unkStruct_8009A1C_ptr *a0, u32 palId, u32 vramDstOffset, u32 r3) diff --git a/src/code_803D110.c b/src/code_803D110.c index 6bfc465d5..fd8fb1efa 100644 --- a/src/code_803D110.c +++ b/src/code_803D110.c @@ -39,7 +39,6 @@ extern OpenedFile *gUnknown_202EC98; extern OpenedFile *gUnknown_202EC94; extern s32 gDungeonNameBannerFont; extern u8 gUnknown_20274A5; -extern Palette32 gFontPalette[8]; struct UnkDungeonFileData { @@ -774,9 +773,9 @@ void sub_803E13C(void) SetWindowBGColor(); if (gGameOptionsRef->playerGender != 0) - pal = gFontPalette[4].pal; + pal = &gFontPalette[16 * 4]; else - pal = gFontPalette[0].pal; + pal = &gFontPalette[0]; for (i = 0; i < 16; i++) { SetBGPaletteBufferColorArray(240 + i, pal); diff --git a/src/code_803E724.c b/src/code_803E724.c index 25eac700c..ff2d84e7f 100644 --- a/src/code_803E724.c +++ b/src/code_803E724.c @@ -39,7 +39,6 @@ extern struct DungeonPalFile *gDungeonPaletteFile; extern struct DungeonPalFile *gDungeonNameBannerPalette; extern struct DungeonPalFile *gUnknown_202EC94; extern RGB gUnknown_202ECA4[]; -extern RGB gUnknown_202D058; extern u8 gUnknown_203B40C; extern MenuInputStruct gUnknown_202EE10; extern SpriteOAM gUnknown_202EDDC; @@ -58,8 +57,6 @@ extern const u16 gUnknown_80F6544[][9]; extern u8 gUnknown_20274A5; -extern Palette32 gFontPalette[8]; - extern s32 gUnknown_202EDCC; extern void sub_8040A84(); @@ -119,7 +116,7 @@ void sub_803E874(bool8 r10, s32 r9) } } - SetBGPaletteBufferColorRGB(248, &gUnknown_202D058, gDungeonBrightness, NULL); + SetBGPaletteBufferColorRGB(248, &gFontPalette[8], gDungeonBrightness, NULL); color = ((struct DungeonPalFile*) gDungeon->paletFile)->unk4; index = 256; @@ -176,7 +173,7 @@ void sub_803EA10(void) index++; } - SetBGPaletteBufferColorRGB(248, &gUnknown_202D058, gDungeonBrightness, NULL); + SetBGPaletteBufferColorRGB(248, &gFontPalette[8], gDungeonBrightness, NULL); } void sub_803EAF0(u32 a0, u8 *a1) @@ -858,13 +855,13 @@ void sub_803F38C(void) palId = (gGameOptionsRef->playerGender != MALE) ? 4 : 0; - SetBGPaletteBufferColorArray(0xFD, &gFontPalette[palId].pal[13]); - SetBGPaletteBufferColorArray(0xFE, &gFontPalette[palId].pal[14]); - SetBGPaletteBufferColorArray(0xFF, &gFontPalette[palId].pal[15]); + SetBGPaletteBufferColorArray(0xFD, &gFontPalette[16 * palId + 13]); + SetBGPaletteBufferColorArray(0xFE, &gFontPalette[16 * palId + 14]); + SetBGPaletteBufferColorArray(0xFF, &gFontPalette[16 * palId + 15]); - nullsub_5(0xFD, &gFontPalette[palId].pal[13]); - nullsub_5(0xFE, &gFontPalette[palId].pal[14]); - nullsub_5(0xFF, &gFontPalette[palId].pal[15]); + nullsub_5(0xFD, &gFontPalette[16 * palId + 13]); + nullsub_5(0xFE, &gFontPalette[16 * palId + 14]); + nullsub_5(0xFF, &gFontPalette[16 * palId + 15]); } bool8 sub_803F428(DungeonPos *pos) @@ -1268,18 +1265,18 @@ void sub_803FB74(void) if (strPtr->unk36 != r5) { strPtr->unk36 = r5; - SetBGPaletteBufferColorArray(0xFC, &gFontPalette[0].pal[12 + r5]); - SetBGPaletteBufferColorArray(0xFD, &gFontPalette[0].pal[13 + r5]); - SetBGPaletteBufferColorArray(0xFE, &gFontPalette[0].pal[14 + r5]); - SetBGPaletteBufferColorArray(0xFF, &gFontPalette[0].pal[15 + r5]); + SetBGPaletteBufferColorArray(0xFC, &gFontPalette[12 + r5]); + SetBGPaletteBufferColorArray(0xFD, &gFontPalette[13 + r5]); + SetBGPaletteBufferColorArray(0xFE, &gFontPalette[14 + r5]); + SetBGPaletteBufferColorArray(0xFF, &gFontPalette[15 + r5]); } if (strPtr->unk38 != r6) { strPtr->unk38 = r6; - nullsub_5(0xFC, &gFontPalette[0].pal[12 + r6]); - nullsub_5(0xFD, &gFontPalette[0].pal[13 + r6]); - nullsub_5(0xFE, &gFontPalette[0].pal[14 + r6]); - nullsub_5(0xFF, &gFontPalette[0].pal[15 + r6]); + nullsub_5(0xFC, &gFontPalette[12 + r6]); + nullsub_5(0xFD, &gFontPalette[13 + r6]); + nullsub_5(0xFE, &gFontPalette[14 + r6]); + nullsub_5(0xFF, &gFontPalette[15 + r6]); } arrPtr = gUnknown_202B038[0][0]; diff --git a/src/dungeon_message.c b/src/dungeon_message.c index a6e0362ff..0571134ee 100644 --- a/src/dungeon_message.c +++ b/src/dungeon_message.c @@ -4,6 +4,7 @@ #include "structs/dungeon_entity.h" #include "code_803E46C.h" #include "code_803E724.h" +#include "code_8009804.h" #include "string_format.h" #include "code_800E9E4.h" #include "menu_input.h" @@ -45,7 +46,6 @@ extern u32 gUnknown_202EDD0; extern u8 gUnknown_203B40C; extern u8 gUnknown_202EE01; extern s32 gUnknown_202EDCC; -extern Palette32 gFontPalette[]; extern const u8 gUnknown_80F7AE8[]; extern const u8 gUnknown_80F7AF8[]; @@ -746,7 +746,7 @@ void sub_8052FB8(const u8 *str) if (r8 < 62) { r8++; for (j = 0; j < 8; j++) { - SetBGPaletteBufferColorRGB(240 + j, &gFontPalette[0].pal[j], r8 / 2, NULL); + SetBGPaletteBufferColorRGB(240 + j, &gFontPalette[j], r8 / 2, NULL); } } else { @@ -777,7 +777,7 @@ void sub_8052FB8(const u8 *str) while (r8 >= 0) { for (j = 0; j < 8; j++) { - SetBGPaletteBufferColorRGB(240 + j, &gFontPalette[0].pal[j], r8 / 2, NULL); + SetBGPaletteBufferColorRGB(240 + j, &gFontPalette[j], r8 / 2, NULL); } DrawDialogueBoxString(); sub_803E46C(9); @@ -788,7 +788,7 @@ void sub_8052FB8(const u8 *str) sub_803E46C(9); sub_8040238(); for (j = 0; j < 8; j++) { - SetBGPaletteBufferColorArray(240 + j, &gFontPalette[0].pal[j]); + SetBGPaletteBufferColorArray(240 + j, &gFontPalette[j]); } sub_803E708(8, 9); } diff --git a/sym_ewram.txt b/sym_ewram.txt index 4bf8e7c54..0622cfebf 100644 --- a/sym_ewram.txt +++ b/sym_ewram.txt @@ -10,40 +10,7 @@ .include "src/sprite.o" .include "src/code_800558C.o" .include "src/text.o" - - -gFontPalette: /* 202D038 (sub_80097B0 - sub_8052FB8) */ - .space 0x4 - -gUnknown_202D03C: /* 202D03C (sub_8040238) */ - .space 0x1C -gUnknown_202D058: /* 202D058 (sub_803E250 - sub_803EA10) */ - .space 0x10 -gUnknown_202D068: /* 202D068 (sub_803FB74) */ - .space 0x4 -gUnknown_202D06C: /* 202D06C (sub_803F38C) */ - .space 0xC - -gFontPaletteAlt: /* 202D078 (sub_8099690) */ - .space 0x20 - -gUnknown_202D098: /* 202D098 (xxx_format_string) */ - .space 0x120 - -gUnknown_202D1B8: /* 202D1B8 (sub_8099690) */ - .space 0x40 -gUnknown_202D1F8: /* 202D1F8 (sub_8099690) */ - .space 0x40 - -gUnknown_202D238: /* 202D238 (sub_80098A0 - sub_8009908) */ - .space 0x4 -gUnknown_202D23C: /* 202D23C (sub_80098A0 - sub_8009908) */ - .space 0x4 -gUnknown_202D240: /* 202D240 (sub_80098BC - sub_8009908) */ - .space 0x60 -gUnknown_202D2A0: /* 202D2A0 (sub_8009A1C - sub_8009BE4) */ - .space 0x4 - + .include "src/code_8009804.o" .include "src/file_system.o" .include "src/decompress.o" .include "src/main.o" From 5518ecb8ab8eafc252829135e900e5c4aa91838a Mon Sep 17 00:00:00 2001 From: DizzyEggg Date: Tue, 25 Feb 2025 11:19:28 +0100 Subject: [PATCH 32/40] Match sub_8023758 and sub_80237E0 --- include/code_8023144.h | 4 +- src/code_8023144.c | 176 +++++++---------------------------------- 2 files changed, 31 insertions(+), 149 deletions(-) diff --git a/include/code_8023144.h b/include/code_8023144.h index 62b93bb71..43530a5c8 100644 --- a/include/code_8023144.h +++ b/include/code_8023144.h @@ -11,9 +11,7 @@ typedef struct unkStruct_3001B5C u8 unk0; u32 unk4; s32 unk8; - s16 unkC[2]; - u32 unk10; - u8 fill14[0x354 - 0x14]; + s16 unkC[420]; u8 unk354; u8 fill355[0x35C - 0x355]; /* 0x35C */ struct_Sub80095E4_2 s35C; diff --git a/src/code_8023144.c b/src/code_8023144.c index 6be4b4f7d..aadfb6af1 100644 --- a/src/code_8023144.c +++ b/src/code_8023144.c @@ -235,154 +235,38 @@ static void sub_8023730(void) } } -// 41.34%. Similar to SortbyAlphabetNo: https://decomp.me/scratch/Wmgj6 -NAKED static void sub_8023758(void) +void sub_8023758(void) { - asm_unified( - "\tpush {r4-r7,lr}\n" - "\tmov r7, r9\n" - "\tmov r6, r8\n" - "\tpush {r6,r7}\n" - "\tsub sp, 0x4\n" - "\tldr r3, _080237DC\n" - "\tldr r2, [r3]\n" - "\tldr r1, [r2, 0x8]\n" - "\tlsls r0, r1, 1\n" - "\tadds r0, 0xA\n" - "\tadds r2, r0\n" - "\tmov r9, r2\n" - "\tmovs r2, 0\n" - "\tsubs r1, 0x1\n" - "\tcmp r2, r1\n" - "\tbge _080237CC\n" -"_08023778:\n" - "\tmov r5, r9\n" - "\tldr r0, [r3]\n" - "\tldr r0, [r0, 0x8]\n" - "\tsubs r7, r0, 0x1\n" - "\tadds r0, r2, 0x1\n" - "\tmov r8, r0\n" - "\tcmp r7, r2\n" - "\tble _080237BE\n" -"_08023788:\n" - "\tsubs r6, r5, 0x2\n" - "\tmovs r1, 0\n" - "\tldrsh r0, [r6, r1]\n" - "\tmovs r1, 0x1\n" - "\tstr r2, [sp]\n" - "\tbl GetAlphabetParentNo\n" - "\tadds r4, r0, 0\n" - "\tmovs r1, 0\n" - "\tldrsh r0, [r5, r1]\n" - "\tmovs r1, 0x1\n" - "\tbl GetAlphabetParentNo\n" - "\tlsls r4, 16\n" - "\tlsls r0, 16\n" - "\tldr r2, [sp]\n" - "\tcmp r4, r0\n" - "\tble _080237B6\n" - "\tmovs r0, 0\n" - "\tldrsh r1, [r5, r0]\n" - "\tldrh r0, [r6]\n" - "\tstrh r0, [r5]\n" - "\tstrh r1, [r6]\n" -"_080237B6:\n" - "\tadds r5, r6, 0\n" - "\tsubs r7, 0x1\n" - "\tcmp r7, r2\n" - "\tbgt _08023788\n" -"_080237BE:\n" - "\tmov r2, r8\n" - "\tldr r3, _080237DC\n" - "\tldr r0, [r3]\n" - "\tldr r0, [r0, 0x8]\n" - "\tsubs r0, 0x1\n" - "\tcmp r2, r0\n" - "\tblt _08023778\n" -"_080237CC:\n" - "\tadd sp, 0x4\n" - "\tpop {r3,r4}\n" - "\tmov r8, r3\n" - "\tmov r9, r4\n" - "\tpop {r4-r7}\n" - "\tpop {r0}\n" - "\tbx r0\n" - "\t.align 2, 0\n" -"_080237DC: .4byte gUnknown_3001B5C"); + s32 temp; + s32 i, j; + s16 *r9 = &gUnknown_3001B5C->unkC[gUnknown_3001B5C->unk8 - 1]; + + for (i = 0; i < gUnknown_3001B5C->unk8 - 1; i++) { + s16 *r5 = r9; + for (j = gUnknown_3001B5C->unk8 - 1; j > i; j--) { + s16 *r6 = r5 - 1; + if (GetAlphabetParentNo(*r6, 1) > GetAlphabetParentNo(*r5, 1)) { + SWAP(*r5, *r6, temp); + } + r5--; + } + } } - // SIMILAR TO ABOVE: https://decomp.me/scratch/BG2JR -NAKED static void sub_80237E0(void) +void sub_80237E0(void) { - asm_unified( - "\tpush {r4-r7,lr}\n" - "\tmov r7, r9\n" - "\tmov r6, r8\n" - "\tpush {r6,r7}\n" - "\tsub sp, 0x4\n" - "\tldr r3, _08023864\n" - "\tldr r2, [r3]\n" - "\tldr r1, [r2, 0x8]\n" - "\tlsls r0, r1, 1\n" - "\tadds r0, 0xA\n" - "\tadds r2, r0\n" - "\tmov r9, r2\n" - "\tmovs r2, 0\n" - "\tsubs r1, 0x1\n" - "\tcmp r2, r1\n" - "\tbge _08023854\n" -"_08023800:\n" - "\tmov r5, r9\n" - "\tldr r0, [r3]\n" - "\tldr r0, [r0, 0x8]\n" - "\tsubs r7, r0, 0x1\n" - "\tadds r0, r2, 0x1\n" - "\tmov r8, r0\n" - "\tcmp r7, r2\n" - "\tble _08023846\n" -"_08023810:\n" - "\tsubs r6, r5, 0x2\n" - "\tmovs r1, 0\n" - "\tldrsh r0, [r6, r1]\n" - "\tmovs r1, 0\n" - "\tstr r2, [sp]\n" - "\tbl GetAlphabetParentNo\n" - "\tadds r4, r0, 0\n" - "\tmovs r1, 0\n" - "\tldrsh r0, [r5, r1]\n" - "\tmovs r1, 0\n" - "\tbl GetAlphabetParentNo\n" - "\tlsls r4, 16\n" - "\tlsls r0, 16\n" - "\tldr r2, [sp]\n" - "\tcmp r4, r0\n" - "\tble _0802383E\n" - "\tmovs r0, 0\n" - "\tldrsh r1, [r5, r0]\n" - "\tldrh r0, [r6]\n" - "\tstrh r0, [r5]\n" - "\tstrh r1, [r6]\n" -"_0802383E:\n" - "\tadds r5, r6, 0\n" - "\tsubs r7, 0x1\n" - "\tcmp r7, r2\n" - "\tbgt _08023810\n" -"_08023846:\n" - "\tmov r2, r8\n" - "\tldr r3, _08023864\n" - "\tldr r0, [r3]\n" - "\tldr r0, [r0, 0x8]\n" - "\tsubs r0, 0x1\n" - "\tcmp r2, r0\n" - "\tblt _08023800\n" -"_08023854:\n" - "\tadd sp, 0x4\n" - "\tpop {r3,r4}\n" - "\tmov r8, r3\n" - "\tmov r9, r4\n" - "\tpop {r4-r7}\n" - "\tpop {r0}\n" - "\tbx r0\n" - "\t.align 2, 0\n" -"_08023864: .4byte gUnknown_3001B5C"); + s32 temp; + s32 i, j; + s16 *r9 = &gUnknown_3001B5C->unkC[gUnknown_3001B5C->unk8 - 1]; + + for (i = 0; i < gUnknown_3001B5C->unk8 - 1; i++) { + s16 *r5 = r9; + for (j = gUnknown_3001B5C->unk8 - 1; j > i; j--) { + s16 *r6 = r5 - 1; + if (GetAlphabetParentNo(*r6, 0) > GetAlphabetParentNo(*r5, 0)) { + SWAP(*r5, *r6, temp); + } + r5--; + } + } } From 83590c78dc89a27ffbc690b266c04ff9330b7371 Mon Sep 17 00:00:00 2001 From: DizzyEggg Date: Tue, 25 Feb 2025 11:49:52 +0100 Subject: [PATCH 33/40] Match MoltresScreenFlash functions and sub_80861F8 --- src/code_80861A8.c | 80 ++++++++--------- src/dungeon_cutscenes.c | 192 +++++++++------------------------------- 2 files changed, 82 insertions(+), 190 deletions(-) diff --git a/src/code_80861A8.c b/src/code_80861A8.c index d360926f4..69fc275d7 100644 --- a/src/code_80861A8.c +++ b/src/code_80861A8.c @@ -23,7 +23,7 @@ void sub_800EF64(); void sub_803E46C(s32); s32 sub_800E700(s32); void sub_800569C(DungeonPos *, axdata *, u8); -void sub_8085F44(void); +void sub_8085F44(s32); void sub_8052FB8(const u8 *); @@ -74,50 +74,46 @@ void sub_80861EC(Entity *a0) GetEntInfo(a0)->unkFE = 0x63; } -s32 sub_80861F8(s16 param_1,Entity *param_2,bool32 param_3) +s32 sub_80861F8(s32 param_1,Entity *param_2,bool32 param_3) { - EntityInfo *info; - s32 uVar2; - s32 uStack_38; - DungeonPos pos; - unkStruct_80416E0 stack; - unkStruct_2039DB0 stack1C; + EntityInfo *info; + s32 uVar2; + s32 uStack_38; + DungeonPos pos; + unkStruct_80416E0 stack; + unkStruct_2039DB0 stack1C; -#ifdef NONMATCHING - s32 param_1_s32 = param_1; -#else - register s32 param_1_s32 asm("r5") = param_1; -#endif + // Needed to match. + s32 param_1Copy2 = (s16) param_1; + s32 param_1Copy = param_1Copy2; + u8 param_3_bool32 = param_3; - u8 param_3_bool32 = param_3; + sub_800EE5C(param_1Copy2); + sub_800EF64(); + sub_803E46C(0x46); + info = GetEntInfo(param_2); + pos.x = 0; + pos.y = 0; + uStack_38 = sub_800E700(param_1Copy); + if (uStack_38 != -1) { + sub_800569C(&pos,¶m_2->axObj.axdata,uStack_38); + } + stack.unk0 = param_1Copy; + stack.unk4 = 0; + stack.dir = info->action.direction; + stack.x = (param_2->pixelPos).x / 256; + stack.y = (param_2->pixelPos).y / 256; - sub_800EE5C(param_1); - sub_800EF64(); - sub_803E46C(0x46); - info = GetEntInfo(param_2); - pos.x = 0; - pos.y = 0; - uStack_38 = sub_800E700(param_1_s32); - if (uStack_38 != -1) { - sub_800569C(&pos,¶m_2->axObj.axdata, - uStack_38); - } - stack.unk0 = param_1_s32; - stack.unk4 = 0; - stack.dir = (u32)(info->action).direction; - stack.x = (param_2->pixelPos).x / 256; - stack.y = (param_2->pixelPos).y / 256; + stack.unk10 = pos.x; + stack.unk12 = pos.y; + stack.unk14 = uStack_38; + stack.unk18 = 0xffff; + stack1C = gUnknown_8107380; - stack.unk10 = pos.x; - stack.unk12 = pos.y; - stack.unk14 = uStack_38; - stack.unk18 = 0xffff; - stack1C = gUnknown_8107380; - - uVar2 = sub_800E890(&stack); - if (param_3_bool32 != '\0') { - sub_8085F44(); - uVar2 = -1; - } - return uVar2; + uVar2 = sub_800E890(&stack); + if (param_3_bool32) { + sub_8085F44(uVar2); + uVar2 = -1; + } + return uVar2; } diff --git a/src/dungeon_cutscenes.c b/src/dungeon_cutscenes.c index 87fa3e788..0760645f4 100644 --- a/src/dungeon_cutscenes.c +++ b/src/dungeon_cutscenes.c @@ -395,6 +395,7 @@ extern void sub_80460F8(DungeonPos *, Item *, u8); extern u8 sub_8044B28(void); extern bool8 sub_8085B80(struct_8085B80 *); +void sub_8085F44(s32); void sub_808BBA8(Entity * ); void DeoxysScreenFlash(void); void sub_8086A54(Entity *); @@ -1264,158 +1265,53 @@ void MoltresDropInEffect(Entity * moltresEntity) } } -NAKED -void MoltresScreenFlash1(s32 r0, s32 r1) +void MoltresScreenFlash1(s32 xArg, s32 yArg) { - asm_unified("\tpush {lr}\n" - "\tsub sp, 0x8\n" - "\tadds r3, r1, 0\n" - "\tlsls r1, r0, 1\n" - "\tadds r1, r0\n" - "\tlsls r1, 11\n" - "\tmovs r2, 0xC0\n" - "\tlsls r2, 4\n" - "\tadds r0, r1, r2\n" - "\tcmp r0, 0\n" - "\tbge _08087D98\n" - "\tadds r0, 0xFF\n" -"_08087D98:\n" - "\tlsls r0, 8\n" - "\tlsrs r0, 16\n" - "\tldr r1, _08087DE0\n" - "\tldr r2, [sp, 0x4]\n" - "\tands r2, r1\n" - "\torrs r2, r0\n" - "\tstr r2, [sp, 0x4]\n" - "\tlsls r0, r3, 1\n" - "\tadds r0, r3\n" - "\tlsls r0, 11\n" - "\tmovs r1, 0x80\n" - "\tlsls r1, 5\n" - "\tadds r0, r1\n" - "\tcmp r0, 0\n" - "\tbge _08087DB8\n" - "\tadds r0, 0xFF\n" -"_08087DB8:\n" - "\tlsls r0, 8\n" - "\tlsrs r0, 16\n" - "\tlsls r0, 16\n" - "\tldr r1, _08087DE4\n" - "\tands r2, r1\n" - "\torrs r2, r0\n" - "\tstr r2, [sp, 0x4]\n" - "\tmovs r0, 0xB9\n" - "\tlsls r0, 1\n" - "\tmovs r1, 0\n" - "\tstr r1, [sp]\n" - "\tmovs r1, 0x10\n" - "\tmovs r2, 0\n" - "\tadd r3, sp, 0x4\n" - "\tbl sub_8085EC8\n" - "\tadd sp, 0x8\n" - "\tpop {r0}\n" - "\tbx r0\n" - "\t.align 2, 0\n" -"_08087DE0: .4byte 0xffff0000\n" -"_08087DE4: .4byte 0x0000ffff"); + s32 x, y; + DungeonPos newPos; + + x = (xArg * 3) << 11; + x += 0xC00; + newPos.x = x / 256; + + y = (yArg * 3) << 11; + y += 0x1000; + newPos.y = y / 256; + + sub_8085EC8(370,16,0,&newPos,0); } -NAKED -void MoltresScreenFlash2(s32 r0, s32 r1) +void MoltresScreenFlash2(s32 xArg, s32 yArg) { - asm_unified("\tpush {r4-r6,lr}\n" - "\tsub sp, 0x8\n" - "\tadds r3, r1, 0\n" - "\tlsls r1, r0, 1\n" - "\tadds r1, r0\n" - "\tlsls r1, 11\n" - "\tmovs r2, 0xC0\n" - "\tlsls r2, 4\n" - "\tadds r0, r1, r2\n" - "\tcmp r0, 0\n" - "\tbge _08087E00\n" - "\tadds r0, 0xFF\n" -"_08087E00:\n" - "\tlsls r0, 8\n" - "\tlsrs r0, 16\n" - "\tldr r1, _08087EA8\n" - "\tldr r2, [sp, 0x4]\n" - "\tands r2, r1\n" - "\torrs r2, r0\n" - "\tstr r2, [sp, 0x4]\n" - "\tlsls r0, r3, 1\n" - "\tadds r0, r3\n" - "\tlsls r0, 11\n" - "\tmovs r1, 0x80\n" - "\tlsls r1, 5\n" - "\tadds r0, r1\n" - "\tcmp r0, 0\n" - "\tbge _08087E20\n" - "\tadds r0, 0xFF\n" -"_08087E20:\n" - "\tlsls r0, 8\n" - "\tlsrs r0, 16\n" - "\tlsls r0, 16\n" - "\tldr r1, _08087EAC\n" - "\tands r2, r1\n" - "\torrs r2, r0\n" - "\tstr r2, [sp, 0x4]\n" - "\tmovs r0, 0xB9\n" - "\tlsls r0, 1\n" - "\tmovs r1, 0\n" - "\tstr r1, [sp]\n" - "\tmovs r1, 0x16\n" - "\tmovs r2, 0\n" - "\tadd r3, sp, 0x4\n" - "\tbl sub_8085EC8\n" - "\tadds r6, r0, 0\n" - "\tmovs r0, 0xF6\n" - "\tlsls r0, 1\n" - "\tbl PlaySoundEffect\n" - "\tmovs r4, 0xFA\n" - "\tmovs r5, 0x1\n" -"_08087E4E:\n" - "\tstr r5, [sp]\n" - "\tadds r0, r4, 0\n" - "\tmovs r1, 0\n" - "\tmovs r2, 0\n" - "\tmovs r3, 0x1\n" - "\tbl SetDungeonBGColorRGB\n" - "\tmovs r0, 0x46\n" - "\tbl sub_803E46C\n" - "\tsubs r4, 0xA\n" - "\tcmp r4, 0x13\n" - "\tbgt _08087E4E\n" - "\tmovs r0, 0xA\n" - "\tmovs r1, 0x46\n" - "\tbl sub_803E708\n" - "\tmovs r4, 0xFA\n" - "\tmovs r5, 0x1\n" -"_08087E74:\n" - "\tstr r5, [sp]\n" - "\tadds r0, r4, 0\n" - "\tmovs r1, 0\n" - "\tmovs r2, 0\n" - "\tmovs r3, 0x1\n" - "\tbl SetDungeonBGColorRGB\n" - "\tmovs r0, 0x46\n" - "\tbl sub_803E46C\n" - "\tsubs r4, 0xA\n" - "\tcmp r4, 0\n" - "\tbge _08087E74\n" - "\tmovs r0, 0xA\n" - "\tmovs r1, 0x46\n" - "\tbl sub_803E708\n" - "\tbl sub_8085EB0\n" - "\tadds r0, r6, 0\n" - "\tbl sub_8085F44\n" - "\tadd sp, 0x8\n" - "\tpop {r4-r6}\n" - "\tpop {r0}\n" - "\tbx r0\n" - "\t.align 2, 0\n" -"_08087EA8: .4byte 0xffff0000\n" -"_08087EAC: .4byte 0x0000ffff"); + s32 r6; + s32 i, x, y; + DungeonPos newPos; + + x = (xArg * 3) << 11; + x += 0xC00; + newPos.x = x / 256; + + y = (yArg * 3) << 11; + y += 0x1000; + newPos.y = y / 256; + + r6 = sub_8085EC8(370,22,0,&newPos,0); + PlaySoundEffect(0x1EC); + + for (i = 250; i >= 20; i -= 10) { + SetDungeonBGColorRGB(i, 0, 0, 1, 1); + sub_803E46C(0x46); + } + sub_803E708(0xA, 0x46); + + for (i = 250; i >= 0; i -= 10) { + SetDungeonBGColorRGB(i, 0, 0, 1, 1); + sub_803E46C(0x46); + } + sub_803E708(0xA, 0x46); + + sub_8085EB0(); + sub_8085F44(r6); } void MoltresScreenFlash3(void) From fd127911d0b278ab291ac731e596b92b957da75e Mon Sep 17 00:00:00 2001 From: DizzyEggg Date: Tue, 25 Feb 2025 14:29:43 +0100 Subject: [PATCH 34/40] Match sub_803DF60 and sub_803E02C --- data/data_80F59C8.s | 115 ------------- data/data_80F59C8_1.s | 83 +++++++++ include/structs/str_dungeon.h | 11 +- ld_script.txt | 2 + src/code_803D110.c | 311 +++++++++------------------------- src/dungeon_map_access.c | 40 ++--- 6 files changed, 189 insertions(+), 373 deletions(-) create mode 100644 data/data_80F59C8_1.s diff --git a/data/data_80F59C8.s b/data/data_80F59C8.s index 4bc061a0b..8afb78118 100644 --- a/data/data_80F59C8.s +++ b/data/data_80F59C8.s @@ -2,121 +2,6 @@ .section .rodata #.incbin "baserom.gba", 0xF59C4, 0x4 - - -.global gUnknown_80F5F70 -gUnknown_80F5F70: @ 80F5F70 -@ replacing .incbin "baserom.gba", 0xF5F70, 0x3C -.byte 0x0c, 0x00, 0x0c, 0x00, 0x0c, 0x00, 0x0c, 0x00, 0x0c, 0x00, 0x0d, 0x00, 0x0c, 0x00, 0x0c, 0x00 -.byte 0x0c, 0x00, 0x0c, 0x00, 0x0c, 0x00, 0x0c, 0x00, 0x0c, 0x00, 0x0c, 0x00, 0x0c, 0x00, 0x0c, 0x00 -.byte 0x0d, 0x00, 0x0d, 0x00, 0x0c, 0x00, 0x0c, 0x00, 0x0c, 0x00, 0x0c, 0x00, 0x0c, 0x00, 0x0c, 0x00 -.byte 0x0c, 0x00, 0x0c, 0x00, 0x0c, 0x00, 0x0d, 0x00, 0x0c, 0x00, 0x00, 0x00 - -.global gUnknown_80F5FAC -gUnknown_80F5FAC: @ 80F5FAC -@ replacing .incbin "baserom.gba", 0xF5FAC, 0x130 -.byte 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00 -.byte 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00 -.byte 0x03, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 -.byte 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00 -.byte 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00 -.byte 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 -.byte 0x01, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 -.byte 0x03, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00 -.byte 0x04, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00 -.byte 0x01, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00 -.byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 -.byte 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00 -.byte 0x02, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 -.byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00 -.byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00 -.byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 -.byte 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00 -.byte 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00 -.byte 0x01, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00 - -.global gUnknown_80F60DC -gUnknown_80F60DC: @ 80F60DC -@ replacing .incbin "baserom.gba", 0xF60DC, 0x1C -.byte 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00 -.byte 0x04, 0x00, 0x00, 0x00, 0x70, 0x6b, 0x73, 0x64, 0x69, 0x72, 0x30, 0x00 - -.global gUnknown_80F60F8 -gUnknown_80F60F8: @ 80F60F8 -@ replacing .incbin "baserom.gba", 0x000f60f8, 0x8 -.string "banrpal\0" - -.global gUnknown_80F6100 -gUnknown_80F6100: @ 80F6100 -@ replacing .incbin "baserom.gba", 0x000f6100, 0x8 -.string "banfont\0" - -.global gUnknown_80F6108 -gUnknown_80F6108: @ 80F6108 -@ replacing .incbin "baserom.gba", 0x000f6108, 0x4 -.byte 0x23, 0x00, 0x00, 0x00 - -.global gUnknown_80F610C -gUnknown_80F610C: @ 80F610C -@ replacing .incbin "baserom.gba", 0x000f610c, 0x4 -.byte 0x42, 0x00, 0x00, 0x00 - -.global gUnknown_80F6110 -gUnknown_80F6110: @ 80F6110 -@ replacing .incbin "baserom.gba", 0x000f6110, 0x8 -.string "%s%c%cF\0" - -.global gUnknown_80F6118 -gUnknown_80F6118: @ 80F6118 -@ replacing .incbin "baserom.gba", 0x000f6118, 0x8 -.string "%s%cF\0" -.align 2,0 - -.global gUnknown_80F6120 -gUnknown_80F6120: @ 80F6120 -@ replacing .incbin "baserom.gba", 0x000f6120, 0x88 -.byte 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0x0f, 0x00, 0x00, 0x00, 0xf0, 0x04, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00 -.byte 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0xff, 0x08, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0xff, 0xff, 0x0f, 0x00, 0x00, 0x00, 0xf0, 0xff, 0x0c, 0x00, 0x00, 0x00, 0x14, 0x00, 0x00, 0x00 -.byte 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x10, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0xff, 0x0f, 0x00, 0x00, 0x00, 0xf0, 0xff, 0xff, 0x14, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x00 -.byte 0xff, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0x18, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x00, 0x00, 0xf0, 0xff, 0xff, 0xff, 0x1c, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00 -.string "pksdir0\0" - -.global gUnknown_80F61A8 -gUnknown_80F61A8: @ 80F61A8 -@ replacing .incbin "baserom.gba", 0x000f61a8, 0x8 -.string "itempat\0" - -.global gUnknown_80F61B0 -gUnknown_80F61B0: @ 80F61B0 -@ replacing .incbin "baserom.gba", 0x000f61b0, 0x8 -.string "etcfont\0" - -.global gUnknown_80F61B8 -gUnknown_80F61B8: @ 80F61B8 -@ replacing .incbin "baserom.gba", 0x000f61b8, 0xc -.string "etcfonta\0" -.align 2,0 - -.global gUnknown_80F61C4 -gUnknown_80F61C4: @ 80F61C4 -@ replacing .incbin "baserom.gba", 0x000f61c4, 0x8 -.string "levfont\0" - -.global gUnknown_80F61CC -gUnknown_80F61CC: @ 80F61CC -@ replacing .incbin "baserom.gba", 0x000f61cc, 0x8 -.string "hp5font\0" - -.global gUnknown_80F61D4 -gUnknown_80F61D4: @ 80F61D4 -@ replacing .incbin "baserom.gba", 0x000f61d4, 0x8 -.string "colvec\0" -.align 2,0 - -.global gUnknown_80F61DC -gUnknown_80F61DC: @ 80F61DC -@ replacing .incbin "baserom.gba", 0x000f61dc, 0x10 -.string "trappat\0" .string "pksdir0\0" .global gUnknown_80F61EC diff --git a/data/data_80F59C8_1.s b/data/data_80F59C8_1.s new file mode 100644 index 000000000..fb53fe435 --- /dev/null +++ b/data/data_80F59C8_1.s @@ -0,0 +1,83 @@ +#include "constants/status.h" +.section .rodata +#.incbin "baserom.gba", 0xF59C4, 0x4 + + + +.global gUnknown_80F5F70 +gUnknown_80F5F70: @ 80F5F70 +@ replacing .incbin "baserom.gba", 0xF5F70, 0x3C +.byte 0x0c, 0x00, 0x0c, 0x00, 0x0c, 0x00, 0x0c, 0x00, 0x0c, 0x00, 0x0d, 0x00, 0x0c, 0x00, 0x0c, 0x00 +.byte 0x0c, 0x00, 0x0c, 0x00, 0x0c, 0x00, 0x0c, 0x00, 0x0c, 0x00, 0x0c, 0x00, 0x0c, 0x00, 0x0c, 0x00 +.byte 0x0d, 0x00, 0x0d, 0x00, 0x0c, 0x00, 0x0c, 0x00, 0x0c, 0x00, 0x0c, 0x00, 0x0c, 0x00, 0x0c, 0x00 +.byte 0x0c, 0x00, 0x0c, 0x00, 0x0c, 0x00, 0x0d, 0x00, 0x0c, 0x00, 0x00, 0x00 + +.global gUnknown_80F5FAC +gUnknown_80F5FAC: @ 80F5FAC +@ replacing .incbin "baserom.gba", 0xF5FAC, 0x130 +.byte 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00 +.byte 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00 +.byte 0x03, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 +.byte 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00 +.byte 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00 +.byte 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 +.byte 0x01, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 +.byte 0x03, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00 +.byte 0x04, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00 +.byte 0x01, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00 +.byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 +.byte 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00 +.byte 0x02, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 +.byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00 +.byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00 +.byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 +.byte 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00 +.byte 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00 +.byte 0x01, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00 + +.global gUnknown_80F60DC +gUnknown_80F60DC: @ 80F60DC +@ replacing .incbin "baserom.gba", 0xF60DC, 0x1C +.byte 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00 +.byte 0x04, 0x00, 0x00, 0x00, 0x70, 0x6b, 0x73, 0x64, 0x69, 0x72, 0x30, 0x00 + +.global gUnknown_80F60F8 +gUnknown_80F60F8: @ 80F60F8 +@ replacing .incbin "baserom.gba", 0x000f60f8, 0x8 +.string "banrpal\0" + +.global gUnknown_80F6100 +gUnknown_80F6100: @ 80F6100 +@ replacing .incbin "baserom.gba", 0x000f6100, 0x8 +.string "banfont\0" + +.global gUnknown_80F6108 +gUnknown_80F6108: @ 80F6108 +@ replacing .incbin "baserom.gba", 0x000f6108, 0x4 +.byte 0x23, 0x00, 0x00, 0x00 + +.global gUnknown_80F610C +gUnknown_80F610C: @ 80F610C +@ replacing .incbin "baserom.gba", 0x000f610c, 0x4 +.byte 0x42, 0x00, 0x00, 0x00 + +.global gUnknown_80F6110 +gUnknown_80F6110: @ 80F6110 +@ replacing .incbin "baserom.gba", 0x000f6110, 0x8 +.string "%s%c%cF\0" + +.global gUnknown_80F6118 +gUnknown_80F6118: @ 80F6118 +@ replacing .incbin "baserom.gba", 0x000f6118, 0x8 +.string "%s%cF\0" +.align 2,0 + +.global gUnknown_80F6120 +gUnknown_80F6120: @ 80F6120 +@ replacing .incbin "baserom.gba", 0x000f6120, 0x88 +.byte 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0x0f, 0x00, 0x00, 0x00, 0xf0, 0x04, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00 +.byte 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0xff, 0x08, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0xff, 0xff, 0x0f, 0x00, 0x00, 0x00, 0xf0, 0xff, 0x0c, 0x00, 0x00, 0x00, 0x14, 0x00, 0x00, 0x00 +.byte 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x10, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0xff, 0x0f, 0x00, 0x00, 0x00, 0xf0, 0xff, 0xff, 0x14, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x00 +.byte 0xff, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0x18, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x00, 0x00, 0xf0, 0xff, 0xff, 0xff, 0x1c, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00 +.string "pksdir0\0" + diff --git a/include/structs/str_dungeon.h b/include/structs/str_dungeon.h index 234960a92..c5e73164e 100644 --- a/include/structs/str_dungeon.h +++ b/include/structs/str_dungeon.h @@ -329,6 +329,8 @@ typedef struct unkDungeon57C } unkDungeon57C; #define COLOR_RAMP_COUNT 256 +#define UNK12A18_ARR_COUNT 29 +#define UNK12A18_ARR_COUNT_2 9 // size: 0x1CEDC typedef struct Dungeon @@ -415,13 +417,8 @@ typedef struct Dungeon /* 0x10844 */ s16 naturalJunctionListCounts[MAX_ROOM_COUNT]; /* 0x10884 */ DungeonPos naturalJunctionList[MAX_ROOM_COUNT][MAX_ROOM_COUNT]; // Arrays of room exits for each room. u16 unk11884[250][9]; - u16 unk12A18[20][9]; - u16 unk12B80[9]; - u16 unk12B92[36]; - u16 unk12BDA[9]; - u16 unk12BEC[9]; - u16 unk12BFE[19]; - u8 unk12C24[0x930]; + u16 unk12A18[UNK12A18_ARR_COUNT][UNK12A18_ARR_COUNT_2]; + u8 ALIGNED(4) unk12C24[0x930]; u16 unk13554[10]; OpenedFile *unk13568; u8 unk1356C; diff --git a/ld_script.txt b/ld_script.txt index a5b09e9c8..f1a022f2d 100755 --- a/ld_script.txt +++ b/ld_script.txt @@ -529,6 +529,8 @@ SECTIONS { src/dungeon_ai_movement.o(.rodata); data/data_80F4D44.o(.rodata); src/dungeon_config.o(.rodata); + data/data_80F59C8_1.o(.rodata); + src/code_803D110.o(.rodata); data/data_80F59C8.o(.rodata); src/dungeon_message.o(.rodata); src/dungeon_move.o(.rodata); diff --git a/src/code_803D110.c b/src/code_803D110.c index 6bfc465d5..bc5150e71 100644 --- a/src/code_803D110.c +++ b/src/code_803D110.c @@ -13,6 +13,7 @@ #include "text.h" #include "constants/dungeon.h" +extern void sub_803E13C(void); extern void sub_80901D8(DungeonLocation *param_1,DungeonLocation *param_2); extern s32 sub_80902C8(u8 dungeon); extern void sub_808E9C4(UnkDungeonGlobal_unk1CD98 *r0, s16 r1); @@ -27,9 +28,10 @@ extern const char gUnknown_80F6108[]; extern const char gUnknown_80F610C[]; extern const char gUnknown_80F6110[]; extern const char gUnknown_80F6118[]; -extern const char gUnknown_80F61A8[]; extern const u32 gUnknown_80F6120[]; +extern const u16 gUnknown_80F5F70[]; +extern RGB gUnknown_202ECA4[]; extern struct FileArchive gDungeonFileArchive; extern OpenedFile *gDungeonNameBannerPalette; extern OpenedFile *gDungeonNameBannerFontFile; @@ -518,253 +520,100 @@ struct UnkStruct_sub_803DC6C *sub_803DEC8(s32 chr) return ret; }; -/* -I'm leaving this as it is, because I'm not sure how to generate the ldmia asm instruction. Maybe once the file's data format is better understood. -struct FileSub_803DF60Struct +struct FileStruct2 { s32 count; - void *unkPtr; + u8 array[0]; }; -struct OpenedFile_sub_803DF60 +struct FileStruct { - File *file; - struct FileSub_803DF60Struct **strPtr; + struct FileStruct2 *ptr; + struct u8 *ptr2; }; void sub_803DF60(void) { + u8 *vram; s32 i; - struct OpenedFile_sub_803DF60 *file = (void*) OpenFileAndGetFileDataPtr(gUnknown_80F61A8, &gDungeonFileArchive); - struct FileSub_803DF60Struct r5 = **file->strPtr; + const void *src; + OpenedFile *file; - for (i = 0; i < r5.count; i++) { - CpuCopy((void *)VRAM + 0x13400 + i * 0x20, r5.unkPtr + i * 0x20, 0x20); + file = OpenFileAndGetFileDataPtr("itempat", &gDungeonFileArchive); + src = ((struct FileStruct *)(file->data))->ptr; + i = ((struct FileStruct2 *)(src))->count; + src = ((struct FileStruct2 *)(src))->array; + vram = OBJ_VRAM0 + 0x3400; + while (i != 0) + { + CpuCopy(vram, src, 0x20); + vram += 0x20; + src += 0x20; + i--; } - CloseFile(file); + + file = OpenFileAndGetFileDataPtr("etcfont", &gDungeonFileArchive); + src = ((struct FileStruct2 *)(file->data)); + i = ((struct FileStruct2 *)(src))->count; + src = ((struct FileStruct2 *)(src))->array; + vram = OBJ_VRAM0 + 0x4000; + while (i != 0) + { + CpuCopy(vram, src, 0x20); + vram += 0x20; + src += 0x20; + i--; + } + CloseFile(file); + + gUnknown_202EC94 = OpenFileAndGetFileDataPtr("etcfonta", &gDungeonFileArchive); + gUnknown_202EC98 = OpenFileAndGetFileDataPtr("levfont", &gDungeonFileArchive); + gUnknown_202EC9C = OpenFileAndGetFileDataPtr("hp5font", &gDungeonFileArchive); + gUnknown_202ECA0 = OpenFileAndGetFileDataPtr("colvec", &gDungeonFileArchive); } -*/ - -NAKED void sub_803DF60(void) +void sub_803E02C(void) { - asm_unified(" push {r4-r7,lr}\n" -" ldr r0, _0803DFF8\n" -" ldr r1, _0803DFFC\n" -" bl OpenFileAndGetFileDataPtr\n" -" adds r7, r0, 0\n" -" ldr r0, [r7, 0x4]\n" -" ldr r5, [r0]\n" -" ldm r5!, {r4}\n" -" ldr r6, _0803E000\n" -" cmp r4, 0\n" -" beq _0803DF8C\n" -"_0803DF78:\n" -" adds r0, r6, 0\n" -" adds r1, r5, 0\n" -" movs r2, 0x20\n" -" bl CpuCopy\n" -" adds r6, 0x20\n" -" adds r5, 0x20\n" -" subs r4, 0x1\n" -" cmp r4, 0\n" -" bne _0803DF78\n" -"_0803DF8C:\n" -" adds r0, r7, 0\n" -" bl CloseFile\n" -" ldr r0, _0803E004\n" -" ldr r1, _0803DFFC\n" -" bl OpenFileAndGetFileDataPtr\n" -" adds r7, r0, 0\n" -" ldr r5, [r7, 0x4]\n" -" ldm r5!, {r4}\n" -" ldr r6, _0803E008\n" -" cmp r4, 0\n" -" beq _0803DFBA\n" -"_0803DFA6:\n" -" adds r0, r6, 0\n" -" adds r1, r5, 0\n" -" movs r2, 0x20\n" -" bl CpuCopy\n" -" adds r6, 0x20\n" -" adds r5, 0x20\n" -" subs r4, 0x1\n" -" cmp r4, 0\n" -" bne _0803DFA6\n" -"_0803DFBA:\n" -" adds r0, r7, 0\n" -" bl CloseFile\n" -" ldr r0, _0803E00C\n" -" ldr r4, _0803DFFC\n" -" adds r1, r4, 0\n" -" bl OpenFileAndGetFileDataPtr\n" -" ldr r1, _0803E010\n" -" str r0, [r1]\n" -" ldr r0, _0803E014\n" -" adds r1, r4, 0\n" -" bl OpenFileAndGetFileDataPtr\n" -" ldr r1, _0803E018\n" -" str r0, [r1]\n" -" ldr r0, _0803E01C\n" -" adds r1, r4, 0\n" -" bl OpenFileAndGetFileDataPtr\n" -" ldr r1, _0803E020\n" -" str r0, [r1]\n" -" ldr r0, _0803E024\n" -" adds r1, r4, 0\n" -" bl OpenFileAndGetFileDataPtr\n" -" ldr r1, _0803E028\n" -" str r0, [r1]\n" -" pop {r4-r7}\n" -" pop {r0}\n" -" bx r0\n" -" .align 2, 0\n" -"_0803DFF8: .4byte gUnknown_80F61A8\n" -"_0803DFFC: .4byte gDungeonFileArchive\n" -"_0803E000: .4byte 0x06013400\n" -"_0803E004: .4byte gUnknown_80F61B0\n" -"_0803E008: .4byte 0x06014000\n" -"_0803E00C: .4byte gUnknown_80F61B8\n" -"_0803E010: .4byte gUnknown_202EC94\n" -"_0803E014: .4byte gUnknown_80F61C4\n" -"_0803E018: .4byte gUnknown_202EC98\n" -"_0803E01C: .4byte gUnknown_80F61CC\n" -"_0803E020: .4byte gUnknown_202EC9C\n" -"_0803E024: .4byte gUnknown_80F61D4\n" -"_0803E028: .4byte gUnknown_202ECA0\n"); -} + u8 *vram; + s32 i, j, r6; + const void *src; + OpenedFile *file; + u8 fileName[12]; -NAKED void sub_803E02C(void) -{ - asm_unified( "push {r4-r7,lr}\n" -" mov r7, r9\n" -" mov r6, r8\n" -" push {r6,r7}\n" -" sub sp, 0xC\n" -" bl sub_803E13C\n" -" mov r1, sp\n" -" ldr r0, _0803E118\n" -" ldm r0!, {r2,r3}\n" -" stm r1!, {r2,r3}\n" -" ldr r1, _0803E11C\n" -" mov r0, sp\n" -" bl OpenFileAndGetFileDataPtr\n" -" adds r7, r0, 0\n" -" ldr r0, [r7, 0x4]\n" -" ldr r5, [r0]\n" -" ldm r5!, {r4}\n" -" ldr r6, _0803E120\n" -" cmp r4, 0\n" -" beq _0803E06C\n" -"_0803E058:\n" -" adds r0, r6, 0\n" -" adds r1, r5, 0\n" -" movs r2, 0x20\n" -" bl CpuCopy\n" -" adds r6, 0x20\n" -" adds r5, 0x20\n" -" subs r4, 0x1\n" -" cmp r4, 0\n" -" bne _0803E058\n" -"_0803E06C:\n" -" ldr r0, _0803E124\n" -" ldr r1, [r7, 0x4]\n" -" ldr r1, [r1, 0x4]\n" -" movs r2, 0x80\n" -" bl CpuCopy\n" -" adds r0, r7, 0\n" -" bl CloseFile\n" -" movs r6, 0x80\n" -" lsls r6, 2\n" -" movs r4, 0\n" -" ldr r0, _0803E128\n" -" mov r9, r0\n" -" ldr r1, _0803E12C\n" -" mov r12, r1\n" -" movs r7, 0\n" -" ldr r2, _0803E130\n" -" mov r8, r2\n" -"_0803E092:\n" -" mov r3, r12\n" -" ldrh r0, [r3]\n" -" lsls r5, r0, 12\n" -" adds r2, r7, 0\n" -" movs r3, 0x8\n" -"_0803E09C:\n" -" mov r0, r9\n" -" ldr r1, [r0]\n" -" add r1, r8\n" -" adds r1, r2\n" -" adds r0, r5, 0\n" -" orrs r0, r6\n" -" strh r0, [r1]\n" -" adds r6, 0x1\n" -" adds r2, 0x2\n" -" subs r3, 0x1\n" -" cmp r3, 0\n" -" bge _0803E09C\n" -" movs r1, 0x2\n" -" add r12, r1\n" -" adds r7, 0x12\n" -" adds r4, 0x1\n" -" cmp r4, 0x1C\n" -" ble _0803E092\n" -" movs r4, 0\n" -" ldr r5, _0803E128\n" -" ldr r3, _0803E134\n" -" movs r2, 0xC0\n" -" lsls r2, 8\n" -"_0803E0CA:\n" -" ldr r0, [r5]\n" -" lsls r1, r4, 1\n" -" adds r0, r3\n" -" adds r0, r1\n" -" strh r2, [r0]\n" -" adds r4, 0x1\n" -" cmp r4, 0x8\n" -" ble _0803E0CA\n" -" movs r4, 0\n" -" ldr r2, _0803E128\n" -" movs r6, 0xBE\n" -" lsls r6, 1\n" -" ldr r5, _0803E138\n" -" movs r3, 0xBF\n" -" lsls r3, 1\n" -"_0803E0E8:\n" -" ldr r0, [r2]\n" -" lsls r1, r4, 2\n" -" adds r0, r1\n" -" adds r0, r6\n" -" strb r4, [r0]\n" -" ldr r0, [r2]\n" -" adds r0, r1\n" -" adds r0, r5\n" -" strb r4, [r0]\n" -" ldr r0, [r2]\n" -" adds r0, r1\n" -" adds r0, r3\n" -" strb r4, [r0]\n" -" adds r4, 0x1\n" -" cmp r4, 0xFF\n" -" ble _0803E0E8\n" -" add sp, 0xC\n" -" pop {r3,r4}\n" -" mov r8, r3\n" -" mov r9, r4\n" -" pop {r4-r7}\n" -" pop {r0}\n" -" bx r0\n" -" .align 2, 0\n" -"_0803E118: .4byte gUnknown_80F61DC\n" -"_0803E11C: .4byte gDungeonFileArchive\n" -"_0803E120: .4byte 0x0600c000\n" -"_0803E124: .4byte gUnknown_202ECA4\n" -"_0803E128: .4byte gDungeon\n" -"_0803E12C: .4byte gUnknown_80F5F70\n" -"_0803E130: .4byte 0x00012a18\n" -"_0803E134: .4byte 0x00013554\n" -"_0803E138: .4byte 0x0000017d\n"); + sub_803E13C(); + strcpy(fileName, "trappat"); + file = OpenFileAndGetFileDataPtr(fileName, &gDungeonFileArchive); + + src = ((struct FileStruct *)(file->data))->ptr; + i = ((struct FileStruct2 *)(src))->count; + src = ((struct FileStruct2 *)(src))->array; + vram = (void *) VRAM + 0xC000; + while (i != 0) + { + CpuCopy(vram, src, 0x20); + vram += 0x20; + src += 0x20; + i--; + } + CpuCopy(gUnknown_202ECA4, ((struct FileStruct *)(file->data))->ptr2, 0x80); + CloseFile(file); + + r6 = 0x200; + for (i = 0; i < UNK12A18_ARR_COUNT; i++) { + for (j = 0; j < UNK12A18_ARR_COUNT_2; j++) { + gDungeon->unk12A18[i][j] = (gUnknown_80F5F70[i] << 0xC) | r6; + r6++; + } + } + for (i = 0; i < 9; i++) { + gDungeon->unk13554[i] = 0xC000; + } + for (i = 0; i < COLOR_RAMP_COUNT; i++) { + gDungeon->colorRamp[i].r = i; + gDungeon->colorRamp[i].g = i; + gDungeon->colorRamp[i].b = i; + } } void sub_803E13C(void) diff --git a/src/dungeon_map_access.c b/src/dungeon_map_access.c index c0d47fe11..1130825ff 100644 --- a/src/dungeon_map_access.c +++ b/src/dungeon_map_access.c @@ -469,16 +469,16 @@ void sub_8049ED4(void) r7 = r10 + (r8 * 3); tile = GetTile(var_48, var_44); if (tile->terrainType & TERRAIN_TYPE_UNK_x1000) { - src = &dungeon->unk12BEC[r7]; + src = &dungeon->unk12A18[26][r7]; } else if (tile->terrainType & TERRAIN_TYPE_SHOP) { - src = &dungeon->unk12BDA[r7]; + src = &dungeon->unk12A18[25][r7]; } else if (hallucinating) { src = &dungeon->unk11884[tile->unk8][r7]; } else if (tile->spawnOrVisibilityFlags & 4) { - src = &dungeon->unk12BFE[r7]; + src = &dungeon->unk12A18[27][r7]; } else { @@ -514,16 +514,16 @@ void sub_8049ED4(void) r7 = r10; tile = GetTile(var_48, var_44); if (tile->terrainType & TERRAIN_TYPE_SHOP) { - src = &dungeon->unk12BDA[r7]; + src = &dungeon->unk12A18[25][r7]; } else if (tile->terrainType & TERRAIN_TYPE_UNK_x1000) { - src = &dungeon->unk12BEC[r7]; + src = &dungeon->unk12A18[26][r7]; } else if (hallucinating) { src = &dungeon->unk11884[tile->unk8][r7]; } else if (tile->spawnOrVisibilityFlags & 4) { - src = &dungeon->unk12BFE[r7]; + src = &dungeon->unk12A18[27][r7]; } else { @@ -587,10 +587,10 @@ void sub_804A1F0(s32 a0, s32 a1) r6 = var_28 + r8 * 3; tile = GetTile(var_2C, r10); if (tile->terrainType & TERRAIN_TYPE_SHOP) { - src = &dungeon->unk12BDA[r6]; + src = &dungeon->unk12A18[25][r6]; } else if (tile->terrainType & TERRAIN_TYPE_UNK_x1000) { - src = &dungeon->unk12BEC[r6]; + src = &dungeon->unk12A18[26][r6]; } else if (hallucinating) { src = &dungeon->unk11884[tile->unk8][r6]; @@ -628,10 +628,10 @@ void sub_804A1F0(s32 a0, s32 a1) r6 = var_28; tile = GetTile(var_2C, r10); if (tile->terrainType & TERRAIN_TYPE_SHOP) { - src = &dungeon->unk12BDA[r6]; + src = &dungeon->unk12A18[25][r6]; } else if (tile->terrainType & TERRAIN_TYPE_UNK_x1000) { - src = &dungeon->unk12BEC[r6]; + src = &dungeon->unk12A18[26][r6]; } else if (hallucinating) { src = &dungeon->unk11884[tile->unk8][r6]; @@ -688,10 +688,10 @@ void sub_804A49C(s32 a0, s32 a1) r6 = r9 + var_28 * 3; tile = GetTile(r10, var_2C); if (tile->terrainType & TERRAIN_TYPE_SHOP) { - src = &dungeon->unk12BDA[r6]; + src = &dungeon->unk12A18[25][r6]; } else if (tile->terrainType & TERRAIN_TYPE_UNK_x1000) { - src = &dungeon->unk12BEC[r6]; + src = &dungeon->unk12A18[26][r6]; } else if (hallucinating) { src = &dungeon->unk11884[tile->unk8][r6]; @@ -729,10 +729,10 @@ void sub_804A49C(s32 a0, s32 a1) r6 = var_28 * 3; tile = GetTile(r10, var_2C); if (tile->terrainType & TERRAIN_TYPE_SHOP) { - src = &dungeon->unk12BDA[r6]; + src = &dungeon->unk12A18[25][r6]; } else if (tile->terrainType & TERRAIN_TYPE_UNK_x1000) { - src = &dungeon->unk12BEC[r6]; + src = &dungeon->unk12A18[26][r6]; } else if (hallucinating) { src = &dungeon->unk11884[tile->unk8][r6]; @@ -803,7 +803,7 @@ void sub_804A728(DungeonPos *pos, s32 a1, u8 a2, u8 a3) var_48.y = r9; if (a2 != 0) { if (r10 == pos->x && r9 == pos->y) { - src = &dungeon->unk12B92[r5]; + src = &dungeon->unk12A18[21][r5]; } else { src = &dungeon->unk13554[r5]; @@ -816,14 +816,14 @@ void sub_804A728(DungeonPos *pos, s32 a1, u8 a2, u8 a3) } if (k == 6) { if (gGameOptionsRef->gridEnable) { - src = &dungeon->unk12B80[r5]; + src = &dungeon->unk12A18[20][r5]; } else { src = &dungeon->unk13554[r5]; } } else { - src = &dungeon->unk12B92[r5]; + src = &dungeon->unk12A18[21][r5]; } } else { @@ -845,7 +845,7 @@ void sub_804A728(DungeonPos *pos, s32 a1, u8 a2, u8 a3) var_48.y = r9; if (a2 != 0) { if (r10 == pos->x && r9 == pos->y) { - src = &dungeon->unk12B92[r5]; + src = &dungeon->unk12A18[21][r5]; } else { src = &dungeon->unk13554[r5]; @@ -858,14 +858,14 @@ void sub_804A728(DungeonPos *pos, s32 a1, u8 a2, u8 a3) } if (k == 6) { if (gGameOptionsRef->gridEnable) { - src = &dungeon->unk12B80[r5]; + src = &dungeon->unk12A18[20][r5]; } else { src = &dungeon->unk13554[r5]; } } else { - src = &dungeon->unk12B92[r5]; + src = &dungeon->unk12A18[21][r5]; } } else { From e47260c871796b618c7f86b4fbcc786b7a5a7086 Mon Sep 17 00:00:00 2001 From: DizzyEggg Date: Tue, 25 Feb 2025 22:54:57 +0100 Subject: [PATCH 35/40] Match CreatePokemonInfoTabScreen --- include/code_8024458.h | 3 +- include/pokemon_3.h | 8 +- src/code_8024458.c | 2 +- src/code_8066D04.c | 8 +- src/pokemon_3.c | 1021 +++++++++------------------------------- 5 files changed, 233 insertions(+), 809 deletions(-) diff --git a/include/code_8024458.h b/include/code_8024458.h index 8d69e6492..b0054c832 100644 --- a/include/code_8024458.h +++ b/include/code_8024458.h @@ -13,8 +13,7 @@ struct unkStruct_203B2AC u8 unk40[0x48 - 0x40]; s16 speciesNum; struct unkStruct_808FF20 unk4C; - u32 unkB0; - u8 fillB4[0xE0 - 0xB4]; + struct UnkInfoTabStruct unkB0; u32 unkE0; UnkTextStruct2 *unkE4; UnkTextStruct3 unkE8; diff --git a/include/pokemon_3.h b/include/pokemon_3.h index 436a5ad73..e52d2a12b 100644 --- a/include/pokemon_3.h +++ b/include/pokemon_3.h @@ -49,6 +49,12 @@ struct unkStruct_808FF20 u8 unk58[12]; }; +struct UnkInfoTabStruct +{ + u8 unk0[0xC]; + s32 unkC[9]; +}; + bool8 HasRecruitedMon(s16 species); s16 GetBaseSpecies(s16 index); s16 GetBaseSpeciesNoUnown(s16 index); @@ -70,7 +76,7 @@ s16 ExtractSpeciesIndex(UnkDungeonGlobal_unk1CD98 *r0); void SetSpeciesLevelToExtract(UnkDungeonGlobal_unk1CD98 *r0, s32 level, s32 species); s32 ExtractLevel(UnkDungeonGlobal_unk1CD98 *r0); PokemonStruct1 *sub_808F798(PokemonStruct1 *pokemon, short _species); -void CreatePokemonInfoTabScreen(u32, s32, struct unkStruct_808FF20 *, u8 *, u32); +void CreatePokemonInfoTabScreen(s32 param_1, s32 param_2, struct unkStruct_808FF20 *mon, struct UnkInfoTabStruct *param_4, u32 windowId); void sub_808FF20(struct unkStruct_808FF20 *param_1, struct PokemonStruct1 *pokemon, bool8 param_3); #endif // GUARD_POKEMON_3_H diff --git a/src/code_8024458.c b/src/code_8024458.c index e8e3cb418..adf5af2f2 100644 --- a/src/code_8024458.c +++ b/src/code_8024458.c @@ -83,7 +83,7 @@ static void sub_8024588(void) static void sub_80245D0(void) { - CreatePokemonInfoTabScreen(sUnknown_203B2AC->unk34[sUnknown_203B2AC->input.unk1E], sUnknown_203B2AC->input.unk1E, &sUnknown_203B2AC->unk4C, (u8 *)&sUnknown_203B2AC->unkB0, sUnknown_203B2AC->unkE0); + CreatePokemonInfoTabScreen(sUnknown_203B2AC->unk34[sUnknown_203B2AC->input.unk1E], sUnknown_203B2AC->input.unk1E, &sUnknown_203B2AC->unk4C, &sUnknown_203B2AC->unkB0, sUnknown_203B2AC->unkE0); } static void sub_8024604(void) diff --git a/src/code_8066D04.c b/src/code_8066D04.c index 5a6c20b04..81fb0c5cc 100644 --- a/src/code_8066D04.c +++ b/src/code_8066D04.c @@ -1256,7 +1256,7 @@ void sub_8067F00(u8 a0, PokemonStruct1 **a1, s32 a2_, s32 a3, s32 a4) void sub_806806C(PokemonStruct1 *a0) { struct unkStruct_808FF20 unkStruct; - u8 var_C8[48]; + struct UnkInfoTabStruct var_C8; UnkTextStruct3 spTxtStruct = {0}; s32 r7; @@ -1299,7 +1299,7 @@ void sub_806806C(PokemonStruct1 *a0) sub_801317C(&gUnknown_202EE10.unk28); sub_803ECB4(&spTxtStruct, 1); sub_808FF20(&unkStruct, a0, gDungeon->unk644.unk16); - CreatePokemonInfoTabScreen(spF8[r7], r7, &unkStruct, var_C8, 0); + CreatePokemonInfoTabScreen(spF8[r7], r7, &unkStruct, &var_C8, 0); gUnknown_202EE10.unkC = (gUnknown_2027370[0].unk0 + 15) * 8; gUnknown_202EE10.unkE = ((gUnknown_2027370[0].unk2 + 1) * 8) - 2; @@ -1309,7 +1309,7 @@ void sub_806806C(PokemonStruct1 *a0) AddMenuCursorSprite(&gUnknown_202EE10); if (spF8[r7] == 4) { - if (var_C8[8] != 0) { + if (var_C8.unk0[8] != 0) { sub_80684C4(); } if (unkStruct.unk40 != 0) { @@ -1335,7 +1335,7 @@ void sub_806806C(PokemonStruct1 *a0) } if (spF8[r7] == 4) { - if (((gRealInputs.repeated & DPAD_DOWN) || r5 == 2) && var_C8[8] != 0) { + if (((gRealInputs.repeated & DPAD_DOWN) || r5 == 2) && var_C8.unk0[8] != 0) { s32 i; sub_8083CE0(0); diff --git a/src/pokemon_3.c b/src/pokemon_3.c index 6707b9e48..d0f1262ce 100644 --- a/src/pokemon_3.c +++ b/src/pokemon_3.c @@ -9,6 +9,7 @@ #include "constants/iq_skill.h" #include "constants/tactic.h" #include "constants/type.h" +#include "constants/ability.h" #include "structs/str_pokemon.h" #include "sprite.h" #include "text_util.h" @@ -16,6 +17,9 @@ #include "luminous_cave.h" #include "code_8097670.h" #include "moves.h" +#include "string_format.h" +#include "dungeon.h" +#include "text.h" extern u8 *gIQSkillNames[]; extern u8 *gIQSkillDescriptions[]; @@ -1050,810 +1054,225 @@ UNUSED void sub_808F83C(PokemonStruct1 *pokemon, s16 species, u8 *r2) *r2 = 0; } - -// https://decomp.me/scratch/qONOW - 91.59% matched (Seth) -NAKED -void CreatePokemonInfoTabScreen(u32 param_1, s32 param_2, struct unkStruct_808FF20 *param_3, u8 *param_4, u32 param_5) +void CreatePokemonInfoTabScreen(s32 param_1, s32 param_2, struct unkStruct_808FF20 *mon, struct UnkInfoTabStruct *param_4, u32 windowId) { - asm_unified( -" push {r4-r7,lr}\n" -" mov r7, r10\n" -" mov r6, r9\n" -" mov r5, r8\n" -" push {r5-r7}\n" -" sub sp, 0x30\n" -" adds r5, r0, 0\n" -" adds r4, r1, 0\n" -" mov r10, r2\n" -" str r3, [sp, 0x2C]\n" -" ldr r0, [sp, 0x50]\n" -" bl sub_80073B8\n" -" ldr r0, _0808F880\n" -" mov r1, r10\n" -" adds r1, 0x2\n" -" movs r2, 0x14\n" -" bl strncpy\n" -" movs r0, 0x20\n" -" mov r9, r0\n" -" cmp r5, 0x5\n" -" bls _0808F874\n" -" b _0808FED6\n" -"_0808F874:\n" -" lsls r0, r5, 2\n" -" ldr r1, _0808F884\n" -" adds r0, r1\n" -" ldr r0, [r0]\n" -" mov pc, r0\n" -" .align 2, 0\n" -"_0808F880: .4byte gFormatBuffer_Monsters\n" -"_0808F884: .4byte _0808F888\n" -" .align 2, 0\n" -"_0808F888:\n" -" .4byte _0808FED6\n" -" .4byte _0808FBF4\n" -" .4byte _0808F8A0\n" -" .4byte _0808FB44\n" -" .4byte _0808FCB0\n" -" .4byte _0808FDB0\n" -"_0808F8A0:\n" -" lsls r0, r4, 3\n" -" adds r0, 0x10\n" -" ldr r2, _0808F998\n" -" movs r5, 0\n" -" str r5, [sp]\n" -" movs r1, 0\n" -" ldr r3, [sp, 0x50]\n" -" bl PrintFormattedStringOnWindow\n" -" ldr r4, _0808F99C\n" -" mov r1, r10\n" -" ldr r0, [r1, 0x2C]\n" -" str r0, [r4]\n" -" ldr r0, [r1, 0x30]\n" -" str r0, [r4, 0x4]\n" -" ldr r0, _0808F9A0\n" -" ldr r2, [r0]\n" -" str r5, [sp]\n" -" movs r0, 0x4\n" -" mov r1, r9\n" -" ldr r3, [sp, 0x50]\n" -" bl PrintFormattedStringOnWindow\n" -" movs r2, 0xA\n" -" add r9, r2\n" -" ldr r0, _0808F9A4\n" -" ldr r2, [r0]\n" -" str r5, [sp]\n" -" movs r0, 0x4\n" -" mov r1, r9\n" -" ldr r3, [sp, 0x50]\n" -" bl PrintFormattedStringOnWindow\n" -" movs r3, 0xA\n" -" add r9, r3\n" -" mov r0, r10\n" -" ldr r2, [r0, 0x2C]\n" -" cmp r2, 0x63\n" -" bgt _0808F914\n" -" movs r3, 0\n" -" ldrsh r1, [r0, r3]\n" -" adds r2, 0x1\n" -" add r0, sp, 0x8\n" -" bl GetPokemonLevelData\n" -" ldr r0, [sp, 0x8]\n" -" mov r2, r10\n" -" ldr r1, [r2, 0x30]\n" -" subs r0, r1\n" -" str r0, [r4]\n" -" ldr r0, _0808F9A8\n" -" ldr r2, [r0]\n" -" str r5, [sp]\n" -" movs r0, 0x4\n" -" mov r1, r9\n" -" ldr r3, [sp, 0x50]\n" -" bl PrintFormattedStringOnWindow\n" -"_0808F914:\n" -" movs r3, 0xC\n" -" add r9, r3\n" -" mov r1, r10\n" -" ldr r0, [r1, 0x24]\n" -" str r0, [r4]\n" -" ldr r0, [r1, 0x28]\n" -" str r0, [r4, 0x4]\n" -" ldr r0, _0808F9AC\n" -" ldr r2, [r0]\n" -" str r5, [sp]\n" -" movs r0, 0x4\n" -" mov r1, r9\n" -" ldr r3, [sp, 0x50]\n" -" bl PrintFormattedStringOnWindow\n" -" movs r2, 0xA\n" -" add r9, r2\n" -" ldr r0, _0808F9B0\n" -" ldr r2, [r0]\n" -" str r5, [sp]\n" -" movs r0, 0x4\n" -" mov r1, r9\n" -" ldr r3, [sp, 0x50]\n" -" bl PrintFormattedStringOnWindow\n" -" ldr r0, _0808F9B4\n" -" ldr r2, [r0]\n" -" mov r0, r10\n" -" adds r0, 0x34\n" -" ldrb r3, [r0]\n" -" str r3, [r4]\n" -" mov r1, r10\n" -" adds r1, 0x39\n" -" ldrb r0, [r1]\n" -" cmp r0, 0\n" -" beq _0808F964\n" -" adds r0, r3, r0\n" -" str r0, [r4]\n" -" ldr r0, _0808F9B8\n" -" ldr r2, [r0]\n" -"_0808F964:\n" -" str r5, [sp]\n" -" movs r0, 0x4\n" -" mov r1, r9\n" -" ldr r3, [sp, 0x50]\n" -" bl PrintFormattedStringOnWindow\n" -" mov r1, r10\n" -" adds r1, 0x3B\n" -" ldrb r3, [r1]\n" -" cmp r3, 0\n" -" beq _0808F9C0\n" -" mov r0, r10\n" -" adds r0, 0x36\n" -" ldrb r0, [r0]\n" -" adds r1, r3, 0\n" -" adds r0, r1\n" -" str r0, [r4]\n" -" ldr r0, _0808F9BC\n" -" ldr r2, [r0]\n" -" str r5, [sp]\n" -" movs r0, 0x4\n" -" mov r1, r9\n" -" ldr r3, [sp, 0x50]\n" -" bl PrintFormattedStringOnWindow\n" -" b _0808F9D8\n" -" .align 2, 0\n" -"_0808F998: .4byte gUnknown_8107754\n" -"_0808F99C: .4byte gFormatArgs\n" -"_0808F9A0: .4byte gLevel810DD6C_Ptr\n" -"_0808F9A4: .4byte gExpPts810DD9C_Ptr\n" -"_0808F9A8: .4byte gUnknown_810DDB8\n" -"_0808F9AC: .4byte gUnknown_810DDD0\n" -"_0808F9B0: .4byte gUnknown_810DDE4\n" -"_0808F9B4: .4byte gUnknown_810DE0C\n" -"_0808F9B8: .4byte gUnknown_810DE20\n" -"_0808F9BC: .4byte gUnknown_810DE4C\n" -"_0808F9C0:\n" -" mov r0, r10\n" -" adds r0, 0x36\n" -" ldrb r0, [r0]\n" -" str r0, [r4]\n" -" ldr r0, _0808FA44\n" -" ldr r2, [r0]\n" -" str r3, [sp]\n" -" movs r0, 0x4\n" -" mov r1, r9\n" -" ldr r3, [sp, 0x50]\n" -" bl PrintFormattedStringOnWindow\n" -"_0808F9D8:\n" -" movs r3, 0xA\n" -" add r9, r3\n" -" ldr r0, _0808FA48\n" -" ldr r2, [r0]\n" -" movs r5, 0\n" -" str r5, [sp]\n" -" movs r0, 0x4\n" -" mov r1, r9\n" -" ldr r3, [sp, 0x50]\n" -" bl PrintFormattedStringOnWindow\n" -" ldr r0, _0808FA4C\n" -" ldr r2, [r0]\n" -" ldr r4, _0808FA50\n" -" mov r0, r10\n" -" adds r0, 0x35\n" -" ldrb r3, [r0]\n" -" str r3, [r4]\n" -" mov r1, r10\n" -" adds r1, 0x3A\n" -" ldrb r0, [r1]\n" -" cmp r0, 0\n" -" beq _0808FA0E\n" -" adds r0, r3, r0\n" -" str r0, [r4]\n" -" ldr r0, _0808FA54\n" -" ldr r2, [r0]\n" -"_0808FA0E:\n" -" str r5, [sp]\n" -" movs r0, 0x4\n" -" mov r1, r9\n" -" ldr r3, [sp, 0x50]\n" -" bl PrintFormattedStringOnWindow\n" -" mov r1, r10\n" -" adds r1, 0x3C\n" -" ldrb r3, [r1]\n" -" cmp r3, 0\n" -" beq _0808FA5C\n" -" mov r0, r10\n" -" adds r0, 0x37\n" -" ldrb r0, [r0]\n" -" adds r1, r3, 0\n" -" adds r0, r1\n" -" str r0, [r4]\n" -" ldr r0, _0808FA58\n" -" ldr r2, [r0]\n" -" str r5, [sp]\n" -" movs r0, 0x4\n" -" mov r1, r9\n" -" ldr r3, [sp, 0x50]\n" -" bl PrintFormattedStringOnWindow\n" -" b _0808FA74\n" -" .align 2, 0\n" -"_0808FA44: .4byte gUnknown_810DE38\n" -"_0808FA48: .4byte gUnknown_810DDFC\n" -"_0808FA4C: .4byte gUnknown_810DE24\n" -"_0808FA50: .4byte gFormatArgs\n" -"_0808FA54: .4byte gUnknown_810DE28\n" -"_0808FA58: .4byte gUnknown_810DE54\n" -"_0808FA5C:\n" -" mov r0, r10\n" -" adds r0, 0x37\n" -" ldrb r0, [r0]\n" -" str r0, [r4]\n" -" ldr r0, _0808FA94\n" -" ldr r2, [r0]\n" -" str r3, [sp]\n" -" movs r0, 0x4\n" -" mov r1, r9\n" -" ldr r3, [sp, 0x50]\n" -" bl PrintFormattedStringOnWindow\n" -"_0808FA74:\n" -" movs r0, 0xA\n" -" add r9, r0\n" -" mov r2, r10\n" -" adds r2, 0x20\n" -" ldrb r1, [r2]\n" -" movs r0, 0x1\n" -" ands r0, r1\n" -" cmp r0, 0\n" -" beq _0808FA9C\n" -" ldr r0, _0808FA98\n" -" adds r1, r2, 0\n" -" movs r2, 0\n" -" bl sub_8090E14\n" -" b _0808FAA6\n" -" .align 2, 0\n" -"_0808FA94: .4byte gUnknown_810DE50\n" -"_0808FA98: .4byte gFormatBuffer_Items\n" -"_0808FA9C:\n" -" ldr r0, _0808FB24\n" -" ldr r1, _0808FB28\n" -" ldr r1, [r1]\n" -" bl strcpy\n" -"_0808FAA6:\n" -" ldr r0, _0808FB2C\n" -" ldr r2, [r0]\n" -" movs r4, 0\n" -" str r4, [sp]\n" -" movs r0, 0x4\n" -" mov r1, r9\n" -" ldr r3, [sp, 0x50]\n" -" bl PrintFormattedStringOnWindow\n" -" movs r1, 0xC\n" -" add r9, r1\n" -" ldr r1, _0808FB30\n" -" mov r2, r10\n" -" movs r3, 0x3E\n" -" ldrsh r0, [r2, r3]\n" -" str r0, [r1]\n" -" movs r1, 0x3E\n" -" ldrsh r0, [r2, r1]\n" -" movs r1, 0xA\n" -" bl __divsi3\n" -" lsls r0, 16\n" -" asrs r0, 16\n" -" cmp r0, 0\n" -" bge _0808FADA\n" -" movs r0, 0\n" -"_0808FADA:\n" -" cmp r0, 0x62\n" -" ble _0808FAE0\n" -" movs r0, 0x63\n" -"_0808FAE0:\n" -" ldr r1, _0808FB34\n" -" lsls r0, 2\n" -" adds r0, r1\n" -" ldr r5, _0808FB38\n" -" ldr r1, [r0]\n" -" adds r0, r5, 0\n" -" bl strcpy\n" -" ldr r0, _0808FB3C\n" -" ldr r2, [r0]\n" -" str r4, [sp]\n" -" movs r0, 0x4\n" -" mov r1, r9\n" -" ldr r3, [sp, 0x50]\n" -" bl PrintFormattedStringOnWindow\n" -" movs r2, 0xA\n" -" add r9, r2\n" -" mov r0, r10\n" -" adds r0, 0x38\n" -" ldrb r4, [r0]\n" -" cmp r4, 0\n" -" beq _0808FB10\n" -" b _0808FED6\n" -"_0808FB10:\n" -" adds r0, 0x1C\n" -" ldrb r1, [r0]\n" -" adds r0, r5, 0\n" -" bl CopyTacticsNameToBuffer\n" -" ldr r0, _0808FB40\n" -" ldr r2, [r0]\n" -" str r4, [sp]\n" -" b _0808FECC\n" -" .align 2, 0\n" -"_0808FB24: .4byte gFormatBuffer_Items\n" -"_0808FB28: .4byte gUnknown_810DE58\n" -"_0808FB2C: .4byte gUnknown_810DE6C\n" -"_0808FB30: .4byte gFormatArgs\n" -"_0808FB34: .4byte gUnknown_8115718\n" -"_0808FB38: .4byte gFormatBuffer_Monsters\n" -"_0808FB3C: .4byte gUnknown_810DE80\n" -"_0808FB40: .4byte gUnknown_810DE98\n" -"_0808FB44:\n" -" lsls r0, r4, 3\n" -" adds r0, 0x10\n" -" ldr r2, _0808FBE8\n" -" movs r4, 0\n" -" str r4, [sp]\n" -" movs r1, 0\n" -" ldr r3, [sp, 0x50]\n" -" bl PrintFormattedStringOnWindow\n" -" ldr r2, _0808FBEC\n" -" str r4, [sp]\n" -" movs r0, 0x4\n" -" mov r1, r9\n" -" ldr r3, [sp, 0x50]\n" -" bl PrintFormattedStringOnWindow\n" -" mov r3, r10\n" -" ldrb r0, [r3, 0x16]\n" -" bl GetFormattedTypeString\n" -" adds r2, r0, 0\n" -" str r4, [sp]\n" -" movs r0, 0x38\n" -" mov r1, r9\n" -" ldr r3, [sp, 0x50]\n" -" bl PrintFormattedStringOnWindow\n" -" mov r1, r10\n" -" ldrb r0, [r1, 0x17]\n" -" cmp r0, 0\n" -" beq _0808FB94\n" -" bl GetFormattedTypeString\n" -" adds r2, r0, 0\n" -" str r4, [sp]\n" -" movs r0, 0x60\n" -" mov r1, r9\n" -" ldr r3, [sp, 0x50]\n" -" bl PrintFormattedStringOnWindow\n" -"_0808FB94:\n" -" movs r2, 0xC\n" -" add r9, r2\n" -" ldr r2, _0808FBF0\n" -" str r4, [sp]\n" -" movs r0, 0x4\n" -" mov r1, r9\n" -" ldr r3, [sp, 0x50]\n" -" bl PrintFormattedStringOnWindow\n" -" movs r3, 0xC\n" -" add r9, r3\n" -" mov r1, r10\n" -" ldrb r0, [r1, 0x18]\n" -" bl GetAbilityDescription\n" -" adds r2, r0, 0\n" -" str r4, [sp]\n" -" movs r5, 0xB\n" -" str r5, [sp, 0x4]\n" -" movs r0, 0x4\n" -" mov r1, r9\n" -" ldr r3, [sp, 0x50]\n" -" bl PrintFormattedStringOnWindow2\n" -" movs r2, 0x21\n" -" add r9, r2\n" -" mov r3, r10\n" -" ldrb r0, [r3, 0x19]\n" -" cmp r0, 0\n" -" bne _0808FBD2\n" -" b _0808FED6\n" -"_0808FBD2:\n" -" bl GetAbilityDescription\n" -" adds r2, r0, 0\n" -" str r4, [sp]\n" -" str r5, [sp, 0x4]\n" -" movs r0, 0x4\n" -" mov r1, r9\n" -" ldr r3, [sp, 0x50]\n" -" bl PrintFormattedStringOnWindow2\n" -" b _0808FED6\n" -" .align 2, 0\n" -"_0808FBE8: .4byte gUnknown_810775C\n" -"_0808FBEC: .4byte gUnknown_8107768\n" -"_0808FBF0: .4byte gUnknown_8107770\n" -"_0808FBF4:\n" -" lsls r0, r4, 3\n" -" adds r0, 0x10\n" -" ldr r1, _0808FC34\n" -" ldr r2, [r1]\n" -" movs r1, 0\n" -" str r1, [sp]\n" -" ldr r3, [sp, 0x50]\n" -" bl PrintFormattedStringOnWindow\n" -" mov r0, r10\n" -" adds r0, 0x56\n" -" movs r1, 0\n" -" ldrsh r0, [r0, r1]\n" -" subs r5, r0, 0x1\n" -" movs r2, 0xC\n" -" negs r2, r2\n" -" add r9, r2\n" -" movs r7, 0\n" -" ldr r6, [sp, 0x2C]\n" -" adds r6, 0xC\n" -" adds r1, r6, 0\n" -" movs r2, 0\n" -" ldr r0, [sp, 0x2C]\n" -" adds r0, 0x2C\n" -"_0808FC24:\n" -" str r2, [r0]\n" -" subs r0, 0x4\n" -" cmp r0, r1\n" -" bge _0808FC24\n" -" movs r3, 0\n" -" mov r8, r3\n" -" b _0808FC88\n" -" .align 2, 0\n" -"_0808FC34: .4byte gUnknown_810DD58\n" -"_0808FC38:\n" -" mov r0, r10\n" -" adds r0, 0x58\n" -" adds r4, r0, r5\n" -" ldrb r0, [r4]\n" -" cmp r0, 0\n" -" beq _0808FC78\n" -" movs r7, 0x1\n" -" ldr r0, _0808FCA0\n" -" ldrb r1, [r4]\n" -" lsls r1, 2\n" -" adds r1, r0\n" -" ldr r0, _0808FCA4\n" -" ldr r1, [r1]\n" -" movs r2, 0x50\n" -" bl strncpy\n" -" ldr r2, _0808FCA8\n" -" movs r0, 0\n" -" str r0, [sp]\n" -" movs r0, 0xC\n" -" mov r1, r9\n" -" ldr r3, [sp, 0x50]\n" -" bl PrintFormattedStringOnWindow\n" -" mov r0, r8\n" -" cmp r0, 0\n" -" ble _0808FC78\n" -" subs r0, 0x1\n" -" lsls r0, 2\n" -" adds r0, r6, r0\n" -" ldrb r1, [r4]\n" -" str r1, [r0]\n" -"_0808FC78:\n" -" movs r1, 0x1\n" -" add r8, r1\n" -" adds r5, 0x1\n" -" movs r2, 0xC\n" -" add r9, r2\n" -" mov r3, r8\n" -" cmp r3, 0x9\n" -" bgt _0808FC90\n" -"_0808FC88:\n" -" cmp r5, 0\n" -" blt _0808FC78\n" -" cmp r5, 0xB\n" -" ble _0808FC38\n" -"_0808FC90:\n" -" cmp r7, 0\n" -" beq _0808FC96\n" -" b _0808FED6\n" -"_0808FC96:\n" -" ldr r0, _0808FCAC\n" -" ldr r2, [r0]\n" -" str r7, [sp]\n" -" b _0808FD98\n" -" .align 2, 0\n" -"_0808FCA0: .4byte gStatusNames\n" -"_0808FCA4: .4byte gFormatBuffer_Items + 0x50\n" -"_0808FCA8: .4byte gUnknown_8107784\n" -"_0808FCAC: .4byte gUnknown_810DF78\n" -"_0808FCB0:\n" -" lsls r0, r4, 3\n" -" adds r0, 0x10\n" -" ldr r1, _0808FCF8\n" -" ldr r2, [r1]\n" -" movs r1, 0\n" -" str r1, [sp]\n" -" ldr r3, [sp, 0x50]\n" -" bl PrintFormattedStringOnWindow\n" -" add r4, sp, 0x14\n" -" mov r0, r10\n" -" movs r2, 0x3E\n" -" ldrsh r1, [r0, r2]\n" -" adds r0, r4, 0\n" -" bl GetNumAvailableIQSkills\n" -" mov r0, r10\n" -" adds r0, 0x40\n" -" movs r3, 0\n" -" ldrsh r0, [r0, r3]\n" -" subs r7, r0, 0x1\n" -" mov r1, r9\n" -" subs r1, 0xC\n" -" movs r2, 0\n" -" ldr r0, [sp, 0x2C]\n" -" adds r0, 0x8\n" -"_0808FCE4:\n" -" strb r2, [r0]\n" -" subs r0, 0x1\n" -" ldr r3, [sp, 0x2C]\n" -" cmp r0, r3\n" -" bge _0808FCE4\n" -" mov r9, r1\n" -" movs r4, 0\n" -" mov r8, r4\n" -" b _0808FD84\n" -" .align 2, 0\n" -"_0808FCF8: .4byte gIQSkill810DD68_Ptr\n" -"_0808FCFC:\n" -" mov r5, sp\n" -" adds r5, r7\n" -" adds r5, 0x14\n" -" ldrb r0, [r5]\n" -" cmp r0, 0\n" -" beq _0808FD74\n" -" movs r4, 0x1\n" -" bl GetIQSkillName\n" -" adds r1, r0, 0\n" -" ldr r6, _0808FD3C\n" -" adds r0, r6, 0\n" -" movs r2, 0x50\n" -" bl strncpy\n" -" mov r0, r10\n" -" adds r0, 0x50\n" -" adds r1, r4, 0\n" -" ldrb r5, [r5]\n" -" lsls r1, r5\n" -" bl IsIQSkillSet\n" -" lsls r0, 24\n" -" cmp r0, 0\n" -" beq _0808FD44\n" -" adds r0, r6, 0\n" -" subs r0, 0x50\n" -" ldr r1, _0808FD40\n" -" bl strcpy\n" -" b _0808FD4E\n" -" .align 2, 0\n" -"_0808FD3C: .4byte gFormatBuffer_Items + 0x50\n" -"_0808FD40: .4byte gUnknown_8107788\n" -"_0808FD44:\n" -" adds r0, r6, 0\n" -" subs r0, 0x50\n" -" ldr r1, _0808FDA4\n" -" bl strcpy\n" -"_0808FD4E:\n" -" mov r0, r8\n" -" cmp r0, 0\n" -" ble _0808FD64\n" -" subs r0, 0x1\n" -" ldr r1, [sp, 0x2C]\n" -" adds r0, r1, r0\n" -" mov r1, sp\n" -" adds r1, r7\n" -" adds r1, 0x14\n" -" ldrb r1, [r1]\n" -" strb r1, [r0]\n" -"_0808FD64:\n" -" ldr r2, _0808FDA8\n" -" movs r0, 0\n" -" str r0, [sp]\n" -" movs r0, 0xC\n" -" mov r1, r9\n" -" ldr r3, [sp, 0x50]\n" -" bl PrintFormattedStringOnWindow\n" -"_0808FD74:\n" -" movs r2, 0x1\n" -" add r8, r2\n" -" adds r7, 0x1\n" -" movs r3, 0xC\n" -" add r9, r3\n" -" mov r0, r8\n" -" cmp r0, 0x9\n" -" bgt _0808FD8C\n" -"_0808FD84:\n" -" cmp r7, 0\n" -" blt _0808FD74\n" -" cmp r7, 0x17\n" -" ble _0808FCFC\n" -"_0808FD8C:\n" -" cmp r4, 0\n" -" beq _0808FD92\n" -" b _0808FED6\n" -"_0808FD92:\n" -" ldr r0, _0808FDAC\n" -" ldr r2, [r0]\n" -" str r4, [sp]\n" -"_0808FD98:\n" -" movs r0, 0xC\n" -" movs r1, 0x20\n" -" ldr r3, [sp, 0x50]\n" -" bl PrintFormattedStringOnWindow\n" -" b _0808FED6\n" -" .align 2, 0\n" -"_0808FDA4: .4byte gUnknown_810778C\n" -"_0808FDA8: .4byte gUnknown_8107790\n" -"_0808FDAC: .4byte gUnknown_810DF84\n" -"_0808FDB0:\n" -" lsls r0, r4, 3\n" -" adds r0, 0x10\n" -" ldr r2, _0808FEEC\n" -" movs r5, 0\n" -" str r5, [sp]\n" -" movs r1, 0\n" -" ldr r3, [sp, 0x50]\n" -" bl PrintFormattedStringOnWindow\n" -" ldr r6, _0808FEF0\n" -" mov r2, r10\n" -" movs r3, 0\n" -" ldrsh r1, [r2, r3]\n" -" adds r0, r6, 0\n" -" bl CopyMonsterNameToBuffer\n" -" ldr r1, _0808FEF4\n" -" mov r2, r10\n" -" movs r3, 0\n" -" ldrsh r0, [r2, r3]\n" -" str r0, [r1]\n" -" ldr r0, _0808FEF8\n" -" ldr r2, [r0]\n" -" str r5, [sp]\n" -" movs r0, 0x4\n" -" mov r1, r9\n" -" ldr r3, [sp, 0x50]\n" -" bl PrintFormattedStringOnWindow\n" -" movs r0, 0xA\n" -" add r9, r0\n" -" mov r1, r10\n" -" movs r2, 0\n" -" ldrsh r0, [r1, r2]\n" -" bl GetFriendArea\n" -" lsls r0, 24\n" -" lsrs r0, 24\n" -" bl GetFriendAreaName\n" -" adds r1, r0, 0\n" -" ldr r4, _0808FEFC\n" -" adds r0, r4, 0\n" -" movs r2, 0x50\n" -" bl strncpy\n" -" ldr r0, _0808FF00\n" -" ldr r2, [r0]\n" -" str r5, [sp]\n" -" movs r0, 0x4\n" -" mov r1, r9\n" -" ldr r3, [sp, 0x50]\n" -" bl PrintFormattedStringOnWindow\n" -" movs r3, 0xA\n" -" add r9, r3\n" -" ldr r0, _0808FF04\n" -" ldr r2, [r0]\n" -" str r5, [sp]\n" -" movs r0, 0x4\n" -" mov r1, r9\n" -" ldr r3, [sp, 0x50]\n" -" bl PrintFormattedStringOnWindow\n" -" movs r0, 0xD\n" -" add r9, r0\n" -" ldr r0, _0808FF08\n" -" ldr r2, [r0]\n" -" str r5, [sp]\n" -" movs r0, 0x4\n" -" mov r1, r9\n" -" ldr r3, [sp, 0x50]\n" -" bl PrintFormattedStringOnWindow\n" -" movs r1, 0xA\n" -" add r9, r1\n" -" mov r1, r10\n" -" adds r1, 0x1C\n" -" adds r0, r4, 0\n" -" bl PrintYellowDungeonNametoBuffer\n" -" ldr r0, _0808FF0C\n" -" ldr r2, [r0]\n" -" str r5, [sp]\n" -" movs r0, 0x4\n" -" mov r1, r9\n" -" ldr r3, [sp, 0x50]\n" -" bl PrintFormattedStringOnWindow\n" -" movs r2, 0xD\n" -" add r9, r2\n" -" mov r3, r10\n" -" movs r1, 0\n" -" ldrsh r0, [r3, r1]\n" -" bl GetCategoryString\n" -" adds r1, r0, 0\n" -" adds r0, r6, 0\n" -" movs r2, 0x14\n" -" bl strncpy\n" -" ldr r0, _0808FF10\n" -" ldr r2, [r0]\n" -" str r5, [sp]\n" -" movs r0, 0x4\n" -" mov r1, r9\n" -" ldr r3, [sp, 0x50]\n" -" bl PrintFormattedStringOnWindow\n" -" movs r2, 0xD\n" -" add r9, r2\n" -" ldr r4, _0808FF14\n" -" mov r3, r10\n" -" movs r1, 0\n" -" ldrsh r0, [r3, r1]\n" -" bl GetBodySize\n" -" lsls r0, 24\n" -" lsrs r0, 22\n" -" adds r0, r4\n" -" ldr r1, [r0]\n" -" adds r0, r6, 0\n" -" bl strcpy\n" -" ldr r0, _0808FF18\n" -" ldr r2, [r0]\n" -" str r5, [sp]\n" -" movs r0, 0x4\n" -" mov r1, r9\n" -" ldr r3, [sp, 0x50]\n" -" bl PrintFormattedStringOnWindow\n" -" movs r2, 0xD\n" -" add r9, r2\n" -" ldr r1, _0808FF1C\n" -" mov r0, r10\n" -" adds r0, 0x4C\n" -" ldrb r0, [r0]\n" -" lsls r0, 2\n" -" adds r0, r1\n" -" ldr r2, [r0]\n" -" str r5, [sp]\n" -"_0808FECC:\n" -" movs r0, 0x4\n" -" mov r1, r9\n" -" ldr r3, [sp, 0x50]\n" -" bl PrintFormattedStringOnWindow\n" -"_0808FED6:\n" -" ldr r0, [sp, 0x50]\n" -" bl sub_80073E0\n" -" add sp, 0x30\n" -" pop {r3-r5}\n" -" mov r8, r3\n" -" mov r9, r4\n" -" mov r10, r5\n" -" pop {r4-r7}\n" -" pop {r0}\n" -" bx r0\n" -" .align 2, 0\n" -"_0808FEEC: .4byte gUnknown_8107798\n" -"_0808FEF0: .4byte gFormatBuffer_Monsters\n" -"_0808FEF4: .4byte gFormatArgs\n" -"_0808FEF8: .4byte gUnknown_810DEB4\n" -"_0808FEFC: .4byte gFormatBuffer_Items\n" -"_0808FF00: .4byte gUnknown_810DEC8\n" -"_0808FF04: .4byte gUnknown_810DEDC\n" -"_0808FF08: .4byte gUnknown_810DFB4\n" -"_0808FF0C: .4byte gUnknown_810DFC8\n" -"_0808FF10: .4byte gUnknown_810DEF4\n" -"_0808FF14: .4byte gUnknown_810E02C\n" -"_0808FF18: .4byte gUnknown_810DF98\n" -"_0808FF1C: .4byte gEvolutionStrings"); + s32 i, y; + s32 j; + + sub_80073B8(windowId); + strncpy(gFormatBuffer_Monsters[0],mon->nameBuffer,0x14); + y = 0x20; + switch (param_1) { + case 0: + break; + case 2: { + const u8 *str; + s32 iVar8; + LevelData levelData; + + PrintFormattedStringOnWindow(param_2 * 8 + 0x10,0,gUnknown_8107754,windowId,'\0'); + gFormatArgs[0] = mon->level; + gFormatArgs[1] = mon->exp; + PrintFormattedStringOnWindow(4,y,*gLevel810DD6C_Ptr,windowId,'\0'); + y += 0xA; + PrintFormattedStringOnWindow(4,y,*gExpPts810DD9C_Ptr,windowId,'\0'); + y += 0xA; + if (mon->level < 100) { + GetPokemonLevelData(&levelData,mon->species,mon->level + 1); + gFormatArgs[0] = levelData.expRequired - mon->exp; + PrintFormattedStringOnWindow(4,y,*gUnknown_810DDB8,windowId,'\0'); + } + y += 0xC; + gFormatArgs[0] = mon->HP1; + gFormatArgs[1] = mon->HP2; + PrintFormattedStringOnWindow(4,y,*gUnknown_810DDD0,windowId,'\0'); + y += 0xA; + PrintFormattedStringOnWindow(4,y,*gUnknown_810DDE4,windowId,'\0'); + str = *gUnknown_810DE0C; + gFormatArgs[0] = mon->offense.att[0]; + if (mon->atkBoost != 0) { + gFormatArgs[0] = gFormatArgs[0] + mon->atkBoost; + str = *gUnknown_810DE20; + } + PrintFormattedStringOnWindow(4,y,str,windowId,'\0'); + if (mon->defBoost != 0) { + gFormatArgs[0] = mon->offense.def[0] + mon->defBoost; + PrintFormattedStringOnWindow(4,y,*gUnknown_810DE4C,windowId,'\0'); + } + else { + gFormatArgs[0] = mon->offense.def[0]; + PrintFormattedStringOnWindow(4,y,*gUnknown_810DE38,windowId,'\0'); + } + y += 0xA; + PrintFormattedStringOnWindow(4,y,*gUnknown_810DDFC,windowId,'\0'); + str = *gUnknown_810DE24; + gFormatArgs[0] = mon->offense.att[1]; + if (mon->spAtkBoost != 0) { + gFormatArgs[0] = gFormatArgs[0] + mon->spAtkBoost; + str = *gUnknown_810DE28; + } + PrintFormattedStringOnWindow(4,y,str,windowId,'\0'); + if (mon->spDefBoost != 0) { + gFormatArgs[0] = mon->offense.def[1] + mon->spDefBoost; + PrintFormattedStringOnWindow(4,y,*gUnknown_810DE54,windowId,'\0'); + } + else { + gFormatArgs[0] = mon->offense.def[1]; + PrintFormattedStringOnWindow(4,y,*gUnknown_810DE50,windowId,'\0'); + } + y += 0xA; + if (ItemExists(&mon->item)) { + sub_8090E14(gFormatBuffer_Items[0],&mon->item,0); + } + else { + strcpy(gFormatBuffer_Items[0],*gUnknown_810DE58); + } + PrintFormattedStringOnWindow(4,y,*gUnknown_810DE6C,windowId,'\0'); + y += 0xC; + gFormatArgs[0] = mon->IQ; + iVar8 = mon->IQ / 10; + if (iVar8 < 0) { + iVar8 = 0; + } + if (0x62 < iVar8) { + iVar8 = 99; + } + + InlineStrcpy(gFormatBuffer_Monsters[0],gUnknown_8115718[iVar8]); + PrintFormattedStringOnWindow(4,y,*gUnknown_810DE80,windowId,'\0'); + y += 0xA; + if (!mon->isTeamLeader) + { + CopyTacticsNameToBuffer(gFormatBuffer_Monsters[0],mon->tactic); + PrintFormattedStringOnWindow(4,y,*gUnknown_810DE98,windowId,'\0'); + } + y += 0xA; + break; + } + case 3: { + PrintFormattedStringOnWindow(param_2 * 8 + 0x10,0,gUnknown_810775C,windowId,'\0'); + PrintFormattedStringOnWindow(4,y,gUnknown_8107768,windowId,'\0'); + PrintFormattedStringOnWindow(0x38,y,GetFormattedTypeString(mon->types[0]),windowId,'\0'); + if (mon->types[1] != TYPE_NONE) { + PrintFormattedStringOnWindow(0x60,y,GetFormattedTypeString(mon->types[1]),windowId,'\0'); + } + y += 0xC; + PrintFormattedStringOnWindow(4,y,gUnknown_8107770,windowId,'\0'); + y += 0xC; + PrintFormattedStringOnWindow2(4,y,GetAbilityDescription(mon->abilities[0]),windowId,'\0',0xb); + y += 0x21; + if (mon->abilities[1] != ABILITY_UNKNOWN) { + PrintFormattedStringOnWindow2(4,y,GetAbilityDescription(mon->abilities[1]),windowId,'\0',0xb); + } + break; + } + case 1: { + s32 iVar11; + bool8 bVar10; + + PrintFormattedStringOnWindow(param_2 * 8 + 0x10,0,*gUnknown_810DD58,windowId,'\0'); + iVar11 = mon->unk56 - 1; + y -= 0xC; + bVar10 = FALSE; + + for (i = 0; i < 9; i++) { + param_4->unkC[i] = 0; + } + + for (j = 0; j < 10; j++, iVar11++, y += 0xC) { + if (-1 < iVar11) { + if (0xb < iVar11) + break; + if (mon->unk58[iVar11] != 0) { + bVar10 = TRUE; + InlineStrncpy(gFormatBuffer_Items[1],gStatusNames[mon->unk58[iVar11]],0x50); + PrintFormattedStringOnWindow(0xc,y,gUnknown_8107784,windowId,'\0'); + if (0 < j) { + param_4->unkC[j - 1] = mon->unk58[iVar11]; + } + } + } + } + + if (!bVar10) { + PrintFormattedStringOnWindow(0xc,0x20,*gUnknown_810DF78,windowId,'\0'); + } + break; + } + case 4: { + s32 iVar13; + bool8 bVar11; + u8 iqSkillBuffer[24]; + + PrintFormattedStringOnWindow(param_2 * 8 + 0x10,0,*gIQSkill810DD68_Ptr,windowId,'\0'); + GetNumAvailableIQSkills(iqSkillBuffer,mon->IQ); + iVar13 = mon->unk40 - 1; + + for (i = 0; i < 9; i++) { + param_4->unk0[i] = 0; + } + y -= 0xC; + bVar11 = FALSE; + + for(j = 0; j < 10; j++, iVar13++, y += 0xC) { + if (-1 < iVar13) { + if (0x17 < iVar13) + break; + if (iqSkillBuffer[iVar13] != 0) { + u8 *iqSkillName; + + bVar11 = TRUE; + iqSkillName = GetIQSkillName(iqSkillBuffer[iVar13]); + strncpy(gFormatBuffer_Items[1],iqSkillName,0x50); + if (IsIQSkillSet(&mon->IQSkills,1 << iqSkillBuffer[iVar13])) { + strcpy(gFormatBuffer_Items[0],gUnknown_8107788); + } + else { + strcpy(gFormatBuffer_Items[0],gUnknown_810778C); + } + if (j >= 1) { + param_4->unk0[j - 1] = iqSkillBuffer[iVar13]; + } + PrintFormattedStringOnWindow(0xc,y,gUnknown_8107790,windowId,'\0'); + } + } + } + + if (!bVar11) { + PrintFormattedStringOnWindow(0xc,0x20,*gUnknown_810DF84,windowId,'\0'); + } + break; + } + case 5: { + PrintFormattedStringOnWindow(param_2 * 8 + 0x10,0,gUnknown_8107798,windowId,'\0'); + CopyMonsterNameToBuffer(gFormatBuffer_Monsters[0],mon->species); + gFormatArgs[0] = mon->species; + PrintFormattedStringOnWindow(4,y,*gUnknown_810DEB4,windowId,'\0'); + y += 0xA; + InlineStrncpy(gFormatBuffer_Items[0],GetFriendAreaName(GetFriendArea(mon->species)),0x50); + PrintFormattedStringOnWindow(4,y,*gUnknown_810DEC8,windowId,'\0'); + y += 0xA; + PrintFormattedStringOnWindow(4,y,*gUnknown_810DEDC,windowId,'\0'); + y += 0xD; + PrintFormattedStringOnWindow(4,y,*gUnknown_810DFB4,windowId,'\0'); + y += 0xA; + PrintYellowDungeonNametoBuffer(gFormatBuffer_Items[0],&mon->dungeonLocation); + PrintFormattedStringOnWindow(4,y,*gUnknown_810DFC8,windowId,'\0'); + y += 0xD; + strncpy(gFormatBuffer_Monsters[0],GetCategoryString(mon->species),0x14); + PrintFormattedStringOnWindow(4,y,*gUnknown_810DEF4,windowId,'\0'); + y += 0xD; + strcpy(gFormatBuffer_Monsters[0],gUnknown_810E02C[GetBodySize(mon->species)]); + PrintFormattedStringOnWindow(4,y,*gUnknown_810DF98,windowId,'\0'); + y += 0xD; + PrintFormattedStringOnWindow(4,y,gEvolutionStrings[mon->unk4C],windowId,'\0'); + break; + } + } + sub_80073E0(windowId); } + void sub_808FF20(struct unkStruct_808FF20 *param_1, struct PokemonStruct1 *pokemon, bool8 param_3) { s32 index; From d1b81605e4b8fbe1fed4230864942d6fa1e5fda7 Mon Sep 17 00:00:00 2001 From: DizzyEggg Date: Wed, 26 Feb 2025 14:40:44 +0100 Subject: [PATCH 36/40] Match sub_807F43C --- src/code_807E5AC.c | 914 +++++++++------------------------------------ 1 file changed, 177 insertions(+), 737 deletions(-) diff --git a/src/code_807E5AC.c b/src/code_807E5AC.c index dca37458b..be276ce13 100644 --- a/src/code_807E5AC.c +++ b/src/code_807E5AC.c @@ -22,9 +22,14 @@ #include "dungeon_ai.h" #include "code_806CD90.h" #include "code_807CD9C.h" +#include "dungeon_random.h" #include "code_805D8C8.h" +#include "code_803E668.h" #include "code_8045A00.h" +#include "move_util.h" +#include "moves.h" #include "code_80450F8.h" +#include "math.h" #include "constants/ability.h" #include "constants/monster.h" #include "constants/type.h" @@ -615,766 +620,201 @@ void sub_807F33C(void) extern void sub_80833E8(DungeonPos *param_1, s32 *param_2); extern void sub_806A5B8(Entity *); +extern bool8 sub_8045888(Entity *ent); +extern void sub_806F370(Entity *pokemon, Entity *target, u32, u32, u8 *, u8 moveType, s32, u32, u32, u32); +extern void sub_807D068(Entity *, DungeonPos *); +extern void sub_80694C0(Entity *target,s32 x,int y,char param_4); void sub_807F9BC(Entity *entity); -/* +extern const u8 *const gUnknown_80FCB40; +extern const u8 *const gUnknown_80FCB70; +extern const u8 *const gUnknown_80FE6B4; +extern const u8 *const gUnknown_80FE690; + void sub_807F43C(Entity *target, Entity *attacker) { + s32 attackerDirection; + s32 var_3C; + DungeonPos attackerPos; + s32 pixelPosX, pixelPosY; + PixelPos var_54; + s32 var_30, r10; + s32 r6; + s32 newDir; + s32 i, directionId; + Entity *tileEntity; + s32 var_2C; + DungeonPos positions[40]; + s32 var_74[4]; + s32 positionsCounter; + if (AbilityIsActive(attacker, ABILITY_SUCTION_CUPS)) { SubstitutePlaceholderStringTags(gFormatBuffer_Monsters[0], attacker, 0); - TryDisplayDungeonLoggableMessage3(attacker, target, gUnknown_80FCB40); // is anchored, cannot be moved + TryDisplayDungeonLoggableMessage3(target, attacker, gUnknown_80FCB40); // is anchored, cannot be moved + return; } - else if (attacker == target) { + if (target == attacker) { SubstitutePlaceholderStringTags(gFormatBuffer_Monsters[0], attacker, 0); - TryDisplayDungeonLoggableMessage3(attacker, attacker, gUnknown_80FCB70); // couldn't be thrown for some reason + TryDisplayDungeonLoggableMessage3(target, attacker, gUnknown_80FCB70); // couldn't be thrown for some reason + return; } - else { - s32 var_74[4]; - DungeonPos positions[40]; - DungeonPos attackerPos = attacker->pos; - s32 var_3C = 0; - s32 monId; - while (1) { - s32 positionsCounter = 0; - for (monId = 0; monId < DUNGEON_MAX_POKEMON; monId++) { - Entity *mon = gDungeon->activePokemon[monId]; - if (EntityIsValid(mon) && target != mon && attacker != mon && CanSeeTarget(target, mon)) { - if (var_3C == 0) { - if (GetTreatmentBetweenMonsters(target, mon, FALSE, TRUE) != 1) - continue; - } - else { - if (GetTreatmentBetweenMonsters(target, mon, FALSE, TRUE) != 0) - continue; + attackerPos = attacker->pos; + for (var_3C = 0; var_3C < 2; var_3C++) { + positionsCounter = 0; + for (i = 0; i < DUNGEON_MAX_POKEMON; i++) { + Entity *mon = gDungeon->activePokemon[i]; + if (EntityIsValid(mon) && target != mon && attacker != mon && CanSeeTarget(target, mon)) { + if (var_3C == 0) { + if (GetTreatmentBetweenMonsters(target, mon, FALSE, TRUE) != 1) + continue; + } + else { + if (GetTreatmentBetweenMonsters(target, mon, FALSE, TRUE) != 0) + continue; + } + + if (var_3C == 0) { + DungeonPos pos; + for (directionId = 0; directionId < NUM_DIRECTIONS; directionId++) { + pos.x = gAdjacentTileOffsets[directionId].x + mon->pos.x; + pos.y = gAdjacentTileOffsets[directionId].y + mon->pos.y; + if (!sub_80703A0(attacker, &pos)) + break; } - if (var_3C != 0) { - s32 directionId; - DungeonPos pos; - for (directionId = 0; directionId < NUM_DIRECTIONS; directionId++) { - pos.x = mon->pos.x + gAdjacentTileOffsets[directionId].x; - pos.y = mon->pos.y + gAdjacentTileOffsets[directionId].y; - if (!sub_80703A0(attacker, &pos)) - break; - } - - if (directionId == NUM_DIRECTIONS) - break; - if (positionsCounter > 39) - break; + if (directionId != NUM_DIRECTIONS && positionsCounter < 40) { positions[positionsCounter++] = mon->pos; } - else { - s32 directionId; - DungeonPos pos; - for (directionId = 0; directionId < NUM_DIRECTIONS; directionId++) { - pos.x = mon->pos.x + gAdjacentTileOffsets[directionId].x; - pos.y = mon->pos.y + gAdjacentTileOffsets[directionId].y; - if (!sub_80703A0(attacker, &pos) && positionsCounter < 40) { - positions[positionsCounter++] = mon->pos; - } + } + else { + DungeonPos pos; + for (directionId = 0; directionId < NUM_DIRECTIONS; directionId++) { + pos.x = gAdjacentTileOffsets[directionId].x + mon->pos.x; + pos.y = gAdjacentTileOffsets[directionId].y + mon->pos.y; + if (!sub_80703A0(attacker, &pos) && positionsCounter < 40) { + positions[positionsCounter++] = pos; } } } } - - if (positionsCounter == 0) { - if (++var_3C < 2) - continue; - sub_80833E8(&target->pos, var_74); - } - else { - - } - break; } + if (positionsCounter != 0) + break; } -} -*/ -NAKED void sub_807F43C(Entity *target, Entity *attacker) -{ - asm_unified("push {r4-r7,lr}\n" -" mov r7, r10\n" -" mov r6, r9\n" -" mov r5, r8\n" -" push {r5-r7}\n" -" sub sp, 0x10C\n" -" str r0, [sp, 0xEC]\n" -" mov r8, r1\n" -" mov r0, r8\n" -" movs r1, 0xE\n" -" bl AbilityIsActive\n" -" lsls r0, 24\n" -" cmp r0, 0\n" -" beq _0807F470\n" -" ldr r0, _0807F468\n" -" mov r1, r8\n" -" movs r2, 0\n" -" bl SubstitutePlaceholderStringTags\n" -" ldr r0, _0807F46C\n" -" b _0807F694\n" -" .align 2, 0\n" -"_0807F468: .4byte gFormatBuffer_Monsters\n" -"_0807F46C: .4byte gUnknown_80FCB40\n" -"_0807F470:\n" -" ldr r0, [sp, 0xEC]\n" -" cmp r0, r8\n" -" bne _0807F490\n" -" ldr r0, _0807F488\n" -" mov r1, r8\n" -" movs r2, 0\n" -" bl SubstitutePlaceholderStringTags\n" -" ldr r0, _0807F48C\n" -" ldr r2, [r0]\n" -" mov r0, r8\n" -" b _0807F698\n" -" .align 2, 0\n" -"_0807F488: .4byte gFormatBuffer_Monsters\n" -"_0807F48C: .4byte gUnknown_80FCB70\n" -"_0807F490:\n" -" mov r1, r8\n" -" ldr r0, [r1, 0x4]\n" -" add r1, sp, 0xD4\n" -" str r0, [r1]\n" -" movs r2, 0\n" -" str r2, [sp, 0xF0]\n" -"_0807F49C:\n" -" movs r3, 0\n" -" mov r9, r3\n" -" movs r7, 0\n" -" mov r4, sp\n" -" adds r4, 0x18\n" -" str r4, [sp, 0x108]\n" -"_0807F4A8:\n" -" ldr r0, _0807F504\n" -" ldr r0, [r0]\n" -" lsls r1, r7, 2\n" -" ldr r2, _0807F508\n" -" adds r0, r2\n" -" adds r0, r1\n" -" ldr r4, [r0]\n" -" adds r0, r4, 0\n" -" bl EntityIsValid\n" -" lsls r0, 24\n" -" adds r3, r7, 0x1\n" -" str r3, [sp, 0x104]\n" -" cmp r0, 0\n" -" bne _0807F4C8\n" -" b _0807F602\n" -"_0807F4C8:\n" -" ldr r0, [sp, 0xEC]\n" -" cmp r0, r4\n" -" bne _0807F4D0\n" -" b _0807F602\n" -"_0807F4D0:\n" -" cmp r8, r4\n" -" bne _0807F4D6\n" -" b _0807F602\n" -"_0807F4D6:\n" -" adds r1, r4, 0\n" -" bl CanSeeTarget\n" -" lsls r0, 24\n" -" cmp r0, 0\n" -" bne _0807F4E4\n" -" b _0807F602\n" -"_0807F4E4:\n" -" ldr r1, [sp, 0xF0]\n" -" cmp r1, 0\n" -" bne _0807F50C\n" -" ldr r0, [sp, 0xEC]\n" -" adds r1, r4, 0\n" -" movs r2, 0\n" -" movs r3, 0x1\n" -" bl GetTreatmentBetweenMonsters\n" -" lsls r0, 24\n" -" lsrs r0, 24\n" -" cmp r0, 0x1\n" -" beq _0807F500\n" -" b _0807F602\n" -"_0807F500:\n" -" b _0807F51E\n" -" .align 2, 0\n" -"_0807F504: .4byte gDungeon\n" -"_0807F508: .4byte 0x000135cc\n" -"_0807F50C:\n" -" ldr r0, [sp, 0xEC]\n" -" adds r1, r4, 0\n" -" movs r2, 0\n" -" movs r3, 0x1\n" -" bl GetTreatmentBetweenMonsters\n" -" lsls r0, 24\n" -" cmp r0, 0\n" -" bne _0807F602\n" -"_0807F51E:\n" -" ldr r2, [sp, 0xF0]\n" -" cmp r2, 0\n" -" bne _0807F594\n" -" movs r5, 0\n" -" add r6, sp, 0xC8\n" -" adds r3, r7, 0x1\n" -" str r3, [sp, 0x104]\n" -" adds r7, r6, 0\n" -" ldr r0, _0807F588\n" -" mov r10, r0\n" -"_0807F532:\n" -" ldr r0, _0807F58C\n" -" lsls r3, r5, 2\n" -" adds r3, r0\n" -" ldrh r0, [r4, 0x4]\n" -" ldrh r1, [r3]\n" -" adds r0, r1\n" -" lsls r0, 16\n" -" lsrs r0, 16\n" -" ldr r1, [r6]\n" -" mov r2, r10\n" -" ands r1, r2\n" -" orrs r1, r0\n" -" str r1, [r7]\n" -" ldrh r2, [r4, 0x6]\n" -" ldrh r3, [r3, 0x2]\n" -" adds r2, r3\n" -" lsls r2, 16\n" -" ldr r0, _0807F590\n" -" ands r1, r0\n" -" orrs r1, r2\n" -" str r1, [r7]\n" -" mov r0, r8\n" -" add r1, sp, 0xC8\n" -" bl sub_80703A0\n" -" lsls r0, 24\n" -" cmp r0, 0\n" -" beq _0807F570\n" -" adds r5, 0x1\n" -" cmp r5, 0x7\n" -" ble _0807F532\n" -"_0807F570:\n" -" cmp r5, 0x8\n" -" beq _0807F602\n" -" mov r3, r9\n" -" cmp r3, 0x27\n" -" bgt _0807F602\n" -" ldr r0, [r4, 0x4]\n" -" ldr r4, [sp, 0x108]\n" -" stm r4!, {r0}\n" -" str r4, [sp, 0x108]\n" -" movs r0, 0x1\n" -" add r9, r0\n" -" b _0807F602\n" -" .align 2, 0\n" -"_0807F588: .4byte 0xffff0000\n" -"_0807F58C: .4byte gAdjacentTileOffsets\n" -"_0807F590: .4byte 0x0000ffff\n" -"_0807F594:\n" -" movs r5, 0\n" -" add r6, sp, 0xCC\n" -" adds r1, r7, 0x1\n" -" str r1, [sp, 0x104]\n" -" adds r7, r6, 0\n" -" mov r2, r9\n" -" lsls r0, r2, 2\n" -" add r0, sp\n" -" adds r0, 0x18\n" -" mov r10, r0\n" -"_0807F5A8:\n" -" ldr r0, _0807F630\n" -" lsls r3, r5, 2\n" -" adds r3, r0\n" -" ldrh r0, [r4, 0x4]\n" -" ldrh r1, [r3]\n" -" adds r0, r1\n" -" lsls r0, 16\n" -" lsrs r0, 16\n" -" ldr r2, _0807F634\n" -" ldr r1, [r6]\n" -" ands r1, r2\n" -" orrs r1, r0\n" -" str r1, [r7]\n" -" ldrh r2, [r4, 0x6]\n" -" ldrh r3, [r3, 0x2]\n" -" adds r2, r3\n" -" lsls r2, 16\n" -" ldr r0, _0807F638\n" -" ands r1, r0\n" -" orrs r1, r2\n" -" str r1, [r7]\n" -" mov r0, r8\n" -" add r1, sp, 0xCC\n" -" bl sub_80703A0\n" -" lsls r0, 24\n" -" cmp r0, 0\n" -" bne _0807F5FC\n" -" mov r2, r9\n" -" cmp r2, 0x27\n" -" bgt _0807F5FC\n" -" ldr r0, [r6]\n" -" mov r3, r10\n" -" adds r3, 0x4\n" -" mov r10, r3\n" -" subs r3, 0x4\n" -" stm r3!, {r0}\n" -" ldr r0, [sp, 0x108]\n" -" adds r0, 0x4\n" -" str r0, [sp, 0x108]\n" -" movs r1, 0x1\n" -" add r9, r1\n" -"_0807F5FC:\n" -" adds r5, 0x1\n" -" cmp r5, 0x7\n" -" ble _0807F5A8\n" -"_0807F602:\n" -" ldr r7, [sp, 0x104]\n" -" cmp r7, 0x13\n" -" bgt _0807F60A\n" -" b _0807F4A8\n" -"_0807F60A:\n" -" mov r2, r9\n" -" cmp r2, 0\n" -" bne _0807F63C\n" -" ldr r3, [sp, 0xF0]\n" -" adds r3, 0x1\n" -" str r3, [sp, 0xF0]\n" -" cmp r3, 0x1\n" -" bgt _0807F61C\n" -" b _0807F49C\n" -"_0807F61C:\n" -" ldr r0, [sp, 0xEC]\n" -" adds r0, 0x4\n" -" add r4, sp, 0xB8\n" -" adds r1, r4, 0\n" -" bl sub_80833E8\n" -" movs r7, 0\n" -" add r5, sp, 0xD0\n" -" adds r6, r5, 0\n" -" b _0807F654\n" -" .align 2, 0\n" -"_0807F630: .4byte gAdjacentTileOffsets\n" -"_0807F634: .4byte 0xffff0000\n" -"_0807F638: .4byte 0x0000ffff\n" -"_0807F63C:\n" -" mov r0, r9\n" -" bl DungeonRandInt\n" -" lsls r0, 2\n" -" add r0, sp\n" -" adds r0, 0x18\n" -" ldr r0, [r0]\n" -" str r0, [sp, 0xD4]\n" -" b _0807F6A8\n" -"_0807F64E:\n" -" ldr r0, [r5]\n" -" str r0, [sp, 0xD4]\n" -" b _0807F68E\n" -"_0807F654:\n" -" ldr r0, [r4]\n" -" ldr r1, [r4, 0x8]\n" -" bl DungeonRandRange\n" -" lsls r0, 16\n" -" lsrs r0, 16\n" -" ldr r2, _0807F6A0\n" -" ldr r1, [r5]\n" -" ands r1, r2\n" -" orrs r1, r0\n" -" str r1, [r6]\n" -" ldr r0, [r4, 0x4]\n" -" ldr r1, [r4, 0xC]\n" -" bl DungeonRandRange\n" -" lsls r0, 16\n" -" ldrh r1, [r6]\n" -" orrs r1, r0\n" -" str r1, [r6]\n" -" mov r0, r8\n" -" add r1, sp, 0xD0\n" -" bl sub_80703A0\n" -" lsls r0, 24\n" -" cmp r0, 0\n" -" beq _0807F64E\n" -" adds r7, 0x1\n" -" cmp r7, 0x63\n" -" ble _0807F654\n" -"_0807F68E:\n" -" cmp r7, 0x64\n" -" bne _0807F6A8\n" -" ldr r0, _0807F6A4\n" -"_0807F694:\n" -" ldr r2, [r0]\n" -" ldr r0, [sp, 0xEC]\n" -"_0807F698:\n" -" mov r1, r8\n" -" bl TryDisplayDungeonLoggableMessage3\n" -" b _0807F99C\n" -" .align 2, 0\n" -"_0807F6A0: .4byte 0xffff0000\n" -"_0807F6A4: .4byte gUnknown_80FE6B4\n" -"_0807F6A8:\n" -" ldr r0, _0807F860\n" -" mov r1, r8\n" -" movs r2, 0\n" -" bl SubstitutePlaceholderStringTags\n" -" ldr r0, _0807F864\n" -" ldr r2, [r0]\n" -" ldr r0, [sp, 0xEC]\n" -" mov r1, r8\n" -" bl TryDisplayDungeonLoggableMessage3\n" -" mov r0, r8\n" -" bl sub_8045888\n" -" lsls r0, 24\n" -" cmp r0, 0\n" -" beq _0807F6D0\n" -" ldr r0, _0807F868\n" -" bl PlaySoundEffect\n" -"_0807F6D0:\n" -" movs r4, 0\n" -" str r4, [sp, 0x100]\n" -" mov r1, r8\n" -" ldr r0, [r1, 0x70]\n" -" adds r0, 0x46\n" -" ldrb r0, [r0]\n" -" mov r9, r0\n" -" add r2, sp, 0xD4\n" -" movs r3, 0\n" -" ldrsh r1, [r2, r3]\n" -" mov r4, r8\n" -" movs r3, 0x4\n" -" ldrsh r0, [r4, r3]\n" -" subs r3, r1, r0\n" -" movs r4, 0x2\n" -" ldrsh r1, [r2, r4]\n" -" mov r2, r8\n" -" movs r4, 0x6\n" -" ldrsh r0, [r2, r4]\n" -" subs r1, r0\n" -" cmp r1, r3\n" -" bge _0807F6FE\n" -" adds r1, r3, 0\n" -"_0807F6FE:\n" -" lsls r6, r1, 4\n" -" cmp r6, 0x50\n" -" ble _0807F706\n" -" movs r6, 0x50\n" -"_0807F706:\n" -" cmp r6, 0x9\n" -" bgt _0807F70C\n" -" movs r6, 0xA\n" -"_0807F70C:\n" -" mov r1, r8\n" -" adds r1, 0x4\n" -" add r0, sp, 0xD4\n" -" bl GetDirectionTowardsPosition\n" -" adds r5, r0, 0\n" -" add r2, sp, 0xD4\n" -" movs r1, 0\n" -" ldrsh r0, [r2, r1]\n" -" lsls r4, r0, 1\n" -" adds r4, r0\n" -" lsls r4, 11\n" -" movs r3, 0xC0\n" -" lsls r3, 4\n" -" adds r4, r3\n" -" ldr r0, _0807F86C\n" -" lsls r5, 2\n" -" adds r5, r0\n" -" movs r1, 0\n" -" ldrsh r0, [r5, r1]\n" -" lsls r0, 8\n" -" movs r1, 0x3\n" -" bl __divsi3\n" -" adds r4, r0\n" -" str r4, [sp, 0xF4]\n" -" movs r3, 0xD6\n" -" add r3, sp\n" -" movs r2, 0\n" -" ldrsh r0, [r3, r2]\n" -" lsls r4, r0, 1\n" -" adds r4, r0\n" -" lsls r4, 11\n" -" movs r0, 0x80\n" -" lsls r0, 5\n" -" adds r4, r0\n" -" movs r1, 0x2\n" -" ldrsh r0, [r5, r1]\n" -" lsls r0, 8\n" -" movs r1, 0x3\n" -" bl __divsi3\n" -" adds r4, r0\n" -" str r4, [sp, 0xF8]\n" -" mov r2, r8\n" -" ldr r5, [r2, 0xC]\n" -" ldr r3, [sp, 0xF4]\n" -" subs r0, r3, r5\n" -" adds r1, r6, 0\n" -" bl __divsi3\n" -" str r0, [sp, 0xFC]\n" -" mov r0, r8\n" -" ldr r4, [r0, 0x10]\n" -" ldr r1, [sp, 0xF8]\n" -" subs r0, r1, r4\n" -" adds r1, r6, 0\n" -" bl __divsi3\n" -" mov r10, r0\n" -" add r0, sp, 0xD8\n" -" str r5, [r0]\n" -" str r4, [r0, 0x4]\n" -" movs r7, 0\n" -" adds r5, r0, 0\n" -" cmp r7, r6\n" -" bge _0807F7FC\n" -" adds r4, r5, 0\n" -"_0807F794:\n" -" ldr r0, [r5]\n" -" ldr r2, [sp, 0xFC]\n" -" adds r0, r2, r0\n" -" str r0, [r4]\n" -" ldr r0, [r4, 0x4]\n" -" add r0, r10\n" -" str r0, [r4, 0x4]\n" -" mov r0, r8\n" -" adds r1, r4, 0\n" -" bl sub_804535C\n" -" mov r0, r8\n" -" bl sub_8045888\n" -" lsls r0, 24\n" -" cmp r0, 0\n" -" beq _0807F7E6\n" -" ldr r0, [sp, 0x100]\n" -" bl sin_4096\n" -" lsls r0, 5\n" -" mov r3, r8\n" -" str r0, [r3, 0x1C]\n" -" movs r0, 0x3B\n" -" bl sub_803E46C\n" -" movs r0, 0x3\n" -" ands r0, r7\n" -" cmp r0, 0\n" -" bne _0807F7E6\n" -" movs r0, 0x7\n" -" mov r1, r9\n" -" ands r1, r0\n" -" mov r9, r1\n" -" mov r0, r8\n" -" movs r1, 0x6\n" -" mov r2, r9\n" -" bl sub_806CDD4\n" -" movs r2, 0x1\n" -" add r9, r2\n" -"_0807F7E6:\n" -" movs r0, 0x80\n" -" lsls r0, 4\n" -" adds r1, r6, 0\n" -" bl __divsi3\n" -" ldr r3, [sp, 0x100]\n" -" adds r3, r0\n" -" str r3, [sp, 0x100]\n" -" adds r7, 0x1\n" -" cmp r7, r6\n" -" blt _0807F794\n" -"_0807F7FC:\n" -" ldr r4, [sp, 0xF4]\n" -" str r4, [r5]\n" -" add r1, sp, 0xD8\n" -" ldr r0, [sp, 0xF8]\n" -" str r0, [r1, 0x4]\n" -" movs r0, 0\n" -" mov r2, r8\n" -" str r0, [r2, 0x1C]\n" -" mov r0, r8\n" -" bl sub_804535C\n" -" movs r0, 0x3B\n" -" bl sub_803E46C\n" -" mov r3, r8\n" -" ldr r0, [r3, 0x70]\n" -" movs r1, 0x7\n" -" mov r4, r9\n" -" ands r4, r1\n" -" adds r0, 0x46\n" -" strb r4, [r0]\n" -" add r2, sp, 0xD4\n" -" movs r1, 0\n" -" ldrsh r0, [r2, r1]\n" -" adds r4, r2, 0\n" -" movs r3, 0x2\n" -" ldrsh r1, [r4, r3]\n" -" bl GetTile\n" -" ldr r6, [r0, 0x10]\n" -" adds r0, r6, 0\n" -" bl EntityIsValid\n" -" lsls r0, 24\n" -" cmp r0, 0\n" -" bne _0807F876\n" -" add r2, sp, 0xD4\n" -" movs r0, 0\n" -" ldrsh r1, [r2, r0]\n" -" movs r3, 0x2\n" -" ldrsh r2, [r4, r3]\n" -" mov r0, r8\n" -" movs r3, 0x1\n" -" bl sub_80694C0\n" -" mov r0, r8\n" -" bl sub_807F9BC\n" -" b _0807F99C\n" -" .align 2, 0\n" -"_0807F860: .4byte gFormatBuffer_Monsters\n" -"_0807F864: .4byte gUnknown_80FE690\n" -"_0807F868: .4byte 0x000001a3\n" -"_0807F86C: .4byte gAdjacentTileOffsets\n" -"_0807F870:\n" -" ldr r0, [r7]\n" -" str r0, [sp, 0xD4]\n" -" b _0807F8BE\n" -"_0807F876:\n" -" movs r5, 0\n" -" add r4, sp, 0xE0\n" -" adds r7, r4, 0\n" -"_0807F87C:\n" -" ldr r0, _0807F8D0\n" -" lsls r3, r5, 2\n" -" adds r3, r0\n" -" add r1, sp, 0xD4\n" -" ldrh r0, [r1]\n" -" ldrh r2, [r3]\n" -" adds r0, r2\n" -" lsls r0, 16\n" -" lsrs r0, 16\n" -" ldr r2, _0807F8D4\n" -" ldr r1, [r7]\n" -" ands r1, r2\n" -" orrs r1, r0\n" -" str r1, [r4]\n" -" add r0, sp, 0xD4\n" -" ldrh r2, [r0, 0x2]\n" -" ldrh r3, [r3, 0x2]\n" -" adds r2, r3\n" -" lsls r2, 16\n" -" ldr r0, _0807F8D8\n" -" ands r1, r0\n" -" orrs r1, r2\n" -" str r1, [r4]\n" -" mov r0, r8\n" -" add r1, sp, 0xE0\n" -" bl sub_80703A0\n" -" lsls r0, 24\n" -" cmp r0, 0\n" -" beq _0807F870\n" -" adds r5, 0x1\n" -" cmp r5, 0x7\n" -" ble _0807F87C\n" -"_0807F8BE:\n" -" cmp r5, 0x8\n" -" bne _0807F8DC\n" -" ldr r0, [sp, 0xEC]\n" -" mov r1, r8\n" -" movs r2, 0\n" -" movs r3, 0\n" -" bl WarpTarget\n" -" b _0807F8FA\n" -" .align 2, 0\n" -"_0807F8D0: .4byte gAdjacentTileOffsets\n" -"_0807F8D4: .4byte 0xffff0000\n" -"_0807F8D8: .4byte 0x0000ffff\n" -"_0807F8DC:\n" -" mov r0, r8\n" -" add r1, sp, 0xD4\n" -" bl sub_807D068\n" -" add r0, sp, 0xD4\n" -" movs r3, 0\n" -" ldrsh r1, [r0, r3]\n" -" movs r0, 0xD6\n" -" add r0, sp\n" -" movs r4, 0\n" -" ldrsh r2, [r0, r4]\n" -" mov r0, r8\n" -" movs r3, 0x1\n" -" bl sub_80694C0\n" -"_0807F8FA:\n" -" adds r0, r6, 0\n" -" bl GetEntityType\n" -" cmp r0, 0x1\n" -" bne _0807F954\n" -" add r4, sp, 0xE4\n" -" ldr r1, _0807F9AC\n" -" adds r0, r4, 0\n" -" bl InitPokemonMove\n" -" adds r0, r6, 0\n" -" adds r1, r4, 0\n" -" bl sub_80571F0\n" -" lsls r0, 24\n" -" lsrs r1, r0, 24\n" -" cmp r1, 0\n" -" bne _0807F93C\n" -" ldr r0, _0807F9B0\n" -" movs r3, 0\n" -" ldrsh r2, [r0, r3]\n" -" str r1, [sp]\n" -" str r1, [sp, 0x4]\n" -" ldr r0, _0807F9B4\n" -" str r0, [sp, 0x8]\n" -" str r1, [sp, 0xC]\n" -" str r1, [sp, 0x10]\n" -" str r1, [sp, 0x14]\n" -" ldr r0, [sp, 0xEC]\n" -" adds r1, r6, 0\n" -" movs r3, 0\n" -" bl sub_806F370\n" -"_0807F93C:\n" -" adds r0, r6, 0\n" -" bl EntityIsValid\n" -" lsls r0, 24\n" -" cmp r0, 0\n" -" beq _0807F954\n" -" ldr r0, [r6, 0x70]\n" -" adds r0, 0x46\n" -" ldrb r1, [r0]\n" -" adds r0, r6, 0\n" -" bl sub_806CE68\n" -"_0807F954:\n" -" ldr r0, _0807F9B0\n" -" movs r4, 0\n" -" ldrsh r2, [r0, r4]\n" -" movs r1, 0\n" -" str r1, [sp]\n" -" str r1, [sp, 0x4]\n" -" ldr r0, _0807F9B8\n" -" str r0, [sp, 0x8]\n" -" str r1, [sp, 0xC]\n" -" str r1, [sp, 0x10]\n" -" str r1, [sp, 0x14]\n" -" ldr r0, [sp, 0xEC]\n" -" mov r1, r8\n" -" movs r3, 0\n" -" bl sub_806F370\n" -" mov r0, r8\n" -" bl EntityIsValid\n" -" lsls r0, 24\n" -" cmp r0, 0\n" -" beq _0807F98E\n" -" mov r1, r8\n" -" ldr r0, [r1, 0x70]\n" -" adds r0, 0x46\n" -" ldrb r1, [r0]\n" -" mov r0, r8\n" -" bl sub_806CE68\n" -"_0807F98E:\n" -" movs r0, 0x1E\n" -" movs r1, 0x3B\n" -" bl sub_803E708\n" -" mov r0, r8\n" -" bl sub_807F9BC\n" -"_0807F99C:\n" -" add sp, 0x10C\n" -" pop {r3-r5}\n" -" mov r8, r3\n" -" mov r9, r4\n" -" mov r10, r5\n" -" pop {r4-r7}\n" -" pop {r0}\n" -" bx r0\n" -" .align 2, 0\n" -"_0807F9AC: .4byte 0x00000163\n" -"_0807F9B0: .4byte gHurlOrbDmgValue\n" -"_0807F9B4: .4byte 0x0000021a\n" -"_0807F9B8: .4byte 0x00000219"); + if (positionsCounter != 0) { + s32 rnd = DungeonRandInt(positionsCounter); + attackerPos = positions[rnd]; + } + else { + sub_80833E8(&target->pos, var_74); + for (i = 0; i < 100; i++) { + DungeonPos pos; + pos.x = DungeonRandRange(var_74[0], var_74[2]); + pos.y = DungeonRandRange(var_74[1], var_74[3]); + if (!sub_80703A0(attacker, &pos)) { + attackerPos = pos; + break; + } + } + if (i == 100) { + TryDisplayDungeonLoggableMessage3(target, attacker, gUnknown_80FE6B4); // But it didn~27t go anywhere. + return; + } + } + + SubstitutePlaceholderStringTags(gFormatBuffer_Monsters[0], attacker, 0); + TryDisplayDungeonLoggableMessage3(target, attacker, gUnknown_80FE690); // m0 was sent flying! + if (sub_8045888(attacker)) { + PlaySoundEffect(0x1A3); + } + + var_2C = 0; + attackerDirection = GetEntInfo(attacker)->action.direction; + r6 = max(attackerPos.x - attacker->pos.x, attackerPos.y - attacker->pos.y) << 4; + if (r6 > 80) + r6 = 80; + if (r6 < 10) + r6 = 10; + + newDir = GetDirectionTowardsPosition(&attackerPos, &attacker->pos); + + pixelPosX = (((attackerPos.x * 24) + 12) << 8) + ((gAdjacentTileOffsets[newDir].x << 8) / 3); + pixelPosY = (((attackerPos.y * 24) + 16) << 8) + ((gAdjacentTileOffsets[newDir].y << 8) / 3); + + var_30 = (pixelPosX - attacker->pixelPos.x) / r6; + r10 = (pixelPosY - attacker->pixelPos.y) / r6; + var_54.x = attacker->pixelPos.x; + var_54.y = attacker->pixelPos.y; + for (i = 0; i < r6; i++) { + var_54.x += var_30; + var_54.y += r10; + sub_804535C(attacker, &var_54); + if (sub_8045888(attacker)) { + attacker->unk1C.raw = sin_4096(var_2C) << 5; + sub_803E46C(0x3B); + if (!(i & 3)) { + attackerDirection &= DIRECTION_MASK; + sub_806CDD4(attacker, 6, attackerDirection); + attackerDirection++; + } + } + var_2C += (0x800 / r6); + } + + var_54.x = pixelPosX; + var_54.y = pixelPosY; + attacker->unk1C.raw = 0; + sub_804535C(attacker, &var_54); + sub_803E46C(0x3B); + GetEntInfo(attacker)->action.direction = attackerDirection & DIRECTION_MASK; + + tileEntity = GetTile(attackerPos.x, attackerPos.y)->monster; + if (!EntityIsValid(tileEntity)) { + sub_80694C0(attacker, attackerPos.x, attackerPos.y, 1); + sub_807F9BC(attacker); + } + else { + for (directionId = 0; directionId < NUM_DIRECTIONS; directionId++) { + DungeonPos pos; + + pos.x = gAdjacentTileOffsets[directionId].x + attackerPos.x; + pos.y = gAdjacentTileOffsets[directionId].y + attackerPos.y; + if (!sub_80703A0(attacker, &pos)) { + attackerPos = pos; + break; + } + } + if (directionId == NUM_DIRECTIONS) { + WarpTarget(target, attacker, 0, NULL); + } + else { + sub_807D068(attacker, &attackerPos); + sub_80694C0(attacker, attackerPos.x, attackerPos.y, 1); + } + + if (GetEntityType(tileEntity) == ENTITY_MONSTER) { + Move move; + + InitPokemonMove(&move, MOVE_REGULAR_ATTACK); + if (!sub_80571F0(tileEntity, &move)) { + sub_806F370(target, tileEntity, gHurlOrbDmgValue, FALSE, NULL, TYPE_NONE, 0x21A, 0, 0, 0); + } + if (EntityIsValid(tileEntity)) { + sub_806CE68(tileEntity, GetEntInfo(tileEntity)->action.direction); + } + } + + sub_806F370(target, attacker, gHurlOrbDmgValue, FALSE, NULL, TYPE_NONE, 0x219, 0, 0, 0); + if (EntityIsValid(attacker)) { + sub_806CE68(attacker, GetEntInfo(attacker)->action.direction); + } + sub_803E708(0x1E, 0x3B); + sub_807F9BC(attacker); + } } void sub_807F9BC(Entity *entity) From 9d723ee37cb20db9886c05fcc3fd31568e283eea Mon Sep 17 00:00:00 2001 From: DizzyEggg Date: Wed, 26 Feb 2025 15:09:10 +0100 Subject: [PATCH 37/40] Make pos->pixelPos conversion more readable --- include/structs/str_position.h | 3 +++ src/code_8041AD0.c | 4 ++-- src/code_8073CF0.c | 8 ++++---- src/code_807CD9C.c | 4 ++-- src/code_807E5AC.c | 4 ++-- src/dungeon_cutscenes.c | 18 ++++++------------ src/dungeon_move.c | 18 ++++++------------ src/dungeon_util.c | 9 ++++----- src/dungeon_util_1.c | 2 +- src/move_actions.c | 11 ++--------- 10 files changed, 32 insertions(+), 49 deletions(-) diff --git a/include/structs/str_position.h b/include/structs/str_position.h index e56ee1d18..42b312f96 100644 --- a/include/structs/str_position.h +++ b/include/structs/str_position.h @@ -19,6 +19,9 @@ typedef struct PixelPos /* 0x4 */ s32 y; } PixelPos; +#define X_POS_TO_PIXELPOS(x)((((x) * 24) + 12) << 8) +#define Y_POS_TO_PIXELPOS(y)((((y) * 24) + 16) << 8) + /** * Currently only used in script data, for entities and GroundLink data. * DungeonPos expressed in terms of *graphics* tiles, 8 pixels per unit. diff --git a/src/code_8041AD0.c b/src/code_8041AD0.c index 53be37e00..6e87e719c 100644 --- a/src/code_8041AD0.c +++ b/src/code_8041AD0.c @@ -58,8 +58,8 @@ s32 sub_80416A4(DungeonPos *pos_1, u32 param_2, bool8 param_3) { PixelPos pos; - pos.x = pos_1->x * 0x1800 + 0xc00; - pos.y = pos_1->y * 0x1800 + 0x1000; + pos.x = X_POS_TO_PIXELPOS(pos_1->x); + pos.y = Y_POS_TO_PIXELPOS(pos_1->y); return sub_80416E0(&pos, param_2, param_3); } diff --git a/src/code_8073CF0.c b/src/code_8073CF0.c index f2ad85430..6a06e5be5 100644 --- a/src/code_8073CF0.c +++ b/src/code_8073CF0.c @@ -892,8 +892,8 @@ bool8 UseAttack(Entity *a0) PixelPos pos; monInfo->flags |= 0x2000; - pos.x = (monInfo->unk184[0].previousTargetMovePosition2.x * 0x1800) + 0xC00; - pos.y = (monInfo->unk184[0].previousTargetMovePosition2.y * 0x1800) + 0x1000; + pos.x = X_POS_TO_PIXELPOS(monInfo->unk184[0].previousTargetMovePosition2.x); + pos.y = Y_POS_TO_PIXELPOS(monInfo->unk184[0].previousTargetMovePosition2.y); sub_804535C(mon, &pos); sub_806CDFC(mon, 0, monInfo->unk184[0].lastMoveDirection); monInfo->notMoving = 0; @@ -929,8 +929,8 @@ bool8 UseAttack(Entity *a0) else { PixelPos pos; - pos.x = (monInfo->unk184[monInfo->notMoving].previousTargetMovePosition2.x * 0x1800) + 0xC00; - pos.y = (monInfo->unk184[monInfo->notMoving].previousTargetMovePosition2.y * 0x1800) + 0x1000; + pos.x = X_POS_TO_PIXELPOS(monInfo->unk184[monInfo->notMoving].previousTargetMovePosition2.x); + pos.y = Y_POS_TO_PIXELPOS(monInfo->unk184[monInfo->notMoving].previousTargetMovePosition2.y); sub_804535C(mon, &pos); sub_806CDFC(mon, 0, monInfo->unk184[monInfo->notMoving].lastMoveDirection); } diff --git a/src/code_807CD9C.c b/src/code_807CD9C.c index 8f4874380..1edaa4117 100644 --- a/src/code_807CD9C.c +++ b/src/code_807CD9C.c @@ -202,8 +202,8 @@ void sub_807D068(Entity *pokemon, DungeonPos *pos) int incrementX; int incrementY; - posX = pos->x * 0x1800 + 0xc00; - posY = pos->y * 0x1800 + 0x1000; + posX = X_POS_TO_PIXELPOS(pos->x); + posY = Y_POS_TO_PIXELPOS(pos->y); diff = (pokemon->pixelPos).x - posX; if (diff < 0) { diff = -diff; diff --git a/src/code_807E5AC.c b/src/code_807E5AC.c index be276ce13..d3fd624f9 100644 --- a/src/code_807E5AC.c +++ b/src/code_807E5AC.c @@ -742,8 +742,8 @@ void sub_807F43C(Entity *target, Entity *attacker) newDir = GetDirectionTowardsPosition(&attackerPos, &attacker->pos); - pixelPosX = (((attackerPos.x * 24) + 12) << 8) + ((gAdjacentTileOffsets[newDir].x << 8) / 3); - pixelPosY = (((attackerPos.y * 24) + 16) << 8) + ((gAdjacentTileOffsets[newDir].y << 8) / 3); + pixelPosX = X_POS_TO_PIXELPOS(attackerPos.x) + ((gAdjacentTileOffsets[newDir].x << 8) / 3); + pixelPosY = Y_POS_TO_PIXELPOS(attackerPos.y) + ((gAdjacentTileOffsets[newDir].y << 8) / 3); var_30 = (pixelPosX - attacker->pixelPos.x) / r6; r10 = (pixelPosY - attacker->pixelPos.y) / r6; diff --git a/src/dungeon_cutscenes.c b/src/dungeon_cutscenes.c index 0760645f4..010fe490c 100644 --- a/src/dungeon_cutscenes.c +++ b/src/dungeon_cutscenes.c @@ -1270,12 +1270,10 @@ void MoltresScreenFlash1(s32 xArg, s32 yArg) s32 x, y; DungeonPos newPos; - x = (xArg * 3) << 11; - x += 0xC00; + x = X_POS_TO_PIXELPOS(xArg); newPos.x = x / 256; - y = (yArg * 3) << 11; - y += 0x1000; + y = Y_POS_TO_PIXELPOS(yArg); newPos.y = y / 256; sub_8085EC8(370,16,0,&newPos,0); @@ -1287,12 +1285,10 @@ void MoltresScreenFlash2(s32 xArg, s32 yArg) s32 i, x, y; DungeonPos newPos; - x = (xArg * 3) << 11; - x += 0xC00; + x = X_POS_TO_PIXELPOS(xArg); newPos.x = x / 256; - y = (yArg * 3) << 11; - y += 0x1000; + y = Y_POS_TO_PIXELPOS(yArg); newPos.y = y / 256; r6 = sub_8085EC8(370,22,0,&newPos,0); @@ -4102,12 +4098,10 @@ void sub_808BB3C(DungeonPos *pos1) s32 x, y; DungeonPos newPos; - x = (pos1->x * 3) << 11; - x += 0xC00; + x = X_POS_TO_PIXELPOS(pos1->x); newPos.x = x / 256; - y = (pos1->y * 3) << 11; - y += 0x1000; + y = Y_POS_TO_PIXELPOS(pos1->y); newPos.y = y / 256; sub_8085EC8(100,0,0,&newPos,0); diff --git a/src/dungeon_move.c b/src/dungeon_move.c index b87d60d73..95881ee7a 100644 --- a/src/dungeon_move.c +++ b/src/dungeon_move.c @@ -2274,17 +2274,11 @@ s32 sub_8056564(Entity *entity, DungeonPos *pos, Move *move, s32 r4) if (!gDungeon->unk181e8.blinded && (GetBodySize(entInfo->apparentID) < 4 || r4 != 1)) { s32 unk6 = sub_800ECB8(sub_80412E0(move->id, GetApparentWeather(entity), 1))->unk6; - s32 x = (pos->x * 3 << 11); - s32 y = (pos->y * 3 << 11); - // This is needed for matching purposes. - s32 y2; + s32 pixelPosX = X_POS_TO_PIXELPOS(pos->x); + s32 pixelPosY = Y_POS_TO_PIXELPOS(pos->y); - x += 0xC00; - y += 0x1000; - y2 = y; - - unkSp2.x = x / 256; - unkSp2.y = y2 / 256; + unkSp2.x = pixelPosX / 256; + unkSp2.y = pixelPosY / 256; if (unk6 != 0) { s32 someRetVal; @@ -2422,8 +2416,8 @@ void sub_80566F8(Entity *attacker, Move *move, s32 a2, bool8 a3, s32 itemId, s32 var_68.y += var_48; if (sub_803F428(&var_68) && !gDungeon->unk181e8.blinded) { PixelPos pos32; - pos32.x = (var_68Before.x * 0x1800) + 0xC00; - pos32.y = (var_68Before.y * 0x1800) + 0x1000; + pos32.x = X_POS_TO_PIXELPOS(var_68Before.x); + pos32.y = Y_POS_TO_PIXELPOS(var_68Before.y); var_28 = var_30 * (var_4C << 8); var_24 = var_30 * (var_48 << 8); for (j = 0; j < 24 / var_30; j++) { diff --git a/src/dungeon_util.c b/src/dungeon_util.c index e7b32e641..fc06a04a2 100644 --- a/src/dungeon_util.c +++ b/src/dungeon_util.c @@ -179,14 +179,13 @@ void sub_804522C(void) { void sub_804535C(Entity *entity, PixelPos *pos) { - if (pos != NULL) { - (entity->pixelPos).x = pos->x; - (entity->pixelPos).y = pos->y; + entity->pixelPos.x = pos->x; + entity->pixelPos.y = pos->y; } else { - (entity->pixelPos).x = (entity->pos).x * 0x1800 + 0xc00; - (entity->pixelPos).y = (entity->pos).y * 0x1800 + 0x1000; + entity->pixelPos.x = X_POS_TO_PIXELPOS(entity->pos.x); + entity->pixelPos.y = Y_POS_TO_PIXELPOS(entity->pos.y); } } diff --git a/src/dungeon_util_1.c b/src/dungeon_util_1.c index d4873ae97..fa1d66152 100644 --- a/src/dungeon_util_1.c +++ b/src/dungeon_util_1.c @@ -239,7 +239,7 @@ void sub_80857B8(void) void sub_8085860(s32 x, s32 y) { sub_803F4A0(0); - sub_803F878(x * 0x1800 + 0xc00, y * 0x1800 + 0x1000); + sub_803F878(X_POS_TO_PIXELPOS(x), Y_POS_TO_PIXELPOS(y)); } void sub_8085890(s32 x, s32 y) diff --git a/src/move_actions.c b/src/move_actions.c index 17e6816ce..a50f494ed 100644 --- a/src/move_actions.c +++ b/src/move_actions.c @@ -2585,8 +2585,6 @@ bool8 SplashMoveAction(Entity * pokemon, Entity * target, Move *move, u32 param_ PixelPos pos2; Tile *tile; Entity *entity; - s32 temp; - s32 temp2; u8 check; @@ -2610,14 +2608,9 @@ _0805A8C2: TryDisplayDungeonLoggableMessage3(pokemon,target,*gUnknown_80FEBDC); return FALSE; } - temp = pos1.x * 0x1800; - temp += (0xC00); - pos2.x = (temp - target->pixelPos.x) / 0xc; - - temp2 = pos1.y * 0x1800; - temp2 += (0x80 << 5); - pos2.y = ((temp2 - target->pixelPos.y) / 0xc); + pos2.x = (X_POS_TO_PIXELPOS(pos1.x) - target->pixelPos.x) / 0xc; + pos2.y = (Y_POS_TO_PIXELPOS(pos1.y) - target->pixelPos.y) / 0xc; if (((check = sub_803F428(&target->pos), r9 = &target->pos, check)) || (sub_803F428(&pos1))) { for(counter = 0; counter < 0xC; counter++) From 1019d6151225656900f5361d6c026477a30478b9 Mon Sep 17 00:00:00 2001 From: DizzyEggg Date: Wed, 26 Feb 2025 18:40:06 +0100 Subject: [PATCH 38/40] Fix fakematch in sub_808F468 --- include/pokemon_3.h | 2 +- src/pokemon_3.c | 292 +++++++++++++++++++++----------------------- 2 files changed, 143 insertions(+), 151 deletions(-) diff --git a/include/pokemon_3.h b/include/pokemon_3.h index e52d2a12b..f76144a98 100644 --- a/include/pokemon_3.h +++ b/include/pokemon_3.h @@ -69,7 +69,7 @@ void ToggleIQSkill(IqSkillFlags *iq, u32 skillIndex); void SetIQSkill(IqSkillFlags *iq, u32 skillIndex); bool8 IsIQSkillSet(IqSkillFlags *iq, u32 IQSkillBit); void SetDefaultIQSkills(IqSkillFlags *iq, bool8 enableSelfCurer); -void sub_808F468(PokemonStruct1 *param_1, EvolveStatus *evolveStatus, u8 param_3); +void sub_808F468(PokemonStruct1 *param_1, EvolveStatus *evolveStatus, bool8 param_3); s32 sub_808F700(PokemonStruct1 *pokemon); PokemonStruct1 *sub_808F734(PokemonStruct1 *pokemon, s16 _species); s16 ExtractSpeciesIndex(UnkDungeonGlobal_unk1CD98 *r0); diff --git a/src/pokemon_3.c b/src/pokemon_3.c index 21c8e7fef..4ff0c1ff0 100644 --- a/src/pokemon_3.c +++ b/src/pokemon_3.c @@ -800,171 +800,163 @@ void WriteHiddenPowerBits(DataSerializer* a1, HiddenPower* a2) WriteBits(a1, &a2->hiddenPowerType, 5); } -void sub_808F468(PokemonStruct1 *param_1, EvolveStatus *evolveStatus, u8 param_3) +void sub_808F468(struct PokemonStruct1 *pokemon,struct EvolveStatus *evolveStatus,bool8 param_3) { - bool8 evolFlag; - u8 friendArea; - u8 uVar2; - s32 numPokemon; - FriendAreaCapacity local_40; // sp 0x0 - unkEvolve evolveConditions; // r7 - s32 index, index2; -#ifndef NONMATCHING - register s32 defaultReason asm("sl"); -#else - s32 defaultReason; -#endif + struct FriendAreaCapacity friendAreaCapacity; + struct unkEvolve evolveConditions; + s32 index; evolveStatus->evolutionConditionStatus = 0; - for(index = MONSTER_BULBASAUR; index < MONSTER_MAX; index++) - { - if ((s16)index == MONSTER_ALAKAZAM) { - GetPokemonEvolveConditions(MONSTER_ALAKAZAM, &evolveConditions); + for (index = MONSTER_BULBASAUR; index < MONSTER_MAX; index++) { + s32 speciesId = (s16) index; + if (speciesId == MONSTER_ALAKAZAM) { + GetPokemonEvolveConditions(MONSTER_ALAKAZAM,&evolveConditions); } else { - GetPokemonEvolveConditions(index, &evolveConditions); + GetPokemonEvolveConditions(speciesId,&evolveConditions); } - if(((evolveConditions.preEvolution.evolveType != EVOLVE_TYPE_NONE) && (param_1->speciesNum == evolveConditions.preEvolution.evolveFrom))) + if (evolveConditions.preEvolution.evolveType != 0 && pokemon->speciesNum == evolveConditions.preEvolution.evolveFrom) break; }; + if (index == MONSTER_MAX) { evolveStatus->evolutionConditionStatus = EVOLUTION_NO_MORE; + return; } - else { - for(index = MONSTER_BULBASAUR, defaultReason = EVOLUTION_LACK_ITEM; index < MONSTER_MAX; index++) - { - evolFlag = FALSE; - index2 = (s16)index; - GetPokemonEvolveConditions(index2, &evolveConditions); - if ((evolveConditions.preEvolution.evolveType == EVOLVE_TYPE_NONE) || (param_1->speciesNum != evolveConditions.preEvolution.evolveFrom)) continue; - friendArea = ((u8 (*)(s32))GetFriendArea)(index2); // UB - uVar2 = GetFriendArea(param_1->speciesNum); - GetFriendAreaCapacity2(friendArea,&local_40,FALSE,FALSE); - if (!local_40.hasFriendArea) { - evolveStatus->evolutionConditionStatus |= EVOLUTION_LACK_FRIEND_AREA; - evolFlag = TRUE; + + for (index = MONSTER_BULBASAUR; index < MONSTER_MAX; index++) { + u8 evolvedMonFriendArea, monFriendArea; + bool8 cannotEvolve = FALSE; + s32 speciesId = (s16) (index); + + GetPokemonEvolveConditions(speciesId, &evolveConditions); + if (evolveConditions.preEvolution.evolveType == 0 || pokemon->speciesNum != evolveConditions.preEvolution.evolveFrom) + continue; + + evolvedMonFriendArea = GetFriendArea(speciesId); + monFriendArea = GetFriendArea(pokemon->speciesNum); + GetFriendAreaCapacity2(evolvedMonFriendArea,&friendAreaCapacity,0,0); + if (!friendAreaCapacity.hasFriendArea) { + evolveStatus->evolutionConditionStatus |= EVOLUTION_LACK_FRIEND_AREA; + cannotEvolve = TRUE; + } + else { + s32 currMonsNo = friendAreaCapacity.currNoPokemon; + if (evolvedMonFriendArea == monFriendArea) { + currMonsNo--; + } + if (friendAreaCapacity.maxPokemon <= currMonsNo) { + evolveStatus->evolutionConditionStatus |= EVOLUTION_LACK_ROOM; + cannotEvolve = TRUE; + } + } + + if (evolveConditions.preEvolution.evolveType == EVOLVE_TYPE_LEVEL) { + if (evolveStatus->evolutionConditionStatus & 1) + continue; + if (pokemon->level < evolveConditions.evolutionRequirements.mainRequirement) { + evolveStatus->evolutionConditionStatus |= EVOLUTION_LACK_LEVEL; + cannotEvolve = TRUE; + } + } + else if (evolveConditions.preEvolution.evolveType == EVOLVE_TYPE_IQ) { + if (pokemon->IQ < evolveConditions.evolutionRequirements.mainRequirement) { + evolveStatus->evolutionConditionStatus |= EVOLUTION_LACK_IQ; + cannotEvolve = TRUE; + } + } + else if (evolveConditions.preEvolution.evolveType == EVOLVE_TYPE_ITEM) { + if (param_3) { + if ((evolveStatus->evoItem1 != evolveConditions.evolutionRequirements.mainRequirement) && + (evolveStatus->evoItem2 != evolveConditions.evolutionRequirements.mainRequirement)) + { + evolveStatus->evolutionConditionStatus |= EVOLUTION_LACK_ITEM; + cannotEvolve = TRUE; + } + } + else if (FindItemInInventory(evolveConditions.evolutionRequirements.mainRequirement) < 0) { + evolveStatus->evolutionConditionStatus |= EVOLUTION_LACK_ITEM; + cannotEvolve = TRUE; + } + } + + if (evolveConditions.evolutionRequirements.additionalRequirement == 4) { + if (param_3) { + if ((evolveStatus->evoItem1 != ITEM_LINK_CABLE) && (evolveStatus->evoItem2 != ITEM_LINK_CABLE)) { + evolveStatus->evolutionConditionStatus |= EVOLUTION_LACK_ITEM; + cannotEvolve = TRUE; + } + } + else if (FindItemInInventory(ITEM_LINK_CABLE) < 0) { + evolveStatus->evolutionConditionStatus |= EVOLUTION_LACK_ITEM; + cannotEvolve = TRUE; + } + } + else if (evolveConditions.evolutionRequirements.additionalRequirement == 5) { + if (pokemon->offense.att[0] <= pokemon->offense.def[0]) { + cannotEvolve = TRUE; + } + } + else if (evolveConditions.evolutionRequirements.additionalRequirement == 6) { + if (pokemon->offense.att[0] >= pokemon->offense.def[0]) { + cannotEvolve = TRUE; + } + } + else if (evolveConditions.evolutionRequirements.additionalRequirement == 7) { + if (pokemon->offense.att[0] != pokemon->offense.def[0]) { + cannotEvolve = TRUE; + } + } + else if (evolveConditions.evolutionRequirements.additionalRequirement == 8) { + if (param_3) { + if ((evolveStatus->evoItem1 != ITEM_SUN_RIBBON) && (evolveStatus->evoItem2 != ITEM_SUN_RIBBON)) { + evolveStatus->evolutionConditionStatus |= EVOLUTION_LACK_ITEM; + cannotEvolve = TRUE; + } + } + else if (FindItemInInventory(ITEM_SUN_RIBBON) < 0) { + evolveStatus->evolutionConditionStatus |= EVOLUTION_LACK_ITEM; + cannotEvolve = TRUE; + } + } + else if (evolveConditions.evolutionRequirements.additionalRequirement == 9) { + if (param_3) { + if ((evolveStatus->evoItem1 != ITEM_LUNAR_RIBBON) && (evolveStatus->evoItem2 != ITEM_LUNAR_RIBBON)) { + evolveStatus->evolutionConditionStatus |= EVOLUTION_LACK_ITEM; + cannotEvolve = TRUE; + } + } + else if (FindItemInInventory(ITEM_LUNAR_RIBBON) < 0) { + evolveStatus->evolutionConditionStatus |= EVOLUTION_LACK_ITEM; + cannotEvolve = TRUE; + } + } + else if (evolveConditions.evolutionRequirements.additionalRequirement == 0xb) { + if ((evolveStatus->wurmpleVal & 1)) { + cannotEvolve = TRUE; + } + } + else if (evolveConditions.evolutionRequirements.additionalRequirement == 0xc) { + if (!(evolveStatus->wurmpleVal & 1)) { + cannotEvolve = TRUE; + } + } + else if (evolveConditions.evolutionRequirements.additionalRequirement == 10) { + if (param_3 != 0) { + if ((evolveStatus->evoItem1 != ITEM_BEAUTY_SCARF) && (evolveStatus->evoItem2 != ITEM_BEAUTY_SCARF)) { + cannotEvolve = TRUE; + } } else { - numPokemon = local_40.currNoPokemon; - if (friendArea == uVar2) { - numPokemon--; - } - if (local_40.maxPokemon <= numPokemon) { - evolveStatus->evolutionConditionStatus |= EVOLUTION_LACK_ROOM; - evolFlag = TRUE; + if (FindItemInInventory(ITEM_BEAUTY_SCARF) < 0) { + cannotEvolve = TRUE; } } - if (evolveConditions.preEvolution.evolveType == EVOLVE_TYPE_LEVEL) { - if ((evolveStatus->evolutionConditionStatus & EVOLUTION_GOOD)) continue; - if (param_1->level < evolveConditions.evolutionRequirements.mainRequirement) { - evolveStatus->evolutionConditionStatus |= EVOLUTION_LACK_LEVEL; - evolFlag = TRUE; - } - } - else if (evolveConditions.preEvolution.evolveType == EVOLVE_TYPE_IQ) { - if (param_1->IQ < evolveConditions.evolutionRequirements.mainRequirement) { - evolveStatus->evolutionConditionStatus |= EVOLUTION_LACK_IQ; - evolFlag = TRUE; - } - } - else if (evolveConditions.preEvolution.evolveType == EVOLVE_TYPE_ITEM) { - if (param_3 != 0) { - if ((evolveStatus->evoItem1 != evolveConditions.evolutionRequirements.mainRequirement) && - (evolveStatus->evoItem2 != evolveConditions.evolutionRequirements.mainRequirement)) { - evolveStatus->evolutionConditionStatus |= defaultReason; - evolFlag = TRUE; - } - } - else - { - if (FindItemInInventory(evolveConditions.evolutionRequirements.mainRequirement) < 0) { - evolveStatus->evolutionConditionStatus |= defaultReason; - evolFlag = TRUE; - } - } - } - if (evolveConditions.evolutionRequirements.additionalRequirement == 4) { - if (param_3 != 0) { - if ((evolveStatus->evoItem1 != ITEM_LINK_CABLE) && (evolveStatus->evoItem2 != ITEM_LINK_CABLE)) - { - evolveStatus->evolutionConditionStatus |= defaultReason; - continue; - } - } - else - { - if (-1 < FindItemInInventory(ITEM_LINK_CABLE)) goto _0808F6CA; - evolveStatus->evolutionConditionStatus |= defaultReason; - continue; - } - } - else if (evolveConditions.evolutionRequirements.additionalRequirement == 5) { - if ((param_1->offense).att[0] > (param_1->offense).def[0]) goto _0808F6CA; - else continue; - } - else if (evolveConditions.evolutionRequirements.additionalRequirement == 6) { - if ((param_1->offense).att[0] < (param_1->offense).def[0]) goto _0808F6CA; - else continue; - } - else if (evolveConditions.evolutionRequirements.additionalRequirement == 7) { - if ((param_1->offense).att[0] == (param_1->offense).def[0]) goto _0808F6CA; - else continue; - } - else if (evolveConditions.evolutionRequirements.additionalRequirement == 8) - { - if (param_3 != 0) { - if ((evolveStatus->evoItem1 != ITEM_SUN_RIBBON) && (evolveStatus->evoItem2 != ITEM_SUN_RIBBON)) - { - evolveStatus->evolutionConditionStatus |= defaultReason; - continue; - } - else goto _0808F6CA; - } - else { - if (-1 < FindItemInInventory(ITEM_SUN_RIBBON)) goto _0808F6CA; - evolveStatus->evolutionConditionStatus |= defaultReason; - continue; - } - } - else if (evolveConditions.evolutionRequirements.additionalRequirement == 9) { - if (param_3 != 0) { - if ((evolveStatus->evoItem1 != ITEM_LUNAR_RIBBON) && (evolveStatus->evoItem2 != ITEM_LUNAR_RIBBON)) - { - evolveStatus->evolutionConditionStatus |= defaultReason; - continue; - } - else goto _0808F6CA; - } - else - { - if (-1 < FindItemInInventory(ITEM_LUNAR_RIBBON)) goto _0808F6CA; - evolveStatus->evolutionConditionStatus |= defaultReason; - continue; - } - } - else if (evolveConditions.evolutionRequirements.additionalRequirement == 11) { - if (!(evolveStatus->wurmpleVal & 1)) goto _0808F6CA; - else continue; - } - else if (evolveConditions.evolutionRequirements.additionalRequirement == 12) { - if ((evolveStatus->wurmpleVal & 1)) goto _0808F6CA; - else continue; - } - else if (evolveConditions.evolutionRequirements.additionalRequirement == 10) { - if (param_3 != 0) { - if ((evolveStatus->evoItem1 == ITEM_BEAUTY_SCARF) || (evolveStatus->evoItem2 == ITEM_BEAUTY_SCARF)) goto _0808F6CA; - else continue; - } - else - { - if ( FindItemInInventory(ITEM_BEAUTY_SCARF) < 0) evolFlag = TRUE; - } - } - _0808F6CA: - if (!evolFlag) { - evolveStatus->evolutionConditionStatus |= EVOLUTION_GOOD; - evolveStatus->targetEvolveSpecies = index2; - } + } + + if (!cannotEvolve) { + evolveStatus->evolutionConditionStatus |= EVOLUTION_GOOD; + evolveStatus->targetEvolveSpecies = speciesId; } } } From 807c5c72874ed276fc857d973d4e7602a64bb826 Mon Sep 17 00:00:00 2001 From: DizzyEggg Date: Wed, 26 Feb 2025 19:15:02 +0100 Subject: [PATCH 39/40] Fix fakematch in sub_800B720 --- src/reg_control.c | 64 ++++++++++++++++++----------------------------- 1 file changed, 24 insertions(+), 40 deletions(-) diff --git a/src/reg_control.c b/src/reg_control.c index ad0d9d5f5..d490cc591 100644 --- a/src/reg_control.c +++ b/src/reg_control.c @@ -155,60 +155,44 @@ IntrCallback SetInterruptCallback(u32 index, IntrCallback new_callback) } // Unused? -s32 sub_800B720(s16 a0, IntrCallback a1) +s32 sub_800B720(s32 a0, IntrCallback a1) { s32 r2; - unkStruct_202D648 *r3; - s32 r4; + s32 i; + struct unkStruct_202D648 *strPtr; bool8 sp4; - s32 spC; - bool32 sp10; + s32 asS16, asU16; - spC = a0; + asS16 = (s16) a0; sp4 = DisableInterrupts(); - do { - sp10 = FALSE; - r4 = 0; - r3 = gUnknown_202D608; - if (r4 >= gUnknown_203B0AA) - continue; - if (r3->unk0 == gUnknown_203B0A8) { - gUnknown_203B0A8 = (gUnknown_203B0A8 + 1) & 0x7fff; - sp10 = TRUE; - continue; - } - label: - do { - r4++; - r3++; - if (r4 >= gUnknown_203B0AA) - continue; - if (r3->unk0 == gUnknown_203B0A8) { + while (1) { + bool8 sp10 = FALSE; + for (i = 0, strPtr = gUnknown_202D608; i < gUnknown_203B0AA; i++, strPtr++) { + if (strPtr->unk0 == gUnknown_203B0A8) { gUnknown_203B0A8 = (gUnknown_203B0A8 + 1) & 0x7fff; sp10 = TRUE; + break; } - else - goto label; - } while (0); - } while (sp10); - - for (r4 = 0, r3 = gUnknown_202D608; r4 < gUnknown_203B0AA; r4++, r3++) { - if (r3->unk2 > spC) + } + if (!sp10) break; } - for (r2 = gUnknown_203B0AA - 1, r3 = &gUnknown_202D608[r2]; r2 >= r4; r2--, r3--) - r3[1] = r3[0]; + for (i = 0, strPtr = gUnknown_202D608; i < gUnknown_203B0AA; i++, strPtr++) { + if (strPtr->unk2 > asS16) + break; + } + + for (r2 = gUnknown_203B0AA - 1, strPtr = &gUnknown_202D608[r2]; r2 >= i; r2--, strPtr--) { + strPtr[1] = strPtr[0]; + } gUnknown_203B0AA++; - gUnknown_202D608[r4].unk0 = gUnknown_203B0A8; -#ifdef NONMATCHING - gUnknown_202D608[r4].unk2 = spC; -#else - gUnknown_202D608[r4].unk2 = ((u32)spC << 0x10 >> 0x10); // fake and may overflow. Unspecified behavior -#endif - gUnknown_202D608[r4].unk4 = a1; + gUnknown_202D608[i].unk0 = gUnknown_203B0A8; + asU16 = (u16) asS16; + gUnknown_202D608[i].unk2 = asU16; + gUnknown_202D608[i].unk4 = a1; if (sp4) EnableInterrupts(); From fcea50f30e0d79ed274eab2c6d6f658d9d27eb2b Mon Sep 17 00:00:00 2001 From: DizzyEggg Date: Wed, 26 Feb 2025 22:43:46 +0100 Subject: [PATCH 40/40] Fix fakematches in VecDirection4/8Radial --- src/code_8002774.c | 183 +++++++++++++++------------------------------ 1 file changed, 62 insertions(+), 121 deletions(-) diff --git a/src/code_8002774.c b/src/code_8002774.c index e35dfad13..945a3ebc0 100644 --- a/src/code_8002774.c +++ b/src/code_8002774.c @@ -33,7 +33,7 @@ static inline s8 sub_8002984_sub(s32 direction1, s32 rand, s32 add, s32 multi) s32 sub_8002984(s32 _direction1, u32 caseID) { s32 direction1; - + direction1 = (s8)_direction1; switch((u8)caseID) { case 1: @@ -189,7 +189,7 @@ PixelPos SetVecFromDirectionSpeed(s8 r1, u32 r2) } s32 VecDirection8Sign(PixelPos *param_1) -{ +{ if (param_1->x < 0) { if (param_1->y < 0) { return DIRECTION_NORTHWEST; @@ -242,153 +242,94 @@ s32 VecDirection4SignYX(PixelPos *param_1) } } -// https://decomp.me/scratch/bD5wO -s8 VecDirection8Radial(PixelPos *param_1) +s8 VecDirection8Radial(PixelPos *pixelPos) { -#ifdef NONMATCHING - s32 r0; - s32 r1; - s32 r2; - s32 r3; - s32 r4; - s32 r5; -#else - register s32 r0; - register s32 r1 asm("r1"); - register s32 r2 asm("r2"); - register s32 r3 asm("r3"); - register s32 r4 asm("r4"); - register s32 r5; -#endif + PixelPos absPos = {abs(pixelPos->x), abs(pixelPos->y)}; - - r0 = param_1->x; - if (r0 < 0) { - r0 = -r0; - } - r1 = r0; - r3 = param_1->y; - r5 = r3; - if (r3 < 0) { - r5 = -r3; - } - r2 = r5; - r4 = param_1->x; - if (r4 < 0) { - if (r3 < 0) { - if (r2 > r0 * 2) { + if (pixelPos->x < 0) { + if (pixelPos->y < 0) { + if (absPos.y > absPos.x * 2) { return DIRECTION_NORTH; } - if (r1 <= r5 * 2) { + if (absPos.x <= absPos.y * 2) { return DIRECTION_NORTHWEST; } return DIRECTION_WEST; } - if (r2 <= r0 * 2) { - if (r1 > r5 * 2) { + if (absPos.y <= absPos.x * 2) { + if (absPos.x > absPos.y * 2) { return DIRECTION_WEST; } return DIRECTION_SOUTHWEST; } } - else { - if (0 < r4) { - if (r3 < 0) { - if (r2 > r0 * 2) { - return DIRECTION_NORTH; - } - if (r1 <= r5 * 2) { - return DIRECTION_NORTHEAST; - } + else if (pixelPos->x > 0) { + if (pixelPos->y < 0) { + if (absPos.y > absPos.x * 2) { + return DIRECTION_NORTH; + } + if (absPos.x <= absPos.y * 2) { + return DIRECTION_NORTHEAST; + } + return DIRECTION_EAST; + } + else { + if (absPos.y > absPos.x * 2) { + return DIRECTION_SOUTH; + } + if (absPos.x > absPos.y * 2) { return DIRECTION_EAST; } - else { - if (r2 > r0 * 2) { - return DIRECTION_SOUTH; - } - if (r1 > r5 * 2) { - return DIRECTION_EAST; - } - return DIRECTION_SOUTHEAST; - } - + return DIRECTION_SOUTHEAST; } - if (r3 < 0) { + } + else { + if (pixelPos->y < 0) { return DIRECTION_NORTH; } - if (r3 < 1) { + if (pixelPos->y < 1) { return -1; - } + } } return DIRECTION_SOUTH; } -// https://decomp.me/scratch/Bgbxc -s8 VecDirection4Radial(PixelPos *param_1) +s8 VecDirection4Radial(PixelPos *pixelPos) { -#ifdef NONMATCHING - s32 r0; - s32 r1; - s32 r2; - s32 r3; - s32 r4; - s32 r5; -#else - register s32 r0 asm("r3"); - register s32 r1 asm("r1"); - register s32 r2 asm("r2"); - register s32 r3; - register s32 r4; - register s32 r5 asm("r0"); -#endif + PixelPos absPos = {abs(pixelPos->x), abs(pixelPos->y)}; - r0 = param_1->x; - if (r0 < 0) { - r0 = -r0; - } - r1 = r0; - r3 = param_1->y; - r5 = r3; - if (r3 < 0) { - r5 = -r3; - } - r2 = r5; - r4 = param_1->x; - if (r4 < 0) { - if (r3 < 0) { - if (r2 > r1) { + if (pixelPos->x < 0) { + if (pixelPos->y < 0) { + if (absPos.y > absPos.x) { return DIRECTION_NORTH; } - else - return DIRECTION_WEST; + return DIRECTION_WEST; } - if (r2 <= r1) { + if (absPos.y <= absPos.x) { return DIRECTION_WEST; } } - else { - if (0 < r4) { - if (r3 < 0) { - if (r2 > r1) { - return DIRECTION_NORTH; - } - else - return DIRECTION_EAST; + else if (pixelPos->x > 0) { + if (pixelPos->y < 0) { + if (absPos.y > absPos.x) { + return DIRECTION_NORTH; } - else { - if (r2 > r1) { - return DIRECTION_SOUTH; - } - return DIRECTION_EAST; - } - + return DIRECTION_EAST; } - if (r3 < 0) { + else { + if (absPos.y > absPos.x) { + return DIRECTION_SOUTH; + } + return DIRECTION_EAST; + } + } + else { + if (pixelPos->y < 0) { return DIRECTION_NORTH; } - if (r3 < 1) { + if (pixelPos->y < 1) { return -1; - } + } } return DIRECTION_SOUTH; } @@ -407,7 +348,7 @@ s8 SizedDeltaDirection4(PixelPos *r0, PixelPos *r1, PixelPos *r2, PixelPos *r3) iVar3 = (stack.x + 1); iVar3 -= ((r1->x + r3->x) / 2); stack.x = iVar3; - if(stack.x < 0) stack.x = 0; + if(stack.x < 0) stack.x = 0; } else { @@ -429,10 +370,10 @@ s8 SizedDeltaDirection4(PixelPos *r0, PixelPos *r1, PixelPos *r2, PixelPos *r3) iVar1 = (stack.y - 1); iVar1 += ((r1->y + r3->y) / 2); stack.y = iVar1; - if(stack.y > 0) stack.y = 0; + if(stack.y > 0) stack.y = 0; } - - + + return VecDirection4Radial(&stack); } @@ -450,7 +391,7 @@ s8 SizedDeltaDirection8(PixelPos *r0, PixelPos *r1, PixelPos *r2, PixelPos *r3) iVar3 = (stack.x + 1); iVar3 -= ((r1->x + r3->x) / 2); stack.x = iVar3; - if(stack.x < 0) stack.x = 0; + if(stack.x < 0) stack.x = 0; } else { @@ -472,9 +413,9 @@ s8 SizedDeltaDirection8(PixelPos *r0, PixelPos *r1, PixelPos *r2, PixelPos *r3) iVar1 = (stack.y - 1); iVar1 += ((r1->y + r3->y) / 2); stack.y = iVar1; - if(stack.y > 0) stack.y = 0; + if(stack.y > 0) stack.y = 0; } - - + + return VecDirection8Radial(&stack); }