mirror of
https://github.com/pret/pmd-red.git
synced 2026-08-19 07:17:21 -05:00
Get rid of the fakematch in the Windows struct
This commit is contained in:
@@ -5,540 +5,6 @@
|
||||
|
||||
.text
|
||||
|
||||
|
||||
|
||||
|
||||
thumb_func_start sub_806285C
|
||||
sub_806285C:
|
||||
push {r4-r6,lr}
|
||||
mov r6, r10
|
||||
mov r5, r9
|
||||
mov r4, r8
|
||||
push {r4-r6}
|
||||
sub sp, 0xD4
|
||||
mov r10, r0
|
||||
add r0, sp, 0x10
|
||||
mov r8, r0
|
||||
add r5, sp, 0x70
|
||||
adds r0, r5, 0
|
||||
movs r1, 0
|
||||
movs r2, 0x60
|
||||
bl memset
|
||||
movs r0, 0x6
|
||||
str r0, [sp, 0x74]
|
||||
add r1, sp, 0x78
|
||||
movs r6, 0
|
||||
movs r0, 0
|
||||
mov r9, r0
|
||||
movs r0, 0x2
|
||||
strh r0, [r1]
|
||||
strh r0, [r1, 0x2]
|
||||
add r1, sp, 0x7C
|
||||
movs r0, 0x1A
|
||||
strh r0, [r1]
|
||||
mov r0, sp
|
||||
adds r0, 0x7E
|
||||
movs r1, 0xC
|
||||
strh r1, [r0]
|
||||
add r0, sp, 0x80
|
||||
strh r1, [r0]
|
||||
add r0, sp, 0x84
|
||||
add r4, sp, 0xD0
|
||||
str r4, [r0]
|
||||
add r0, sp, 0x88
|
||||
movs r1, 0x3
|
||||
str r1, [r0, 0x4]
|
||||
add r0, sp, 0xA0
|
||||
str r1, [r0, 0x4]
|
||||
add r0, sp, 0xB8
|
||||
str r1, [r0, 0x4]
|
||||
mov r0, r8
|
||||
adds r1, r5, 0
|
||||
movs r2, 0x60
|
||||
bl memcpy
|
||||
add r0, sp, 0x4
|
||||
bl sub_801317C
|
||||
movs r0, 0x1
|
||||
strb r0, [r4]
|
||||
strb r6, [r4, 0x1]
|
||||
movs r0, 0x10
|
||||
strb r0, [r4, 0x2]
|
||||
strb r6, [r4, 0x3]
|
||||
mov r0, r8
|
||||
movs r1, 0x1
|
||||
bl sub_803ECB4
|
||||
movs r0, 0
|
||||
bl sub_80073B8
|
||||
mov r0, r10
|
||||
bl sub_808E4FC
|
||||
adds r1, r0, 0
|
||||
ldr r0, _0806291C
|
||||
bl strcpy
|
||||
ldr r0, _08062920
|
||||
ldr r2, [r0]
|
||||
mov r0, r9
|
||||
str r0, [sp]
|
||||
movs r0, 0x10
|
||||
movs r1, 0
|
||||
movs r3, 0
|
||||
bl PrintFormattedStringOnWindow
|
||||
mov r0, r10
|
||||
bl sub_808E51C
|
||||
adds r2, r0, 0
|
||||
mov r0, r9
|
||||
str r0, [sp]
|
||||
movs r0, 0x8
|
||||
movs r1, 0x10
|
||||
movs r3, 0
|
||||
bl PrintFormattedStringOnWindow
|
||||
movs r0, 0
|
||||
bl sub_80073E0
|
||||
add r4, sp, 0x4
|
||||
b _08062938
|
||||
.align 2, 0
|
||||
_0806291C: .4byte gFormatBuffer_Items
|
||||
_08062920: .4byte gUnknown_80FE964
|
||||
_08062924:
|
||||
movs r0, 0x2
|
||||
ands r0, r1
|
||||
cmp r0, 0
|
||||
bne _08062932
|
||||
ldrb r0, [r4, 0x2]
|
||||
cmp r0, 0
|
||||
beq _08062938
|
||||
_08062932:
|
||||
bl sub_8083D30
|
||||
b _0806295C
|
||||
_08062938:
|
||||
add r0, sp, 0x4
|
||||
movs r1, 0
|
||||
bl nullsub_34
|
||||
movs r0, 0x16
|
||||
bl sub_803E46C
|
||||
ldr r0, _08062974
|
||||
ldrh r1, [r0, 0x2]
|
||||
movs r0, 0x1
|
||||
ands r0, r1
|
||||
cmp r0, 0
|
||||
bne _08062958
|
||||
ldrb r0, [r4, 0x1]
|
||||
cmp r0, 0
|
||||
beq _08062924
|
||||
_08062958:
|
||||
bl sub_8083D08
|
||||
_0806295C:
|
||||
movs r0, 0x4
|
||||
movs r1, 0x3E
|
||||
bl sub_803E708
|
||||
add sp, 0xD4
|
||||
pop {r3-r5}
|
||||
mov r8, r3
|
||||
mov r9, r4
|
||||
mov r10, r5
|
||||
pop {r4-r6}
|
||||
pop {r0}
|
||||
bx r0
|
||||
.align 2, 0
|
||||
_08062974: .4byte gRealInputs
|
||||
thumb_func_end sub_806285C
|
||||
|
||||
thumb_func_start DrawFieldGiveItemMenu
|
||||
DrawFieldGiveItemMenu:
|
||||
push {r4-r7,lr}
|
||||
mov r7, r10
|
||||
mov r6, r9
|
||||
mov r5, r8
|
||||
push {r5-r7}
|
||||
sub sp, 0x80
|
||||
mov r8, r0
|
||||
adds r6, r1, 0
|
||||
add r4, sp, 0x1C
|
||||
ldr r1, _080629AC
|
||||
adds r0, r4, 0
|
||||
movs r2, 0x60
|
||||
bl memcpy
|
||||
movs r0, 0
|
||||
str r0, [sp, 0x7C]
|
||||
mov r1, r8
|
||||
cmp r1, 0
|
||||
beq _080629A2
|
||||
subs r0, 0x1
|
||||
str r0, [r1]
|
||||
_080629A2:
|
||||
cmp r6, 0x1
|
||||
bne _080629BA
|
||||
add r1, sp, 0x4C
|
||||
ldr r0, _080629B0
|
||||
b _080629C2
|
||||
.align 2, 0
|
||||
_080629AC: .4byte gUnknown_8106C30
|
||||
_080629B0: .4byte gUnknown_8106C00
|
||||
_080629B4:
|
||||
bl sub_8083D08
|
||||
b _08062AF4
|
||||
_080629BA:
|
||||
cmp r6, 0x2
|
||||
bne _080629CA
|
||||
add r1, sp, 0x4C
|
||||
ldr r0, _08062A38
|
||||
_080629C2:
|
||||
ldm r0!, {r2,r3,r5}
|
||||
stm r1!, {r2,r3,r5}
|
||||
ldm r0!, {r2,r3,r5}
|
||||
stm r1!, {r2,r3,r5}
|
||||
_080629CA:
|
||||
add r0, sp, 0x4
|
||||
adds r1, r4, 0
|
||||
movs r2, 0
|
||||
bl DrawFieldTeamMenu
|
||||
movs r0, 0x1
|
||||
bl sub_80073B8
|
||||
ldr r0, _08062A3C
|
||||
ldr r2, [r0]
|
||||
movs r0, 0
|
||||
str r0, [sp]
|
||||
movs r0, 0x4
|
||||
movs r1, 0x3
|
||||
movs r3, 0x1
|
||||
bl PrintStringOnWindow
|
||||
movs r0, 0x1
|
||||
bl sub_80073E0
|
||||
ldr r0, _08062A40
|
||||
mov r9, r0
|
||||
add r7, sp, 0x8
|
||||
ldr r1, _08062A44
|
||||
mov r10, r1
|
||||
_080629FC:
|
||||
mov r2, r10
|
||||
movs r3, 0x18
|
||||
ldrsh r0, [r2, r3]
|
||||
lsls r0, 2
|
||||
adds r0, r7, r0
|
||||
ldr r5, [r0]
|
||||
cmp r5, 0
|
||||
blt _08062A70
|
||||
ldr r0, _08062A48
|
||||
ldr r0, [r0]
|
||||
lsls r1, r5, 2
|
||||
ldr r2, _08062A4C
|
||||
adds r0, r2
|
||||
adds r0, r1
|
||||
ldr r4, [r0]
|
||||
adds r0, r4, 0
|
||||
bl EntityIsValid
|
||||
lsls r0, 24
|
||||
cmp r0, 0
|
||||
beq _08062A5A
|
||||
cmp r9, r5
|
||||
beq _08062A5A
|
||||
cmp r6, 0x1
|
||||
bne _08062A50
|
||||
adds r0, r4, 0
|
||||
bl sub_8062B74
|
||||
b _08062A5A
|
||||
.align 2, 0
|
||||
_08062A38: .4byte gUnknown_8106C18
|
||||
_08062A3C: .4byte gWhichTextPtr2
|
||||
_08062A40: .4byte 0xfffffc27
|
||||
_08062A44: .4byte gUnknown_202EE10
|
||||
_08062A48: .4byte gDungeon
|
||||
_08062A4C: .4byte 0x0001357c
|
||||
_08062A50:
|
||||
cmp r6, 0x2
|
||||
bne _08062A5A
|
||||
adds r0, r4, 0
|
||||
bl sub_8062CA8
|
||||
_08062A5A:
|
||||
mov r9, r5
|
||||
adds r0, r4, 0
|
||||
movs r1, 0
|
||||
bl sub_806A2BC
|
||||
adds r0, r4, 0x4
|
||||
movs r1, 0
|
||||
movs r2, 0x1
|
||||
movs r3, 0x1
|
||||
bl sub_804A728
|
||||
_08062A70:
|
||||
ldr r5, _08062B40
|
||||
adds r0, r5, 0
|
||||
bl AddMenuCursorSprite
|
||||
movs r0, 0x1B
|
||||
bl sub_803E46C
|
||||
ldr r4, _08062B44
|
||||
ldrh r1, [r4, 0x4]
|
||||
movs r0, 0x80
|
||||
ands r0, r1
|
||||
cmp r0, 0
|
||||
beq _08062A98
|
||||
movs r0, 0x1
|
||||
bl sub_8083CE0
|
||||
adds r0, r5, 0
|
||||
movs r1, 0x1
|
||||
bl sub_80136E0
|
||||
_08062A98:
|
||||
ldrh r1, [r4, 0x4]
|
||||
movs r0, 0x40
|
||||
ands r0, r1
|
||||
cmp r0, 0
|
||||
beq _08062AB0
|
||||
movs r0, 0x1
|
||||
bl sub_8083CE0
|
||||
adds r0, r5, 0
|
||||
movs r1, 0x1
|
||||
bl sub_8013744
|
||||
_08062AB0:
|
||||
ldrh r1, [r4, 0x2]
|
||||
movs r0, 0x1
|
||||
ands r0, r1
|
||||
cmp r0, 0
|
||||
bne _08062AC4
|
||||
adds r0, r5, 0
|
||||
adds r0, 0x29
|
||||
ldrb r0, [r0]
|
||||
cmp r0, 0
|
||||
beq _08062AD8
|
||||
_08062AC4:
|
||||
movs r3, 0x18
|
||||
ldrsh r0, [r5, r3]
|
||||
add r1, sp, 0x18
|
||||
adds r1, r0
|
||||
ldrb r0, [r1]
|
||||
cmp r0, 0
|
||||
beq _08062AD4
|
||||
b _080629B4
|
||||
_08062AD4:
|
||||
bl sub_8083D30
|
||||
_08062AD8:
|
||||
ldr r0, _08062B44
|
||||
ldrh r1, [r0, 0x2]
|
||||
movs r0, 0x2
|
||||
ands r0, r1
|
||||
cmp r0, 0
|
||||
bne _08062AEC
|
||||
ldr r5, _08062B48
|
||||
ldrb r0, [r5]
|
||||
cmp r0, 0
|
||||
beq _080629FC
|
||||
_08062AEC:
|
||||
bl sub_8083D30
|
||||
movs r0, 0x1
|
||||
str r0, [sp, 0x7C]
|
||||
_08062AF4:
|
||||
ldr r4, _08062B40
|
||||
adds r0, r4, 0
|
||||
bl AddMenuCursorSprite
|
||||
movs r0, 0x1B
|
||||
bl sub_803E46C
|
||||
bl sub_804AA60
|
||||
bl GetLeader
|
||||
movs r1, 0
|
||||
bl sub_806A2BC
|
||||
movs r0, 0
|
||||
movs r1, 0
|
||||
bl sub_803EAF0
|
||||
movs r0, 0x4
|
||||
movs r1, 0x3E
|
||||
bl sub_803E708
|
||||
ldr r1, [sp, 0x7C]
|
||||
cmp r1, 0
|
||||
bne _08062B3C
|
||||
movs r2, 0x18
|
||||
ldrsh r0, [r4, r2]
|
||||
lsls r0, 2
|
||||
adds r0, r7, r0
|
||||
ldr r5, [r0]
|
||||
mov r3, r8
|
||||
cmp r3, 0
|
||||
beq _08062B38
|
||||
str r5, [r3]
|
||||
_08062B38:
|
||||
cmp r5, 0
|
||||
bge _08062B4C
|
||||
_08062B3C:
|
||||
movs r0, 0
|
||||
b _08062B5A
|
||||
.align 2, 0
|
||||
_08062B40: .4byte gUnknown_202EE10
|
||||
_08062B44: .4byte gRealInputs
|
||||
_08062B48: .4byte gUnknown_202EE3A
|
||||
_08062B4C:
|
||||
ldr r0, _08062B6C
|
||||
ldr r0, [r0]
|
||||
lsls r1, r5, 2
|
||||
ldr r5, _08062B70
|
||||
adds r0, r5
|
||||
adds r0, r1
|
||||
ldr r0, [r0]
|
||||
_08062B5A:
|
||||
add sp, 0x80
|
||||
pop {r3-r5}
|
||||
mov r8, r3
|
||||
mov r9, r4
|
||||
mov r10, r5
|
||||
pop {r4-r7}
|
||||
pop {r1}
|
||||
bx r1
|
||||
.align 2, 0
|
||||
_08062B6C: .4byte gDungeon
|
||||
_08062B70: .4byte 0x0001357c
|
||||
thumb_func_end DrawFieldGiveItemMenu
|
||||
|
||||
thumb_func_start sub_8062B74
|
||||
sub_8062B74:
|
||||
push {r4-r7,lr}
|
||||
mov r7, r10
|
||||
mov r6, r9
|
||||
mov r5, r8
|
||||
push {r5-r7}
|
||||
sub sp, 0x10
|
||||
mov r10, r0
|
||||
ldr r0, [r0, 0x70]
|
||||
mov r9, r0
|
||||
movs r0, 0x2
|
||||
bl CallPrepareTextbox_8008C54
|
||||
movs r0, 0x2
|
||||
bl sub_80073B8
|
||||
ldr r0, _08062BD0
|
||||
mov r1, r10
|
||||
movs r2, 0
|
||||
bl SubstitutePlaceholderStringTags
|
||||
ldr r0, _08062BD4
|
||||
ldr r2, [r0]
|
||||
movs r0, 0
|
||||
str r0, [sp]
|
||||
movs r0, 0xC
|
||||
movs r1, 0
|
||||
movs r3, 0x2
|
||||
bl PrintFormattedStringOnWindow
|
||||
movs r1, 0x10
|
||||
mov r8, r1
|
||||
mov r0, r9
|
||||
adds r0, 0xA4
|
||||
ldrb r0, [r0]
|
||||
cmp r0, 0x1
|
||||
beq _08062BDE
|
||||
mov r0, r9
|
||||
adds r0, 0x40
|
||||
ldrb r0, [r0]
|
||||
cmp r0, 0x4A
|
||||
beq _08062BCA
|
||||
cmp r0, 0x47
|
||||
bne _08062BD8
|
||||
_08062BCA:
|
||||
movs r0, 0x1
|
||||
b _08062BDA
|
||||
.align 2, 0
|
||||
_08062BD0: .4byte gFormatBuffer_Monsters
|
||||
_08062BD4: .4byte gUnknown_80FE978
|
||||
_08062BD8:
|
||||
movs r0, 0
|
||||
_08062BDA:
|
||||
cmp r0, 0
|
||||
beq _08062BF4
|
||||
_08062BDE:
|
||||
ldr r2, _08062BF0
|
||||
movs r0, 0
|
||||
str r0, [sp]
|
||||
movs r0, 0xC
|
||||
mov r1, r8
|
||||
movs r3, 0x2
|
||||
bl PrintFormattedStringOnWindow
|
||||
b _08062C8A
|
||||
.align 2, 0
|
||||
_08062BF0: .4byte gUnknown_8106C90
|
||||
_08062BF4:
|
||||
movs r7, 0
|
||||
movs r4, 0x8C
|
||||
lsls r4, 1
|
||||
add r4, r9
|
||||
adds r5, r4, 0
|
||||
_08062BFE:
|
||||
add r0, sp, 0x4
|
||||
movs r1, 0
|
||||
movs r2, 0xC
|
||||
bl memset
|
||||
movs r0, 0x6A
|
||||
str r0, [sp, 0x8]
|
||||
ldrb r1, [r4]
|
||||
movs r0, 0x1
|
||||
ands r0, r1
|
||||
cmp r0, 0
|
||||
beq _08062C80
|
||||
mov r1, r9
|
||||
ldrb r0, [r1, 0x7]
|
||||
cmp r0, 0
|
||||
beq _08062C22
|
||||
movs r0, 0x2
|
||||
b _08062C24
|
||||
_08062C22:
|
||||
movs r0, 0x4
|
||||
_08062C24:
|
||||
str r0, [sp, 0x4]
|
||||
mov r0, r10
|
||||
adds r1, r5, 0
|
||||
movs r2, 0x1
|
||||
bl CanMonsterUseMove
|
||||
add r1, sp, 0x4
|
||||
movs r2, 0
|
||||
lsls r0, 24
|
||||
cmp r0, 0
|
||||
bne _08062C3C
|
||||
movs r2, 0x1
|
||||
_08062C3C:
|
||||
strb r2, [r1, 0x8]
|
||||
ldr r0, _08062CA0
|
||||
adds r1, r5, 0
|
||||
add r2, sp, 0x4
|
||||
bl BufferMoveName
|
||||
ldrb r1, [r4]
|
||||
movs r0, 0x2
|
||||
ands r0, r1
|
||||
movs r6, 0xD
|
||||
cmp r0, 0
|
||||
bne _08062C6C
|
||||
movs r6, 0x8
|
||||
cmp r7, 0
|
||||
beq _08062C6C
|
||||
mov r2, r8
|
||||
subs r2, 0x2
|
||||
movs r0, 0x7
|
||||
str r0, [sp]
|
||||
movs r0, 0x2
|
||||
movs r1, 0xC
|
||||
movs r3, 0x78
|
||||
bl sub_80078A4
|
||||
_08062C6C:
|
||||
movs r0, 0
|
||||
str r0, [sp]
|
||||
adds r0, r6, 0
|
||||
mov r1, r8
|
||||
ldr r2, _08062CA4
|
||||
movs r3, 0x2
|
||||
bl PrintFormattedStringOnWindow
|
||||
movs r0, 0xC
|
||||
add r8, r0
|
||||
_08062C80:
|
||||
adds r4, 0x8
|
||||
adds r5, 0x8
|
||||
adds r7, 0x1
|
||||
cmp r7, 0x3
|
||||
ble _08062BFE
|
||||
_08062C8A:
|
||||
movs r0, 0x2
|
||||
bl sub_80073E0
|
||||
add sp, 0x10
|
||||
pop {r3-r5}
|
||||
mov r8, r3
|
||||
mov r9, r4
|
||||
mov r10, r5
|
||||
pop {r4-r7}
|
||||
pop {r0}
|
||||
bx r0
|
||||
.align 2, 0
|
||||
_08062CA0: .4byte gFormatBuffer_Items
|
||||
_08062CA4: .4byte gUnknown_8106C98
|
||||
thumb_func_end sub_8062B74
|
||||
|
||||
thumb_func_start sub_8062CA8
|
||||
sub_8062CA8:
|
||||
push {r4-r7,lr}
|
||||
|
||||
@@ -51,7 +51,8 @@ typedef struct Window
|
||||
const WindowHeader *unk14;
|
||||
} Window;
|
||||
|
||||
#define WINDOW_DUMMY (Window) {.type = WINDOW_TYPE_NORMAL, .width = 0}
|
||||
// All fields are zeroed out except for type which is set to WINDOW_TYPE_NORMAL.
|
||||
#define WINDOW_DUMMY (Window) {.unk0 = 0, .type = WINDOW_TYPE_NORMAL, .width = 0, .pos = {0, 0}, .height = 0, .unk10 = 0, .unk12 = 0, .unk14 = NULL}
|
||||
|
||||
#define WINDOW_TYPE_0 0
|
||||
#define WINDOW_TYPE_WITHOUT_BORDER 1
|
||||
@@ -64,10 +65,6 @@ typedef struct Window
|
||||
|
||||
typedef struct Windows {
|
||||
Window id[MAX_WINDOWS];
|
||||
// Something ugly, so that sub_805FD74 could match weird compiler memcpy/stack initialization
|
||||
#ifndef NONMATCHING
|
||||
u8 fakeMatch[0];
|
||||
#endif // NONMATCHING
|
||||
} Windows;
|
||||
|
||||
#endif // GUARD_STR_TEXT_H
|
||||
|
||||
@@ -1678,29 +1678,26 @@ extern const u8 gUnknown_8106B50[];
|
||||
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(Windows *src)
|
||||
{
|
||||
memset(src, 0, sizeof(*src));
|
||||
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)
|
||||
{
|
||||
s32 i;
|
||||
Windows sp;
|
||||
Windows windows = {
|
||||
.id = {
|
||||
[0] = WINDOW_DUMMY,
|
||||
[1] = {
|
||||
.type = WINDOW_TYPE_NORMAL,
|
||||
.pos = {22, 4},
|
||||
.width = 6,
|
||||
.height = 4,
|
||||
.unk10 = 4,
|
||||
},
|
||||
[2] = WINDOW_DUMMY,
|
||||
[3] = WINDOW_DUMMY,
|
||||
}
|
||||
};
|
||||
|
||||
sub_805FC30_SetUpTxtStruct(&sp);
|
||||
sp.id[0] = a0->id[0];
|
||||
sp.id[0].unk0 = 0x80;
|
||||
windows.id[0] = a0->id[0];
|
||||
windows.id[0].unk0 = 0x80;
|
||||
|
||||
gUnknown_202EE10.menuIndex = 0;
|
||||
gUnknown_202EE10.unk1C = gUnknown_202EE6C;
|
||||
@@ -1716,11 +1713,11 @@ void sub_805FC30(Windows *a0, s32 a1)
|
||||
|
||||
sub_801317C(&gUnknown_202EE10.unk28);
|
||||
|
||||
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.id[1].height * 8);
|
||||
windows.id[1].pos.x = a1;
|
||||
windows.id[1].width = 28 - a1;
|
||||
windows.id[1].height = windows.id[1].unk10 = sub_80095E4(gUnknown_202EE10.unk1C, 0);
|
||||
sub_803ECB4(&windows, 0);
|
||||
sub_80137B0(&gUnknown_202EE10, windows.id[1].height * 8);
|
||||
sub_80073B8(1);
|
||||
|
||||
for (i = 0; i < gUnknown_202EE6C; i++) {
|
||||
@@ -1762,7 +1759,7 @@ bool8 sub_8060860(s32 a0);
|
||||
void sub_8060900(Entity *a0);
|
||||
s32 sub_8060800(WindowHeader *a0, s32 a1);
|
||||
void sub_8060CE8(ActionContainer *a0);
|
||||
extern Entity *DrawFieldGiveItemMenu(u8 *a0, s32 a1);
|
||||
Entity *DrawFieldGiveItemMenu(s32 *teamId, s32 a1);
|
||||
|
||||
bool8 sub_805FD74(Entity * a0, struct UnkMenuBitsStruct *a1)
|
||||
{
|
||||
@@ -2010,9 +2007,9 @@ bool8 sub_805FD74(Entity * a0, struct UnkMenuBitsStruct *a1)
|
||||
break;
|
||||
}
|
||||
else if (a0Info->action.action == 0x36) {
|
||||
u32 var_38;
|
||||
if (DrawFieldGiveItemMenu((void*)&var_38, 2) != NULL) {
|
||||
a0Info->action.actionParameters[1].actionUseIndex = var_38;
|
||||
s32 teamId;
|
||||
if (DrawFieldGiveItemMenu(&teamId, 2) != NULL) {
|
||||
a0Info->action.actionParameters[1].actionUseIndex = teamId;
|
||||
sub_803EAF0(0, 0);
|
||||
r9 = 0;
|
||||
break;
|
||||
@@ -2872,32 +2869,30 @@ void sub_8062D68(void);
|
||||
void sub_8062230(void);
|
||||
void sub_8062748(u8 a0);
|
||||
|
||||
static inline void SetTxtStruct(Windows *sp)
|
||||
{
|
||||
memset(sp, 0, sizeof(*sp));
|
||||
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)
|
||||
{
|
||||
Windows sp;
|
||||
Windows windows = {
|
||||
.id = {
|
||||
[0] = {
|
||||
.type = WINDOW_TYPE_WITH_HEADER,
|
||||
.pos = {2, 2},
|
||||
.width = 18,
|
||||
.height = 14,
|
||||
.unk10 = 18,
|
||||
.unk12 = 2,
|
||||
.unk14 = &gUnknown_202F270,
|
||||
},
|
||||
[1] = WINDOW_DUMMY,
|
||||
[2] = WINDOW_DUMMY,
|
||||
[3] = WINDOW_DUMMY,
|
||||
}
|
||||
};
|
||||
EntityInfo *monInfo;
|
||||
u8 tacticIds[NUM_TACTICS];
|
||||
s32 scrollFirstId;
|
||||
s32 menuIndex;
|
||||
Entity *teamMon;
|
||||
|
||||
SetTxtStruct(&sp);
|
||||
teamMon = gDungeon->teamPokemon[a0->actionParameters[0].actionUseIndex];
|
||||
monInfo = GetEntInfo(teamMon);
|
||||
menuIndex = 0;
|
||||
@@ -2911,7 +2906,7 @@ void ShowTacticsMenu(ActionContainer *a0)
|
||||
gUnknown_202F270.f1 = 0;
|
||||
gUnknown_202F270.f2 = 10;
|
||||
gUnknown_202F270.f3 = 0;
|
||||
sub_803ECB4(&sp, 1);
|
||||
sub_803ECB4(&windows, 1);
|
||||
PrintMonTactics(scrollFirstId, tacticIds, monInfo, 0);
|
||||
for (i = 0; i < 8; i++) {
|
||||
if (tacticIds[i] == TACTIC_UNUSED)
|
||||
@@ -2992,7 +2987,7 @@ void ShowTacticsMenu(ActionContainer *a0)
|
||||
if (CheckVariousStatuses2(teamMon, TRUE)) {
|
||||
sub_8044FF0(0x2F);
|
||||
}
|
||||
sub_805FC30(&sp, 0x16);
|
||||
sub_805FC30(&windows, 0x16);
|
||||
while (1) {
|
||||
changed = FALSE;
|
||||
AddMenuCursorSprite(&gUnknown_202EE10);
|
||||
@@ -3101,7 +3096,7 @@ EWRAM_INIT u8 gUnknown_203B43C[4] = {2, 0, 0xD, 0}; // TODO: Move to a better fi
|
||||
|
||||
extern void sub_8069844(struct unkStruct_808FF20 *param_1, Entity *target);
|
||||
extern u32 sub_8014140(s32 a0, const void *a1);
|
||||
extern void sub_806285C(s32 a0);
|
||||
void sub_806285C(s32 a0);
|
||||
void sub_806262C(u8 iqSkillId);
|
||||
|
||||
extern const u8 gUnknown_8106B8C[];
|
||||
@@ -3111,12 +3106,11 @@ void sub_8061A38(ActionContainer *a0, bool8 a1)
|
||||
s32 spArr[6];
|
||||
struct unkStruct_808FF20 unkMonStruct;
|
||||
struct UnkInfoTabStruct unkInfoTabStruct;
|
||||
const s32 winX = 2;
|
||||
Windows windows = {
|
||||
.id = {
|
||||
[0] = {
|
||||
.type = WINDOW_TYPE_WITH_HEADER,
|
||||
.pos = {winX, 2},
|
||||
.pos = {2, 2},
|
||||
.width = 18,
|
||||
.height = 14,
|
||||
.unk10 = 18,
|
||||
@@ -3128,7 +3122,7 @@ void sub_8061A38(ActionContainer *a0, bool8 a1)
|
||||
[3] = WINDOW_DUMMY,
|
||||
}
|
||||
};
|
||||
register s32 r8;
|
||||
s32 r8;
|
||||
Entity *entity;
|
||||
s32 var_3C;
|
||||
s32 var_38;
|
||||
@@ -3664,9 +3658,20 @@ void sub_80625A4(s32 count, struct subStruct_203B240 **strings)
|
||||
}
|
||||
|
||||
#include "code_8097DD0.h"
|
||||
#include "move_util.h"
|
||||
#include "move_util.h"
|
||||
|
||||
extern const u8 *const gUnknown_80FE95C;
|
||||
extern const u8 *const gUnknown_80FE960;
|
||||
extern const u8 *const gUnknown_80FE964;
|
||||
extern const u8 *const gUnknown_80FE978;
|
||||
extern const u8 gUnknown_8106C90[];
|
||||
extern const u8 gUnknown_8106C98[];
|
||||
extern const u8 *const gWhichTextPtr2;
|
||||
extern char* sub_808E4FC(s32 a1);
|
||||
extern char* sub_808E51C(s32 a1);
|
||||
extern void sub_8062B74(Entity *entity);
|
||||
extern void sub_8062CA8(Entity *entity);
|
||||
|
||||
void sub_806262C(u8 iqSkillId)
|
||||
{
|
||||
@@ -3774,5 +3779,197 @@ void sub_8062748(u8 tacticId)
|
||||
sub_803E708(4, 0x3E);
|
||||
}
|
||||
|
||||
void sub_806285C(s32 a0)
|
||||
{
|
||||
const u8 *str;
|
||||
MenuInputStructSub menuSub;
|
||||
WindowHeader header;
|
||||
Windows windows = {
|
||||
.id = {
|
||||
[0] = {
|
||||
.type = WINDOW_TYPE_WITH_HEADER,
|
||||
.pos = {2, 2},
|
||||
.width = 26,
|
||||
.height = 12,
|
||||
.unk10 = 12,
|
||||
.unk12 = 0,
|
||||
.unk14 = &header,
|
||||
},
|
||||
[1] = WINDOW_DUMMY,
|
||||
[2] = WINDOW_DUMMY,
|
||||
[3] = WINDOW_DUMMY,
|
||||
}
|
||||
};
|
||||
|
||||
sub_801317C(&menuSub);
|
||||
header.f0 = 1;
|
||||
header.f1 = 0;
|
||||
header.f2 = 16;
|
||||
header.f3 = 0;
|
||||
sub_803ECB4(&windows, TRUE);
|
||||
sub_80073B8(0);
|
||||
str = sub_808E4FC(a0);
|
||||
strcpy(gFormatBuffer_Items[0], str);
|
||||
PrintFormattedStringOnWindow(16, 0, gUnknown_80FE964, 0, '\0');
|
||||
PrintFormattedStringOnWindow(8, 16, sub_808E51C(a0), 0, '\0');
|
||||
sub_80073E0(0);
|
||||
|
||||
while (1) {
|
||||
nullsub_34(&menuSub, 0);
|
||||
sub_803E46C(22);
|
||||
if ((gRealInputs.pressed & A_BUTTON) || menuSub.a_button) {
|
||||
sub_8083D08();
|
||||
break;
|
||||
}
|
||||
if ((gRealInputs.pressed & B_BUTTON) || menuSub.b_button) {
|
||||
sub_8083D30();
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
sub_803E708(4, 0x3E);
|
||||
}
|
||||
|
||||
extern const Windows gUnknown_8106C30;
|
||||
extern const Window gUnknown_8106C00;
|
||||
extern const Window gUnknown_8106C18;
|
||||
|
||||
Entity *DrawFieldGiveItemMenu(s32 *teamId, s32 a1)
|
||||
{
|
||||
struct UnkFieldTeamMenuStruct unkStruct;
|
||||
Windows windows = gUnknown_8106C30;
|
||||
bool8 bPress = FALSE;
|
||||
s32 prevId, currId;
|
||||
|
||||
if (teamId != NULL) {
|
||||
*teamId = -1;
|
||||
}
|
||||
|
||||
if (a1 == 1) {
|
||||
windows.id[2] = gUnknown_8106C00;
|
||||
}
|
||||
else if (a1 == 2) {
|
||||
windows.id[2] = gUnknown_8106C18;
|
||||
}
|
||||
|
||||
DrawFieldTeamMenu(&unkStruct, &windows, FALSE);
|
||||
sub_80073B8(1);
|
||||
PrintStringOnWindow(4, 3, gWhichTextPtr2, 1, '\0');
|
||||
sub_80073E0(1);
|
||||
prevId = -985; // Magic number or does it actually mean anything?
|
||||
|
||||
while (1) {
|
||||
currId = unkStruct.unk4[gUnknown_202EE10.menuIndex];
|
||||
|
||||
if (currId >= 0) {
|
||||
Entity *entity = gDungeon->teamPokemon[currId];
|
||||
|
||||
if (EntityIsValid(entity) && prevId != currId) {
|
||||
if (a1 == 1) {
|
||||
sub_8062B74(entity);
|
||||
}
|
||||
else if (a1 == 2) {
|
||||
sub_8062CA8(entity);
|
||||
}
|
||||
}
|
||||
prevId = currId;
|
||||
sub_806A2BC(entity, 0);
|
||||
sub_804A728(&entity->pos, 0, 1, 1);
|
||||
}
|
||||
|
||||
AddMenuCursorSprite(&gUnknown_202EE10);
|
||||
sub_803E46C(0x1B);
|
||||
if (gRealInputs.repeated & DPAD_DOWN) {
|
||||
sub_8083CE0(1);
|
||||
sub_80136E0(&gUnknown_202EE10, 1);
|
||||
}
|
||||
if (gRealInputs.repeated & DPAD_UP) {
|
||||
sub_8083CE0(1);
|
||||
sub_8013744(&gUnknown_202EE10, 1);
|
||||
}
|
||||
|
||||
if ((gRealInputs.pressed & A_BUTTON) || gUnknown_202EE10.unk28.a_button) {
|
||||
if (unkStruct.unk14[gUnknown_202EE10.menuIndex] != 0) {
|
||||
sub_8083D08();
|
||||
break;
|
||||
}
|
||||
sub_8083D30();
|
||||
}
|
||||
if ((gRealInputs.pressed & B_BUTTON) || gUnknown_202EE10.unk28.b_button) {
|
||||
sub_8083D30();
|
||||
bPress = TRUE;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
AddMenuCursorSprite(&gUnknown_202EE10);
|
||||
sub_803E46C(0x1B);
|
||||
sub_804AA60();
|
||||
sub_806A2BC(GetLeader(), 0);
|
||||
sub_803EAF0(0, 0);
|
||||
sub_803E708(4, 0x3E);
|
||||
if (bPress) {
|
||||
return NULL;
|
||||
}
|
||||
currId = unkStruct.unk4[gUnknown_202EE10.menuIndex];
|
||||
if (teamId != NULL) {
|
||||
*teamId = currId;
|
||||
}
|
||||
if (currId >= 0) {
|
||||
return gDungeon->teamPokemon[currId];
|
||||
}
|
||||
|
||||
return NULL;
|
||||
}
|
||||
|
||||
void sub_8062B74(Entity *entity)
|
||||
{
|
||||
s32 x, y;
|
||||
EntityInfo *entInfo = GetEntInfo(entity);
|
||||
|
||||
CallPrepareTextbox_8008C54(2);
|
||||
sub_80073B8(2);
|
||||
SubstitutePlaceholderStringTags(gFormatBuffer_Monsters[0], entity, 0);
|
||||
PrintFormattedStringOnWindow(12, 0, gUnknown_80FE978, 2, '\0');
|
||||
y = 16;
|
||||
|
||||
if (entInfo->monsterBehavior == 1 || IsExperienceLocked(entInfo->joinedAt.id)) {
|
||||
PrintFormattedStringOnWindow(12, y, gUnknown_8106C90, 2, '\0');
|
||||
}
|
||||
else {
|
||||
s32 i;
|
||||
|
||||
for (i = 0; i < MAX_MON_MOVES; i++) {
|
||||
unkStruct_80928C0 movStruct = {0, 106, 0, 0};
|
||||
Move *move = &entInfo->moves.moves[i];
|
||||
|
||||
if (MoveFlagExists(move)) {
|
||||
if (entInfo->isTeamLeader) {
|
||||
movStruct.unk0 = 2;
|
||||
}
|
||||
else {
|
||||
movStruct.unk0 = 4;
|
||||
}
|
||||
|
||||
movStruct.unk8 = (CanMonsterUseMove(entity, move, TRUE) == FALSE);
|
||||
BufferMoveName(gFormatBuffer_Items[0], move, &movStruct);
|
||||
|
||||
if (MoveFlagLinkChain(move)) {
|
||||
x = 13;
|
||||
}
|
||||
else {
|
||||
x = 8;
|
||||
if (i != 0) {
|
||||
sub_80078A4(2, 12, y - 2, 120, 7);
|
||||
}
|
||||
}
|
||||
PrintFormattedStringOnWindow(x, y, gUnknown_8106C98, 2, '\0');
|
||||
y += 12;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
sub_80073E0(2);
|
||||
}
|
||||
|
||||
//
|
||||
|
||||
@@ -54,8 +54,8 @@ static EWRAM_INIT Windows sWorldMapWindows = {
|
||||
.height = 3,
|
||||
.unk10 = 3,
|
||||
},
|
||||
[2] = { .type = WINDOW_TYPE_NORMAL,},
|
||||
[3] = { .type = WINDOW_TYPE_NORMAL,},
|
||||
[2] = WINDOW_DUMMY,
|
||||
[3] = WINDOW_DUMMY,
|
||||
}
|
||||
};
|
||||
|
||||
@@ -483,19 +483,18 @@ static void AnimateSprites(bool8 a0)
|
||||
|
||||
static void PrintDungeonName(DungeonLocation *dungLocation)
|
||||
{
|
||||
const s32 x = 12;
|
||||
Windows windows = {
|
||||
.id = {
|
||||
[0] = {
|
||||
.type = WINDOW_TYPE_NORMAL,
|
||||
.pos = {x, 2},
|
||||
.pos = {12, 2},
|
||||
.width = 16,
|
||||
.height = 2,
|
||||
.unk10 = 2,
|
||||
},
|
||||
[1] = {.type = WINDOW_TYPE_NORMAL},
|
||||
[2] = {.type = WINDOW_TYPE_NORMAL},
|
||||
[3] = {.type = WINDOW_TYPE_NORMAL},
|
||||
[1] = WINDOW_DUMMY,
|
||||
[2] = WINDOW_DUMMY,
|
||||
[3] = WINDOW_DUMMY,
|
||||
}
|
||||
};
|
||||
|
||||
|
||||
Reference in New Issue
Block a user