From 2e5fce662a54206f1892742a5e9f529ca0457353 Mon Sep 17 00:00:00 2001 From: DizzyEggg Date: Sat, 15 Feb 2025 14:28:00 +0100 Subject: [PATCH] sub_80155F0 --- asm/code_8015080.s | 534 ---------------------------------------- include/string_format.h | 2 +- src/code_8015080.c | 226 ++++++++++++++++- 3 files changed, 220 insertions(+), 542 deletions(-) diff --git a/asm/code_8015080.s b/asm/code_8015080.s index a596edda0..621212d7f 100644 --- a/asm/code_8015080.s +++ b/asm/code_8015080.s @@ -5,540 +5,6 @@ .text - thumb_func_start sub_80151C0 -sub_80151C0: - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - adds r5, r0, 0 - adds r6, r1, 0 - ldr r4, _080151FC - movs r0, 0xCC - lsls r0, 1 - movs r1, 0x8 - bl MemoryAlloc - str r0, [r4] - str r5, [r0] - movs r1, 0 - strb r1, [r0, 0x19] - ldr r0, [r4] - strb r1, [r0, 0x18] - ldr r0, [r4] - strb r1, [r0, 0x4] - ldr r0, [r4] - ldr r0, [r0] - cmp r0, 0x5 - bhi _0801524C - lsls r0, 2 - ldr r1, _08015200 - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_080151FC: .4byte gUnknown_203B1FC -_08015200: .4byte _08015204 - .align 2, 0 -_08015204: - .4byte _0801524C - .4byte _0801524C - .4byte _0801524C - .4byte _0801524C - .4byte _0801521C - .4byte _08015234 -_0801521C: - ldr r1, _08015230 - ldr r2, [r1] - movs r0, 0x9 - strb r0, [r2, 0x1A] - ldr r2, [r1] - movs r0, 0x1 - strb r0, [r2, 0x4] - ldr r2, [r1] - movs r0, 0x36 - b _08015258 - .align 2, 0 -_08015230: .4byte gUnknown_203B1FC -_08015234: - ldr r1, _08015248 - ldr r2, [r1] - movs r0, 0x9 - strb r0, [r2, 0x1A] - ldr r2, [r1] - movs r0, 0x1 - strb r0, [r2, 0x4] - ldr r2, [r1] - movs r0, 0x18 - b _08015258 - .align 2, 0 -_08015248: .4byte gUnknown_203B1FC -_0801524C: - ldr r1, _08015374 - ldr r2, [r1] - movs r0, 0x6 - strb r0, [r2, 0x1A] - ldr r2, [r1] - movs r0, 0xA -_08015258: - strb r0, [r2, 0x1B] - mov r8, r1 - mov r0, r8 - ldr r2, [r0] - movs r1, 0x9A - lsls r1, 1 - adds r0, r2, r1 - str r6, [r0] - adds r1, r2, 0 - adds r1, 0xF8 - adds r0, r2, 0 - adds r0, 0xFC - str r0, [r1] - movs r2, 0 - mov r1, r8 - movs r3, 0 -_08015278: - ldr r0, [r1] - adds r0, 0xF8 - ldr r0, [r0] - adds r0, r2 - strb r3, [r0] - adds r2, 0x1 - cmp r2, 0x35 - ble _08015278 - ldr r5, _08015374 - ldr r2, [r5] - adds r0, r2, 0 - adds r0, 0xF8 - ldr r0, [r0] - movs r3, 0x9A - lsls r3, 1 - adds r1, r2, r3 - ldr r1, [r1] - ldrb r2, [r2, 0x1B] - bl MemoryCopy8 - movs r2, 0 - ldr r0, [r5] - ldrb r3, [r0, 0x1B] - cmp r2, r3 - bge _080152EA - adds r1, r0, 0 - adds r1, 0xF8 - ldr r0, [r1] - ldrb r0, [r0] - mov r8, r5 - cmp r0, 0 - beq _080152C8 -_080152B8: - adds r2, 0x1 - cmp r2, r3 - bge _080152EA - ldr r0, [r1] - adds r0, r2 - ldrb r0, [r0] - cmp r0, 0 - bne _080152B8 -_080152C8: - mov r4, r8 - ldr r0, [r4] - ldrb r0, [r0, 0x1B] - cmp r2, r0 - bge _080152EA - mov r1, r8 - movs r3, 0 -_080152D6: - ldr r0, [r1] - adds r0, 0xF8 - ldr r0, [r0] - adds r0, r2 - strb r3, [r0] - adds r2, 0x1 - ldr r0, [r1] - ldrb r0, [r0, 0x1B] - cmp r2, r0 - blt _080152D6 -_080152EA: - bl sub_8015F44 - ldr r2, _08015374 - ldr r1, [r2] - strb r0, [r1, 0x1C] - ldr r1, [r2] - ldrb r0, [r1, 0x1C] - ldrb r5, [r1, 0x1B] - cmp r0, r5 - bne _08015302 - subs r0, 0x1 - strb r0, [r1, 0x1C] -_08015302: - movs r6, 0x1 - mov r12, r6 - ldr r6, [r2] - adds r5, r6, 0x6 - ldrh r1, [r6, 0x6] - ldr r0, _08015378 - ands r0, r1 - ldr r1, _0801537C - ands r0, r1 - ldr r2, _08015380 - ands r0, r2 - ldr r1, _08015384 - ands r0, r1 - ldr r1, _08015388 - ands r0, r1 - strh r0, [r6, 0x6] - ldrh r0, [r5, 0x4] - adds r3, r2, 0 - ands r3, r0 - movs r1, 0xF - movs r2, 0xF0 - lsls r2, 8 - ldr r0, _0801538C - ands r3, r0 - orrs r3, r2 - strh r3, [r5, 0x4] - ldrh r0, [r5, 0x2] - movs r4, 0xFE - lsls r4, 8 - ands r4, r0 - movs r0, 0xF0 - orrs r4, r0 - strh r4, [r5, 0x2] - movs r2, 0xF0 - lsls r2, 4 - ldrh r0, [r5, 0x6] - ands r1, r0 - movs r7, 0 - orrs r1, r2 - strh r1, [r5, 0x6] - ldrb r0, [r6, 0x4] - cmp r0, 0 - beq _0801539C - ldr r0, _08015390 - ands r4, r0 - ldr r1, _08015394 - movs r0, 0xFC - lsls r0, 8 - ands r3, r0 - orrs r3, r1 - strh r3, [r5, 0x4] - ldr r0, _08015398 - ands r4, r0 - strh r4, [r5, 0x2] - mov r7, r12 - b _080153BE - .align 2, 0 -_08015374: .4byte gUnknown_203B1FC -_08015378: .4byte 0x0000feff -_0801537C: .4byte 0x0000fdff -_08015380: .4byte 0x0000f3ff -_08015384: .4byte 0x0000efff -_08015388: .4byte 0x0000dfff -_0801538C: .4byte 0x00000fff -_08015390: .4byte 0x0000c1ff -_08015394: .4byte 0x000003f6 -_08015398: .4byte 0x00003fff -_0801539C: - movs r1, 0x80 - lsls r1, 6 - ldr r0, _08015468 - ands r4, r0 - orrs r4, r1 - orrs r4, r7 - movs r1, 0xFC - lsls r1, 2 - movs r0, 0xFC - lsls r0, 8 - ands r3, r0 - orrs r3, r1 - strh r3, [r5, 0x4] - ldr r0, _0801546C - ands r4, r0 - strh r4, [r5, 0x2] - mov r1, r12 -_080153BE: - movs r2, 0x80 - lsls r2, 7 - ldrh r1, [r6, 0x6] - ands r0, r1 - orrs r0, r2 - strh r0, [r6, 0x6] - ldr r5, _08015470 - ldr r1, [r5] - movs r0, 0x4 - strb r0, [r1, 0x16] - ldr r4, [r5] - adds r6, r4, 0 - adds r6, 0xE - ldrh r1, [r4, 0xE] - ldr r0, _08015474 - ands r0, r1 - ldr r1, _08015478 - ands r0, r1 - ldr r3, _0801547C - ands r0, r3 - ldr r1, _08015480 - ands r0, r1 - ldr r1, _08015484 - ands r0, r1 - ldr r1, _0801546C - ands r0, r1 - strh r0, [r4, 0xE] - movs r2, 0xFD - lsls r2, 2 - ldrh r1, [r6, 0x4] - movs r0, 0xFC - lsls r0, 8 - ands r0, r1 - orrs r0, r2 - ands r0, r3 - movs r2, 0xF - movs r3, 0xF0 - lsls r3, 8 - ldr r1, _08015488 - ands r0, r1 - orrs r0, r3 - strh r0, [r6, 0x4] - movs r0, 0xF0 - strh r0, [r6, 0x2] - subs r1, 0xFF - ldrh r0, [r6, 0x6] - ands r2, r0 - movs r0, 0 - orrs r2, r1 - strh r2, [r6, 0x6] - strb r0, [r4, 0x17] - mov r8, r5 - ldr r2, _0801548C - mov r10, r2 - mov r12, r8 - movs r3, 0x9C - lsls r3, 1 - mov r9, r3 - ldr r4, _08015490 - movs r3, 0 - movs r2, 0x3 -_08015438: - mov r5, r12 - ldr r1, [r5] - adds r1, r3 - add r1, r9 - adds r0, r4, 0 - ldm r0!, {r5-r7} - stm r1!, {r5-r7} - ldm r0!, {r5-r7} - stm r1!, {r5-r7} - adds r3, 0x18 - subs r2, 0x1 - cmp r2, 0 - bge _08015438 - mov r6, r8 - ldr r1, [r6] - ldrb r0, [r1, 0x4] - cmp r0, 0 - beq _08015498 - movs r7, 0xA8 - lsls r7, 1 - adds r1, r7 - ldr r0, _08015494 - b _080154A0 - .align 2, 0 -_08015468: .4byte 0x0000c1ff -_0801546C: .4byte 0x00003fff -_08015470: .4byte gUnknown_203B1FC -_08015474: .4byte 0x0000feff -_08015478: .4byte 0x0000fdff -_0801547C: .4byte 0x0000f3ff -_08015480: .4byte 0x0000efff -_08015484: .4byte 0x0000dfff -_08015488: .4byte 0x00000fff -_0801548C: .4byte gUnknown_80DB550 -_08015490: .4byte gUnknown_80DB538 -_08015494: .4byte gUnknown_80DB580 -_08015498: - movs r0, 0xA8 - lsls r0, 1 - adds r1, r0 - ldr r0, _080154EC -_080154A0: - ldm r0!, {r2-r4} - stm r1!, {r2-r4} - ldm r0!, {r5-r7} - stm r1!, {r5-r7} - mov r0, r8 - ldr r1, [r0] - movs r4, 0x9C - lsls r4, 1 - adds r1, r4 - mov r0, r10 - ldm r0!, {r2,r3,r5} - stm r1!, {r2,r3,r5} - ldm r0!, {r2,r6,r7} - stm r1!, {r2,r6,r7} - bl ResetUnusedInputStruct - mov r3, r8 - ldr r0, [r3] - adds r0, r4 - movs r1, 0x1 - movs r2, 0x1 - bl xxx_call_save_unk_text_struct_800641C - movs r0, 0x1 - bl sub_8015A08 - bl sub_8015C1C - bl sub_8015F84 - movs r0, 0x1 - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r1} - bx r1 - .align 2, 0 -_080154EC: .4byte gUnknown_80DB568 - thumb_func_end sub_80151C0 - - thumb_func_start sub_80154F0 -sub_80154F0: - push {r4,r5,lr} - ldr r4, _08015558 - ldr r1, [r4] - ldrb r0, [r1, 0x16] - adds r0, 0x1 - strb r0, [r1, 0x16] - bl sub_80157D8 - ldr r2, [r4] - ldrb r1, [r2, 0x16] - movs r5, 0x8 - adds r0, r5, 0 - ands r0, r1 - cmp r0, 0 - beq _0801551C - adds r0, r2, 0x6 - movs r1, 0x80 - lsls r1, 1 - movs r2, 0 - movs r3, 0 - bl AddSprite -_0801551C: - ldr r1, [r4] - ldrb r0, [r1, 0x17] - adds r0, 0x1 - strb r0, [r1, 0x17] - bl sub_80158BC - ldr r2, [r4] - ldrb r1, [r2, 0x17] - adds r0, r5, 0 - ands r0, r1 - cmp r0, 0 - beq _08015544 - adds r0, r2, 0 - adds r0, 0xE - movs r1, 0x80 - lsls r1, 1 - movs r2, 0 - movs r3, 0 - bl AddSprite -_08015544: - bl sub_8012AE8 - subs r0, 0x1 - cmp r0, 0x5 - bhi _080155E2 - lsls r0, 2 - ldr r1, _0801555C - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_08015558: .4byte gUnknown_203B1FC -_0801555C: .4byte _08015560 - .align 2, 0 -_08015560: - .4byte _080155C0 - .4byte _080155C6 - .4byte _080155E2 - .4byte _080155D4 - .4byte _08015578 - .4byte _0801558C -_08015578: - ldr r0, _08015588 - ldr r1, [r0] - ldrb r0, [r1, 0x1C] - cmp r0, 0 - beq _080155B8 - subs r0, 0x1 - b _080155A8 - .align 2, 0 -_08015588: .4byte gUnknown_203B1FC -_0801558C: - ldr r5, _080155B4 - ldr r0, [r5] - ldrb r4, [r0, 0x1C] - ldrb r0, [r0, 0x1B] - subs r0, 0x1 - cmp r4, r0 - beq _080155B8 - bl sub_8015F44 - cmp r4, r0 - bge _080155B8 - ldr r1, [r5] - ldrb r0, [r1, 0x1C] - adds r0, 0x1 -_080155A8: - strb r0, [r1, 0x1C] - movs r0, 0x3 - bl PlayMenuSoundEffect - b _080155E2 - .align 2, 0 -_080155B4: .4byte gUnknown_203B1FC -_080155B8: - movs r0, 0x2 - bl PlayMenuSoundEffect - b _080155E2 -_080155C0: - bl sub_801560C - b _080155E4 -_080155C6: - bl sub_8015748 - lsls r0, 24 - cmp r0, 0 - beq _080155E2 - movs r0, 0x2 - b _080155E4 -_080155D4: - movs r0, 0x3 - bl PlayMenuSoundEffect - ldr r0, _080155EC - ldr r1, [r0] - movs r0, 0x5 - strb r0, [r1, 0x1A] -_080155E2: - movs r0, 0 -_080155E4: - pop {r4,r5} - pop {r1} - bx r1 - .align 2, 0 -_080155EC: .4byte gUnknown_203B1FC - thumb_func_end sub_80154F0 - - thumb_func_start sub_80155F0 -sub_80155F0: - push {r4,lr} - ldr r4, _08015608 - ldr r0, [r4] - cmp r0, 0 - beq _08015602 - bl MemoryFree - movs r0, 0 - str r0, [r4] -_08015602: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_08015608: .4byte gUnknown_203B1FC - thumb_func_end sub_80155F0 - thumb_func_start sub_801560C sub_801560C: push {r4-r6,lr} diff --git a/include/string_format.h b/include/string_format.h index ad038c796..0201dae8d 100644 --- a/include/string_format.h +++ b/include/string_format.h @@ -11,7 +11,7 @@ void sub_80140DC(void); void sub_8014114(void); s32 sub_80144A4(s32 *); -void sub_80151C0(u32, u8 *); +u32 sub_80151C0(u32, u8 *); u32 sub_80154F0(void); void sub_80155F0(void); diff --git a/src/code_8015080.c b/src/code_8015080.c index f90e6288a..90597b7ed 100644 --- a/src/code_8015080.c +++ b/src/code_8015080.c @@ -5,6 +5,8 @@ #include "memory.h" #include "menu_input.h" #include "text.h" +#include "sprite.h" +#include "code_80118A4.h" struct unkStruct_203B1F8 { @@ -46,7 +48,6 @@ const UnkTextStruct2 gUnknown_80DAFA0 = { bool8 sub_8015080(u8 *buffer, const MenuItem *menuItems) { - s32 index; gUnknown_203B1F8 = MemoryAlloc(sizeof(struct unkStruct_203B1F8), 8); @@ -72,13 +73,11 @@ bool8 sub_8015080(u8 *buffer, const MenuItem *menuItems) u32 sub_801516C(void) { - if(!sub_8012FD8(&gUnknown_203B1F8->unk4)) - { + if(!sub_8012FD8(&gUnknown_203B1F8->unk4)) { sub_8013114(&gUnknown_203B1F8->unk4, &gUnknown_203B1F8->menuAction); return 3; } - else - { + else { return 0; } } @@ -90,9 +89,222 @@ u32 sub_8015198(void) void sub_80151A4(void) { - if(gUnknown_203B1F8) - { + if(gUnknown_203B1F8) { MemoryFree(gUnknown_203B1F8); gUnknown_203B1F8 = NULL; } } + +struct unkStruct_203B1FC +{ + // size: 0x198 + u32 unk0; + u8 unk4; + // Note: These had to be declared like these, because SpriteOAM is aligned by 4 and these aren't. Makes you think if SpriteOAM is actually a struct, and not just an array of 4 u16s. + u16 sprite1Attribs[4]; + u16 sprite2Attribs[4]; + u8 unk16; + u8 unk17; + u8 unk18; + u8 unk19; + u8 unk1A; + u8 unk1B; + u8 unk1C; + u8 fill1D[0x8A - 0x1D]; + s16 unk8A[2]; + u8 fill8E[0xF8 - 0x8E]; + u8 *unkF8; + u8 unkFC[56]; + u8 *unk134; + UnkTextStruct2 unk138[4]; +}; +extern struct unkStruct_203B1FC *gUnknown_203B1FC; + +extern UnkTextStruct2 gUnknown_80DB550; +extern UnkTextStruct2 gUnknown_80DB568; +extern UnkTextStruct2 gUnknown_80DB580; +extern UnkTextStruct2 gUnknown_80DB538; +s32 sub_8015F44(void); +void sub_8015A08(u32); +void sub_8015C1C(); +void sub_8015F84(); +void sub_80157D8(void); +void sub_80158BC(void); + +u32 sub_80151C0(u32 r0, u8 *buffer) +{ + SpriteOAM *sprite; + s32 index; + s32 i; + + gUnknown_203B1FC = MemoryAlloc(sizeof(*gUnknown_203B1FC), 8); + gUnknown_203B1FC->unk0 = r0; + gUnknown_203B1FC->unk19 = 0; + gUnknown_203B1FC->unk18 = 0; + gUnknown_203B1FC->unk4 = 0; + + switch(gUnknown_203B1FC->unk0) { + case 4: + gUnknown_203B1FC->unk1A = 9; + gUnknown_203B1FC->unk4 = 1; + gUnknown_203B1FC->unk1B = 0x36; + break; + case 5: + gUnknown_203B1FC->unk1A = 9; + gUnknown_203B1FC->unk4 = 1; + gUnknown_203B1FC->unk1B = 0x18; + break; + case 0: + case 1: + case 3: + default: + gUnknown_203B1FC->unk1A = 6; + gUnknown_203B1FC->unk1B = 0xA; + break; + } + + gUnknown_203B1FC->unk134 = buffer; + gUnknown_203B1FC->unkF8 = gUnknown_203B1FC->unkFC; + + for (i = 0; i < 0x36; i++) { + gUnknown_203B1FC->unkF8[i] = 0; + } + MemoryCopy8(gUnknown_203B1FC->unkF8, gUnknown_203B1FC->unk134, gUnknown_203B1FC->unk1B); + + for (i = 0; i < gUnknown_203B1FC->unk1B; i++) { + if (gUnknown_203B1FC->unkF8[i] == 0) { + break; + } + } + for (; i < gUnknown_203B1FC->unk1B; i++) { + gUnknown_203B1FC->unkF8[i] = 0; + } + + gUnknown_203B1FC->unk1C = sub_8015F44(); + if (gUnknown_203B1FC->unk1C == gUnknown_203B1FC->unk1B) { + gUnknown_203B1FC->unk1C--; + } + + SpriteSetAffine1((SpriteOAM *) &gUnknown_203B1FC->sprite1Attribs, 0); + SpriteSetAffine2((SpriteOAM *) &gUnknown_203B1FC->sprite1Attribs, 0); + SpriteSetObjMode((SpriteOAM *) &gUnknown_203B1FC->sprite1Attribs, 0); + SpriteSetMosaic((SpriteOAM *) &gUnknown_203B1FC->sprite1Attribs, 0); + SpriteSetBpp((SpriteOAM *) &gUnknown_203B1FC->sprite1Attribs, 0); + SpriteSetPriority((SpriteOAM *) &gUnknown_203B1FC->sprite1Attribs, 0); + SpriteSetPalNum((SpriteOAM *) &gUnknown_203B1FC->sprite1Attribs, 15); + SpriteSetX((SpriteOAM *) &gUnknown_203B1FC->sprite1Attribs, DISPLAY_WIDTH); + SpriteSetY((SpriteOAM *) &gUnknown_203B1FC->sprite1Attribs, DISPLAY_WIDTH); + + if (gUnknown_203B1FC->unk4 != 0) { + SpriteSetMatrixNum((SpriteOAM *) &gUnknown_203B1FC->sprite1Attribs, 0); + SpriteSetTileNum((SpriteOAM *) &gUnknown_203B1FC->sprite1Attribs, 0x3F6); + SpriteSetSize((SpriteOAM *) &gUnknown_203B1FC->sprite1Attribs, 0); + SpriteSetShape((SpriteOAM *) &gUnknown_203B1FC->sprite1Attribs, 1); + } + else { + SpriteSetMatrixNum((SpriteOAM *) &gUnknown_203B1FC->sprite1Attribs, 16); + SpriteSetTileNum((SpriteOAM *) &gUnknown_203B1FC->sprite1Attribs, 0x3F0); + SpriteSetSize((SpriteOAM *) &gUnknown_203B1FC->sprite1Attribs, 0); + SpriteSetShape((SpriteOAM *) &gUnknown_203B1FC->sprite1Attribs, 1); + } + + gUnknown_203B1FC->unk16 = 4; + + sprite = (SpriteOAM *) &gUnknown_203B1FC->sprite2Attribs; + + SpriteSetAffine1(sprite, 0); + SpriteSetAffine2(sprite, 0); + SpriteSetObjMode(sprite, 0); + SpriteSetMosaic(sprite, 0); + SpriteSetBpp(sprite, 0); + SpriteSetShape(sprite, 0); + SpriteSetTileNum(sprite, 0x3F4); + SpriteSetPriority(sprite, 0); + SpriteSetPalNum(sprite, 15); + SpriteSetMatrixNum(sprite, 0); + SpriteSetSize(sprite, 0); + SpriteSetX(sprite, DISPLAY_WIDTH); + SpriteSetY(sprite, DISPLAY_WIDTH); + + gUnknown_203B1FC->unk17 = 0; + + for (index = 0; index < 4; index++) { + gUnknown_203B1FC->unk138[index] = gUnknown_80DB538; + } + + if(gUnknown_203B1FC->unk4 != 0) { + gUnknown_203B1FC->unk138[1] = gUnknown_80DB580; + } + else { + gUnknown_203B1FC->unk138[1] = gUnknown_80DB568; + } + gUnknown_203B1FC->unk138[0] = gUnknown_80DB550; + + ResetUnusedInputStruct(); + xxx_call_save_unk_text_struct_800641C(gUnknown_203B1FC->unk138, 1, 1); + + sub_8015A08(1); + sub_8015C1C(); + sub_8015F84(); + return 1; +} + +u32 sub_801560C(void); +bool8 sub_8015748(void); + +u32 sub_80154F0(void) +{ + gUnknown_203B1FC->unk16++; + sub_80157D8(); + if (gUnknown_203B1FC->unk16 & 8) { + AddSprite((SpriteOAM *) &gUnknown_203B1FC->sprite1Attribs, 0x100, NULL, NULL); + } + + gUnknown_203B1FC->unk17++; + sub_80158BC(); + if (gUnknown_203B1FC->unk17 & 8) { + AddSprite((SpriteOAM *) &gUnknown_203B1FC->sprite2Attribs, 0x100, NULL, NULL); + } + + switch (sub_8012AE8()) { + case 5: + if (gUnknown_203B1FC->unk1C == 0) { + PlayMenuSoundEffect(2); + } + else { + gUnknown_203B1FC->unk1C--; + PlayMenuSoundEffect(3); + } + break; + case 6: + if (gUnknown_203B1FC->unk1C != gUnknown_203B1FC->unk1B - 1 && gUnknown_203B1FC->unk1C < sub_8015F44()) { + gUnknown_203B1FC->unk1C++; + PlayMenuSoundEffect(3); + } + else { + PlayMenuSoundEffect(2); + } + break; + case 1: + return sub_801560C(); + case 2: + if (sub_8015748()) { + return 2; + } + break; + case 4: + PlayMenuSoundEffect(3); + gUnknown_203B1FC->unk1A = 5; + break; + } + + return 0; +} + +void sub_80155F0(void) +{ + if (gUnknown_203B1FC != NULL) { + MemoryFree(gUnknown_203B1FC); + gUnknown_203B1FC = NULL; + } +}