diff --git a/asm/non_matching/subtask/sub_080A4494.inc b/asm/non_matching/subtask/sub_080A4494.inc deleted file mode 100644 index ddb6aaa1..00000000 --- a/asm/non_matching/subtask/sub_080A4494.inc +++ /dev/null @@ -1,34 +0,0 @@ - .syntax unified - push {r4, r5, lr} - bl sub_0805F2C8 - adds r4, r0, #0 - cmp r4, #0 - beq _080A44D0 - ldr r0, _080A44D4 @ =gTextGfxBuffer - str r0, [r4, #8] - movs r1, #0 - strb r1, [r4, #2] - movs r0, #5 - strb r0, [r4, #3] - strb r1, [r4, #1] - ldr r1, _080A44D8 @ =gUnk_02002AC0 - adds r0, r4, #0 - movs r2, #0x80 - bl sub_080A44E0 - ldr r0, _080A44DC @ =gFuseInfo - ldr r0, [r0, #0xc] - bl sub_08002632 - adds r0, r4, #0 - movs r2, #0xa0 - bl sub_080A44E0 - adds r5, r0, #0 - adds r0, r4, #0 - bl sub_0805F300 -_080A44D0: - adds r0, r5, #0 - pop {r4, r5, pc} - .align 2, 0 -_080A44D4: .4byte gTextGfxBuffer -_080A44D8: .4byte gUnk_02002AC0 -_080A44DC: .4byte gFuseInfo - .syntax divided diff --git a/asm/non_matching/subtask/sub_080A4864.inc b/asm/non_matching/subtask/sub_080A4864.inc deleted file mode 100644 index 22af3aeb..00000000 --- a/asm/non_matching/subtask/sub_080A4864.inc +++ /dev/null @@ -1,116 +0,0 @@ -.syntax unified - push {r4, r5, r6, lr} - ldr r0, _080A4894 @ =gFadeControl - ldrb r0, [r0] - cmp r0, #0 - bne _080A4926 - ldr r0, _080A4898 @ =gMenu - movs r5, #0x1f - ldrsb r5, [r0, r5] - ldrb r4, [r0, #0x1c] - ldr r0, _080A489C @ =gInput - ldrh r1, [r0, #4] - cmp r1, #0x20 - beq _080A48DC - cmp r1, #0x20 - bgt _080A48A0 - cmp r1, #2 - beq _080A48C0 - cmp r1, #2 - ble _080A48DE - cmp r1, #8 - beq _080A48C0 - cmp r1, #0x10 - beq _080A48D8 - b _080A48DE - .align 2, 0 -_080A4894: .4byte gFadeControl -_080A4898: .4byte gMenu -_080A489C: .4byte gInput -_080A48A0: - cmp r1, #0x80 - beq _080A48D4 - cmp r1, #0x80 - bgt _080A48AE - cmp r1, #0x40 - beq _080A48D0 - b _080A48DE -_080A48AE: - movs r0, #0x80 - lsls r0, r0, #1 - cmp r1, r0 - beq _080A48CC - movs r0, #0x80 - lsls r0, r0, #2 - cmp r1, r0 - beq _080A48C8 - b _080A48DE -_080A48C0: - movs r0, #3 - bl sub_080A7114 - b _080A48DE -_080A48C8: - subs r4, #5 - b _080A48DE -_080A48CC: - adds r4, #5 - b _080A48DE -_080A48D0: - subs r4, #1 - b _080A48DE -_080A48D4: - adds r4, #1 - b _080A48DE -_080A48D8: - adds r5, #8 - b _080A48DE -_080A48DC: - subs r5, #8 -_080A48DE: - ldr r0, _080A4928 @ =gSave - ldrb r0, [r0, #6] - movs r1, #0x88 - cmp r0, #0 - bne _080A48EA - movs r1, #0x82 -_080A48EA: - cmp r4, #0 - bgt _080A48F0 - movs r4, #1 -_080A48F0: - cmp r1, r4 - bge _080A48F6 - adds r4, r1, #0 -_080A48F6: - ldr r6, _080A492C @ =gMenu - ldrb r0, [r6, #0x1c] - cmp r0, r4 - beq _080A490E - strb r4, [r6, #0x1c] - movs r0, #0x69 - bl SoundReq - movs r0, #2 - bl sub_080A7114 - movs r5, #0 -_080A490E: - ldrb r0, [r6, #0x1e] - cmp r5, #0 - bge _080A4916 - movs r5, #0 -_080A4916: - cmp r0, r5 - bge _080A491C - adds r5, r0, #0 -_080A491C: - strb r5, [r6, #0x1f] - ldr r1, _080A4930 @ =gScreen - adds r0, r5, #0 - subs r0, #0x70 - strh r0, [r1, #0x18] -_080A4926: - pop {r4, r5, r6, pc} - .align 2, 0 -_080A4928: .4byte gSave -_080A492C: .4byte gMenu -_080A4930: .4byte gScreen -.syntax divided diff --git a/asm/non_matching/subtask/sub_080A4978.inc b/asm/non_matching/subtask/sub_080A4978.inc deleted file mode 100644 index fd243abf..00000000 --- a/asm/non_matching/subtask/sub_080A4978.inc +++ /dev/null @@ -1,443 +0,0 @@ -.syntax unified -.ifdef EU - push {r4, r5, r6, r7, lr} - mov r7, r8 - push {r7} - ldr r5, _080A432C @ =gOamCmd - movs r0, #0 - strh r0, [r5, #4] - strh r0, [r5, #6] - movs r0, #0x80 - lsls r0, r0, #4 - strh r0, [r5, #8] - movs r0, #0x9c - strh r0, [r5] - movs r0, #0x48 - strh r0, [r5, #2] - ldr r7, _080A4330 @ =0x000001FB - adds r0, r7, #0 - movs r1, #0 - bl DrawDirect - ldr r0, _080A4334 @ =gSave - ldrb r0, [r0, #6] - movs r2, #0x88 - cmp r0, #0 - bne _080A41C2 - movs r2, #0x82 -_080A41C2: - ldr r3, _080A4338 @ =gChooseFileState - ldrb r1, [r3, #1] - movs r0, #2 - ands r0, r1 - cmp r0, #0 - beq _080A4226 - ldrb r4, [r3, #0x1c] - cmp r2, r4 - blt _080A4226 - movs r6, #0xe8 - strh r6, [r5] - movs r0, #0xa0 - lsls r0, r0, #7 - adds r1, r2, #0 - bl __divsi3 - subs r1, r4, #1 - muls r0, r1, r0 - cmp r0, #0 - bge _080A41EC - adds r0, #0xff -_080A41EC: - asrs r0, r0, #8 - adds r0, #0x20 - strh r0, [r5, #2] - adds r0, r7, #0 - movs r1, #1 - bl DrawDirect - ldr r0, _080A433C @ =gMain - ldrh r1, [r0, #0xc] - movs r0, #0x10 - ands r0, r1 - movs r4, #2 - cmp r0, #0 - beq _080A420A - movs r4, #4 -_080A420A: - strh r6, [r5] - movs r0, #0x1a - strh r0, [r5, #2] - adds r0, r7, #0 - adds r1, r4, #0 - bl DrawDirect - strh r6, [r5] - movs r0, #0x76 - strh r0, [r5, #2] - adds r1, r4, #1 - adds r0, r7, #0 - bl DrawDirect -_080A4226: - ldr r0, _080A433C @ =gMain - ldrh r1, [r0, #0xc] - movs r2, #0x10 - adds r0, r2, #0 - ands r0, r1 - cmp r0, #0 - beq _080A427C - ldr r5, _080A4338 @ =gChooseFileState - ldrb r1, [r5, #1] - adds r0, r2, #0 - ands r0, r1 - cmp r0, #0 - beq _080A427C - ldrb r0, [r5, #0x1e] - cmp r0, #0 - beq _080A427C - ldr r4, _080A432C @ =gOamCmd - strh r2, [r4, #2] - movs r0, #0x1f - ldrsb r0, [r5, r0] - cmp r0, #0 - ble _080A4262 - movs r0, #6 - strh r0, [r4] - movs r0, #0x9c - strh r0, [r4, #2] - ldr r0, _080A4330 @ =0x000001FB - movs r1, #6 - bl DrawDirect -_080A4262: - ldrb r1, [r5, #0x1e] - movs r0, #0x1f - ldrsb r0, [r5, r0] - cmp r1, r0 - ble _080A427C - movs r0, #0xea - strh r0, [r4] - movs r0, #0x9c - strh r0, [r4, #2] - ldr r0, _080A4330 @ =0x000001FB - movs r1, #7 - bl DrawDirect -_080A427C: - movs r0, #0x80 - lsls r0, r0, #0x12 - ldrb r0, [r0, #7] - cmp r0, #0 - beq _080A42D0 - ldr r2, _080A4338 @ =gChooseFileState - ldrb r1, [r2, #1] - movs r0, #4 - ands r0, r1 - cmp r0, #0 - beq _080A42D0 - ldr r1, _080A432C @ =gOamCmd - movs r0, #0x10 - strh r0, [r1, #2] - ldrb r4, [r2, #0x1c] - movs r6, #2 - adds r7, r1, #0 - movs r5, #0x6b -_080A42A0: - strh r5, [r7] - adds r0, r4, #0 - movs r1, #0xa - bl __modsi3 - lsls r0, r0, #1 - movs r2, #0x9e - lsls r2, r2, #4 - adds r1, r2, #0 - orrs r0, r1 - strh r0, [r7, #8] - movs r0, #0 - movs r1, #9 - bl DrawDirect - adds r0, r4, #0 - movs r1, #0xa - bl __divsi3 - adds r4, r0, #0 - subs r5, #7 - subs r6, #1 - cmp r6, #0 - bge _080A42A0 -_080A42D0: - ldr r4, _080A4338 @ =gChooseFileState - ldrb r1, [r4, #1] - movs r0, #1 - ands r0, r1 - cmp r0, #0 - beq _080A4352 - ldrb r0, [r4, #0x1c] - bl sub_080A4948 - cmp r0, #0 - beq _080A4352 - ldr r1, _080A432C @ =gOamCmd - movs r0, #0x2c - strh r0, [r1] - movs r0, #0x48 - strh r0, [r1, #2] - movs r0, #0xd4 - lsls r0, r0, #7 - strh r0, [r1, #8] - ldr r0, _080A4340 @ =0x000001F7 - ldrb r1, [r4, #0x1c] - subs r1, #1 - bl DrawDirect - ldrb r1, [r4, #0x1c] - ldrb r0, [r4, #0x1d] - cmp r0, r1 - beq _080A4352 - strb r1, [r4, #0x1d] - ldrb r4, [r4, #0x1c] - lsls r4, r4, #4 - ldr r0, _080A4344 @ =gFigurines - adds r4, r4, r0 - ldr r0, [r4] - movs r1, #0x16 - movs r2, #9 - bl LoadPalettes - ldr r0, [r4, #4] - ldr r2, [r4, #8] - cmp r2, #0 - bge _080A434CEU - ldr r1, _080A4348EU @ =0x06014000 - bl LZ77UnCompVram - b _080A4352 - .align 2, 0 -_080A432C: .4byte gOamCmd -_080A4330: .4byte 0x000001FB -_080A4334: .4byte gSave -_080A4338: .4byte gChooseFileState -_080A433C: .4byte gMain -_080A4340: .4byte 0x000001F7 -_080A4344: .4byte gFigurines -_080A4348EU: .4byte 0x06014000 -_080A434CEU: - ldr r1, _080A4358EU @ =0x06014000 - bl LoadResourceAsync -_080A4352: - pop {r3} - mov r8, r3 - pop {r4, r5, r6, r7, pc} - .align 2, 0 -_080A4358EU: .4byte 0x06014000 -.else - push {r4, r5, r6, r7, lr} - mov r7, r8 - push {r7} - ldr r5, _080A4B1C @ =gOamCmd - movs r0, #0 - strh r0, [r5, #4] - strh r0, [r5, #6] - movs r0, #0x80 - lsls r0, r0, #4 - strh r0, [r5, #8] - movs r0, #0x9c - strh r0, [r5] - movs r0, #0x48 - strh r0, [r5, #2] - movs r7, #0xfe - lsls r7, r7, #1 - adds r0, r7, #0 - movs r1, #0 - bl DrawDirect - ldr r0, _080A4B20 @ =gSave - ldrb r0, [r0, #6] - movs r2, #0x88 - cmp r0, #0 - bne _080A49AC - movs r2, #0x82 -_080A49AC: - ldr r3, _080A4B24 @ =gMenu - ldrb r1, [r3, #1] - movs r0, #2 - ands r0, r1 - cmp r0, #0 - beq _080A4A10 - ldrb r4, [r3, #0x1c] - cmp r2, r4 - blt _080A4A10 - movs r6, #0xe8 - strh r6, [r5] - movs r0, #0xa0 - lsls r0, r0, #7 - adds r1, r2, #0 - bl __divsi3 - subs r1, r4, #1 - muls r0, r1, r0 - cmp r0, #0 - bge _080A49D6 - adds r0, #0xff -_080A49D6: - asrs r0, r0, #8 - adds r0, #0x20 - strh r0, [r5, #2] - adds r0, r7, #0 - movs r1, #1 - bl DrawDirect - ldr r0, _080A4B28 @ =gMain - ldrh r1, [r0, #0xc] - movs r0, #0x10 - ands r0, r1 - movs r4, #2 - cmp r0, #0 - beq _080A49F4 - movs r4, #4 -_080A49F4: - strh r6, [r5] - movs r0, #0x1a - strh r0, [r5, #2] - adds r0, r7, #0 - adds r1, r4, #0 - bl DrawDirect - strh r6, [r5] - movs r0, #0x76 - strh r0, [r5, #2] - adds r1, r4, #1 - adds r0, r7, #0 - bl DrawDirect -_080A4A10: - ldr r0, _080A4B28 @ =gMain - ldrh r1, [r0, #0xc] - movs r2, #0x10 - adds r0, r2, #0 - ands r0, r1 - cmp r0, #0 - beq _080A4A6A - ldr r5, _080A4B24 @ =gMenu - ldrb r1, [r5, #1] - adds r0, r2, #0 - ands r0, r1 - cmp r0, #0 - beq _080A4A6A - ldrb r0, [r5, #0x1e] - cmp r0, #0 - beq _080A4A6A - ldr r4, _080A4B1C @ =gOamCmd - strh r2, [r4, #2] - movs r0, #0x1f - ldrsb r0, [r5, r0] - cmp r0, #0 - ble _080A4A4E - movs r0, #6 - strh r0, [r4] - movs r0, #0x9c - strh r0, [r4, #2] - movs r0, #0xfe - lsls r0, r0, #1 - movs r1, #6 - bl DrawDirect -_080A4A4E: - ldrb r1, [r5, #0x1e] - movs r0, #0x1f - ldrsb r0, [r5, r0] - cmp r1, r0 - ble _080A4A6A - movs r0, #0xea - strh r0, [r4] - movs r0, #0x9c - strh r0, [r4, #2] - movs r0, #0xfe - lsls r0, r0, #1 - movs r1, #7 - bl DrawDirect -_080A4A6A: - movs r0, #0x80 - lsls r0, r0, #0x12 - ldrb r0, [r0, #7] - cmp r0, #0 - beq _080A4ABE - ldr r2, _080A4B24 @ =gMenu - ldrb r1, [r2, #1] - movs r0, #4 - ands r0, r1 - cmp r0, #0 - beq _080A4ABE - ldr r1, _080A4B1C @ =gOamCmd - movs r0, #0x10 - strh r0, [r1, #2] - ldrb r4, [r2, #0x1c] - movs r6, #2 - adds r7, r1, #0 - movs r5, #0x6b -_080A4A8E: - strh r5, [r7] - adds r0, r4, #0 - movs r1, #0xa - bl __modsi3 - lsls r0, r0, #1 - movs r2, #0x9e - lsls r2, r2, #4 - adds r1, r2, #0 - orrs r0, r1 - strh r0, [r7, #8] - movs r0, #0 - movs r1, #9 - bl DrawDirect - adds r0, r4, #0 - movs r1, #0xa - bl __divsi3 - adds r4, r0, #0 - subs r5, #7 - subs r6, #1 - cmp r6, #0 - bge _080A4A8E -_080A4ABE: - ldr r4, _080A4B24 @ =gMenu - ldrb r1, [r4, #1] - movs r0, #1 - ands r0, r1 - cmp r0, #0 - beq _080A4B3A - ldrb r0, [r4, #0x1c] - bl sub_080A4948 - cmp r0, #0 - beq _080A4B3A - ldr r1, _080A4B1C @ =gOamCmd - movs r0, #0x2c - strh r0, [r1] - movs r0, #0x48 - strh r0, [r1, #2] - movs r0, #0xd4 - lsls r0, r0, #7 - strh r0, [r1, #8] - movs r0, #0xfc - lsls r0, r0, #1 - ldrb r1, [r4, #0x1c] - subs r1, #1 - bl DrawDirect - ldrb r1, [r4, #0x1c] - ldrb r0, [r4, #0x1d] - cmp r0, r1 - beq _080A4B3A - strb r1, [r4, #0x1d] - ldrb r4, [r4, #0x1c] - lsls r4, r4, #4 - ldr r0, _080A4B2C @ =gFigurines - adds r4, r4, r0 - ldr r0, [r4] - movs r1, #0x16 - movs r2, #9 - bl LoadPalettes - ldr r0, [r4, #4] - ldr r2, [r4, #8] - cmp r2, #0 - bge _080A4B34 - ldr r1, _080A4B30 @ =0x06014000 - bl LZ77UnCompVram - b _080A4B3A - .align 2, 0 -_080A4B1C: .4byte gOamCmd -_080A4B20: .4byte gSave -_080A4B24: .4byte gMenu -_080A4B28: .4byte gMain -_080A4B2C: .4byte gFigurines -_080A4B30: .4byte 0x06014000 -_080A4B34: - ldr r1, _080A4B40 @ =0x06014000 - bl LoadResourceAsync -_080A4B3A: - pop {r3} - mov r8, r3 - pop {r4, r5, r6, r7, pc} - .align 2, 0 -_080A4B40: .4byte 0x06014000 -.endif -.syntax divided diff --git a/asm/subtask.s b/asm/subtask.s deleted file mode 100644 index 01cc01e2..00000000 --- a/asm/subtask.s +++ /dev/null @@ -1,1110 +0,0 @@ - .include "asm/macros.inc" - - .include "constants/constants.inc" - - .syntax unified - - .text - - thumb_func_start Subtask_PauseMenu -Subtask_PauseMenu: @ 0x080A4EA0 - push {r4, lr} - ldr r4, _080A4EB8 @ =gUnk_02034490 - ldrb r0, [r4, #0x11] - cmp r0, #6 - bne _080A4EBC - movs r0, #0x80 - lsls r0, r0, #1 - bl SetBgmVolume - bl Subtask_Exit - b _080A4F14 - .align 2, 0 -_080A4EB8: .4byte gUnk_02034490 -_080A4EBC: - bl FlushSprites - ldr r1, _080A4F18 @ =gUnk_08128B30 - ldrb r0, [r4, #0x11] - lsls r0, r0, #2 - adds r0, r0, r1 - ldr r0, [r0] - bl _call_via_r0 - bl sub_080A5128 - bl sub_0801C1D4 - bl DrawOAMCmd - ldrb r0, [r4, #0x11] - cmp r0, #4 - beq _080A4EF0 - ldr r0, _080A4F1C @ =gUnk_08128A38 - ldrb r1, [r4, #1] - lsls r1, r1, #3 - adds r0, #4 - adds r1, r1, r0 - ldr r0, [r1] - bl _call_via_r0 -_080A4EF0: - bl CopyOAM - movs r3, #0x16 - ldrsb r3, [r4, r3] - movs r1, #0 - cmp r3, #0 - beq _080A4F00 - ldr r1, _080A4F20 @ =0x00000E46 -_080A4F00: - ldr r2, _080A4F24 @ =gScreen - adds r0, r2, #0 - adds r0, #0x66 - strh r1, [r0] - lsls r1, r3, #8 - movs r0, #0x10 - subs r0, r0, r3 - orrs r1, r0 - adds r2, #0x68 - strh r1, [r2] -_080A4F14: - pop {r4, pc} - .align 2, 0 -_080A4F18: .4byte gUnk_08128B30 -_080A4F1C: .4byte gUnk_08128A38 -_080A4F20: .4byte 0x00000E46 -_080A4F24: .4byte gScreen - - thumb_func_start sub_080A4F28 -sub_080A4F28: @ 0x080A4F28 - push {r4, lr} - bl sub_0801E8D4 - bl sub_080A4D34 - movs r1, #4 - ldr r3, _080A4F90 @ =gUnk_02034492 - movs r2, #0 -_080A4F38: - adds r0, r1, r3 - strb r2, [r0] - adds r1, #1 - cmp r1, #0xd - ble _080A4F38 - ldr r1, _080A4F94 @ =gRoomTransition - ldrh r0, [r1, #0x20] - ldrh r1, [r1, #0x22] - bl sub_080A6A80 - ldr r4, _080A4F98 @ =gUnk_02034490 - ldrb r0, [r0, #4] - strb r0, [r4, #6] - bl sub_0801DB94 - strb r0, [r4, #7] - movs r0, #0x10 - bl IsItemEquipped - movs r1, #0xf - cmp r0, #2 - beq _080A4F66 - movs r1, #0x10 -_080A4F66: - strb r1, [r4, #0x15] - ldr r1, _080A4F9C @ =gUnk_08128A38 - ldrb r0, [r4, #1] - lsls r0, r0, #3 - adds r0, r0, r1 - ldrb r0, [r0, #1] - bl sub_080A50A0 - strb r0, [r4, #1] - strb r0, [r4, #0x14] - bl sub_080A4DB8 - movs r0, #4 - movs r1, #0x20 - bl SetFade - movs r0, #1 - bl sub_080A4E90 - pop {r4, pc} - .align 2, 0 -_080A4F90: .4byte gUnk_02034492 -_080A4F94: .4byte gRoomTransition -_080A4F98: .4byte gUnk_02034490 -_080A4F9C: .4byte gUnk_08128A38 - - thumb_func_start sub_080A4FA0 -sub_080A4FA0: @ 0x080A4FA0 - push {lr} - ldr r0, _080A4FB4 @ =gFadeControl - ldrb r0, [r0] - cmp r0, #0 - bne _080A4FB0 - movs r0, #2 - bl sub_080A4E90 -_080A4FB0: - pop {pc} - .align 2, 0 -_080A4FB4: .4byte gFadeControl - - thumb_func_start sub_080A4FB8 -sub_080A4FB8: @ 0x080A4FB8 - push {r4, r5, lr} - bl sub_080A51F4 - cmp r0, #0 - beq _080A5052 - ldr r0, _080A4FE4 @ =gMenu - ldr r1, [r0, #0xc] - adds r2, r0, #0 - cmp r1, #0 - beq _080A5052 - movs r4, #1 - rsbs r4, r4, #0 - ldr r0, _080A4FE8 @ =gInput - ldrh r1, [r0, #2] - cmp r1, #8 - beq _080A4FFE - cmp r1, #8 - bgt _080A4FEC - cmp r1, #2 - beq _080A500A - b _080A500C - .align 2, 0 -_080A4FE4: .4byte gMenu -_080A4FE8: .4byte gInput -_080A4FEC: - movs r0, #0x80 - lsls r0, r0, #1 - cmp r1, r0 - beq _080A5006 - movs r0, #0x80 - lsls r0, r0, #2 - cmp r1, r0 - beq _080A5002 - b _080A500C -_080A4FFE: - movs r4, #0 - b _080A5010 -_080A5002: - movs r4, #1 - b _080A5010 -_080A5006: - movs r4, #2 - b _080A5010 -_080A500A: - movs r4, #3 -_080A500C: - cmp r4, #0 - blt _080A5052 -_080A5010: - ldr r0, [r2, #0xc] - adds r0, r0, r4 - ldrb r5, [r0] - cmp r5, #6 - bgt _080A5024 - cmp r5, #4 - bge _080A5028 - cmp r5, #0 - beq _080A5052 - b _080A5042 -_080A5024: - cmp r5, #0xf - bne _080A5042 -_080A5028: - movs r0, #0x47 - bl GetInventoryValue - cmp r0, #0 - bne _080A5042 - movs r1, #1 - cmp r4, #1 - bne _080A503A - movs r1, #2 -_080A503A: - ldr r0, _080A5078 @ =gMenu - ldr r0, [r0, #0xc] - adds r0, r0, r1 - ldrb r5, [r0] -_080A5042: - ldr r0, _080A507C @ =gUnk_02034490 - movs r4, #0 - strb r5, [r0, #0x14] - movs r0, #0x65 - bl SoundReq - ldr r0, _080A5078 @ =gMenu - str r4, [r0, #0xc] -_080A5052: - ldr r4, _080A507C @ =gUnk_02034490 - movs r0, #0x14 - ldrsb r0, [r4, r0] - bl sub_080A50A0 - adds r5, r0, #0 - ldrb r0, [r4, #1] - cmp r0, r5 - beq _080A5096 - strb r5, [r4, #0x14] - bl sub_080A51D4 - cmp r5, #0xe - bne _080A5080 - movs r0, #6 - bl sub_080A4E90 - b _080A5096 - .align 2, 0 -_080A5078: .4byte gMenu -_080A507C: .4byte gUnk_02034490 -_080A5080: - movs r0, #3 - bl sub_080A4E90 - ldr r0, _080A5098 @ =gBG0Buffer - movs r1, #0x80 - lsls r1, r1, #4 - bl MemClear - ldr r1, _080A509C @ =gScreen - movs r0, #1 - strh r0, [r1, #0xe] -_080A5096: - pop {r4, r5, pc} - .align 2, 0 -_080A5098: .4byte gBG0Buffer -_080A509C: .4byte gScreen - - thumb_func_start sub_080A50A0 -sub_080A50A0: @ 0x080A50A0 - push {lr} - adds r1, r0, #0 - cmp r1, #0xf - bne _080A50B4 - bl AreaHasMap - movs r1, #4 - cmp r0, #0 - beq _080A50B4 - movs r1, #5 -_080A50B4: - adds r0, r1, #0 - pop {pc} - - thumb_func_start sub_080A50B8 -sub_080A50B8: @ 0x080A50B8 - push {r4, lr} - ldr r4, _080A50DC @ =gUnk_02034490 - movs r0, #0x16 - ldrsb r0, [r4, r0] - adds r0, #2 - cmp r0, #0x10 - ble _080A50D8 - ldr r2, _080A50E0 @ =gScreen - ldrh r1, [r2] - ldr r0, _080A50E4 @ =0x0000F8FF - ands r0, r1 - strh r0, [r2] - movs r0, #4 - bl sub_080A4E90 - movs r0, #0x10 -_080A50D8: - strb r0, [r4, #0x16] - pop {r4, pc} - .align 2, 0 -_080A50DC: .4byte gUnk_02034490 -_080A50E0: .4byte gScreen -_080A50E4: .4byte 0x0000F8FF - - thumb_func_start sub_080A50E8 -sub_080A50E8: @ 0x080A50E8 - push {lr} - ldr r1, _080A5104 @ =gUnk_02034490 - movs r0, #0x10 - strb r0, [r1, #0x16] - movs r0, #0x14 - ldrsb r0, [r1, r0] - strb r0, [r1, #1] - bl sub_080A4DB8 - movs r0, #5 - bl sub_080A4E90 - pop {pc} - .align 2, 0 -_080A5104: .4byte gUnk_02034490 - - thumb_func_start sub_080A5108 -sub_080A5108: @ 0x080A5108 - push {r4, lr} - ldr r4, _080A5124 @ =gUnk_02034490 - movs r0, #0x16 - ldrsb r0, [r4, r0] - subs r0, #2 - cmp r0, #0 - bge _080A511E - movs r0, #2 - bl sub_080A4E90 - movs r0, #0 -_080A511E: - strb r0, [r4, #0x16] - pop {r4, pc} - .align 2, 0 -_080A5124: .4byte gUnk_02034490 - - thumb_func_start sub_080A5128 -sub_080A5128: @ 0x080A5128 - push {r4, r5, lr} - sub sp, #0x18 - ldr r0, _080A5140 @ =gUnk_02034490 - ldrb r1, [r0, #1] - adds r2, r0, #0 - cmp r1, #7 - blt _080A515A - cmp r1, #8 - ble _080A5144 - cmp r1, #0xb - bgt _080A515A - b _080A51C6 - .align 2, 0 -_080A5140: .4byte gUnk_02034490 -_080A5144: - movs r0, #0x60 - str r0, [sp] - movs r0, #0x18 - str r0, [sp, #4] - subs r0, #0x28 - str r0, [sp, #8] - movs r1, #0x48 - str r1, [sp, #0xc] - movs r0, #0x80 - lsls r0, r0, #1 - b _080A5182 -_080A515A: - movs r0, #0x40 - str r0, [sp] - movs r0, #0x16 - ldrsb r0, [r2, r0] - lsls r0, r0, #1 - movs r4, #0x10 - subs r0, r4, r0 - str r0, [sp, #4] - movs r0, #0x16 - ldrsb r0, [r2, r0] - movs r1, #3 - bl __divsi3 - lsls r0, r0, #0x18 - asrs r0, r0, #0x18 - subs r4, r4, r0 - str r4, [sp, #8] - movs r1, #0x48 - str r1, [sp, #0xc] - adds r0, #0xe0 -_080A5182: - str r0, [sp, #0x10] - str r1, [sp, #0x14] - ldr r4, _080A51CC @ =gOamCmd - movs r0, #0 - strh r0, [r4, #4] - strh r0, [r4, #6] - movs r0, #0x80 - lsls r0, r0, #3 - strh r0, [r4, #8] - ldr r0, [sp] - strh r0, [r4] - ldr r0, [sp, #4] - strh r0, [r4, #2] -.ifdef EU - movs r5, #0xfd - lsls r5, r5, #0x1 -.else - ldr r5, _080A51D0 @ =0x000001FB -.endif - adds r0, r5, #0 - movs r1, #0 - bl DrawDirect - ldr r0, [sp, #8] - strh r0, [r4] - ldr r0, [sp, #0xc] - strh r0, [r4, #2] - adds r0, r5, #0 - movs r1, #1 - bl DrawDirect - ldr r0, [sp, #0x10] - strh r0, [r4] - ldr r0, [sp, #0x14] - strh r0, [r4, #2] - adds r0, r5, #0 - movs r1, #2 - bl DrawDirect -_080A51C6: - add sp, #0x18 - pop {r4, r5, pc} - .align 2, 0 -_080A51CC: .4byte gOamCmd -.ifndef EU -_080A51D0: .4byte 0x000001FB -.endif - - thumb_func_start sub_080A51D4 -sub_080A51D4: @ 0x080A51D4 - push {lr} - ldr r0, _080A51EC @ =gUnk_02034490 - ldrb r1, [r0, #1] - cmp r1, #0xd - bhi _080A51E8 - adds r0, #2 - adds r0, r1, r0 - ldr r1, _080A51F0 @ =gMenu - ldrb r1, [r1, #3] - strb r1, [r0] -_080A51E8: - pop {pc} - .align 2, 0 -_080A51EC: .4byte gUnk_02034490 -_080A51F0: .4byte gMenu - - thumb_func_start sub_080A51F4 -sub_080A51F4: @ 0x080A51F4 - push {lr} - movs r1, #1 - ldr r0, _080A5210 @ =gFadeControl - ldrb r0, [r0] - cmp r0, #0 - beq _080A5202 - movs r1, #0 -_080A5202: - ldr r0, _080A5214 @ =gUnk_02034490 - ldrb r0, [r0, #0x11] - cmp r0, #2 - beq _080A520C - movs r1, #0 -_080A520C: - adds r0, r1, #0 - pop {pc} - .align 2, 0 -_080A5210: .4byte gFadeControl -_080A5214: .4byte gUnk_02034490 - - thumb_func_start sub_080A5218 -sub_080A5218: @ 0x080A5218 - push {lr} - ldr r1, _080A5230 @ =gUnk_08128B48 - ldr r0, _080A5234 @ =gMenu - ldrb r0, [r0, #5] - lsls r0, r0, #2 - adds r0, r0, r1 - ldr r0, [r0] - bl _call_via_r0 - bl sub_080A5384 - pop {pc} - .align 2, 0 -_080A5230: .4byte gUnk_08128B48 -_080A5234: .4byte gMenu - - thumb_func_start sub_080A5238 -sub_080A5238: @ 0x080A5238 - push {r4, r5, lr} - ldr r4, _080A528C @ =gMenu - movs r0, #0 - str r0, [r4, #0xc] - ldr r0, _080A5290 @ =gUnk_08128B50 - bl sub_080A70AC - movs r5, #1 - adds r4, #0x10 -_080A524A: - adds r0, r5, #0 - bl GetInventoryValue - cmp r0, #1 - bne _080A527E - ldr r1, _080A5294 @ =gUnk_080FD5B4 - lsls r0, r5, #3 - adds r0, r0, r1 - ldrb r1, [r0] - cmp r1, #0x11 - bhi _080A527E - cmp r5, #0x10 - bhi _080A526C - cmp r5, #0xf - blo _080A526C - ldr r0, _080A5298 @ =gUnk_02034490 - ldrb r5, [r0, #0x15] -_080A526C: - adds r0, r1, r4 - strb r5, [r0] - lsls r1, r1, #3 - movs r0, #0xd8 - lsls r0, r0, #2 - adds r1, r1, r0 - adds r0, r5, #0 - bl sub_080A5F48 -_080A527E: - adds r5, #1 - cmp r5, #0x1f - bls _080A524A - movs r0, #1 - bl sub_080A7114 - pop {r4, r5, pc} - .align 2, 0 -_080A528C: .4byte gMenu -_080A5290: .4byte gUnk_08128B50 -_080A5294: .4byte gUnk_080FD5B4 -_080A5298: .4byte gUnk_02034490 - - thumb_func_start sub_080A529C -sub_080A529C: @ 0x080A529C - push {r4, r5, lr} - bl sub_080A51F4 - cmp r0, #0 - beq _080A5380 - ldr r1, _080A52D0 @ =gMenu - ldr r0, _080A52D4 @ =gUnk_08128BF4 - str r0, [r1, #0xc] - ldrb r4, [r1, #3] - lsls r1, r4, #3 - ldr r0, _080A52D8 @ =gItemMenuTable - adds r1, r1, r0 - ldr r0, _080A52DC @ =gInput - ldrh r2, [r0, #2] - adds r3, r0, #0 - cmp r2, #1 - beq _080A52E0 - cmp r2, #2 - beq _080A52EC - ldrh r0, [r3, #4] - cmp r0, #0x20 - beq _080A5330 - cmp r0, #0x20 - bgt _080A531E - b _080A5318 - .align 2, 0 -_080A52D0: .4byte gMenu -_080A52D4: .4byte gUnk_08128BF4 -_080A52D8: .4byte gItemMenuTable -_080A52DC: .4byte gInput -_080A52E0: - cmp r4, #0x10 - bne _080A52EC -.ifdef DEMO_USA - movs r0, #0x6d - bl SoundReq - b _080A5336 -.else -.ifdef DEMO_JP @ TODO same as DEMO_USA - movs r0, #0x6d - bl SoundReq - b _080A5336 -.else - movs r0, #0xb - bl sub_080A4E84 - b _080A530A -.endif -.endif -_080A52EC: - ldr r0, _080A5314 @ =gMenu - adds r0, #0x10 - adds r2, r4, r0 - ldrb r0, [r2] - cmp r0, #0 - beq _080A5336 - ldrh r0, [r3, #2] - movs r1, #1 - eors r0, r1 - rsbs r1, r0, #0 - orrs r1, r0 - lsrs r1, r1, #0x1f - ldrb r0, [r2] - bl ForceEquipItem -_080A530A: - movs r0, #0x6a - bl SoundReq - b _080A5336 - .align 2, 0 -_080A5314: .4byte gMenu -_080A5318: - cmp r0, #0x10 - beq _080A5334 - b _080A5336 -_080A531E: - cmp r0, #0x40 - beq _080A5328 - cmp r0, #0x80 - beq _080A532C - b _080A5336 -_080A5328: - ldrb r4, [r1] - b _080A5336 -_080A532C: - ldrb r4, [r1, #1] - b _080A5336 -_080A5330: - ldrb r4, [r1, #2] - b _080A5336 -_080A5334: - ldrb r4, [r1, #3] -_080A5336: - ldr r5, _080A535C @ =gMenu - ldrb r0, [r5, #3] - cmp r0, r4 - beq _080A5346 - strb r4, [r5, #3] - movs r0, #0x69 - bl SoundReq -_080A5346: - adds r0, r5, #0 - adds r0, #0x10 - adds r0, r4, r0 - ldrb r1, [r0] - cmp r4, #0xc - blo _080A5376 - cmp r4, #0xf - bls _080A5360 - cmp r4, #0x10 - beq _080A5374 - b _080A5376 - .align 2, 0 -_080A535C: .4byte gMenu -_080A5360: - cmp r1, #0 - beq _080A5376 - ldr r0, _080A5370 @ =gSave - adds r0, r0, r1 - adds r0, #0x9a - ldrb r1, [r0] - b _080A5376 - .align 2, 0 -_080A5370: .4byte gSave -_080A5374: - movs r1, #0x73 -_080A5376: - movs r0, #0x80 - lsls r0, r0, #3 - adds r0, r1, r0 - bl sub_080A6F6C -_080A5380: - pop {r4, r5, pc} - .align 2, 0 - - thumb_func_start sub_080A5384 -sub_080A5384: @ 0x080A5384 -.ifdef EU - push {r4, r5, r6, r7, lr} - mov r7, sl - mov r6, sb - mov r5, r8 - push {r5, r6, r7} - ldr r0, _080A4C14EU @ =gOamCmd - movs r2, #0 - movs r1, #0x80 - lsls r1, r1, #3 - strh r1, [r0, #4] - strh r2, [r0, #6] - strh r2, [r0, #8] - movs r5, #0 - ldr r4, _080A4C18 @ =gSave - movs r0, #0xb6 - adds r0, r0, r4 - mov sl, r0 - movs r1, #0xac - adds r1, r1, r4 - mov sb, r1 - movs r2, #0xad - adds r2, r2, r4 - mov r8, r2 - movs r6, #0 -_080A4BC8: - ldr r0, _080A4C1C @ =gChooseFileState - adds r0, #0x10 - adds r2, r5, r0 - ldrb r0, [r2] - cmp r0, #0 - beq _080A4C68 - ldr r0, _080A4C20 @ =gItemMenuTable - adds r1, r6, r0 - ldrb r0, [r1, #6] - ldr r3, _080A4C14EU @ =gOamCmd - strh r0, [r3] - ldrb r0, [r1, #7] - strh r0, [r3, #2] - ldrb r3, [r2] - cmp r3, #0x1f - bhi _080A4BF4 - cmp r3, #0x1c - blo _080A4BF4 - adds r0, r3, #0 - subs r0, #0x1c - add r0, sl - ldrb r3, [r0] -_080A4BF4: - movs r2, #3 - cmp r3, #7 - blo _080A4C42 - cmp r3, #8 - bhi _080A4C28 - ldr r0, _080A4C24 @ =gBombBagSizes - adds r1, r4, #0 - adds r1, #0xae - ldrb r1, [r1] - adds r1, r1, r0 - ldrb r0, [r1] - mov r7, sb - ldrb r7, [r7] - cmp r0, r7 - bhi _080A4C42 - b _080A4C40 - .align 2, 0 -_080A4C14EU: .4byte gOamCmd -_080A4C18: .4byte gSave -_080A4C1C: .4byte gChooseFileState -_080A4C20: .4byte gItemMenuTable -_080A4C24: .4byte gBombBagSizes -_080A4C28: - cmp r3, #0xa - bhi _080A4C42 - ldr r0, _080A4D40 @ =gQuiverSizes - adds r1, r4, #0 - adds r1, #0xaf - ldrb r1, [r1] - adds r1, r1, r0 - ldrb r0, [r1] - mov r1, r8 - ldrb r1, [r1] - cmp r0, r1 - bhi _080A4C42 -_080A4C40: - movs r2, #4 -_080A4C42: - lsls r2, r2, #0xc - movs r7, #0xd8 - lsls r7, r7, #2 - adds r0, r6, r7 - movs r7, #0x80 - lsls r7, r7, #4 - adds r1, r7, #0 - orrs r0, r1 - orrs r2, r0 - ldr r0, _080A4D44 @ =gOamCmd - strh r2, [r0, #8] - ldr r1, _080A4D48 @ =gSpriteAnimations_322 - lsls r0, r3, #2 - adds r0, r0, r1 - ldr r0, [r0] - ldrb r1, [r0] - ldr r0, _080A4D4C @ =0x00000141 - bl DrawDirect -_080A4C68: - adds r6, #8 - adds r5, #1 - cmp r5, #0x10 - bls _080A4BC8 - ldr r0, _080A4D44 @ =gOamCmd - movs r1, #0x80 - lsls r1, r1, #4 - strh r1, [r0, #8] - ldr r1, _080A4D50EU @ =gChooseFileState - ldrb r1, [r1, #3] - mov sb, r0 - cmp r1, #0x10 - bne _080A4C8E - movs r0, #0x80 - lsls r0, r0, #0x12 - ldrb r0, [r0, #7] - cmp r0, #0 - beq _080A4C8E - movs r1, #0x11 -_080A4C8E: - lsls r0, r1, #3 - ldr r1, _080A4D54EU @ =gItemMenuTable - mov r8, r1 - adds r1, r0, r1 - mov r4, sb - ldrb r0, [r1, #6] - strh r0, [r4] - ldrb r0, [r1, #7] - strh r0, [r4, #2] - ldrb r2, [r1, #4] - ldr r0, _080A4D58 @ =gMain - ldrh r1, [r0, #0xc] - movs r0, #0x10 - ands r0, r1 - adds r1, r2, #4 - cmp r0, #0 - beq _080A4CB2EU - adds r1, r2, #3 -_080A4CB2EU: - movs r6, #0xfd - lsls r6, r6, #1 - adds r0, r6, #0 - bl DrawDirect - movs r0, #0x80 - lsls r0, r0, #0x12 - ldrb r0, [r0, #7] - movs r1, #0x11 - cmp r0, #0 - beq _080A4CCA - movs r1, #0x10 -_080A4CCA: - lsls r0, r1, #3 - mov r2, r8 - adds r1, r0, r2 - ldrb r0, [r1, #6] - strh r0, [r4] - ldrb r0, [r1, #7] - strh r0, [r4, #2] - movs r0, #0x80 - lsls r0, r0, #4 - strh r0, [r4, #8] - adds r0, r6, #0 - movs r1, #0x22 - bl DrawDirect - ldr r7, _080A4D5C @ =gSave - adds r0, r7, #0 - adds r0, #0xb4 - ldrb r0, [r0] - bl sub_080A554C - adds r5, r0, #0 - cmp r5, #0x10 - bhi _080A4D0E - lsls r0, r5, #3 - mov r3, r8 - adds r1, r0, r3 - ldrb r0, [r1, #6] - strh r0, [r4] - ldrb r0, [r1, #7] - strh r0, [r4, #2] - adds r0, r6, #0 - movs r1, #3 - bl DrawDirect -_080A4D0E: - adds r0, r7, #0 - adds r0, #0xb5 - ldrb r0, [r0] - bl sub_080A554C - adds r5, r0, #0 - cmp r5, #0x10 - bhi _080A4D36 - lsls r0, r5, #3 - mov r7, r8 - adds r1, r0, r7 - ldrb r0, [r1, #6] - mov r2, sb - strh r0, [r2] - ldrb r0, [r1, #7] - strh r0, [r2, #2] - adds r0, r6, #0 - movs r1, #3 - bl DrawDirect -_080A4D36: - pop {r3, r4, r5} - mov r8, r3 - mov sb, r4 - mov sl, r5 - pop {r4, r5, r6, r7, pc} - .align 2, 0 -_080A4D40: .4byte gQuiverSizes -_080A4D44: .4byte gOamCmd -_080A4D48: .4byte gSpriteAnimations_322 -_080A4D4C: .4byte 0x00000141 -_080A4D50EU: .4byte gChooseFileState -_080A4D54EU: .4byte gItemMenuTable -_080A4D58: .4byte gMain -_080A4D5C: .4byte gSave -.else - push {r4, r5, r6, r7, lr} - mov r7, sl - mov r6, sb - mov r5, r8 - push {r5, r6, r7} - ldr r0, _080A5400 @ =gOamCmd - movs r2, #0 - movs r1, #0x80 - lsls r1, r1, #3 - strh r1, [r0, #4] - strh r2, [r0, #6] - strh r2, [r0, #8] - movs r5, #0 - ldr r4, _080A5404 @ =gSave - movs r0, #0xb6 - adds r0, r0, r4 - mov sl, r0 - movs r1, #0xac - adds r1, r1, r4 - mov sb, r1 - movs r2, #0xad - adds r2, r2, r4 - mov r8, r2 - movs r6, #0 -_080A53B4: - ldr r0, _080A5408 @ =gMenu - adds r0, #0x10 - adds r2, r5, r0 - ldrb r0, [r2] - cmp r0, #0 - beq _080A5456 - ldr r0, _080A540C @ =gItemMenuTable - adds r1, r6, r0 - ldrb r0, [r1, #6] - ldr r3, _080A5400 @ =gOamCmd - strh r0, [r3] - ldrb r0, [r1, #7] - strh r0, [r3, #2] - ldrb r3, [r2] - cmp r3, #0x1f - bhi _080A53E0 - cmp r3, #0x1c - blo _080A53E0 - adds r0, r3, #0 - subs r0, #0x1c - add r0, sl - ldrb r3, [r0] -_080A53E0: - movs r2, #3 - cmp r3, #7 - blo _080A542E - cmp r3, #8 - bhi _080A5414 - ldr r0, _080A5410 @ =gBombBagSizes - adds r1, r4, #0 - adds r1, #0xae - ldrb r1, [r1] - adds r1, r1, r0 - ldrb r0, [r1] - mov r7, sb - ldrb r7, [r7] - cmp r0, r7 - bhi _080A542E - b _080A542C - .align 2, 0 -_080A5400: .4byte gOamCmd -_080A5404: .4byte gSave -_080A5408: .4byte gMenu -_080A540C: .4byte gItemMenuTable -_080A5410: .4byte gBombBagSizes -_080A5414: - cmp r3, #0xa - bhi _080A542E - ldr r0, _080A552C @ =gQuiverSizes - adds r1, r4, #0 - adds r1, #0xaf - ldrb r1, [r1] - adds r1, r1, r0 - ldrb r0, [r1] - mov r1, r8 - ldrb r1, [r1] - cmp r0, r1 - bhi _080A542E -_080A542C: - movs r2, #4 -_080A542E: - lsls r2, r2, #0xc - movs r7, #0xd8 - lsls r7, r7, #2 - adds r0, r6, r7 - movs r7, #0x80 - lsls r7, r7, #4 - adds r1, r7, #0 - orrs r0, r1 - orrs r2, r0 - ldr r0, _080A5530 @ =gOamCmd - strh r2, [r0, #8] - ldr r1, _080A5534 @ =gSpriteAnimations_322 - lsls r0, r3, #2 - adds r0, r0, r1 - ldr r0, [r0] - ldrb r1, [r0] - movs r0, #0xa1 - lsls r0, r0, #1 - bl DrawDirect -_080A5456: - adds r6, #8 - adds r5, #1 - cmp r5, #0x10 - bls _080A53B4 - ldr r0, _080A5530 @ =gOamCmd - movs r1, #0x80 - lsls r1, r1, #4 - strh r1, [r0, #8] - ldr r1, _080A5538 @ =gMenu - ldrb r1, [r1, #3] - mov sb, r0 - cmp r1, #0x10 - bne _080A547C - movs r0, #0x80 - lsls r0, r0, #0x12 - ldrb r0, [r0, #7] - cmp r0, #0 - beq _080A547C - movs r1, #0x11 -_080A547C: - lsls r0, r1, #3 - ldr r1, _080A553C @ =gItemMenuTable - mov r8, r1 - adds r1, r0, r1 - mov r4, sb - ldrb r0, [r1, #6] - strh r0, [r4] - ldrb r0, [r1, #7] - strh r0, [r4, #2] - ldrb r2, [r1, #4] - ldr r0, _080A5540 @ =gMain - ldrh r1, [r0, #0xc] - movs r0, #0x10 - ands r0, r1 - adds r1, r2, #4 - cmp r0, #0 - beq _080A54A0 - adds r1, r2, #3 -_080A54A0: - ldr r6, _080A5544 @ =0x000001FB - adds r0, r6, #0 - bl DrawDirect - movs r0, #0x80 - lsls r0, r0, #0x12 - ldrb r0, [r0, #7] - movs r1, #0x11 - cmp r0, #0 - beq _080A54B6 - movs r1, #0x10 -_080A54B6: - lsls r0, r1, #3 - mov r2, r8 - adds r1, r0, r2 - ldrb r0, [r1, #6] - strh r0, [r4] - ldrb r0, [r1, #7] - strh r0, [r4, #2] - movs r0, #0x80 - lsls r0, r0, #4 - strh r0, [r4, #8] - adds r0, r6, #0 - movs r1, #0x22 - bl DrawDirect - ldr r7, _080A5548 @ =gSave - adds r0, r7, #0 - adds r0, #0xb4 - ldrb r0, [r0] - bl sub_080A554C - adds r5, r0, #0 - cmp r5, #0x10 - bhi _080A54FA - lsls r0, r5, #3 - mov r3, r8 - adds r1, r0, r3 - ldrb r0, [r1, #6] - strh r0, [r4] - ldrb r0, [r1, #7] - strh r0, [r4, #2] - adds r0, r6, #0 - movs r1, #3 - bl DrawDirect -_080A54FA: - adds r0, r7, #0 - adds r0, #0xb5 - ldrb r0, [r0] - bl sub_080A554C - adds r5, r0, #0 - cmp r5, #0x10 - bhi _080A5522 - lsls r0, r5, #3 - mov r7, r8 - adds r1, r0, r7 - ldrb r0, [r1, #6] - mov r2, sb - strh r0, [r2] - ldrb r0, [r1, #7] - strh r0, [r2, #2] - adds r0, r6, #0 - movs r1, #3 - bl DrawDirect -_080A5522: - pop {r3, r4, r5} - mov r8, r3 - mov sb, r4 - mov sl, r5 - pop {r4, r5, r6, r7, pc} - .align 2, 0 -_080A552C: .4byte gQuiverSizes -_080A5530: .4byte gOamCmd -_080A5534: .4byte gSpriteAnimations_322 -_080A5538: .4byte gMenu -_080A553C: .4byte gItemMenuTable -_080A5540: .4byte gMain -_080A5544: .4byte 0x000001FB -_080A5548: .4byte gSave -.endif diff --git a/include/itemMenuTable.h b/include/itemMenuTable.h new file mode 100644 index 00000000..f1d6aaa5 --- /dev/null +++ b/include/itemMenuTable.h @@ -0,0 +1,39 @@ +#ifndef SUBTASK_ITEMMENUTABLE_H +#define SUBTASK_ITEMMENUTABLE_H + +#include "global.h" + +typedef enum { + MENU_SLOT_SWORD, + MENU_SLOT_GUST_JAR, + MENU_SLOT_CANE, + MENU_SLOT_BOOMERANG, + MENU_SLOT_SHIELD, + MENU_SLOT_MOLE_MITTS, + MENU_SLOT_LANTERN, + MENU_SLOT_BOMBS, + MENU_SLOT_PEGASUS_BOOTS, + MENU_SLOT_ROCS_CAPE, + MENU_SLOT_OCARINA, + MENU_SLOT_BOW, + MENU_SLOT_BOTTLE0, + MENU_SLOT_BOTTLE1, + MENU_SLOT_BOTTLE2, + MENU_SLOT_BOTTLE3, + MENU_SLOT_SAVE_BUTTON, +} ItemMenuTableSlot; + +typedef struct { + u8 up; + u8 down; + u8 left; + u8 right; + u8 type; + u8 unk0; + u8 x; + u8 y; +} ItemMenuTableEntry; + +extern const ItemMenuTableEntry gItemMenuTable[]; + +#endif // SUBTASK_ITEMMENUTABLE_H diff --git a/include/room.h b/include/room.h index 0cd7f3c2..3ed662ba 100644 --- a/include/room.h +++ b/include/room.h @@ -124,8 +124,8 @@ typedef struct { /* 0x0e */ s16 dungeon_y; /* 0x10 */ u16 dungeon_map_x; /* 0x12 */ u16 dungeon_map_y; - /* 0x14 */ s16 overworld_map_x; - /* 0x16 */ s16 overworld_map_y; + /* 0x14 */ u16 overworld_map_x; + /* 0x16 */ u16 overworld_map_y; /* 0x18 */ u8 field_0x24[0x8]; } PlayerRoomStatus; static_assert(sizeof(PlayerRoomStatus) == 0x20); diff --git a/linker.ld b/linker.ld index f6a36769..3cbdac30 100644 --- a/linker.ld +++ b/linker.ld @@ -855,8 +855,6 @@ SECTIONS { src/sound.o(.text); asm/staffroll.o(.text); src/subtask.o(.text); - asm/subtask.o(.text); - src/subtask2.o(.text); asm/subtask2.o(.text); /* subtask.c */ src/playerItem/playerItemSword.o(.text); src/playerItemUtils.o(.text); diff --git a/src/itemMenuTable.c b/src/itemMenuTable.c index 04622c7a..13c6e8b1 100644 --- a/src/itemMenuTable.c +++ b/src/itemMenuTable.c @@ -1,53 +1,39 @@ -#include "global.h" - -typedef enum { - SWORD, - GUST_JAR, - CANE, - BOOMERANG, - SHIELD, - MOLE_MITTS, - LANTERN, - BOMBS, - PEGASUS_BOOTS, - ROCS_CAPE, - OCARINA, - BOW, - BOTTLE0, - BOTTLE1, - BOTTLE2, - BOTTLE3, - SAVE_BUTTON, -} ItemMenuTableSlot; - -typedef struct { - u8 up; - u8 down; - u8 left; - u8 right; - u8 type; - u8 unk0; - u8 x; - u8 y; -} ItemMenuTableEntry; +#include "itemMenuTable.h" const ItemMenuTableEntry gItemMenuTable[] = { - [SWORD] = { BOTTLE0, SHIELD, BOOMERANG, GUST_JAR, 0x01, 0x0c, 0x42, 0x33 }, - [GUST_JAR] = { BOTTLE1, MOLE_MITTS, SWORD, CANE, 0x01, 0x10, 0x66, 0x33 }, - [CANE] = { BOTTLE3, LANTERN, GUST_JAR, BOOMERANG, 0x01, 0x14, 0x8a, 0x33 }, - [BOOMERANG] = { SAVE_BUTTON, BOMBS, CANE, SWORD, 0x01, 0x15, 0xae, 0x33 }, - [SHIELD] = { SWORD, PEGASUS_BOOTS, BOMBS, MOLE_MITTS, 0x01, 0x16, 0x42, 0x4b }, - [MOLE_MITTS] = { GUST_JAR, ROCS_CAPE, SHIELD, LANTERN, 0x01, 0x17, 0x66, 0x4b }, - [LANTERN] = { CANE, OCARINA, MOLE_MITTS, BOMBS, 0x01, 0x00, 0x8a, 0x4b }, - [BOMBS] = { BOOMERANG, BOW, LANTERN, SHIELD, 0x01, 0x00, 0xae, 0x4b }, - [PEGASUS_BOOTS] = { SHIELD, BOTTLE0, BOW, ROCS_CAPE, 0x01, 0x00, 0x42, 0x63 }, - [ROCS_CAPE] = { MOLE_MITTS, BOTTLE1, PEGASUS_BOOTS, OCARINA, 0x01, 0x00, 0x66, 0x63 }, - [OCARINA] = { LANTERN, BOTTLE3, ROCS_CAPE, BOW, 0x01, 0x00, 0x8a, 0x63 }, - [BOW] = { BOMBS, SAVE_BUTTON, OCARINA, PEGASUS_BOOTS, 0x01, 0x00, 0xae, 0x63 }, - [BOTTLE0] = { PEGASUS_BOOTS, SWORD, SAVE_BUTTON, BOTTLE1, 0x01, 0x00, 0x42, 0x7b }, - [BOTTLE1] = { ROCS_CAPE, GUST_JAR, BOTTLE0, BOTTLE2, 0x01, 0x00, 0x5a, 0x7b }, - [BOTTLE2] = { ROCS_CAPE, GUST_JAR, BOTTLE1, BOTTLE3, 0x01, 0x00, 0x72, 0x7b }, - [BOTTLE3] = { OCARINA, CANE, BOTTLE2, SAVE_BUTTON, 0x01, 0x00, 0x8a, 0x7b }, - [SAVE_BUTTON] = { BOW, BOOMERANG, BOTTLE3, BOTTLE0, 0x03, 0x00, 0xb5, 0x75 }, - { BOW, BOOMERANG, BOTTLE3, BOTTLE0, 0x05, 0x00, 0xb5, 0x75 }, + [MENU_SLOT_SWORD] = { MENU_SLOT_BOTTLE0, MENU_SLOT_SHIELD, MENU_SLOT_BOOMERANG, MENU_SLOT_GUST_JAR, 0x01, 0x0c, + 0x42, 0x33 }, + [MENU_SLOT_GUST_JAR] = { MENU_SLOT_BOTTLE1, MENU_SLOT_MOLE_MITTS, MENU_SLOT_SWORD, MENU_SLOT_CANE, 0x01, 0x10, 0x66, + 0x33 }, + [MENU_SLOT_CANE] = { MENU_SLOT_BOTTLE3, MENU_SLOT_LANTERN, MENU_SLOT_GUST_JAR, MENU_SLOT_BOOMERANG, 0x01, 0x14, + 0x8a, 0x33 }, + [MENU_SLOT_BOOMERANG] = { MENU_SLOT_SAVE_BUTTON, MENU_SLOT_BOMBS, MENU_SLOT_CANE, MENU_SLOT_SWORD, 0x01, 0x15, 0xae, + 0x33 }, + [MENU_SLOT_SHIELD] = { MENU_SLOT_SWORD, MENU_SLOT_PEGASUS_BOOTS, MENU_SLOT_BOMBS, MENU_SLOT_MOLE_MITTS, 0x01, 0x16, + 0x42, 0x4b }, + [MENU_SLOT_MOLE_MITTS] = { MENU_SLOT_GUST_JAR, MENU_SLOT_ROCS_CAPE, MENU_SLOT_SHIELD, MENU_SLOT_LANTERN, 0x01, 0x17, + 0x66, 0x4b }, + [MENU_SLOT_LANTERN] = { MENU_SLOT_CANE, MENU_SLOT_OCARINA, MENU_SLOT_MOLE_MITTS, MENU_SLOT_BOMBS, 0x01, 0x00, 0x8a, + 0x4b }, + [MENU_SLOT_BOMBS] = { MENU_SLOT_BOOMERANG, MENU_SLOT_BOW, MENU_SLOT_LANTERN, MENU_SLOT_SHIELD, 0x01, 0x00, 0xae, + 0x4b }, + [MENU_SLOT_PEGASUS_BOOTS] = { MENU_SLOT_SHIELD, MENU_SLOT_BOTTLE0, MENU_SLOT_BOW, MENU_SLOT_ROCS_CAPE, 0x01, 0x00, + 0x42, 0x63 }, + [MENU_SLOT_ROCS_CAPE] = { MENU_SLOT_MOLE_MITTS, MENU_SLOT_BOTTLE1, MENU_SLOT_PEGASUS_BOOTS, MENU_SLOT_OCARINA, 0x01, + 0x00, 0x66, 0x63 }, + [MENU_SLOT_OCARINA] = { MENU_SLOT_LANTERN, MENU_SLOT_BOTTLE3, MENU_SLOT_ROCS_CAPE, MENU_SLOT_BOW, 0x01, 0x00, 0x8a, + 0x63 }, + [MENU_SLOT_BOW] = { MENU_SLOT_BOMBS, MENU_SLOT_SAVE_BUTTON, MENU_SLOT_OCARINA, MENU_SLOT_PEGASUS_BOOTS, 0x01, 0x00, + 0xae, 0x63 }, + [MENU_SLOT_BOTTLE0] = { MENU_SLOT_PEGASUS_BOOTS, MENU_SLOT_SWORD, MENU_SLOT_SAVE_BUTTON, MENU_SLOT_BOTTLE1, 0x01, + 0x00, 0x42, 0x7b }, + [MENU_SLOT_BOTTLE1] = { MENU_SLOT_ROCS_CAPE, MENU_SLOT_GUST_JAR, MENU_SLOT_BOTTLE0, MENU_SLOT_BOTTLE2, 0x01, 0x00, + 0x5a, 0x7b }, + [MENU_SLOT_BOTTLE2] = { MENU_SLOT_ROCS_CAPE, MENU_SLOT_GUST_JAR, MENU_SLOT_BOTTLE1, MENU_SLOT_BOTTLE3, 0x01, 0x00, + 0x72, 0x7b }, + [MENU_SLOT_BOTTLE3] = { MENU_SLOT_OCARINA, MENU_SLOT_CANE, MENU_SLOT_BOTTLE2, MENU_SLOT_SAVE_BUTTON, 0x01, 0x00, + 0x8a, 0x7b }, + [MENU_SLOT_SAVE_BUTTON] = { MENU_SLOT_BOW, MENU_SLOT_BOOMERANG, MENU_SLOT_BOTTLE3, MENU_SLOT_BOTTLE0, 0x03, 0x00, + 0xb5, 0x75 }, + { MENU_SLOT_BOW, MENU_SLOT_BOOMERANG, MENU_SLOT_BOTTLE3, MENU_SLOT_BOTTLE0, 0x05, 0x00, 0xb5, 0x75 }, }; diff --git a/src/subtask.c b/src/subtask.c index 7b9375d2..57b28c52 100644 --- a/src/subtask.c +++ b/src/subtask.c @@ -12,6 +12,8 @@ #include "main.h" #include "npc.h" #include "enemy.h" +#include "item.h" +#include "itemMenuTable.h" #include "functions.h" #include "structures.h" @@ -53,6 +55,10 @@ void sub_080A4BA0(u32, u32); void sub_0805F46C(u32, const u16**); void sub_080A4DB8(u32); void sub_08056250(void); +void sub_080A5128(void); +u32 sub_080A51F4(void); +void sub_080A51D4(void); +void sub_080A5F48(u32, u32); extern void (*const gUnk_081280C4[])(void); extern const u8 gUnk_081280EE[]; @@ -118,10 +124,14 @@ extern const struct_08128AD8 gUnk_08128AD8[]; extern const struct { u8 unk0; - u8 filler[3]; + u8 unk1; + u8 filler[2]; void (*func)(void); } gUnk_08128A38[]; +extern const KeyButtonLayout gUnk_08128B50; +extern const u8 gUnk_080FD5B4[]; + void Subtask_KinstoneMenu(void) { #if !(defined(DEMO_USA) || defined(DEMO_JP)) gRoomTransition.player_status.field_0x24[8] = 2; @@ -179,32 +189,29 @@ void sub_080A3BD0(void) { NONMATCH("asm/non_matching/subtask/sub_080A3C6C.inc", void sub_080A3C6C(void)) { s32 tmp1, tmp2, tmp3, tmp4, tmp5; u8* ptr; + Menu* menu; if (gFadeControl.active) { return; } - gMenu.column_idx = 2; - tmp2 = gMenu.unk28 * 0x10000; - tmp1 = tmp2 - gMenu.unk10.i; - tmp5 = tmp1; - if (tmp1 < 0) { - tmp5 = -tmp1; - } - if (tmp5 <= 0x1ffdu) { - gMenu.unk10.i = tmp2; + menu = &gMenu; + menu->column_idx = 2; + tmp2 = menu->unk28 * 0x10000; + tmp1 = tmp2 - menu->unk10.i; + if ((tmp1 < 0 ? -tmp1 : tmp1) <= 0x1ffdu) { + menu->unk10.i = tmp2; } else { - gMenu.column_idx = 1; + menu->column_idx = 1; tmp2 = sub_08000E44(tmp1); - tmp1 /= 0x20000; - if (tmp1 < 0) { + tmp1 = tmp1 / 0x20000; + if (tmp1 < 0) tmp1 = -tmp1; - } if (tmp1 > 5) { tmp1 = 5; } - gMenu.unk10.i += gUnk_081280EE[tmp1] * 0x666 * tmp2; + menu->unk10.i += gUnk_081280EE[tmp1] * 0x666 * tmp2; } - if (gMenu.unk29 != gMenu.unk10.i / 0x10000) { - gMenu.unk29 = gMenu.unk10.i / 0x10000; + if (menu->unk29 != menu->unk10.i / 0x10000) { + menu->unk29 = menu->unk10.i / 0x10000; SoundReq(SFX_TEXTBOX_CHOICE); } if ((gInput.newKeys & 0x20a) != 0) { @@ -212,7 +219,7 @@ NONMATCH("asm/non_matching/subtask/sub_080A3C6C.inc", void sub_080A3C6C(void)) { SoundReq(SFX_MENU_CANCEL); return; } - tmp3 = gMenu.unk28; + tmp3 = menu->unk28; switch (gInput.unk4) { case 0x20: case 0x40: @@ -240,8 +247,8 @@ NONMATCH("asm/non_matching/subtask/sub_080A3C6C.inc", void sub_080A3C6C(void)) { if (tmp3 < 0) { tmp3 = 0; } - if (gMenu.unk28 != tmp3) { - gMenu.unk28 = tmp3; + if (menu->unk28 != tmp3) { + menu->unk28 = tmp3; } } END_NONMATCH @@ -599,8 +606,9 @@ void sub_080A4468(void) { sub_0801E798(gMenu.unk2a); } -NONMATCH("asm/non_matching/subtask/sub_080A4494.inc", u32 sub_080A4494(void)) { +u32 sub_080A4494(void) { struct_02036540* psVar1; + u8* r1; u32 ret; psVar1 = sub_0805F2C8(); @@ -610,13 +618,17 @@ NONMATCH("asm/non_matching/subtask/sub_080A4494.inc", u32 sub_080A4494(void)) { psVar1->bgColor = 5; psVar1->unk1 = 0; sub_080A44E0(psVar1, gUnk_02002AC0, 0x80); +#if NON_MATCHING + ret = sub_080A44E0(psVar1, sub_08002632(gFuseInfo.ent) >> 0x20, 0xa0); +#else sub_08002632(gFuseInfo.ent); - ret = sub_080A44E0(psVar1, gUnk_02002AC0, 0xa0); + asm("" : "=r"(r1)); + ret = sub_080A44E0(psVar1, r1, 0xa0); +#endif sub_0805F300(psVar1); } return ret; } -END_NONMATCH u32 sub_080A44E0(struct_02036540* param_1, u8* param_2, u32 param_3) { u32 uVar1; @@ -664,7 +676,7 @@ extern void (*const gUnk_0812815C[])(void); extern void (*const gUnk_0812814C[])(void); void Subtask_FigurineMenu(void) { -#ifndef DEMO +#if !(defined(DEMO_USA) || defined(DEMO_JP)) FlushSprites(); if (gUnk_02032EC0.field_0x3 == 0xff) { gUnk_0812815C[gMenu.menuType](); @@ -806,7 +818,65 @@ void sub_080A4830(void) { sub_080A7114(1); } -ASM_FUNC("asm/non_matching/subtask/sub_080A4864.inc", void sub_080A4864(Entity* this)) +void sub_080A4864(void) { + int r0, r1, r2, r3, r4, r5, r6; + + if (gFadeControl.active) + return; + + r5 = gMenu.unk1f; + r4 = gMenu.unk1c; + r1 = gInput.unk4; + switch (gInput.unk4) { + case 2: + case 8: + sub_080A7114(3); + break; + case 0x200: + r4 -= 5; + break; + case 0x100: + r4 += 5; + break; + case 0x40: + r4--; + break; + case 0x80: + r4++; + break; + case 0x10: + r5 += 8; + break; + case 0x20: + r5 -= 8; + break; + case 1: + break; + } + r1 = (gSave.unk6 == 0) ? 0x82 : 0x88; + if (r4 <= 0) { + r4 = 1; + } + if (r1 < r4) { + r4 = r1; + } + r0 = gMenu.unk1c; + if (r0 != r4) { + gMenu.unk1c = r4; + SoundReq(SFX_TEXTBOX_CHOICE); + sub_080A7114(2); + r5 = 0; + } + r0 = gMenu.unk1e; + if (r5 < 0) { + r5 = 0; + } + if (r0 < r5) { + r5 = r0; + } + gMenu.unk1f = r5; + gScreen.bg1.yOffset = r5 - 0x70; +} void sub_080A4934(void) { sub_080A7114(1); @@ -830,7 +900,102 @@ u32 sub_080A4948(s32 param_1) { return uVar2; } -ASM_FUNC("asm/non_matching/subtask/sub_080A4978.inc", void sub_080A4978(void)) +typedef struct { + u8* pal; + u8* gfx; + int size; + int zero; +} Figurine; + +extern const Figurine gFigurines[]; + +#ifdef EU +#define sub_080A4978_draw_constant 0x1fb +#else +#define sub_080A4978_draw_constant 0x1fc +#endif +void sub_080A4978(void) { + int r0, r2, r4, r6; + + gOamCmd._4 = 0; + gOamCmd._6 = 0; + gOamCmd._8 = 0x800; + gOamCmd.x = 0x9c; + gOamCmd.y = 0x48; + DrawDirect(sub_080A4978_draw_constant, 0); + r2 = (gSave.unk6 == 0) ? 0x82 : 0x88; + if ((gMenu.column_idx & 2) != 0) { + if (r2 >= (gMenu.unk1c)) { + gOamCmd.x = 0xe8; + r0 = (0x5000 / r2) * (gMenu.unk1c - 1); + if (r0 < 0) { + r0 += 0xff; + } + r0 >>= 8; + r0 += 0x20; + gOamCmd.y = r0; + DrawDirect(sub_080A4978_draw_constant, 1); + r0 = gMain.ticks.HWORD & 0x10; + r4 = (r0) ? 4 : 2; + gOamCmd.x = 0xe8; + gOamCmd.y = 0x1a; + DrawDirect(sub_080A4978_draw_constant, r4); + gOamCmd.x = 0xe8; + gOamCmd.y = 0x76; + DrawDirect(sub_080A4978_draw_constant, r4 + 1); + } + } + if (gMain.ticks.HWORD & 0x10) { + if (gMenu.column_idx & 0x10) { + if (gMenu.unk1e) { + gOamCmd.y = 0x10; + if (gMenu.unk1f > 0) { + gOamCmd.x = 6; + gOamCmd.y = 0x9c; + DrawDirect(sub_080A4978_draw_constant, 6); + } + if (gMenu.unk1e > gMenu.unk1f) { + gOamCmd.x = 0xea; + gOamCmd.y = 0x9c; + DrawDirect(sub_080A4978_draw_constant, 7); + } + } + } + } + if (gSaveHeader->language) { + if (gMenu.column_idx & 0x4) { + gOamCmd.y = 0x10; + r4 = gMenu.unk1c; + for (r6 = 2; r6 >= 0; r6--) { + gOamCmd.x = 0x5d + (r6 * 7); + gOamCmd._8 = ((r4 % 10) << 1) | 0x9e0; + DrawDirect(0, 9); + r4 = r4 / 10; + } + } + } + if (gMenu.column_idx & 1) { + if (sub_080A4948(gMenu.unk1c)) { + gOamCmd.x = 0x2c; + gOamCmd.y = 0x48; + gOamCmd._8 = 0xd4 << 7; + DrawDirect(sub_080A4978_draw_constant - 4, gMenu.unk1c - 1); + if (gMenu.unk1d != gMenu.unk1c) { + const Figurine* fig; + u8* gfx; + gMenu.unk1d = gMenu.unk1c; + fig = &gFigurines[gMenu.unk1c]; + LoadPalettes(fig->pal, 0x16, 9); + gfx = fig->gfx; + if (fig->size < 0) { + LZ77UnCompVram(gfx, (void*)0x6014000); + } else { + LoadResourceAsync(gfx, 0x6014000, fig->size); + } + } + } + } +} void sub_080A4B44(void) { u32 uVar1; @@ -953,3 +1118,467 @@ void sub_080A4E90(u8 param_1) { gUnk_02034490.unk11 = param_1; gUnk_02034490.unk12 = 0; } + +void Subtask_PauseMenu(void) { + extern const void (*const gUnk_08128B30[])(void); + + if (gUnk_02034490.unk11 == 6) { + SetBgmVolume(0x100); + Subtask_Exit(); + } else { + FlushSprites(); + gUnk_08128B30[gUnk_02034490.unk11](); + sub_080A5128(); + sub_0801C1D4(); + DrawOAMCmd(); + if (gUnk_02034490.unk11 != 4) { + gUnk_08128A38[gUnk_02034490.unk1].func(); + } + CopyOAM(); + { + u32 t = gUnk_02034490.unk16; + u32 t2 = (t != 0) ? 0xe46 : 0; + gScreen.controls.layerFXControl = t2; + gScreen.controls.alphaBlend = (t << 8) | (0x10 - t); + } + } +} + +typedef struct { + u8 _0; + u8 _1; + u8 _2; + u8 _3; + u8 _4; + u16 _6; +} struct_08127F94; +struct_08127F94* sub_080A6A80(u32, u32); + +extern u8 gUnk_02034492[]; +void sub_0801E8D4(void); +u32 sub_0801DB94(void); +s32 sub_080A50A0(s32); + +void sub_080A4F28(void) { + struct_08127F94* ptr; + int r0, r1; + + sub_0801E8D4(); + sub_080A4D34(); + r1 = 4; + do { + gUnk_02034492[r1] = 0; + r1++; + } while (r1 <= 0xd); + ptr = sub_080A6A80((u16)gRoomTransition.player_status.overworld_map_x, + (u16)gRoomTransition.player_status.overworld_map_y); + gUnk_02034490.unk2[4] = ptr->_4; + gUnk_02034490.unk2[5] = sub_0801DB94(); + if (IsItemEquipped(ITEM_LANTERN_ON) != 2) { + r1 = 0x10; + } else { + r1 = 0xf; + } + gUnk_02034490.unk15 = r1; + r0 = gUnk_08128A38[gUnk_02034490.unk1].unk1; + r0 = sub_080A50A0(r0); + gUnk_02034490.unk1 = r0; + gUnk_02034490.unk14 = r0; + sub_080A4DB8(r0); + SetFade(4, 0x20); + sub_080A4E90(1); +} + +void sub_080A4FA0(void) { + if (gFadeControl.active == 0) { + sub_080A4E90(2); + } +} + +void sub_080A4FB8(void) { + int iVar1; + u32 uVar2; + int iVar4; + s32 bVar5; + + if ((sub_080A51F4() != 0) && (gMenu.field_0xc != NULL)) { + iVar1 = -1; + switch (gInput.newKeys) { + case 8: + iVar1 = 0; + break; + case 0x200: + iVar1 = 1; + break; + case 0x100: + iVar1 = 2; + break; + case 0x2: + iVar1 = 3; + break; + } + if (iVar1 >= 0) { + switch (bVar5 = gMenu.field_0xc[iVar1]) { + case 0: + break; + case 4 ... 6: + case 0xf: + uVar2 = GetInventoryValue(0x47); + if (uVar2 == 0) { + iVar4 = 1; + if (iVar1 == 1) { + iVar4 = 2; + } + bVar5 = gMenu.field_0xc[iVar4]; + } + default: + gUnk_02034490.unk14 = bVar5; + SoundReq(SFX_TEXTBOX_OPEN); + gMenu.field_0xc = NULL; + break; + } + } + } + bVar5 = sub_080A50A0(gUnk_02034490.unk14); + if (gUnk_02034490.unk1 != bVar5) { + gUnk_02034490.unk14 = bVar5; + sub_080A51D4(); + if (bVar5 == 0xe) { + sub_080A4E90(6); + } else { + sub_080A4E90(3); + MemClear(&gBG0Buffer, 0x800); + gScreen.bg0.updated = 1; + } + } +} + +s32 sub_080A50A0(s32 param_1) { + s32 iVar1; + + if (param_1 == 0xf) { + iVar1 = AreaHasMap(); + param_1 = 4; + if (iVar1 != 0) { + param_1 = 5; + } + } + return param_1; +} + +void sub_080A50B8(void) { + s32 iVar1; + + iVar1 = gUnk_02034490.unk16 + 2; + if (0x10 < iVar1) { + gScreen.lcd.displayControl &= 0xf8ff; + sub_080A4E90(4); + iVar1 = 0x10; + } + gUnk_02034490.unk16 = iVar1; +} + +void sub_080A50E8(void) { + u32 t; + gUnk_02034490.unk16 = 0x10; + gUnk_02034490.unk1 = t = gUnk_02034490.unk14; + sub_080A4DB8(t); + sub_080A4E90(5); +} + +void sub_080A5108(void) { + s32 iVar1; + + iVar1 = gUnk_02034490.unk16 - 2; + if (iVar1 < 0) { + sub_080A4E90(2); + iVar1 = 0; + } + gUnk_02034490.unk16 = iVar1; +} + +void sub_080A5128(void) { + int r5, t; + struct { + int x; + int y; + } p[3]; + + switch (gUnk_02034490.unk1) { + case 7: + case 8: + p[0].x = 0x60; + p[0].y = 0x18; + p[1].x = -0x10; + p[1].y = 0x48; + p[2].x = 0x100; + p[2].y = 0x48; + break; + case 9: + case 10: + case 11: + return; + default: + p[0].x = 0x40; + p[0].y = 0x10 - (gUnk_02034490.unk16 << 1); + t = (gUnk_02034490.unk16 / 3); + p[1].x = 0x10 - t; + p[1].y = 0x48; + p[2].x = 0xe0 + t; + p[2].y = 0x48; + break; + } + gOamCmd._4 = 0; + gOamCmd._6 = 0; + gOamCmd._8 = 0x400; + gOamCmd.x = p[0].x; + gOamCmd.y = p[0].y; +#ifdef EU + r5 = 0xfd << 1; +#else + r5 = 0x1fb; +#endif + DrawDirect(r5, 0); + gOamCmd.x = p[1].x; + gOamCmd.y = p[1].y; + DrawDirect(r5, 1); + gOamCmd.x = p[2].x; + gOamCmd.y = p[2].y; + DrawDirect(r5, 2); +} + +void sub_080A51D4(void) { + u32 i = gUnk_02034490.unk1; + if (i < 0xe) { + gUnk_02034490.unk2[i] = gMenu.field_0x3; + } +} + +u32 sub_080A51F4(void) { + u32 retval = 1; + if (gFadeControl.active != 0) + retval = 0; + if (gUnk_02034490.unk11 != 2) + retval = 0; + return retval; +} + +void sub_080A5384(void); +void sub_080A5218(void) { + extern void (*const gUnk_08128B48[])(void); + + gUnk_08128B48[gMenu.menuType](); + sub_080A5384(); +} + +void sub_080A5238(void) { + u32 uVar1; + u32 uVar2; + u32 uVar3; + + gMenu.field_0xc = NULL; + sub_080A70AC((KeyButtonLayout*)&gUnk_08128B50); + for (uVar3 = 1; uVar3 < 0x20; uVar3++) { + uVar1 = GetInventoryValue(uVar3); + if ((uVar1 == 1) && (uVar2 = gUnk_080FD5B4[uVar3 * 8], uVar2 < 0x12)) { + switch (uVar3) { + case 0xf: + case 0x10: + uVar3 = gUnk_02034490.unk15; + break; + default: + break; + } + gMenu.unk10.a[uVar2] = uVar3; + sub_080A5F48(uVar3, uVar2 * 8 + 0x360); + } + } + sub_080A7114(1); +} + +extern const u8 gUnk_08128BF4[]; +void sub_080A6F6C(u32); +void sub_080A529C(void) { + s32 iVar1; + u32 uVar2; + u32 uVar3; + const ItemMenuTableEntry* entry; + + if (sub_080A51F4()) { + gMenu.field_0xc = (u8*)gUnk_08128BF4; + uVar3 = gMenu.field_0x3; + + entry = &gItemMenuTable[uVar3]; + switch (gInput.newKeys) { + case 1: + if (uVar3 == 0x10) { +#if defined(DEMO_USA) || defined(DEMO_JP) + SoundReq(SFX_MENU_ERROR); +#else + sub_080A4E84(0xb); + SoundReq(SFX_TEXTBOX_SELECT); +#endif + break; + } + case 2: + if (gMenu.unk10.a[uVar3] != 0) { + u32 t = !!(gInput.newKeys ^ 1); + ForceEquipItem(gMenu.unk10.a[uVar3], t); + SoundReq(SFX_TEXTBOX_SELECT); + } + break; + default: + switch (gInput.unk4) { + case DPAD_UP: + uVar3 = entry->up; + break; + case DPAD_DOWN: + uVar3 = entry->down; + break; + case DPAD_LEFT: + uVar3 = entry->left; + break; + case DPAD_RIGHT: + uVar3 = entry->right; + break; + } + break; + } + if (gMenu.field_0x3 != uVar3) { + gMenu.field_0x3 = uVar3; + SoundReq(SFX_TEXTBOX_CHOICE); + } + uVar2 = gMenu.unk10.a[uVar3]; + switch (uVar3) { + case 0xc: + case 0xd: + case 0xe: + case 0xf: + if (uVar2 != 0) { + uVar2 = gSave.saved_status.field_0x24[uVar2 - 6]; + } + break; + case 0x10: + uVar2 = 0x73; + break; + default: + break; + } + sub_080A6F6C(uVar2 + 0x400); + } +} + +u32 sub_080A554C(u32); +extern u8* gSpriteAnimations_322[]; +#ifdef EU +#define sub_080A5384_draw_constant0 0x1fa +#define sub_080A5384_draw_constant1 0x141 +#else +#define sub_080A5384_draw_constant0 0x1fb +#define sub_080A5384_draw_constant1 0x142 +#endif +void sub_080A5384(void) { + u32 tmp; + u32 uVar3; + s32 iVar2; + const ItemMenuTableEntry* entry; + + gOamCmd._4 = 0x400; + gOamCmd._6 = 0; + gOamCmd._8 = 0; + for (uVar3 = 0; uVar3 < 0x11; uVar3++) { + u32 item; + if (gMenu.unk10.a[uVar3] != 0) { + entry = &gItemMenuTable[uVar3]; + gOamCmd.x = entry->x; + gOamCmd.y = entry->y; + item = gMenu.unk10.a[uVar3]; + switch (item) { + case 0x1c ... 0x1f: + item = gSave.stats.bottles[item - 0x1c]; + break; + } + iVar2 = 3; + switch (item) { + case 7: + case 8: + if (gBombBagSizes[gSave.stats.bombBagType] <= gSave.stats.bombCount) { + iVar2 = 4; + } + break; + case 9: + case 10: + if (gQuiverSizes[gSave.stats.quiverType] <= gSave.stats.arrowCount) { + iVar2 = 4; + } + break; + } + gOamCmd._8 = 0x800 | iVar2 << 0xc | ((uVar3 * 8) + 0x360); + DrawDirect(sub_080A5384_draw_constant1, *gSpriteAnimations_322[item]); + } + } + gOamCmd._8 = 0x800; + { + u32 uVar3 = gMenu.field_0x3; + if ((uVar3 == 0x10) && (gSaveHeader->language != 0)) { + uVar3 = 0x11; + } + entry = &gItemMenuTable[uVar3]; + } + gOamCmd.x = entry->x; + gOamCmd.y = entry->y; + tmp = entry->type + ((gMain.ticks.HWORD & 0x10) != 0 ? 3 : 4); + DrawDirect(sub_080A5384_draw_constant0, tmp); + { + u32 uVar3; + if (gSaveHeader->language != 0) { + uVar3 = 0x10; + } else { + uVar3 = 0x11; + } + entry = &gItemMenuTable[uVar3]; + } + gOamCmd.x = entry->x; + gOamCmd.y = entry->y; + gOamCmd._8 = 0x800; + DrawDirect(sub_080A5384_draw_constant0, 0x22); + { + uVar3 = sub_080A554C(gSave.stats.itemButtons[0]); + if (uVar3 < 0x11) { + entry = &gItemMenuTable[uVar3]; + gOamCmd.x = entry->x; + gOamCmd.y = entry->y; + DrawDirect(sub_080A5384_draw_constant0, 3); + } + } + { + uVar3 = sub_080A554C(gSave.stats.itemButtons[1]); + if (uVar3 < 0x11) { + entry = &gItemMenuTable[uVar3]; + gOamCmd.x = entry->x; + gOamCmd.y = entry->y; + DrawDirect(sub_080A5384_draw_constant0, 3); + } + } +} + +extern void (*const gUnk_08128BF8[])(void); + +extern u8 gUnk_02000090; + +u32 sub_080A554C(u32 arg0) { + u32 i; + + if (arg0 != 0) { + for (i = 0; i < 17; i++) { + if (arg0 == gMenu.unk10.a[i]) + return i; + } + } + return 17; +} + +void sub_080A5574(void) { + gUnk_08128BF8[gMenu.menuType](); + sub_080A57F4(); +} diff --git a/src/subtask2.c b/src/subtask2.c deleted file mode 100644 index 4218e8c9..00000000 --- a/src/subtask2.c +++ /dev/null @@ -1,24 +0,0 @@ -#include "global.h" -#include "menu.h" -#include "functions.h" - -extern void (*const gUnk_08128BF8[])(void); - -extern u8 gUnk_02000090; - -u32 sub_080A554C(u32 arg0) { - u32 i; - - if (arg0 != 0) { - for (i = 0; i < 17; i++) { - if (arg0 == gMenu.unk10.a[i]) - return i; - } - } - return 17; -} - -void sub_080A5574(void) { - gUnk_08128BF8[gMenu.menuType](); - sub_080A57F4(); -}