diff options
Diffstat (limited to 'asm/menu_helpers.s')
-rw-r--r-- | asm/menu_helpers.s | 628 |
1 files changed, 628 insertions, 0 deletions
diff --git a/asm/menu_helpers.s b/asm/menu_helpers.s new file mode 100644 index 000000000..47ccd5500 --- /dev/null +++ b/asm/menu_helpers.s @@ -0,0 +1,628 @@ + .include "asm/macros.inc" + .include "constants/constants.inc" + + .syntax unified + + .text + + thumb_func_start sub_80BF474 +sub_80BF474: @ 80BF474 + push {r4-r7,lr} + mov r7, r8 + push {r7} + sub sp, 0x10 + ldr r4, [sp, 0x28] + ldr r5, [sp, 0x2C] + lsls r0, 24 + lsrs r0, 24 + mov r8, r0 + lsls r1, 24 + lsrs r1, 24 + adds r6, r1, 0 + lsls r2, 16 + lsrs r2, 16 + lsls r3, 24 + lsrs r3, 24 + lsls r4, 24 + lsrs r7, r4, 24 + lsls r5, 24 + lsrs r5, 24 + ldr r0, _080BF500 @ =gUnknown_20399D0 + strb r6, [r0] + adds r0, r6, 0 + movs r1, 0x1 + bl sub_810EDC4 + ldr r4, _080BF504 @ =gUnknown_2021D18 + ldr r0, [sp, 0x30] + cmp r0, r4 + beq _080BF4B8 + adds r0, r4, 0 + ldr r1, [sp, 0x30] + bl sub_8008FCC +_080BF4B8: + ldr r2, _080BF508 @ =gUnknown_3003E50 + ldrb r0, [r2] + movs r1, 0x1 + orrs r0, r1 + strb r0, [r2] + movs r0, 0 + str r0, [sp] + movs r0, 0x2 + str r0, [sp, 0x4] + movs r0, 0x1 + str r0, [sp, 0x8] + movs r0, 0x3 + str r0, [sp, 0xC] + adds r0, r6, 0 + adds r1, r7, 0 + adds r2, r4, 0 + adds r3, r5, 0 + bl sub_80F6CD0 + ldr r1, _080BF50C @ =gUnknown_20399CC + ldr r0, [sp, 0x34] + str r0, [r1] + ldr r1, _080BF510 @ =gUnknown_3005090 + mov r2, r8 + lsls r0, r2, 2 + add r0, r8 + lsls r0, 3 + adds r0, r1 + ldr r1, _080BF514 @ =sub_80BF534 + str r1, [r0] + add sp, 0x10 + pop {r3} + mov r8, r3 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_080BF500: .4byte gUnknown_20399D0 +_080BF504: .4byte gUnknown_2021D18 +_080BF508: .4byte gUnknown_3003E50 +_080BF50C: .4byte gUnknown_20399CC +_080BF510: .4byte gUnknown_3005090 +_080BF514: .4byte sub_80BF534 + thumb_func_end sub_80BF474 + + thumb_func_start sub_80BF518 +sub_80BF518: @ 80BF518 + push {r4,lr} + adds r4, r0, 0 + lsls r4, 24 + lsrs r4, 24 + bl sub_8002DE8 + adds r0, r4, 0 + bl sub_8002E64 + lsls r0, 16 + lsrs r0, 16 + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_80BF518 + + thumb_func_start sub_80BF534 +sub_80BF534: @ 80BF534 + push {r4,lr} + lsls r0, 24 + lsrs r4, r0, 24 + ldr r0, _080BF558 @ =gUnknown_20399D0 + ldrb r0, [r0] + bl sub_80BF518 + lsls r0, 16 + cmp r0, 0 + bne _080BF552 + ldr r0, _080BF55C @ =gUnknown_20399CC + ldr r1, [r0] + adds r0, r4, 0 + bl _call_via_r1 +_080BF552: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080BF558: .4byte gUnknown_20399D0 +_080BF55C: .4byte gUnknown_20399CC + thumb_func_end sub_80BF534 + + thumb_func_start sub_80BF560 +sub_80BF560: @ 80BF560 + push {r4,lr} + lsls r0, 24 + lsrs r4, r0, 24 + bl sub_81100C8 + lsls r0, 24 + asrs r1, r0, 24 + cmp r1, 0 + beq _080BF586 + cmp r1, 0 + bgt _080BF580 + movs r0, 0x1 + negs r0, r0 + cmp r1, r0 + beq _080BF5A8 + b _080BF5C0 +_080BF580: + cmp r1, 0x1 + beq _080BF5A8 + b _080BF5C0 +_080BF586: + movs r0, 0x5 + bl sub_80722CC + ldr r1, _080BF5A0 @ =gUnknown_3005090 + lsls r0, r4, 2 + adds r0, r4 + lsls r0, 3 + adds r0, r1 + ldr r1, _080BF5A4 @ =gUnknown_20399C8 + ldr r1, [r1] + ldr r1, [r1] + b _080BF5BE + .align 2, 0 +_080BF5A0: .4byte gUnknown_3005090 +_080BF5A4: .4byte gUnknown_20399C8 +_080BF5A8: + movs r0, 0x5 + bl sub_80722CC + ldr r1, _080BF5C8 @ =gUnknown_3005090 + lsls r0, r4, 2 + adds r0, r4 + lsls r0, 3 + adds r0, r1 + ldr r1, _080BF5CC @ =gUnknown_20399C8 + ldr r1, [r1] + ldr r1, [r1, 0x4] +_080BF5BE: + str r1, [r0] +_080BF5C0: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080BF5C8: .4byte gUnknown_3005090 +_080BF5CC: .4byte gUnknown_20399C8 + thumb_func_end sub_80BF560 + + thumb_func_start sub_80BF5D0 +sub_80BF5D0: @ 80BF5D0 + push {r4-r7,lr} + sub sp, 0xC + adds r6, r0, 0 + adds r0, r1, 0 + adds r1, r2, 0 + adds r2, r3, 0 + ldr r3, [sp, 0x20] + ldr r4, [sp, 0x24] + ldr r5, [sp, 0x28] + ldr r7, [sp, 0x2C] + lsls r6, 24 + lsrs r6, 24 + lsls r1, 24 + lsrs r1, 24 + lsls r2, 24 + lsrs r2, 24 + lsls r3, 24 + lsrs r3, 24 + lsls r4, 16 + lsrs r4, 16 + lsls r5, 24 + lsrs r5, 24 + str r4, [sp] + str r5, [sp, 0x4] + movs r4, 0 + str r4, [sp, 0x8] + bl sub_810FF60 + ldr r0, _080BF624 @ =gUnknown_20399C8 + str r7, [r0] + ldr r1, _080BF628 @ =gUnknown_3005090 + lsls r0, r6, 2 + adds r0, r6 + lsls r0, 3 + adds r0, r1 + ldr r1, _080BF62C @ =sub_80BF560 + str r1, [r0] + add sp, 0xC + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_080BF624: .4byte gUnknown_20399C8 +_080BF628: .4byte gUnknown_3005090 +_080BF62C: .4byte sub_80BF560 + thumb_func_end sub_80BF5D0 + + thumb_func_start sub_80BF630 +sub_80BF630: @ 80BF630 + push {lr} + ldr r0, _080BF650 @ =gUnknown_300500C + ldr r0, [r0] + ldrb r0, [r0, 0x13] + cmp r0, 0x1 + bne _080BF666 + ldr r0, _080BF654 @ =gUnknown_30030F0 + ldrh r1, [r0, 0x2E] + movs r0, 0x80 + lsls r0, 2 + ands r0, r1 + cmp r0, 0 + beq _080BF658 + movs r0, 0x1 + b _080BF668 + .align 2, 0 +_080BF650: .4byte gUnknown_300500C +_080BF654: .4byte gUnknown_30030F0 +_080BF658: + movs r0, 0x80 + lsls r0, 1 + ands r0, r1 + cmp r0, 0 + beq _080BF666 + movs r0, 0x2 + b _080BF668 +_080BF666: + movs r0, 0 +_080BF668: + pop {r1} + bx r1 + thumb_func_end sub_80BF630 + + thumb_func_start sub_80BF66C +sub_80BF66C: @ 80BF66C + push {lr} + ldr r0, _080BF68C @ =gUnknown_300500C + ldr r0, [r0] + ldrb r0, [r0, 0x13] + cmp r0, 0x1 + bne _080BF6A2 + ldr r0, _080BF690 @ =gUnknown_30030F0 + ldrh r1, [r0, 0x30] + movs r0, 0x80 + lsls r0, 2 + ands r0, r1 + cmp r0, 0 + beq _080BF694 + movs r0, 0x1 + b _080BF6A4 + .align 2, 0 +_080BF68C: .4byte gUnknown_300500C +_080BF690: .4byte gUnknown_30030F0 +_080BF694: + movs r0, 0x80 + lsls r0, 1 + ands r0, r1 + cmp r0, 0 + beq _080BF6A2 + movs r0, 0x2 + b _080BF6A4 +_080BF6A2: + movs r0, 0 +_080BF6A4: + pop {r1} + bx r1 + thumb_func_end sub_80BF66C + + thumb_func_start sub_80BF6A8 +sub_80BF6A8: @ 80BF6A8 + push {lr} + lsls r0, 16 + lsrs r0, 16 + cmp r0, 0xAF + bne _080BF6D0 + ldr r0, _080BF6CC @ =gUnknown_3005008 + ldr r0, [r0] + ldrh r1, [r0, 0x4] + movs r0, 0x80 + lsls r0, 1 + cmp r1, r0 + beq _080BF6C8 + bl sub_811B0D0 + cmp r0, 0x1 + bne _080BF6D0 +_080BF6C8: + movs r0, 0 + b _080BF6D2 + .align 2, 0 +_080BF6CC: .4byte gUnknown_3005008 +_080BF6D0: + movs r0, 0x1 +_080BF6D2: + pop {r1} + bx r1 + thumb_func_end sub_80BF6A8 + + thumb_func_start sub_80BF6D8 +sub_80BF6D8: @ 80BF6D8 + push {r4,lr} + lsls r0, 16 + lsrs r4, r0, 16 + bl sub_805642C + cmp r0, 0x1 + beq _080BF6EE + bl sub_811B0D0 + cmp r0, 0x1 + bne _080BF700 +_080BF6EE: + adds r0, r4, 0 + bl sub_80980F8 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + bne _080BF700 + movs r0, 0 + b _080BF702 +_080BF700: + movs r0, 0x1 +_080BF702: + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_80BF6D8 + + thumb_func_start sub_80BF708 +sub_80BF708: @ 80BF708 + push {lr} + bl sub_805642C + cmp r0, 0x1 + beq _080BF71A + ldr r0, _080BF720 @ =gUnknown_3003F64 + ldrb r0, [r0] + cmp r0, 0x1 + bne _080BF724 +_080BF71A: + movs r0, 0x1 + b _080BF726 + .align 2, 0 +_080BF720: .4byte gUnknown_3003F64 +_080BF724: + movs r0, 0 +_080BF726: + pop {r1} + bx r1 + thumb_func_end sub_80BF708 + + thumb_func_start sub_80BF72C +sub_80BF72C: @ 80BF72C + push {lr} + bl sub_80BF708 + lsls r0, 24 + cmp r0, 0 + beq _080BF742 + bl sub_8058244 + lsls r0, 24 + lsrs r0, 24 + b _080BF744 +_080BF742: + movs r0, 0 +_080BF744: + pop {r1} + bx r1 + thumb_func_end sub_80BF72C + + thumb_func_start sub_80BF748 +sub_80BF748: @ 80BF748 + push {lr} + bl sub_80BF72C + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + beq _080BF75E + bl sub_800B270 + cmp r0, 0x1 + bne _080BF762 +_080BF75E: + movs r0, 0x1 + b _080BF764 +_080BF762: + movs r0, 0 +_080BF764: + pop {r1} + bx r1 + thumb_func_end sub_80BF748 + + thumb_func_start sub_80BF768 +sub_80BF768: @ 80BF768 + push {lr} + movs r0, 0 + bl sub_80006F4 + movs r0, 0 + bl sub_8000700 + pop {r0} + bx r0 + thumb_func_end sub_80BF768 + + thumb_func_start sub_80BF77C +sub_80BF77C: @ 80BF77C + push {r4,lr} + sub sp, 0xC + bl sub_80BF7C8 + mov r1, sp + movs r0, 0 + strh r0, [r1] + movs r1, 0xC0 + lsls r1, 19 + ldr r2, _080BF7BC @ =0x0100c000 + mov r0, sp + bl CpuSet + movs r4, 0 + str r4, [sp, 0x4] + add r0, sp, 0x4 + movs r1, 0xE0 + lsls r1, 19 + ldr r2, _080BF7C0 @ =0x05000100 + bl CpuSet + add r0, sp, 0x8 + strh r4, [r0] + movs r1, 0xA0 + lsls r1, 19 + ldr r2, _080BF7C4 @ =0x01000200 + bl CpuSet + add sp, 0xC + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080BF7BC: .4byte 0x0100c000 +_080BF7C0: .4byte 0x05000100 +_080BF7C4: .4byte 0x01000200 + thumb_func_end sub_80BF77C + + thumb_func_start sub_80BF7C8 +sub_80BF7C8: @ 80BF7C8 + push {lr} + movs r0, 0 + movs r1, 0 + bl sub_8000A38 + movs r0, 0xE + movs r1, 0 + bl sub_8000A38 + movs r0, 0xC + movs r1, 0 + bl sub_8000A38 + movs r0, 0xA + movs r1, 0 + bl sub_8000A38 + movs r0, 0x8 + movs r1, 0 + bl sub_8000A38 + movs r0, 0 + movs r1, 0 + movs r2, 0 + bl sub_8001B90 + movs r0, 0 + movs r1, 0 + movs r2, 0 + bl sub_8001D08 + movs r0, 0x1 + movs r1, 0 + movs r2, 0 + bl sub_8001B90 + movs r0, 0x1 + movs r1, 0 + movs r2, 0 + bl sub_8001D08 + movs r0, 0x2 + movs r1, 0 + movs r2, 0 + bl sub_8001B90 + movs r0, 0x2 + movs r1, 0 + movs r2, 0 + bl sub_8001D08 + movs r0, 0x3 + movs r1, 0 + movs r2, 0 + bl sub_8001B90 + movs r0, 0x3 + movs r1, 0 + movs r2, 0 + bl sub_8001D08 + pop {r0} + bx r0 + thumb_func_end sub_80BF7C8 + + thumb_func_start sub_80BF848 +sub_80BF848: @ 80BF848 + push {r4-r6,lr} + adds r2, r0, 0 + lsls r1, 16 + lsrs r1, 16 + adds r5, r1, 0 + ldrh r4, [r2] + adds r6, r4, 0 + ldr r0, _080BF87C @ =gUnknown_30030F0 + ldrh r0, [r0, 0x30] + movs r3, 0xF0 + ands r3, r0 + cmp r3, 0x40 + bne _080BF880 + adds r0, r4, 0x1 + strh r0, [r2] + movs r3, 0 + ldrsh r0, [r2, r3] + cmp r0, r1 + ble _080BF872 + movs r0, 0x1 + strh r0, [r2] +_080BF872: + movs r0, 0 + ldrsh r1, [r2, r0] +_080BF876: + lsls r0, r4, 16 + b _080BF8CA + .align 2, 0 +_080BF87C: .4byte gUnknown_30030F0 +_080BF880: + cmp r3, 0x80 + bne _080BF896 + subs r0, r4, 0x1 + strh r0, [r2] + lsls r0, 16 + cmp r0, 0 + bgt _080BF890 + strh r1, [r2] +_080BF890: + movs r3, 0 + ldrsh r1, [r2, r3] + b _080BF876 +_080BF896: + cmp r3, 0x10 + bne _080BF8B0 + adds r0, r4, 0 + adds r0, 0xA + strh r0, [r2] + movs r1, 0 + ldrsh r0, [r2, r1] + cmp r0, r5 + ble _080BF8AA + strh r5, [r2] +_080BF8AA: + movs r3, 0 + ldrsh r1, [r2, r3] + b _080BF876 +_080BF8B0: + cmp r3, 0x20 + bne _080BF8DA + adds r0, r4, 0 + subs r0, 0xA + strh r0, [r2] + lsls r0, 16 + cmp r0, 0 + bgt _080BF8C4 + movs r0, 0x1 + strh r0, [r2] +_080BF8C4: + movs r0, 0 + ldrsh r1, [r2, r0] + lsls r0, r6, 16 +_080BF8CA: + asrs r0, 16 + cmp r1, r0 + beq _080BF8DA + movs r0, 0x5 + bl sub_80722CC + movs r0, 0x1 + b _080BF8DC +_080BF8DA: + movs r0, 0 +_080BF8DC: + pop {r4-r6} + pop {r1} + bx r1 + thumb_func_end sub_80BF848 + + thumb_func_start sub_80BF8E4 +sub_80BF8E4: @ 80BF8E4 + push {lr} + bl sub_80CBE00 + lsls r0, 24 + cmp r0, 0 + beq _080BF8F4 + movs r0, 0x5 + b _080BF8F6 +_080BF8F4: + movs r0, 0x4 +_080BF8F6: + pop {r1} + bx r1 + thumb_func_end sub_80BF8E4 + + .align 2, 0 @ Don't pad with nop. |