through sub_810345C

This commit is contained in:
PikalaxALT
2019-12-10 13:27:37 -05:00
parent d4314287ae
commit 30f74d1c37
3 changed files with 115 additions and 415 deletions
-412
View File
@@ -5,418 +5,6 @@
.text
thumb_func_start sub_810317C
sub_810317C: @ 810317C
push {r4,r5,lr}
sub sp, 0x24
movs r0, 0x1E
str r0, [sp]
movs r0, 0x14
str r0, [sp, 0x4]
movs r0, 0
str r0, [sp, 0x8]
movs r0, 0x3
movs r1, 0xE
movs r2, 0
movs r3, 0
bl FillBgTilemapBufferRect
movs r0, 0x20
str r0, [sp]
str r0, [sp, 0x4]
movs r0, 0x11
str r0, [sp, 0x8]
movs r0, 0x1
movs r1, 0
movs r2, 0
movs r3, 0
bl FillBgTilemapBufferRect
ldr r0, _08103224 @ =gUnknown_845216C
bl AddWindow
ldr r2, _08103228 @ =gUnknown_203ACF0
ldr r1, [r2]
adds r1, 0x40
strb r0, [r1]
add r1, sp, 0xC
ldr r0, _0810322C @ =gUnknown_8452174
ldm r0!, {r3-r5}
stm r1!, {r3-r5}
ldm r0!, {r3-r5}
stm r1!, {r3-r5}
ldr r2, [r2]
ldr r0, [r2, 0x44]
str r0, [sp, 0xC]
add r1, sp, 0xC
adds r0, r2, 0
adds r0, 0x40
ldrb r0, [r0]
strb r0, [r1, 0x10]
adds r0, r2, 0
adds r0, 0x48
ldrh r0, [r0]
strh r0, [r1, 0xC]
adds r0, r2, 0
adds r0, 0x42
ldrb r1, [r0]
add r0, sp, 0xC
bl sub_8103924
movs r0, 0
movs r1, 0xFF
bl FillWindowPixelBuffer
ldr r0, _08103230 @ =gUnknown_8415F3D
movs r1, 0x1
bl sub_8106E78
movs r0, 0x1
movs r1, 0xFF
bl FillWindowPixelBuffer
ldr r0, _08103234 @ =gText_PickOKExit
bl sub_8104C2C
movs r0, 0
movs r1, 0x2
bl CopyWindowToVram
movs r0, 0x1
movs r1, 0x2
bl CopyWindowToVram
add sp, 0x24
pop {r4,r5}
pop {r0}
bx r0
.align 2, 0
_08103224: .4byte gUnknown_845216C
_08103228: .4byte gUnknown_203ACF0
_0810322C: .4byte gUnknown_8452174
_08103230: .4byte gUnknown_8415F3D
_08103234: .4byte gText_PickOKExit
thumb_func_end sub_810317C
thumb_func_start sub_8103238
sub_8103238: @ 8103238
push {r4,r5,lr}
sub sp, 0x8
lsls r0, 24
lsrs r5, r0, 24
ldr r1, _08103258 @ =gUnknown_203ACF0
ldr r0, [r1]
ldrb r0, [r0, 0x1]
adds r4, r1, 0
cmp r0, 0x7
bls _0810324E
b _0810344C
_0810324E:
lsls r0, 2
ldr r1, _0810325C @ =_08103260
adds r0, r1
ldr r0, [r0]
mov pc, r0
.align 2, 0
_08103258: .4byte gUnknown_203ACF0
_0810325C: .4byte _08103260
.align 2, 0
_08103260:
.4byte _08103280
.4byte _081032B0
.4byte _081032E8
.4byte _081032FC
.4byte _08103318
.4byte _08103344
.4byte _08103362
.4byte _08103404
_08103280:
movs r0, 0x10
movs r1, 0
bl sub_8107D38
movs r0, 0x20
movs r1, 0x1
bl sub_8107D38
ldr r4, _081032AC @ =gUnknown_203ACF0
ldr r0, [r4]
adds r0, 0x42
ldrb r0, [r0]
bl sub_8103518
ldr r2, [r4]
adds r1, r2, 0
adds r1, 0x48
strh r0, [r1]
movs r0, 0x2
strb r0, [r2, 0x1]
b _0810344C
.align 2, 0
_081032AC: .4byte gUnknown_203ACF0
_081032B0:
ldr r0, [r4]
adds r0, 0x42
ldrb r0, [r0]
bl sub_8103988
movs r0, 0x1
bl HideBg
ldr r0, [r4]
adds r0, 0x40
bl sub_81047B0
ldr r1, _081032E0 @ =gTasks
lsls r0, r5, 2
adds r0, r5
lsls r0, 3
adds r0, r1
ldr r1, _081032E4 @ =sub_810287C
str r1, [r0]
ldr r1, [r4]
movs r0, 0
strb r0, [r1, 0x1]
b _0810344C
.align 2, 0
_081032E0: .4byte gTasks
_081032E4: .4byte sub_810287C
_081032E8:
bl sub_810345C
ldr r0, _081032F8 @ =gUnknown_203ACF0
ldr r1, [r0]
movs r0, 0x3
strb r0, [r1, 0x1]
b _0810344C
.align 2, 0
_081032F8: .4byte gUnknown_203ACF0
_081032FC:
movs r0, 0x3
bl CopyBgTilemapBufferToVram
movs r0, 0x1
bl CopyBgTilemapBufferToVram
ldr r0, _08103314 @ =gUnknown_203ACF0
ldr r1, [r0]
movs r0, 0x4
strb r0, [r1, 0x1]
b _0810344C
.align 2, 0
_08103314: .4byte gUnknown_203ACF0
_08103318:
movs r0, 0x1
bl ShowBg
ldr r0, _08103338 @ =0xffff7fff
ldr r1, _0810333C @ =0x0000ffff
str r1, [sp]
movs r1, 0
movs r2, 0x10
movs r3, 0
bl BeginNormalPaletteFade
ldr r0, _08103340 @ =gUnknown_203ACF0
ldr r1, [r0]
movs r0, 0x5
strb r0, [r1, 0x1]
b _0810344C
.align 2, 0
_08103338: .4byte 0xffff7fff
_0810333C: .4byte 0x0000ffff
_08103340: .4byte gUnknown_203ACF0
_08103344:
ldr r1, [r4]
ldrb r0, [r1, 0x17]
adds r1, 0x62
movs r2, 0
bl ListMenuGetScrollAndRow
bl sub_81039F0
ldr r1, [r4]
adds r1, 0x60
strb r0, [r1]
ldr r1, [r4]
movs r0, 0x6
strb r0, [r1, 0x1]
b _0810344C
_08103362:
ldr r0, [r4]
adds r0, 0x41
ldrb r0, [r0]
bl ListMenu_ProcessInput
ldr r1, [r4]
str r0, [r1, 0x30]
ldrb r0, [r1, 0x17]
adds r1, 0x62
movs r2, 0
bl ListMenuGetScrollAndRow
ldr r0, _081033C4 @ =gMain
ldrh r1, [r0, 0x2E]
movs r2, 0x1
adds r0, r2, 0
ands r0, r1
cmp r0, 0
beq _081033D0
ldr r0, [r4]
ldr r1, [r0, 0x30]
lsrs r0, r1, 16
ands r0, r2
cmp r0, 0
beq _0810344C
lsls r0, r1, 16
lsrs r0, 16
bl sub_8106A20
lsls r0, 24
cmp r0, 0
bne _0810344C
ldr r0, [r4]
adds r0, 0x60
ldrb r0, [r0]
bl RemoveScrollIndicatorArrowPair
ldr r0, _081033C8 @ =0xffff7fff
ldr r1, _081033CC @ =0x0000ffff
str r1, [sp]
movs r1, 0
movs r2, 0
movs r3, 0x10
bl BeginNormalPaletteFade
ldr r1, [r4]
movs r0, 0x7
strb r0, [r1, 0x1]
b _0810344C
.align 2, 0
_081033C4: .4byte gMain
_081033C8: .4byte 0xffff7fff
_081033CC: .4byte 0x0000ffff
_081033D0:
movs r0, 0x2
ands r0, r1
cmp r0, 0
beq _0810344C
ldr r0, [r4]
adds r0, 0x60
ldrb r0, [r0]
bl RemoveScrollIndicatorArrowPair
ldr r0, _081033FC @ =0xffff7fff
ldr r1, _08103400 @ =0x0000ffff
str r1, [sp]
movs r1, 0
movs r2, 0
movs r3, 0x10
bl BeginNormalPaletteFade
ldr r1, [r4]
movs r0, 0x1
strb r0, [r1, 0x1]
b _0810344C
.align 2, 0
_081033FC: .4byte 0xffff7fff
_08103400: .4byte 0x0000ffff
_08103404:
ldr r0, [r4]
adds r0, 0x42
ldrb r0, [r0]
bl sub_8103988
movs r0, 0x20
str r0, [sp]
movs r0, 0x14
str r0, [sp, 0x4]
movs r0, 0x1
movs r1, 0
movs r2, 0
movs r3, 0
bl FillBgTilemapBufferRect_Palette0
movs r0, 0x1
bl CopyBgTilemapBufferToVram
ldr r0, [r4]
adds r0, 0x40
bl sub_81047B0
ldr r0, [r4]
adds r0, 0x2F
movs r2, 0
movs r1, 0x1
strb r1, [r0]
ldr r1, _08103454 @ =gTasks
lsls r0, r5, 2
adds r0, r5
lsls r0, 3
adds r0, r1
ldr r1, _08103458 @ =sub_8103AC8
str r1, [r0]
ldr r0, [r4]
strb r2, [r0, 0x1]
_0810344C:
add sp, 0x8
pop {r4,r5}
pop {r0}
bx r0
.align 2, 0
_08103454: .4byte gTasks
_08103458: .4byte sub_8103AC8
thumb_func_end sub_8103238
thumb_func_start sub_810345C
sub_810345C: @ 810345C
push {r4,r5,lr}
sub sp, 0x24
movs r0, 0x1E
str r0, [sp]
movs r0, 0x14
str r0, [sp, 0x4]
movs r0, 0
str r0, [sp, 0x8]
movs r0, 0x3
movs r1, 0xE
movs r2, 0
movs r3, 0
bl FillBgTilemapBufferRect
movs r0, 0x20
str r0, [sp]
str r0, [sp, 0x4]
movs r0, 0x11
str r0, [sp, 0x8]
movs r0, 0x1
movs r1, 0
movs r2, 0
movs r3, 0
bl FillBgTilemapBufferRect
ldr r0, _08103504 @ =gUnknown_845216C
bl AddWindow
ldr r2, _08103508 @ =gUnknown_203ACF0
ldr r1, [r2]
adds r1, 0x40
strb r0, [r1]
add r1, sp, 0xC
ldr r0, _0810350C @ =gUnknown_8452174
ldm r0!, {r3-r5}
stm r1!, {r3-r5}
ldm r0!, {r3-r5}
stm r1!, {r3-r5}
ldr r2, [r2]
ldr r0, [r2, 0x44]
str r0, [sp, 0xC]
add r1, sp, 0xC
adds r0, r2, 0
adds r0, 0x40
ldrb r0, [r0]
strb r0, [r1, 0x10]
adds r0, r2, 0
adds r0, 0x48
ldrh r0, [r0]
strh r0, [r1, 0xC]
adds r0, r2, 0
adds r0, 0x42
ldrb r1, [r0]
add r0, sp, 0xC
bl sub_8103924
movs r0, 0
movs r1, 0xFF
bl FillWindowPixelBuffer
ldr r0, _08103510 @ =gUnknown_8415F4A
movs r1, 0x1
bl sub_8106E78
movs r0, 0x1
movs r1, 0xFF
bl FillWindowPixelBuffer
ldr r0, _08103514 @ =gText_PickOKExit
bl sub_8104C2C
movs r0, 0
movs r1, 0x2
bl CopyWindowToVram
movs r0, 0x1
movs r1, 0x2
bl CopyWindowToVram
add sp, 0x24
pop {r4,r5}
pop {r0}
bx r0
.align 2, 0
_08103504: .4byte gUnknown_845216C
_08103508: .4byte gUnknown_203ACF0
_0810350C: .4byte gUnknown_8452174
_08103510: .4byte gUnknown_8415F4A
_08103514: .4byte gText_PickOKExit
thumb_func_end sub_810345C
thumb_func_start sub_8103518
sub_8103518: @ 8103518
push {r4-r7,lr}
+2
View File
@@ -972,5 +972,7 @@ extern const u8 gUnknown_8415DC4[];
extern const u8 gUnknown_8415DCA[];
extern const u8 gUnknown_8415DD1[];
extern const u8 gUnknown_8415DD7[];
extern const u8 gUnknown_8415F3D[];
extern const u8 gUnknown_8415F4A[];
#endif //GUARD_STRINGS_H
+113 -3
View File
@@ -49,7 +49,7 @@ struct PokedexScreenData
u8 field_40;
u8 field_41;
u8 field_42;
void * field_44;
struct ListMenuItem * field_44;
u16 field_48;
u8 filler_4A[0x10];
u16 field_5A;
@@ -74,8 +74,10 @@ EWRAM_DATA struct PokedexScreenData * gUnknown_203ACF0 = NULL;
void sub_810287C(u8 taskId);
void sub_8102C28(void);
void sub_8102F80(u8 taskId);
void sub_8103238(u8 taskId);
void sub_810317C(void);
void sub_8103238(u8 taskId);
void sub_810345C(void);
void sub_8103924(struct ListMenuTemplate * a0, u8 a1);
u8 sub_81039F0(void);
u16 sub_8103518(u8 a0);
void sub_8103988(u8 a0);
@@ -87,6 +89,7 @@ u16 sub_8104BBC(u8 a0, u8 a1);
void sub_8104C2C(const u8 *a0);
void sub_81042EC(u8 taskId);
u8 sub_81068A0(u8 a0);
bool8 sub_8106A20(u16 a0);
void sub_8106E78(const u8 *a0, s32 a1);
extern const u32 gUnknown_8440274[];
@@ -101,6 +104,8 @@ extern const struct PokedexScreenData gUnknown_8451EE4;
extern const struct WindowTemplate gUnknown_8451F54;
extern const struct WindowTemplate gUnknown_8451F5C;
extern const struct WindowTemplate gUnknown_8451F64;
extern const struct WindowTemplate gUnknown_845216C;
extern const struct ListMenuTemplate gUnknown_8452174;
extern const struct ListMenuTemplate gUnknown_8452004;
extern const struct ListMenuTemplate gUnknown_84520BC;
extern const struct ScrollArrowsTemplate gUnknown_84520D4;
@@ -160,7 +165,7 @@ void sub_810250C(void)
gUnknown_203ACF0 = Alloc(sizeof(*gUnknown_203ACF0));
*gUnknown_203ACF0 = gUnknown_8451EE4;
gUnknown_203ACF0->field_00 = taskId;
gUnknown_203ACF0->field_44 = Alloc(0xC10);
gUnknown_203ACF0->field_44 = Alloc(386 * sizeof(struct ListMenuItem));
gUnknown_203ACF0->field_6A = sub_8104BBC(0, 1);
gUnknown_203ACF0->field_6C = sub_8104BBC(1, 1);
gUnknown_203ACF0->field_66 = sub_8104BBC(0, 0);
@@ -517,3 +522,108 @@ void sub_8102F80(u8 taskId)
break;
}
}
void sub_810317C(void)
{
struct ListMenuTemplate template;
FillBgTilemapBufferRect(3, 0x00E, 0, 0, 30, 20, 0x00);
FillBgTilemapBufferRect(1, 0x000, 0, 0, 32, 32, 0x11);
gUnknown_203ACF0->field_40 = AddWindow(&gUnknown_845216C);
template = gUnknown_8452174;
template.items = gUnknown_203ACF0->field_44;
template.windowId = gUnknown_203ACF0->field_40;
template.totalItems = gUnknown_203ACF0->field_48;
sub_8103924(&template, gUnknown_203ACF0->field_42);
FillWindowPixelBuffer(0, PIXEL_FILL(15));
sub_8106E78(gUnknown_8415F3D, 1);
FillWindowPixelBuffer(1, PIXEL_FILL(15));
sub_8104C2C(gText_PickOKExit);
CopyWindowToVram(0, 2);
CopyWindowToVram(1, 2);
}
void sub_8103238(u8 taskId)
{
switch (gUnknown_203ACF0->field_01)
{
case 0:
sub_8107D38(0x10, 0);
sub_8107D38(0x20, 1);
gUnknown_203ACF0->field_48 = sub_8103518(gUnknown_203ACF0->field_42);
gUnknown_203ACF0->field_01 = 2;
break;
case 1:
sub_8103988(gUnknown_203ACF0->field_42);
HideBg(1);
sub_81047B0(&gUnknown_203ACF0->field_40);
gTasks[taskId].func = sub_810287C;
gUnknown_203ACF0->field_01 = 0;
break;
case 2:
sub_810345C();
gUnknown_203ACF0->field_01 = 3;
break;
case 3:
CopyBgTilemapBufferToVram(3);
CopyBgTilemapBufferToVram(1);
gUnknown_203ACF0->field_01 = 4;
break;
case 4:
ShowBg(1);
BeginNormalPaletteFade(0xFFFF7FFF, 0, 16, 0, RGB_WHITEALPHA);
gUnknown_203ACF0->field_01 = 5;
break;
case 5:
ListMenuGetScrollAndRow(gUnknown_203ACF0->field_17, &gUnknown_203ACF0->field_62, NULL);
gUnknown_203ACF0->field_60 = sub_81039F0();
gUnknown_203ACF0->field_01 = 6;
break;
case 6:
gUnknown_203ACF0->field_30 = ListMenu_ProcessInput(gUnknown_203ACF0->field_41);
ListMenuGetScrollAndRow(gUnknown_203ACF0->field_17, &gUnknown_203ACF0->field_62, NULL);
if (JOY_NEW(A_BUTTON))
{
if (((gUnknown_203ACF0->field_30 >> 16) & 1) && !sub_8106A20(gUnknown_203ACF0->field_30))
{
RemoveScrollIndicatorArrowPair(gUnknown_203ACF0->field_60);
BeginNormalPaletteFade(0xFFFF7FFF, 0, 0, 16, RGB_WHITEALPHA);
gUnknown_203ACF0->field_01 = 7;
}
}
else if (JOY_NEW(B_BUTTON))
{
RemoveScrollIndicatorArrowPair(gUnknown_203ACF0->field_60);
BeginNormalPaletteFade(0xFFFF7FFF, 0, 0, 16, RGB_WHITEALPHA);
gUnknown_203ACF0->field_01 = 1;
}
break;
case 7:
sub_8103988(gUnknown_203ACF0->field_42);
FillBgTilemapBufferRect_Palette0(1, 0x000, 0, 0, 32, 20);
CopyBgTilemapBufferToVram(1);
sub_81047B0(&gUnknown_203ACF0->field_40);
gUnknown_203ACF0->field_2F = 1;
gTasks[taskId].func = sub_8103AC8;
gUnknown_203ACF0->field_01 = 0;
break;
}
}
void sub_810345C(void)
{
struct ListMenuTemplate template;
FillBgTilemapBufferRect(3, 0x00E, 0, 0, 30, 20, 0x00);
FillBgTilemapBufferRect(1, 0x000, 0, 0, 32, 32, 0x11);
gUnknown_203ACF0->field_40 = AddWindow(&gUnknown_845216C);
template = gUnknown_8452174;
template.items = gUnknown_203ACF0->field_44;
template.windowId = gUnknown_203ACF0->field_40;
template.totalItems = gUnknown_203ACF0->field_48;
sub_8103924(&template, gUnknown_203ACF0->field_42);
FillWindowPixelBuffer(0, PIXEL_FILL(15));
sub_8106E78(gUnknown_8415F4A, 1);
FillWindowPixelBuffer(1, PIXEL_FILL(15));
sub_8104C2C(gText_PickOKExit);
CopyWindowToVram(0, 2);
CopyWindowToVram(1, 2);
}