diff --git a/asm/non_matching/fileScreen/sub_080610B8.inc b/asm/non_matching/fileScreen/sub_080610B8.inc deleted file mode 100644 index 87f75ef5..00000000 --- a/asm/non_matching/fileScreen/sub_080610B8.inc +++ /dev/null @@ -1,348 +0,0 @@ - .syntax unified - push {r4, r5, r6, r7, lr} - ldr r0, _080510E4 @ =gMapDataBottomSpecial - ldrb r0, [r0] - cmp r0, #0 - beq _080510C4 - b _0805134C -_080510C4: - movs r7, #0 - ldr r0, _080510E8 @ =gInput - ldrh r1, [r0, #2] - adds r2, r0, #0 - cmp r1, #8 - bne _080510D2 - b _080511C8 -_080510D2: - cmp r1, #8 - bgt _080510EC - cmp r1, #1 - bne _080510DC - b _080511F2 -_080510DC: - cmp r1, #2 - beq _080511B8 - b _08051100 - .align 2, 0 -_080510E4: .4byte gMapDataBottomSpecial -_080510E8: .4byte gInput -_080510EC: - movs r0, #0x80 - lsls r0, r0, #1 - cmp r1, r0 - bne _080510F6 - b _0805122C -_080510F6: - movs r0, #0x80 - lsls r0, r0, #2 - cmp r1, r0 - bne _08051100 - b _0805121C -_08051100: - movs r6, #0 - movs r5, #0 - ldrh r0, [r2, #4] - cmp r0, #0x20 - beq _08051128 - cmp r0, #0x20 - bgt _08051114 - cmp r0, #0x10 - beq _0805112E - b _08051130 -_08051114: - cmp r0, #0x40 - beq _0805111E - cmp r0, #0x80 - beq _08051124 - b _08051130 -_0805111E: - movs r5, #1 - rsbs r5, r5, #0 - b _08051130 -_08051124: - movs r5, #1 - b _08051130 -_08051128: - movs r6, #1 - rsbs r6, r6, #0 - b _08051130 -_0805112E: - movs r6, #1 -_08051130: - ldr r4, _0805117C @ =gMenu - ldrb r0, [r4, #0x11] - adds r0, r0, r5 - adds r0, #6 - movs r1, #6 - bl __modsi3 - strb r0, [r4, #0x11] - orrs r5, r6 - cmp r5, #0 - beq _0805114C - movs r0, #0x67 - bl SoundReq -_0805114C: - cmp r6, #0 - beq _0805123A - ldrb r0, [r4, #0x11] - cmp r0, #5 - beq _08051184 - ldrb r0, [r4, #0x10] - adds r0, r0, r6 - adds r0, #0xd - movs r1, #0xd - bl __modsi3 - strb r0, [r4, #0x10] - ldr r1, _08051180 @ =gUnk_080FC980 - movs r0, #0x80 - lsls r0, r0, #0x12 - ldrb r0, [r0, #7] - cmp r0, #0 - beq _08051172 - adds r1, #0x10 -_08051172: - ldrb r0, [r4, #0x10] - adds r0, r1, r0 - ldrb r0, [r0] - strb r0, [r4, #0x12] - b _0805123A - .align 2, 0 -_0805117C: .4byte gMenu -_08051180: .4byte gUnk_080FC980 -_08051184: - movs r0, #0x80 - lsls r0, r0, #0x12 - ldrb r0, [r0, #7] - adds r5, r0, #0 - movs r1, #4 - cmp r5, #0 - bne _08051194 - movs r1, #5 -_08051194: - ldrb r0, [r4, #0x12] - adds r0, r0, r6 - adds r0, r0, r1 - bl __modsi3 - strb r0, [r4, #0x12] - ldr r1, _080511B4 @ =gUnk_080FC9A0 - cmp r5, #0 - beq _080511A8 - adds r1, #8 -_080511A8: - ldrb r0, [r4, #0x12] - adds r0, r1, r0 - ldrb r0, [r0] - strb r0, [r4, #0x10] - b _0805123A - .align 2, 0 -_080511B4: .4byte gUnk_080FC9A0 -_080511B8: - ldr r0, _080511C4 @ =gMenu - ldrb r0, [r0, #0x13] - cmp r0, #0 - beq _080511EC - movs r7, #5 - b _0805123A - .align 2, 0 -_080511C4: .4byte gMenu -_080511C8: - movs r0, #0x80 - lsls r0, r0, #0x12 - ldrb r0, [r0, #7] - movs r1, #3 - cmp r0, #0 - bne _080511D6 - movs r1, #4 -_080511D6: - ldr r2, _080511E8 @ =gMenu - ldrb r0, [r2, #0x11] - cmp r0, #5 - bne _080511EC - ldrb r2, [r2, #0x12] - cmp r1, r2 - bne _080511EC - movs r7, #8 - b _0805123A - .align 2, 0 -_080511E8: .4byte gMenu -_080511EC: - bl sub_08051358 - b _0805123A -_080511F2: - ldr r1, _08051210 @ =gMenu - ldrb r0, [r1, #0x11] - cmp r0, #5 - bne _08051218 - ldr r2, _08051214 @ =gUnk_080FC970 - ldrb r1, [r1, #0x12] - movs r0, #0x80 - lsls r0, r0, #0x12 - ldrb r0, [r0, #7] - cmp r0, #0 - beq _0805120A - adds r1, #8 -_0805120A: - adds r0, r1, r2 - ldrb r7, [r0] - b _0805123A - .align 2, 0 -_08051210: .4byte gMenu -_08051214: .4byte gUnk_080FC970 -_08051218: - movs r7, #6 - b _0805123A -_0805121C: - movs r0, #0x80 - lsls r0, r0, #0x12 - ldrb r0, [r0, #7] - movs r7, #1 - cmp r0, #0 - bne _0805123A - movs r7, #4 - b _0805123A -_0805122C: - movs r0, #0x80 - lsls r0, r0, #0x12 - ldrb r0, [r0, #7] - movs r7, #2 - cmp r0, #0 - bne _0805123A - movs r7, #7 -_0805123A: - ldr r0, _08051250 @ =gMenu - ldrb r4, [r0, #1] - subs r0, r7, #1 - cmp r0, #7 - bhi _08051322 - lsls r0, r0, #2 - ldr r1, _08051254 @ =_08051258 - adds r0, r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_08051250: .4byte gMenu -_08051254: .4byte _08051258 -_08051258: @ jump table - .4byte _08051278 @ case 0 - .4byte _0805127C @ case 1 - .4byte _08051280 @ case 2 - .4byte _08051284 @ case 3 - .4byte _08051288 @ case 4 - .4byte _080512C0 @ case 5 - .4byte _080512B8 @ case 6 - .4byte _080512EC @ case 7 -_08051278: - movs r4, #0 - b _08051322 -_0805127C: - movs r4, #1 - b _08051322 -_08051280: - movs r4, #2 - b _08051322 -_08051284: - adds r4, #1 - b _08051322 -_08051288: - ldr r3, _080512B0 @ =gMenu - ldrb r0, [r3, #0x13] - cmp r0, #0 - beq _08051322 - subs r0, #1 - movs r2, #0 - strb r0, [r3, #0x13] - ldr r1, _080512B4 @ =gSave - ldrb r0, [r3, #0x13] - adds r1, #0x80 - adds r0, r0, r1 - strb r2, [r0] - ldrb r0, [r3, #0x13] - adds r0, #1 - adds r0, r0, r1 - strb r2, [r0] - movs r0, #0x6c - bl sub_08051574 - b _08051322 - .align 2, 0 -_080512B0: .4byte gMenu -_080512B4: .4byte gSave -_080512B8: - movs r0, #0 - bl sub_08051480 - b _08051322 -_080512C0: - ldr r2, _080512E4 @ =gBG3Buffer - ldr r0, _080512E8 @ =gMenu - ldrb r1, [r0, #0x10] - lsls r1, r1, #1 - ldrb r0, [r0, #0x11] - lsls r0, r0, #6 - adds r0, #0xc3 - adds r1, r1, r0 - lsls r1, r1, #1 - adds r1, r1, r2 - ldrh r0, [r1] - lsrs r0, r0, #1 - lsls r0, r0, #0x18 - lsrs r0, r0, #0x18 - bl sub_08051480 - b _08051322 - .align 2, 0 -_080512E4: .4byte gBG3Buffer -_080512E8: .4byte gMenu -_080512EC: - movs r3, #5 - ldr r0, _08051350 @ =gSave - adds r6, r0, #0 - adds r6, #0x80 - movs r5, #0 -_080512F6: - adds r2, r3, r6 - ldrb r1, [r2] - cmp r1, #0 - beq _08051302 - cmp r1, #0x20 - bne _0805130A -_08051302: - strb r5, [r2] - subs r3, #1 - cmp r3, #0 - bge _080512F6 -_0805130A: - adds r0, #0x80 - ldrb r0, [r0] - movs r7, #3 - cmp r0, #0 - beq _08051316 - movs r7, #2 -_08051316: - movs r0, #0x6a - bl sub_08051574 - adds r0, r7, #0 - bl SetMenuType -_08051322: - movs r0, #0x80 - lsls r0, r0, #0x12 - ldrb r0, [r0, #7] - movs r1, #2 - cmp r0, #0 - bne _08051330 - movs r1, #3 -_08051330: - adds r0, r4, r1 - bl __modsi3 - adds r4, r0, #0 - ldr r1, _08051354 @ =gMenu - ldrb r0, [r1, #1] - cmp r0, r4 - beq _0805134C - strb r4, [r1, #1] - bl sub_08051458 - movs r0, #0x68 - bl SoundReq -_0805134C: - pop {r4, r5, r6, r7, pc} - .align 2, 0 -_08051350: .4byte gSave -_08051354: .4byte gMenu - .syntax divided diff --git a/src/fileselect.c b/src/fileselect.c index df25bdc9..5545733f 100644 --- a/src/fileselect.c +++ b/src/fileselect.c @@ -86,6 +86,9 @@ static const u16 gUnk_080FC8DE[] = { static void sub_08050848(void); static void sub_0805086C(void); static void sub_08050940(void); +void sub_08051358(void); +void sub_08051574(u32); +void sub_08051480(u32); static void (*const sFileSelectDefaultHandlers[])(void) = { sub_08050848, sub_0805086C, @@ -98,6 +101,9 @@ extern void (*const gUnk_080FC960[])(void); extern void (*const gUnk_080FC9B0[])(void); extern void (*const gUnk_080FC9BC[])(void); extern void (*const gUnk_080FC9C8[])(void); +extern u8 gUnk_080FC970[]; +extern u8 gUnk_080FC980[]; +extern u8 gUnk_080FC9A0[]; static void sub_08050624(u32); static void sub_0805066C(void); @@ -871,9 +877,178 @@ void sub_08051090(void) { SetMenuType(1); } -NONMATCH("asm/non_matching/fileScreen/sub_080610B8.inc", void sub_080610B8(void)) { +void sub_080610B8(void) { + u8 uVar7; + s32 uVar6; + s32 tmp4; + u8* puVar3; + u8* puVar4; + u8* puVar5; + s32 iVar4; + u8 bVar2; + u32 tmp1; + u32 tmp3; + u8 tmp2; + u8 cVar1; + s32 uVar8; + s32 uVar5; + + if (gMapDataBottomSpecial.isTransitioning != 0) { + return; + } + uVar7 = 0; + switch (gInput.newKeys) { + default: + uVar6 = 0; + tmp4 = 0; + switch (gInput.unk4) { + case 0x40: + tmp4 = -1; + break; + case 0x80: + tmp4 = 1; + break; + case 0x20: + uVar6 = -1; + break; + case 0x10: + uVar6 = 1; + break; + } + gGenericMenu.unk10.a[1] = (gGenericMenu.unk10.a[1] + tmp4 + 6) % 6; + if ((tmp4 | uVar6) != 0) { + SoundReq(SFX_TEXTBOX_NEXT); + } + if (uVar6 != 0) { + if (gGenericMenu.unk10.a[1] != 5) { + gGenericMenu.unk10.a[0] = (gGenericMenu.unk10.a[0] + uVar6 + 0xd) % 0xd; + puVar4 = gUnk_080FC980; + if (gSaveHeader->language != 0) { + puVar4 += 0x10; + } + gGenericMenu.unk10.a[2] = puVar4[gGenericMenu.unk10.a[0]]; + } else { + if (gSaveHeader->language == 0) { + iVar4 = 5; + } else { + iVar4 = 4; + } + gGenericMenu.unk10.a[2] = (gGenericMenu.unk10.a[2] + uVar6 + iVar4) % iVar4; + if (gSaveHeader->language != 0) { + puVar5 = gUnk_080FC9A0 + 8; + } else { + puVar5 = gUnk_080FC9A0; + } + gGenericMenu.unk10.a[0] = puVar5[gGenericMenu.unk10.a[2]]; + } + } + break; + case B_BUTTON: + if (gGenericMenu.unk10.a[3] != 0) { + uVar7 = 5; + } else { + sub_08051358(); + } + break; + case START_BUTTON: + if (gSaveHeader->language == 0) { + iVar4 = 4; + } else { + iVar4 = 3; + } + if ((gGenericMenu.unk10.a[1] == 5) && (iVar4 == gGenericMenu.unk10.a[2])) { + uVar7 = 8; + } else { + sub_08051358(); + } + break; + case A_BUTTON: + if (gGenericMenu.unk10.a[1] == 5) { + puVar3 = gUnk_080FC970; + tmp1 = gGenericMenu.unk10.a[2]; + if (gSaveHeader->language != 0) { + tmp1 += 8; + } + uVar7 = puVar3[tmp1]; + + } else { + uVar7 = 6; + } + break; + case L_BUTTON: + if (gSaveHeader->language == 0) { + uVar7 = 4; + } else { + uVar7 = 1; + } + break; + case R_BUTTON: + if (gSaveHeader->language == 0) { + uVar7 = 7; + } else { + uVar7 = 2; + } + break; + } + tmp3 = gMenu.column_idx; + switch (uVar7) { + case 1: + tmp3 = 0; + break; + case 2: + tmp3 = 1; + break; + case 3: + tmp3 = 2; + break; + case 4: + tmp3++; + break; + case 5: + if (gGenericMenu.unk10.a[3] != 0) { + gGenericMenu.unk10.a[3]--; + gSave.name[gGenericMenu.unk10.a[3]] = 0; + gSave.name[gGenericMenu.unk10.a[3] + 1] = 0; + sub_08051574(0x6c); + } + break; + case 7: + sub_08051480(0); + break; + case 6: + tmp2 = ((gBG3Buffer[gGenericMenu.unk10.a[0] * 2 + 0xc3 + gGenericMenu.unk10.a[1] * 0x40]) >> 1); + sub_08051480(tmp2); + break; + case 8: + uVar8 = 5; + do { + cVar1 = gSave.name[uVar8]; + if ((cVar1 != 0) && (cVar1 != 0x20)) { + break; + } + gSave.name[uVar8] = 0; + uVar8--; + } while (0 <= uVar8); + if (gSave.name[0] != 0) { + uVar7 = 2; + } else { + uVar7 = 3; + } + sub_08051574(0x6a); + SetMenuType(uVar7); + } + if (gSaveHeader->language == 0) { + iVar4 = 3; + } else { + iVar4 = 2; + } + tmp3 = (s32)(tmp3 + iVar4) % (iVar4); + if (gMenu.column_idx != tmp3) { + gMenu.column_idx = tmp3; + sub_08051458(); + SoundReq(SFX_TEXTBOX_SWAP); + } } -END_NONMATCH void sub_08051358(void) { gGenericMenu.unk10.a[2] = gSaveHeader->language == 0 ? 4 : 3; @@ -934,7 +1109,6 @@ void sub_08051458(void) { } u32 sub_080514BC(u32); -void sub_08051574(u32); void sub_08051480(u32 c) { CharResult result;