From d3e14d476785e70ba5034893026ac881518c63a3 Mon Sep 17 00:00:00 2001 From: DizzyEggg Date: Thu, 20 Feb 2025 15:45:11 +0100 Subject: [PATCH 01/11] 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 02/11] 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 03/11] 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 04/11] 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 05/11] 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 06/11] 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 07/11] 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 08/11] 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 09/11] 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 10/11] 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 11/11] 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;