diff --git a/asm/non_matching/subtask2/sub_080A59C8.inc b/asm/non_matching/subtask2/sub_080A59C8.inc deleted file mode 100644 index 028c4e2a..00000000 --- a/asm/non_matching/subtask2/sub_080A59C8.inc +++ /dev/null @@ -1,72 +0,0 @@ - .syntax unified - push {lr} - bl sub_080A51F4 - cmp r0, #0 - beq _080A5A52 - ldr r1, _080A59EC @ =gMenu - ldrb r2, [r1, #3] - movs r3, #0 - ldr r0, _080A59F0 @ =gInput - ldrh r0, [r0, #2] - cmp r0, #2 - beq _080A5A02 - cmp r0, #2 - bgt _080A59F4 - cmp r0, #1 - beq _080A5A0A - b _080A5A0C - .align 2, 0 -_080A59EC: .4byte gMenu -_080A59F0: .4byte gInput -_080A59F4: - cmp r0, #0x40 - beq _080A59FE - cmp r0, #0x80 - beq _080A5A06 - b _080A5A0C -_080A59FE: - movs r2, #0 - b _080A5A0C -_080A5A02: - cmp r2, #0 - bne _080A5A10 -_080A5A06: - movs r2, #1 - b _080A5A0C -_080A5A0A: - movs r3, #1 -_080A5A0C: - cmp r3, #0 - beq _080A5A3C -_080A5A10: - movs r0, #0xff - strh r0, [r1, #8] - cmp r2, #0 - bne _080A5A2E - movs r0, #8 - movs r1, #0 - bl CreateDialogBox - movs r0, #2 - bl SetMenuType - movs r0, #0x6a - bl SoundReq - b _080A5A52 -_080A5A2E: - movs r0, #3 - bl SetMenuType - movs r0, #0x6c - bl SoundReq - b _080A5A52 -_080A5A3C: - ldrb r0, [r1, #3] - cmp r0, r2 - beq _080A5A52 - strb r2, [r1, #3] - movs r0, #0 - adds r1, r2, #0 - bl SetPopupState - movs r0, #0x69 - bl SoundReq -_080A5A52: - pop {pc} - .syntax divided diff --git a/asm/non_matching/subtask2/sub_080A5B34.inc b/asm/non_matching/subtask2/sub_080A5B34.inc deleted file mode 100644 index ddef33a6..00000000 --- a/asm/non_matching/subtask2/sub_080A5B34.inc +++ /dev/null @@ -1,68 +0,0 @@ - .syntax unified - push {r4, r5, r6, lr} - bl sub_080A51F4 - cmp r0, #0 - beq _080A5BB6 - ldr r1, _080A5B58 @ =gMenu - ldrb r4, [r1, #3] - movs r5, #0 - ldr r0, _080A5B5C @ =gInput - ldrh r0, [r0, #2] - adds r6, r1, #0 - cmp r0, #2 - beq _080A5B6C - cmp r0, #2 - bgt _080A5B60 - cmp r0, #1 - beq _080A5B74 - b _080A5B76 - .align 2, 0 -_080A5B58: .4byte gMenu -_080A5B5C: .4byte gInput -_080A5B60: - cmp r0, #0x10 - beq _080A5B70 - cmp r0, #0x20 - bne _080A5B76 - movs r4, #0 - b _080A5B76 -_080A5B6C: - cmp r4, #0 - bne _080A5B74 -_080A5B70: - movs r4, #1 - b _080A5B76 -_080A5B74: - movs r5, #1 -_080A5B76: - adds r1, r6, #0 - ldrb r0, [r1, #3] - cmp r0, r4 - beq _080A5B8E - strb r4, [r1, #3] - movs r0, #2 - adds r1, r4, #0 - bl SetPopupState - movs r0, #0x69 - bl SoundReq -_080A5B8E: - cmp r5, #0 - beq _080A5BB6 - cmp r4, #0 - bne _080A5BAA - movs r0, #7 - movs r1, #0x20 - bl SetFade - movs r0, #0x3c - strh r0, [r6, #8] - movs r0, #2 - bl SetMenuType - b _080A5BB6 -_080A5BAA: - movs r0, #0x6c - bl SoundReq - movs r0, #2 - bl sub_080A4E84 -_080A5BB6: - pop {r4, r5, r6, pc} - .syntax divided diff --git a/asm/non_matching/subtask2/sub_080A6498.inc b/asm/non_matching/subtask2/sub_080A6498.inc deleted file mode 100644 index b5f8a3ac..00000000 --- a/asm/non_matching/subtask2/sub_080A6498.inc +++ /dev/null @@ -1,97 +0,0 @@ - .syntax unified -.ifdef EU - push {r4, r5, r6, r7, lr} - ldr r0, _080A5CDCEU @ =gOamCmd - movs r2, #0 - movs r1, #0x80 - lsls r1, r1, #4 - strh r1, [r0, #4] - strh r2, [r0, #6] - strh r2, [r0, #8] - movs r4, #0 - ldr r7, _080A5CE0 @ =gSave - adds r6, r0, #0 - movs r5, #0x28 -_080A5CA4: - movs r1, #1 - lsls r1, r4 - ldr r0, [r7, #0x40] - ands r0, r1 - cmp r0, #0 - bne _080A5CC8EU - lsls r1, r4, #3 - ldr r0, _080A5CE4 @ =gUnk_08128DE8 - adds r1, r1, r0 - ldrb r0, [r1, #6] - strh r0, [r6] - ldrb r0, [r1, #7] - strh r0, [r6, #2] - movs r0, #0xfd - lsls r0, r0, #1 - adds r1, r5, #0 - bl DrawDirect -_080A5CC8EU: - adds r5, #3 - adds r4, #1 - cmp r4, #0x10 - bls _080A5CA4 - ldr r0, _080A5CE8 @ =gScreen - adds r0, #0x62 - ldr r1, _080A5CEC @ =0x00003D3F - strh r1, [r0] - pop {r4, r5, r6, r7, pc} - .align 2, 0 -_080A5CDCEU: .4byte gOamCmd -_080A5CE0: .4byte gSave -_080A5CE4: .4byte gUnk_08128DE8 -_080A5CE8: .4byte gScreen -_080A5CEC: .4byte 0x00003D3F -.else - push {r4, r5, r6, r7, lr} - ldr r0, _080A64E4 @ =gOamCmd - movs r2, #0 - movs r1, #0x80 - lsls r1, r1, #4 - strh r1, [r0, #4] - strh r2, [r0, #6] - strh r2, [r0, #8] - movs r4, #0 - ldr r7, _080A64E8 @ =gSave - adds r6, r0, #0 - movs r5, #0x28 -_080A64B0: - movs r1, #1 - lsls r1, r4 - ldr r0, [r7, #0x40] - ands r0, r1 - cmp r0, #0 - bne _080A64D2 - lsls r1, r4, #3 - ldr r0, _080A64EC @ =gUnk_08128DE8 - adds r1, r1, r0 - ldrb r0, [r1, #6] - strh r0, [r6] - ldrb r0, [r1, #7] - strh r0, [r6, #2] - ldr r0, _080A64F0 @ =0x000001FB - adds r1, r5, #0 - bl DrawDirect -_080A64D2: - adds r5, #3 - adds r4, #1 - cmp r4, #0x10 - bls _080A64B0 - ldr r0, _080A64F4 @ =gScreen - adds r0, #0x62 - ldr r1, _080A64F8 @ =0x00003D3F - strh r1, [r0] - pop {r4, r5, r6, r7, pc} - .align 2, 0 -_080A64E4: .4byte gOamCmd -_080A64E8: .4byte gSave -_080A64EC: .4byte gUnk_08128DE8 -_080A64F0: .4byte 0x000001FB -_080A64F4: .4byte gScreen -_080A64F8: .4byte 0x00003D3F -.endif - .syntax divided diff --git a/asm/non_matching/subtask2/sub_080A6534.inc b/asm/non_matching/subtask2/sub_080A6534.inc deleted file mode 100644 index c59a39fa..00000000 --- a/asm/non_matching/subtask2/sub_080A6534.inc +++ /dev/null @@ -1,50 +0,0 @@ - .syntax unified - push {r4, lr} - bl sub_080A4D34 - movs r0, #4 - bl sub_080A4DB8 - bl sub_080A6290 - ldr r2, _080A6590 @ =gScreen - ldrh r1, [r2] - ldr r0, _080A6594 @ =0x0000F7FF - ands r0, r1 - movs r4, #0 - strh r0, [r2] - ldr r0, _080A6598 @ =gPaletteBuffer - adds r0, #0xa2 - ldrh r1, [r0] - movs r0, #0 - bl SetColor - ldr r1, _080A659C @ =gUnk_08128F4C - ldr r0, _080A65A0 @ =gUI - ldrb r0, [r0, #3] - lsls r0, r0, #1 - adds r0, r0, r1 - ldrh r2, [r0] - ldr r3, _080A65A4 @ =gSave - ldrh r1, [r3, #0x20] - adds r0, r2, #0 - orrs r0, r1 - strh r0, [r3, #0x20] - ldr r1, _080A65A8 @ =gMenu - ldrh r0, [r1, #0x10] - ands r2, r0 - strh r2, [r1, #0x12] - strh r4, [r1, #0x10] - movs r0, #0x3c - strh r0, [r1, #8] - movs r0, #1 - bl SetMenuType - movs r0, #4 - movs r1, #8 - bl SetFade - pop {r4, pc} - .align 2, 0 -_080A6590: .4byte gScreen -_080A6594: .4byte 0x0000F7FF -_080A6598: .4byte gPaletteBuffer -_080A659C: .4byte gUnk_08128F4C -_080A65A0: .4byte gUI -_080A65A4: .4byte gSave -_080A65A8: .4byte gMenu - .syntax divided diff --git a/asm/non_matching/subtask2/sub_080A65AC.inc b/asm/non_matching/subtask2/sub_080A65AC.inc deleted file mode 100644 index af942a59..00000000 --- a/asm/non_matching/subtask2/sub_080A65AC.inc +++ /dev/null @@ -1,47 +0,0 @@ - .syntax unified - push {r4, lr} - ldr r0, _080A65E4 @ =gFadeControl - ldrb r0, [r0] - cmp r0, #0 - bne _080A6600 - ldr r4, _080A65E8 @ =gMenu - adds r1, r4, #0 - adds r1, #0x2c - ldrb r0, [r1] - adds r0, #1 - strb r0, [r1] - ldrh r0, [r4, #8] - cmp r0, #0 - beq _080A65EC - cmp r0, #0x1e - bne _080A65DA - ldrh r0, [r4, #0x12] - strh r0, [r4, #0x10] - movs r0, #0x20 - strb r0, [r1] - adds r0, #0xe3 - bl SoundReq -_080A65DA: - ldrh r0, [r4, #8] - subs r0, #1 - strh r0, [r4, #8] - b _080A6600 - .align 2, 0 -_080A65E4: .4byte gFadeControl -_080A65E8: .4byte gMenu -_080A65EC: - ldr r0, _080A6604 @ =gInput - ldrh r0, [r0, #2] - cmp r0, #1 - blt _080A6600 - cmp r0, #2 - ble _080A65FC - cmp r0, #8 - bne _080A6600 -_080A65FC: - bl Subtask_Exit -_080A6600: - pop {r4, pc} - .align 2, 0 -_080A6604: .4byte gInput - .syntax divided diff --git a/asm/non_matching/subtask2/sub_080A69E0.inc b/asm/non_matching/subtask2/sub_080A69E0.inc deleted file mode 100644 index 0ebae9ae..00000000 --- a/asm/non_matching/subtask2/sub_080A69E0.inc +++ /dev/null @@ -1,85 +0,0 @@ - .syntax unified - push {r4, r5, r6, r7, lr} - sub sp, #4 - adds r7, r0, #0 - adds r6, r1, #0 - orrs r0, r6 - cmp r0, #0 - beq _080A6A06 - adds r0, r7, #0 - adds r1, r6, #0 - bl sub_080A6A80 - adds r3, r0, #0 - cmp r3, #0 - beq _080A6A06 - ldr r0, _080A6A0C @ =gMenu - ldrb r1, [r0, #3] - ldrb r2, [r3, #4] - cmp r1, r2 - beq _080A6A10 -_080A6A06: - movs r0, #1 - rsbs r0, r0, #0 - b _080A6A74 - .align 2, 0 -_080A6A0C: .4byte gMenu -_080A6A10: - ldrb r1, [r0, #3] - cmp r1, #7 - beq _080A6A26 - cmp r1, #7 - bgt _080A6A20 - cmp r1, #4 - beq _080A6A26 - b _080A6A48 -_080A6A20: - cmp r1, #0xf - beq _080A6A44 - b _080A6A48 -_080A6A26: - ldrb r0, [r0, #3] - movs r2, #7 - cmp r0, #4 - bne _080A6A30 - movs r2, #9 -_080A6A30: - ldr r1, _080A6A40 @ =gAreaRoomHeaders - lsls r0, r2, #2 - adds r0, r0, r1 - ldr r0, [r0] - ldrh r0, [r0, #2] - subs r6, r6, r0 - b _080A6A48 - .align 2, 0 -_080A6A40: .4byte gAreaRoomHeaders -_080A6A44: - ldr r0, _080A6A78 @ =0xFFFFFEF8 - adds r7, r7, r0 -_080A6A48: - ldrb r0, [r3] - lsls r0, r0, #4 - subs r0, r7, r0 - movs r4, #0x64 - muls r0, r4, r0 - ldr r5, _080A6A7C @ =0x0000023A - adds r1, r5, #0 - str r3, [sp] - bl __divsi3 - adds r7, r0, #0 - ldr r3, [sp] - ldrb r0, [r3, #1] - lsls r0, r0, #4 - subs r0, r6, r0 - muls r0, r4, r0 - adds r1, r5, #0 - bl __divsi3 - adds r6, r0, #0 - lsls r0, r6, #0x10 - orrs r0, r7 -_080A6A74: - add sp, #4 - pop {r4, r5, r6, r7, pc} - .align 2, 0 -_080A6A78: .4byte 0xFFFFFEF8 -_080A6A7C: .4byte 0x0000023A - .syntax divided diff --git a/asm/non_matching/subtask2/sub_080A6CD8.inc b/asm/non_matching/subtask2/sub_080A6CD8.inc deleted file mode 100644 index 305a151e..00000000 --- a/asm/non_matching/subtask2/sub_080A6CD8.inc +++ /dev/null @@ -1,82 +0,0 @@ - .syntax unified - push {r4, lr} - ldr r0, _080A6D08 @ =gFadeControl - ldrb r0, [r0] - cmp r0, #0 - bne _080A6D6E - ldr r1, _080A6D0C @ =gMenu - movs r0, #1 - strb r0, [r1] - movs r4, #0 - ldr r0, _080A6D10 @ =gInput - ldrh r0, [r0, #2] - adds r2, r1, #0 - cmp r0, #0x10 - beq _080A6D34 - cmp r0, #0x10 - bgt _080A6D1A - cmp r0, #2 - beq _080A6D4C - cmp r0, #2 - bgt _080A6D14 - cmp r0, #1 - beq _080A6D38 - b _080A6D54 - .align 2, 0 -_080A6D08: .4byte gFadeControl -_080A6D0C: .4byte gMenu -_080A6D10: .4byte gInput -_080A6D14: - cmp r0, #8 - beq _080A6D38 - b _080A6D54 -_080A6D1A: - cmp r0, #0x40 - beq _080A6D2E - cmp r0, #0x40 - bgt _080A6D28 - cmp r0, #0x20 - beq _080A6D2E - b _080A6D54 -_080A6D28: - cmp r0, #0x80 - beq _080A6D34 - b _080A6D54 -_080A6D2E: - movs r4, #1 - rsbs r4, r4, #0 - b _080A6D58 -_080A6D34: - movs r4, #1 - b _080A6D58 -_080A6D38: - movs r0, #2 - strb r0, [r2] - bl SetMenuType - ldr r0, _080A6D48 @ =0x00000704 - bl MessageFromTarget - b _080A6D54 - .align 2, 0 -_080A6D48: .4byte 0x00000704 -_080A6D4C: - movs r0, #3 - strb r0, [r1] - bl SetMenuType -_080A6D54: - cmp r4, #0 - beq _080A6D6E -_080A6D58: - adds r0, r4, #0 - bl sub_080A6D74 - ldr r1, _080A6D70 @ =gMenu - ldrb r2, [r1, #3] - cmp r0, r2 - beq _080A6D6E - strb r0, [r1, #3] - movs r0, #0x69 - bl SoundReq -_080A6D6E: - pop {r4, pc} - .align 2, 0 -_080A6D70: .4byte gMenu - .syntax divided diff --git a/asm/non_matching/subtask2/sub_080A6E70.inc b/asm/non_matching/subtask2/sub_080A6E70.inc deleted file mode 100644 index 707c8fe8..00000000 --- a/asm/non_matching/subtask2/sub_080A6E70.inc +++ /dev/null @@ -1,110 +0,0 @@ - .syntax unified -.ifdef EU - push {r4, r5, lr} - ldr r1, _080A66CC @ =gOamCmd - movs r0, #0 - strh r0, [r1, #4] - strh r0, [r1, #6] - movs r0, #0x80 - lsls r0, r0, #3 - strh r0, [r1, #8] - ldr r1, _080A66D0 @ =gMenu - adds r4, r1, #0 - adds r4, #0x2c - ldrb r0, [r4] - adds r0, #1 - strb r0, [r4] - ldrb r0, [r1, #3] - bl sub_080A6EE0 - ldrb r1, [r4] - movs r0, #0x10 - ands r0, r1 - movs r1, #0x5e - cmp r0, #0 - beq _080A6698 - movs r1, #0x5d -_080A6698: - movs r0, #0xfd - lsls r0, r0, #1 - bl DrawDirect - movs r4, #0 - ldr r5, _080A66D4 @ =gSave -_080A66A4EU: - adds r0, r4, #0 - adds r0, #0x18 - movs r1, #1 - lsls r1, r0 - ldr r0, [r5, #0x40] - ands r0, r1 - cmp r0, #0 - beq _080A66C4 - adds r0, r4, #0 - bl sub_080A6EE0 - movs r0, #0xfd - lsls r0, r0, #1 - movs r1, #0x5c - bl DrawDirect -_080A66C4: - adds r4, #1 - cmp r4, #7 - bls _080A66A4EU - pop {r4, r5, pc} - .align 2, 0 -_080A66CC: .4byte gOamCmd -_080A66D0: .4byte gMenu -_080A66D4: .4byte gSave -.else - push {r4, r5, lr} - ldr r1, _080A6ED0 @ =gOamCmd - movs r0, #0 - strh r0, [r1, #4] - strh r0, [r1, #6] - movs r0, #0x80 - lsls r0, r0, #3 - strh r0, [r1, #8] - ldr r1, _080A6ED4 @ =gMenu - adds r4, r1, #0 - adds r4, #0x2c - ldrb r0, [r4] - adds r0, #1 - strb r0, [r4] - ldrb r0, [r1, #3] - bl sub_080A6EE0 - ldrb r1, [r4] - movs r0, #0x10 - ands r0, r1 - movs r1, #0x5e - cmp r0, #0 - beq _080A6EA0 - movs r1, #0x5d -_080A6EA0: - ldr r0, _080A6ED8 @ =0x000001FB - bl DrawDirect - movs r4, #0 - ldr r5, _080A6EDC @ =gSave -_080A6EAA: - adds r0, r4, #0 - adds r0, #0x18 - movs r1, #1 - lsls r1, r0 - ldr r0, [r5, #0x40] - ands r0, r1 - cmp r0, #0 - beq _080A6EC8 - adds r0, r4, #0 - bl sub_080A6EE0 - ldr r0, _080A6ED8 @ =0x000001FB - movs r1, #0x5c - bl DrawDirect -_080A6EC8: - adds r4, #1 - cmp r4, #7 - bls _080A6EAA - pop {r4, r5, pc} - .align 2, 0 -_080A6ED0: .4byte gOamCmd -_080A6ED4: .4byte gMenu -_080A6ED8: .4byte 0x000001FB -_080A6EDC: .4byte gSave -.endif - .syntax divided diff --git a/asm/non_matching/subtask2/sub_080A6FB4.inc b/asm/non_matching/subtask2/sub_080A6FB4.inc deleted file mode 100644 index d1d5d779..00000000 --- a/asm/non_matching/subtask2/sub_080A6FB4.inc +++ /dev/null @@ -1,69 +0,0 @@ - .syntax unified - push {r4, r5, lr} - adds r2, r0, #0 - movs r4, #0 - cmp r1, #1 - beq _080A6FF0 - cmp r1, #1 - blo _080A6FC8 - cmp r1, #2 - beq _080A6FD6 - b _080A6FFA -_080A6FC8: - ldr r0, _080A6FE4 @ =gSave - movs r1, #1 - lsls r1, r2 - ldr r0, [r0, #0x40] - ands r0, r1 - cmp r0, #0 - beq _080A6FFA -_080A6FD6: - ldr r1, _080A6FE8 @ =gUnk_08127F94 - lsls r0, r2, #3 - adds r0, r0, r1 - ldrh r4, [r0, #6] - ldr r5, _080A6FEC @ =gUnk_08128FC0 - b _080A6FFA - .align 2, 0 -_080A6FE4: .4byte gSave -_080A6FE8: .4byte gUnk_08127F94 -_080A6FEC: .4byte gUnk_08128FC0 -_080A6FF0: - ldr r1, _080A702C @ =gUnk_08128FF0 - lsls r0, r2, #1 - adds r0, r0, r1 - ldrh r4, [r0] - ldr r5, _080A7030 @ =gUnk_08128FD8 -_080A6FFA: - ldr r1, _080A7034 @ =gMenu - ldrh r0, [r1, #0x2e] - cmp r0, r4 - beq _080A7024 - strh r4, [r1, #0x2e] - ldr r0, _080A7038 @ =gUnk_020350F0 - movs r1, #0x80 - lsls r1, r1, #1 - bl MemClear - movs r0, #0xff - ands r0, r4 - cmp r0, #0 - beq _080A701E - adds r0, r4, #0 - adds r1, r5, #0 - bl sub_0805F46C -_080A701E: - ldr r1, _080A703C @ =gScreen - movs r0, #1 - strh r0, [r1, #0xe] -_080A7024: - ldr r1, _080A703C @ =gScreen - movs r0, #2 - strh r0, [r1, #0xc] - pop {r4, r5, pc} - .align 2, 0 -_080A702C: .4byte gUnk_08128FF0 -_080A7030: .4byte gUnk_08128FD8 -_080A7034: .4byte gMenu -_080A7038: .4byte gUnk_020350F0 -_080A703C: .4byte gScreen - .syntax divided diff --git a/asm/non_matching/subtask2/sub_080A7040.inc b/asm/non_matching/subtask2/sub_080A7040.inc deleted file mode 100644 index d580cb08..00000000 --- a/asm/non_matching/subtask2/sub_080A7040.inc +++ /dev/null @@ -1,47 +0,0 @@ - .syntax unified - push {r4, r5, lr} - adds r5, r0, #0 - ldr r1, _080A7090 @ =gMenu - ldrh r0, [r1, #0x2e] - cmp r0, r5 - beq _080A708C - strh r5, [r1, #0x2e] - ldr r4, _080A7094 @ =gUnk_02022130 - movs r1, #0xc0 - lsls r1, r1, #2 - adds r0, r4, #0 - bl MemClear - ldr r0, _080A7098 @ =0xFFFFFE00 - adds r4, r4, r0 - ldr r1, _080A709C @ =0x0600E000 - movs r2, #0x80 - lsls r2, r2, #4 - adds r0, r4, #0 - bl MemCopy - ldr r1, _080A70A0 @ =gUnk_08128D70 - lsls r0, r5, #3 - adds r4, r0, r1 - ldrb r0, [r4] - bl GetInventoryValue - cmp r0, #0 - beq _080A7082 - ldrh r0, [r4, #6] - ldr r1, _080A70A4 @ =gUnk_08129004 - bl sub_0805F46C -_080A7082: - ldr r0, _080A70A8 @ =gScreen - movs r1, #3 - strh r1, [r0, #0x18] - movs r1, #1 - strh r1, [r0, #0x1a] -_080A708C: - pop {r4, r5, pc} - .align 2, 0 -_080A7090: .4byte gMenu -_080A7094: .4byte gUnk_02022130 -_080A7098: .4byte 0xFFFFFE00 -_080A709C: .4byte 0x0600E000 -_080A70A0: .4byte gUnk_08128D70 -_080A70A4: .4byte gUnk_08129004 -_080A70A8: .4byte gScreen - .syntax divided diff --git a/asm/non_matching/subtask2/sub_080A70AC.inc b/asm/non_matching/subtask2/sub_080A70AC.inc deleted file mode 100644 index afcd15bf..00000000 --- a/asm/non_matching/subtask2/sub_080A70AC.inc +++ /dev/null @@ -1,53 +0,0 @@ - .syntax unified - push {r4, r5, lr} - adds r5, r0, #0 - ldr r4, _080A7110 @ =gUnk_0200AF34 - movs r1, #0xc0 - lsls r1, r1, #2 - adds r0, r4, #0 - bl MemClear - adds r2, r4, #0 - subs r2, #0x34 - movs r0, #0x7f - strb r0, [r2, #0x13] - strb r0, [r2, #0x14] - ldrb r0, [r5] - strh r0, [r2, #0x16] - movs r0, #1 - ldrsb r0, [r5, r0] - strh r0, [r2, #0x1c] - ldrb r1, [r5, #2] - subs r0, r4, #4 - strb r1, [r0] - ldrb r0, [r5, #3] - strh r0, [r2, #0x18] - movs r0, #4 - ldrsb r0, [r5, r0] - strh r0, [r2, #0x1e] - ldrb r1, [r5, #5] - subs r0, r4, #3 - strb r1, [r0] - ldrb r0, [r5, #6] - strh r0, [r2, #0x1a] - movs r0, #7 - ldrsb r0, [r5, r0] - strh r0, [r2, #0x20] - ldrb r0, [r5, #8] - subs r4, #2 - strb r0, [r4] - adds r5, #9 - movs r4, #1 - rsbs r4, r4, #0 -_080A70FC: - ldrb r0, [r5] - ldrb r1, [r5, #1] - bl CreateUIElement - adds r5, #2 - movs r0, #0 - ldrsb r0, [r5, r0] - cmp r0, r4 - bne _080A70FC - pop {r4, r5, pc} - .align 2, 0 -_080A7110: .4byte gUnk_0200AF34 - .syntax divided diff --git a/include/fileselect.h b/include/fileselect.h index 066e3e88..375dfeca 100644 --- a/include/fileselect.h +++ b/include/fileselect.h @@ -53,7 +53,6 @@ extern struct_02019EE0 gMapDataBottomSpecial; extern void sub_08056FEC(u32, struct_020227E8*); extern u32 sub_0805F46C(u32, Font*); -extern void RecoverUI(u32 bottomPt, u32 topPt); extern void ClearTilemaps(void); extern void sub_0805194C(u32); extern WStruct* sub_0805F2C8(void); diff --git a/include/functions.h b/include/functions.h index 2f0428a8..1f7d35cf 100644 --- a/include/functions.h +++ b/include/functions.h @@ -24,7 +24,6 @@ extern void CreateMinishEntrance(u32 tile); extern u32 CreateRandomItemDrop(Entity*, u32); extern void DrawDirect(u32, u32); extern void DrawEntities(void); -extern void DrawUIElements(void); extern bool32 EntityWithinDistance(Entity*, s32, s32, s32); extern void FlushSprites(void); extern LayerStruct* GetLayerByIndex(u32); @@ -79,7 +78,6 @@ extern void sub_08016AD2(Entity*); extern u32 sub_0801766C(Entity*); extern void sub_0801AFE4(void); extern void UpdateUIElements(void); -extern void sub_0801C25C(void); extern void sub_0801E104(void); extern void sub_08027870(Entity*); extern void sub_08030118(u32); diff --git a/include/ui.h b/include/ui.h new file mode 100644 index 00000000..05fab34d --- /dev/null +++ b/include/ui.h @@ -0,0 +1,15 @@ +#ifndef UI_H +#define UI_H + +#include "global.h" + +extern void DrawUIElements(void); +extern void CreateUIElement(u32, u32); +extern u32 sub_0801C2F0(u32, u32); +extern void sub_0801C25C(void); +extern void DrawUI(void); +extern void InitUI(bool32); +extern void RefreshUI(void); +extern void RecoverUI(u32 bottomPt, u32 topPt); + +#endif \ No newline at end of file diff --git a/src/fileselect.c b/src/fileselect.c index b0ce954b..2281d90f 100644 --- a/src/fileselect.c +++ b/src/fileselect.c @@ -16,6 +16,7 @@ #include "subtask.h" #include "item.h" #include "game.h" +#include "ui.h" // copy, erase, start #define NUM_FILE_OPERATIONS 3 diff --git a/src/game.c b/src/game.c index 781f1acf..d34760cb 100644 --- a/src/game.c +++ b/src/game.c @@ -32,6 +32,7 @@ #include "player.h" #include "transitions.h" #include "roomid.h" +#include "ui.h" // Game task @@ -100,7 +101,6 @@ extern void sub_080185F8(void); extern void UpdateDoorTransition(void); extern bool32 CheckInitPortal(void); extern void UpdateCarriedObject(void); -extern void DrawUI(void); extern void CollisionMain(void); extern void sub_0805BB74(s32); extern void CreateZeldaFollower(void); @@ -112,7 +112,6 @@ extern void UpdateScroll(void); extern void UpdateBgAnimations(void); extern void CleanUpGFXSlots(void); extern void sub_080ADE24(void); -extern void InitUI(bool32); extern void sub_0801AE44(u32); extern void GenerateAreaHint(void); extern void ForceSetPlayerState(u32); diff --git a/src/interrupts.c b/src/interrupts.c index 0477426a..e9d6e7e9 100644 --- a/src/interrupts.c +++ b/src/interrupts.c @@ -9,6 +9,7 @@ #include "screen.h" #include "gba/m4a.h" #include "object.h" +#include "ui.h" extern u8 gUnk_03003DE0; extern u8 gUnk_03000C30; diff --git a/src/menu/figurine_menu.c b/src/menu/figurine_menu.c index 1c9f6557..cd155de2 100644 --- a/src/menu/figurine_menu.c +++ b/src/menu/figurine_menu.c @@ -11,6 +11,7 @@ #include "game.h" #include "functions.h" #include "message.h" +#include "ui.h" extern const struct { u8 filler[7]; diff --git a/src/menu/kinstone_menu.c b/src/menu/kinstone_menu.c index c0e9f7b6..67976f59 100644 --- a/src/menu/kinstone_menu.c +++ b/src/menu/kinstone_menu.c @@ -14,12 +14,12 @@ #include "npc.h" #include "enemy.h" #include "functions.h" +#include "ui.h" extern u32 sub_08000E44(u32); extern void sub_080A3B74(void); extern s32 sub_080A3B48(void); extern void sub_0805ECEC(u32, u32, u32, u32); -extern void sub_0801C2F0(u32, u32); extern void sub_0801E6C8(u32); extern void sub_0801E798(u32); extern WStruct* sub_0805F2C8(void); diff --git a/src/menu/pause_menu.c b/src/menu/pause_menu.c index 4952837d..0eef154b 100644 --- a/src/menu/pause_menu.c +++ b/src/menu/pause_menu.c @@ -11,6 +11,7 @@ #include "itemMetaData.h" #include "structures.h" #include "functions.h" +#include "ui.h" extern void sub_080A4DB8(u32); diff --git a/src/message.c b/src/message.c index e4db0a1e..2b0e5bc0 100644 --- a/src/message.c +++ b/src/message.c @@ -6,6 +6,7 @@ #include "functions.h" #include "message.h" #include "save.h" +#include "ui.h" #define MESSAGE_ADVANCE_KEYS (A_BUTTON | B_BUTTON | DPAD_ANY | R_BUTTON) #define MESSAGE_PRESS_ANY_ADVANCE_KEYS ((gInput.newKeys & MESSAGE_ADVANCE_KEYS) != 0) @@ -32,8 +33,6 @@ enum { extern void WriteBit(u32*, u32); extern bool32 sub_0805EF40(Token* tok, const u8*); -extern void RecoverUI(u32 bottomPt, u32 topPt); -extern void RefreshUI(void); extern void sub_0805F918(u32, u32, void*); extern u32 DecToHex(u32, u8*, u32); diff --git a/src/script.c b/src/script.c index 92fad99a..f5bfe726 100644 --- a/src/script.c +++ b/src/script.c @@ -8,6 +8,7 @@ #include "kinstone.h" #include "functions.h" #include "item.h" +#include "ui.h" void InitScriptForEntity(Entity*, ScriptExecutionContext*, u16*); void InitScriptExecutionContext(ScriptExecutionContext* context, u16* script); @@ -152,8 +153,6 @@ void ScriptCommand_CameraTargetPlayer(Entity* entity, ScriptExecutionContext* co void ScriptCommand_0807F0B4(Entity* entity, ScriptExecutionContext* context); void ScriptCommand_0807F0C8(Entity* entity, ScriptExecutionContext* context); -extern void RecoverUI(u32); - typedef void (*ScriptCommand)(Entity*, ScriptExecutionContext*); extern u16* gUnk_08001A7C[]; @@ -455,7 +454,7 @@ void sub_0807DF38(void) { void sub_0807DF50(void) { gPauseMenuOptions.disabled = 0; gUnk_0200AF00.unk_1 = 0; - RecoverUI(0); + RecoverUI(0, 0); ResetPlayerAnimationAndAction(); PlayerDropHeldObject(); } diff --git a/src/subtask2.c b/src/subtask2.c index 27982f1d..5d5c407e 100644 --- a/src/subtask2.c +++ b/src/subtask2.c @@ -10,6 +10,7 @@ #include "functions.h" #include "main.h" #include "message.h" +#include "ui.h" extern u8 gUnk_08128D38[]; extern u8 gUnk_08128D43[]; @@ -26,6 +27,8 @@ u32 sub_080A6F40(); void sub_080A67C4(u32); void sub_080A68D4(); u32 sub_080A69E0(); +void sub_080A6EE0(u32 param_1); +struct_08127F94* sub_080A6A80(u32 param_1, u32 param_2); extern void DrawDungeonMap(u32 floor, struct_02019EE0* data, u32 size); extern void LoadDungeonMap(void); @@ -68,7 +71,6 @@ extern void (*const gUnk_0812901C[])(void); void sub_080A74F4(void); -extern void DrawUI(void); extern void UpdateCarriedObject(void); extern void (*const gSubtasks[])(void); @@ -86,6 +88,30 @@ typedef struct { extern const struct_gUnk_08128E94 gUnk_08128E94[]; +typedef struct { + u8 unk0; + u8 unk1; + u8 unk2; + u8 unk3; + u8 unk4; + u8 unk5; + u8 unk6; + u8 unk7; +} gUnk_08128DE8_struct; +extern gUnk_08128DE8_struct gUnk_08128DE8[]; + +typedef struct { + u8 unk0; + u8 unk1; + u8 unk2; + u8 unk3; + u8 unk4; + s8 unk5; + u16 unk6; +} struct_gUnk_08128D70; + +extern const struct_gUnk_08128D70 gUnk_08128D70[]; + ASM_FUNC("asm/non_matching/subtask2/sub_080A5594.inc", void sub_080A5594()) ASM_FUNC("asm/non_matching/subtask2/sub_080A56A0.inc", void sub_080A56A0()) @@ -103,7 +129,51 @@ void sub_080A59AC(void) { SetMenuType(1); } -ASM_FUNC("asm/non_matching/subtask2/sub_080A59C8.inc", void sub_080A59C8()) +void sub_080A59C8(void) { + u32 uVar2; + u32 bVar3; + + if (!sub_080A51F4()) { + return; + } + uVar2 = gMenu.field_0x3; + bVar3 = FALSE; + + switch (gInput.newKeys) { + case DPAD_UP: + uVar2 = 0; + break; + case B_BUTTON: + if (gMenu.field_0x3 == 0) { + uVar2 = 1; + } else { + bVar3 = TRUE; + } + break; + case DPAD_DOWN: + uVar2 = 1; + break; + case A_BUTTON: + bVar3 = TRUE; + break; + } + + if (bVar3) { + gMenu.transitionTimer = 0xff; + if (uVar2 == 0) { + CreateDialogBox(8, 0); + SetMenuType(2); + SoundReq(SFX_TEXTBOX_SELECT); + } else { + SetMenuType(3); + SoundReq(SFX_MENU_CANCEL); + } + } else if (gMenu.field_0x3 != uVar2) { + gMenu.field_0x3 = uVar2; + SetPopupState(0, uVar2); + SoundReq(SFX_TEXTBOX_CHOICE); + } +} void sub_080A5A54(void) { switch (HandleSave(0)) { @@ -160,7 +230,49 @@ void sub_080A5AF4(void) { SetMenuType(1); } -ASM_FUNC("asm/non_matching/subtask2/sub_080A5B34.inc", void sub_080A5B34()) +void sub_080A5B34(void) { + bool32 bVar1; + u32 uVar3; + + if (!sub_080A51F4()) { + return; + } + uVar3 = gMenu.field_0x3; + bVar1 = FALSE; + switch (gInput.newKeys) { + case DPAD_LEFT: + uVar3 = 0; + break; + case B_BUTTON: + if (gMenu.field_0x3 != 0) { + bVar1 = TRUE; + } else { + uVar3 = 1; + } + break; + case DPAD_RIGHT: + uVar3 = 1; + break; + case A_BUTTON: + bVar1 = TRUE; + break; + } + if (gMenu.field_0x3 != uVar3) { + gMenu.field_0x3 = uVar3; + SetPopupState(2, uVar3); + SoundReq(SFX_TEXTBOX_CHOICE); + } + if (bVar1) { + if (uVar3 == 0) { + SetFade(7, 0x20); + gMenu.transitionTimer = 0x3c; + SetMenuType(2); + } else { + SoundReq(SFX_MENU_CANCEL); + sub_080A4E84(2); + } + } +} void sub_080A5BB8(void) { Main* m; @@ -344,7 +456,26 @@ void sub_080A6438(void) { } } -ASM_FUNC("asm/non_matching/subtask2/sub_080A6498.inc", void sub_080A6498()) +void sub_080A6498(void) { + u32 i; + + gOamCmd._4 = 0x800; + gOamCmd._6 = 0; + gOamCmd._8 = 0; + for (i = 0; i <= 0x10; i++) { + if ((gSave.windcrests & (1 << i)) == 0) { + gUnk_08128DE8_struct* ptr = &gUnk_08128DE8[i]; + gOamCmd.x = ptr->unk6; + gOamCmd.y = ptr->unk7; +#ifdef EU + DrawDirect(0x1fa, 0x28 + 3 * i); +#else + DrawDirect(0x1fb, 0x28 + 3 * i); +#endif + } + } + gScreen.controls.windowOutsideControl = 0x3d3f; +} void Subtask_MapHint(void) { extern void (*const gUnk_08128E70[])(void); @@ -357,9 +488,46 @@ void Subtask_MapHint(void) { CopyOAM(); } -ASM_FUNC("asm/non_matching/subtask2/sub_080A6534.inc", void sub_080A6534()) +void sub_080A6534(void) { + extern const u16 gUnk_08128F4C[]; + u32 val; + sub_080A4D34(); + sub_080A4DB8(4); + sub_080A6290(); + gScreen.lcd.displayControl = gScreen.lcd.displayControl & 0xf7ff; + SetColor(0, gPaletteBuffer[0x51]); + val = gUnk_08128F4C[gUI.field_0x3]; + gSave.field_0x20 |= val; + gGenericMenu.unk10.h[1] = val & gGenericMenu.unk10.h[0]; + gGenericMenu.unk10.h[0] = 0; + gMenu.transitionTimer = 0x3c; + SetMenuType(1); + SetFade(4, 8); +} -ASM_FUNC("asm/non_matching/subtask2/sub_080A65AC.inc", void sub_080A65AC()) +void sub_080A65AC(void) { + if (!gFadeControl.active) { + gGenericMenu.unk2c++; + switch (gMenu.transitionTimer) { + case 0x1e: + gGenericMenu.unk10.h[0] = gGenericMenu.unk10.h[1]; + gGenericMenu.unk2c = 0x20; + SoundReq(SFX_103); + default: + gMenu.transitionTimer--; + break; + case 0: + switch (gInput.newKeys) { + case A_BUTTON: + case B_BUTTON: + case START_BUTTON: + Subtask_Exit(); + break; + } + break; + } + } +} void sub_080A6608(void) { extern void (*const gUnk_08128E78[])(void); @@ -439,7 +607,40 @@ void sub_080A698C(u32 param_1, u32 param_2, u32 param_3, u32 param_4) { } } -ASM_FUNC("asm/non_matching/subtask2/sub_080A69E0.inc", u32 sub_080A69E0()) +u32 sub_080A69E0(u32 param_1, u32 param_2) { + const struct_08127F94* pbVar1; + int iVar3; + + if ((param_1 | param_2) == 0) + return -1; + + pbVar1 = sub_080A6A80(param_1, param_2); + if (pbVar1 == NULL) + return -1; + + if (gMenu.field_0x3 != pbVar1->_4) + return -1; + + switch (gMenu.field_0x3) { + case 4: + case 7: + if (gMenu.field_0x3 == 4) { + iVar3 = 9; + } else { + iVar3 = 7; + } + param_2 -= gAreaRoomHeaders[iVar3]->map_y; + break; + break; + case 15: + param_1 -= 0x108; + break; + } + + param_1 = (s32)((param_1 - pbVar1->_0 * 0x10) * 100) / 0x23a; + param_2 = (s32)((param_2 - pbVar1->_1 * 0x10) * 100) / 0x23a; + return (param_2 << 0x10) | param_1; +} struct_08127F94* sub_080A6A80(u32 param_1, u32 param_2) { struct_08127F94* pbVar1; @@ -507,7 +708,46 @@ void sub_080A6CA8(void) { SetFade(4, 8); } -ASM_FUNC("asm/non_matching/subtask2/sub_080A6CD8.inc", void sub_080A6CD8()) +void sub_080A6CD8(void) { + u32 uVar1; + u32 uVar2; + + if (gFadeControl.active) { + return; + } + + gMenu.field_0x0 = 1; + uVar2 = 0; + + switch (gInput.newKeys) { + case DPAD_LEFT: + case DPAD_UP: + uVar2 = -1; + break; + case DPAD_RIGHT: + case DPAD_DOWN: + uVar2 = 1; + break; + case A_BUTTON: + case START_BUTTON: + gMenu.field_0x0 = 2; + SetMenuType(2); + MessageFromTarget(0x704); + break; + case B_BUTTON: + gMenu.field_0x0 = 3; + SetMenuType(3); + break; + } + + if (uVar2) { + uVar1 = sub_080A6D74(uVar2); + if (uVar1 != gMenu.field_0x3) { + gMenu.field_0x3 = uVar1; + SoundReq(SFX_TEXTBOX_CHOICE); + } + } +} u32 sub_080A6D74(u32 param_1) { u32 uVar1; @@ -581,9 +821,39 @@ void sub_080A6E44(void) { } } -ASM_FUNC("asm/non_matching/subtask2/sub_080A6E70.inc", void sub_080A6E70()) +void sub_080A6E70(void) { + u32 uVar1; + u32 i; -ASM_FUNC("asm/non_matching/subtask2/sub_080A6EE0.inc", void sub_080A6EE0()) + gOamCmd._4 = 0; + gOamCmd._6 = 0; + gOamCmd._8 = 0x400; + gGenericMenu.unk2c++; + sub_080A6EE0(gMenu.field_0x3); + if ((gGenericMenu.unk2c & 0x10) != 0) { + uVar1 = 0x5d; + } else { + uVar1 = 0x5e; + } + +#ifdef EU + DrawDirect(0x1fa, uVar1); +#else + DrawDirect(0x1fb, uVar1); +#endif + for (i = 0; i < 8; i++) { + if ((gSave.windcrests & (1 << (i + 0x18))) != 0) { + sub_080A6EE0(i); +#ifdef EU + DrawDirect(0x1fa, 0x5c); +#else + DrawDirect(0x1fb, 0x5c); +#endif + } + } +} + +ASM_FUNC("asm/non_matching/subtask2/sub_080A6EE0.inc", void sub_080A6EE0(u32 param_1)) u32 sub_080A6F40(void) { extern u8 gUnk_08128F38[]; @@ -611,11 +881,73 @@ void sub_080A6F6C(u32 param_1) { gScreen.bg0.yOffset = 2; } -ASM_FUNC("asm/non_matching/subtask2/sub_080A6FB4.inc", void sub_080A6FB4(u32 a, u32 b)) +void sub_080A6FB4(u32 param_1, u32 param_2) { + extern u16 gUnk_08128FF0[]; + extern Font gUnk_08128FD8; + extern Font gUnk_08128FC0; + u32 uVar1; + Font* font; -ASM_FUNC("asm/non_matching/subtask2/sub_080A7040.inc", void sub_080A7040(u32 a)) + uVar1 = 0; + switch (param_2) { + case 0: + if ((gSave.windcrests & (1 << param_1)) == 0) + break; + case 2: + uVar1 = gUnk_08127F94[param_1]._6; + font = &gUnk_08128FC0; + break; + case 1: + uVar1 = gUnk_08128FF0[param_1]; + font = &gUnk_08128FD8; + break; + } -ASM_FUNC("asm/non_matching/subtask2/sub_080A70AC.inc", void sub_080A70AC(const KeyButtonLayout* layout)) + if (gGenericMenu.unk2e.HWORD != uVar1) { + gGenericMenu.unk2e.HWORD = uVar1; + MemClear(&gUnk_020350F0, 0x100); + if ((uVar1 & 0xff) != 0) { + sub_0805F46C(uVar1, font); + } + gScreen.bg0.updated = 1; + } + gScreen.bg0.yOffset = 2; +} + +void sub_080A7040(u32 param_1) { + extern Font gUnk_08129004; + extern u8 gUnk_02022130[]; + if (gGenericMenu.unk2e.HWORD != param_1) { + gGenericMenu.unk2e.HWORD = param_1; + MemClear(gUnk_02022130, 0x300); + MemCopy(gUnk_02022130 - 0x200, (void*)0x600e000, 0x800); + if (GetInventoryValue(gUnk_08128D70[param_1].unk0) != 0) { + sub_0805F46C(gUnk_08128D70[param_1].unk6, &gUnk_08129004); + } + gScreen.bg1.yOffset = 3; + gScreen.bg1.updated = 1; + } +} + +void sub_080A70AC(const KeyButtonLayout* layout) { + MemClear(&gUnk_0200AF00.elements, 0x300); + gUnk_0200AF00.unk_13 = 0x7f; + gUnk_0200AF00.unk_14 = 0x7f; + gUnk_0200AF00.buttonX[0] = layout->aButtonX; + gUnk_0200AF00.buttonY[0] = (s8)layout->aButtonY; + gUnk_0200AF00.unk_30[0] = layout->aButtonText; + gUnk_0200AF00.buttonX[1] = layout->bButtonX; + gUnk_0200AF00.buttonY[1] = (s8)layout->bButtonY; + gUnk_0200AF00.unk_30[1] = layout->bButtonText; + gUnk_0200AF00.buttonX[2] = layout->rButtonX; + gUnk_0200AF00.buttonY[2] = (s8)layout->rButtonY; + gUnk_0200AF00.unk_32 = layout->rButtonText; + layout++; + do { + CreateUIElement(layout->aButtonX, layout->aButtonY); + layout = (KeyButtonLayout*)&layout->aButtonText; + } while ((s8)layout->aButtonX != -1); +} void SetMenuType(u32 menuType) { gMenu.menuType = menuType; @@ -624,12 +956,12 @@ void SetMenuType(u32 menuType) { } void ResetUI(void) { - MemClear(&gUI, 0x3b4); + MemClear(&gUI, sizeof(gUI)); } void MenuFadeIn(u32 param_1, u32 param_2) { if (gUI.nextToLoad == 0) { - MemClear(&gUI, 0x3b4); + MemClear(&gUI, sizeof(gUI)); gUI.lastState = param_1; gUI.field_0x3 = param_2; gUI.pauseFadeIn = gMain.substate;