diff options
Diffstat (limited to 'asm/roulette_util.s')
-rw-r--r-- | asm/roulette_util.s | 780 |
1 files changed, 780 insertions, 0 deletions
diff --git a/asm/roulette_util.s b/asm/roulette_util.s new file mode 100644 index 000000000..569a42712 --- /dev/null +++ b/asm/roulette_util.s @@ -0,0 +1,780 @@ + .include "constants/gba_constants.s" + .include "constants/species_constants.s" + .include "asm/macros.s" + + .syntax unified + + .text + + thumb_func_start sub_8124918 +sub_8124918: @ 8124918 + push {lr} + movs r1, 0 + strb r1, [r0] + strh r1, [r0, 0x2] + adds r0, 0x4 + movs r2, 0xC0 + bl memset + pop {r0} + bx r0 + thumb_func_end sub_8124918 + + thumb_func_start sub_812492C +sub_812492C: @ 812492C + push {r4-r7,lr} + adds r3, r0, 0 + lsls r1, 24 + lsrs r6, r1, 24 + cmp r6, 0xF + bhi _08124948 + lsls r0, r6, 1 + adds r0, r6 + lsls r0, 2 + adds r5, r3, r0 + ldrb r7, [r5, 0x4] + lsrs r0, r7, 7 + cmp r0, 0 + beq _0812494C +_08124948: + movs r0, 0xFF + b _081249AA +_0812494C: + ldrh r0, [r2] + movs r4, 0 + strh r0, [r5, 0x8] + ldrh r0, [r2, 0x2] + strh r0, [r5, 0xA] + ldrb r0, [r2, 0x4] + strb r0, [r5, 0xC] + ldrb r0, [r2, 0x5] + strb r0, [r5, 0xD] + ldrb r0, [r2, 0x6] + strb r0, [r5, 0xE] + ldrb r3, [r2, 0x7] + lsls r0, r3, 27 + lsrs r0, 27 + ldrb r2, [r5, 0xF] + movs r1, 0x20 + negs r1, r1 + ands r1, r2 + orrs r1, r0 + movs r0, 0x60 + ands r0, r3 + movs r2, 0x61 + negs r2, r2 + ands r1, r2 + orrs r1, r0 + lsls r3, 24 + asrs r3, 31 + lsls r3, 7 + movs r0, 0x7F + ands r1, r0 + orrs r1, r3 + strb r1, [r5, 0xF] + subs r0, 0xFF + ands r0, r7 + movs r2, 0x80 + orrs r0, r2 + strb r0, [r5, 0x4] + strb r4, [r5, 0x6] + strb r4, [r5, 0x5] + lsls r1, 24 + cmp r1, 0 + bge _081249A4 + movs r0, 0xFF + b _081249A6 +_081249A4: + movs r0, 0x1 +_081249A6: + strb r0, [r5, 0x7] + adds r0, r6, 0 +_081249AA: + pop {r4-r7} + pop {r1} + bx r1 + thumb_func_end sub_812492C + + thumb_func_start unref_sub_81249B0 +unref_sub_81249B0: @ 81249B0 + push {r4,lr} + adds r2, r0, 0 + lsls r1, 24 + lsrs r1, 24 + adds r4, r1, 0 + cmp r4, 0xF + bhi _081249DC + lsls r0, r4, 1 + adds r0, r4 + lsls r0, 2 + adds r1, r2, r0 + ldrb r0, [r1, 0x4] + lsrs r0, 7 + cmp r0, 0 + beq _081249DC + adds r0, r1, 0x4 + movs r1, 0 + movs r2, 0xC + bl memset + adds r0, r4, 0 + b _081249DE +_081249DC: + movs r0, 0xFF +_081249DE: + pop {r4} + pop {r1} + bx r1 + thumb_func_end unref_sub_81249B0 + + thumb_func_start sub_81249E4 +sub_81249E4: @ 81249E4 + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + adds r5, r0, 0 + movs r0, 0 + mov r12, r0 + ldrb r1, [r5, 0x8] + cmp r12, r1 + bcc _081249FC + b _08124B94 +_081249FC: + movs r7, 0x1F + ldr r0, _08124A2C @ =0xfffffc1f + mov r10, r0 + movs r1, 0x7D + negs r1, r1 + mov r9, r1 + movs r0, 0x1F + mov r8, r0 +_08124A0C: + ldrh r0, [r5, 0x6] + add r0, r12 + lsls r0, 1 + ldr r1, _08124A30 @ =gPlttBufferFaded + adds r3, r0, r1 + ldr r1, _08124A34 @ =gPlttBufferUnfaded + adds r6, r0, r1 + ldrb r0, [r5] + lsls r0, 25 + lsrs r0, 25 + cmp r0, 0x1 + beq _08124A38 + cmp r0, 0x2 + beq _08124A96 + b _08124B82 + .align 2, 0 +_08124A2C: .4byte 0xfffffc1f +_08124A30: .4byte gPlttBufferFaded +_08124A34: .4byte gPlttBufferUnfaded +_08124A38: + ldr r0, [r3] + lsls r2, r0, 27 + lsrs r0, r2, 27 + movs r1, 0x3 + ldrsb r1, [r5, r1] + adds r0, r1 + cmp r0, 0x1F + bhi _08124A5A + lsrs r0, r2, 27 + adds r0, r1 + ands r0, r7 + ldrb r2, [r3] + movs r1, 0x20 + negs r1, r1 + ands r1, r2 + orrs r1, r0 + strb r1, [r3] +_08124A5A: + ldr r0, [r3] + lsls r2, r0, 22 + lsrs r0, r2, 27 + movs r1, 0x3 + ldrsb r1, [r5, r1] + adds r0, r1 + cmp r0, 0x1F + bhi _08124A7E + lsrs r0, r2, 27 + adds r0, r1 + mov r1, r8 + ands r0, r1 + lsls r0, 5 + ldrh r2, [r3] + mov r1, r10 + ands r1, r2 + orrs r1, r0 + strh r1, [r3] +_08124A7E: + ldr r0, [r3] + lsls r2, r0, 17 + lsrs r0, r2, 27 + movs r1, 0x3 + ldrsb r1, [r5, r1] + adds r0, r1 + cmp r0, 0x1F + bls _08124A90 + b _08124B82 +_08124A90: + lsrs r0, r2, 27 + adds r0, r1 + b _08124B74 +_08124A96: + movs r0, 0x3 + ldrsb r0, [r5, r0] + cmp r0, 0 + bge _08124B08 + ldr r0, [r3] + lsls r4, r0, 27 + lsrs r1, r4, 27 + movs r2, 0x3 + ldrsb r2, [r5, r2] + adds r1, r2 + ldr r0, [r6] + lsls r0, 27 + lsrs r0, 27 + cmp r1, r0 + blt _08124AC6 + lsrs r0, r4, 27 + adds r0, r2 + ands r0, r7 + ldrb r2, [r3] + movs r1, 0x20 + negs r1, r1 + ands r1, r2 + orrs r1, r0 + strb r1, [r3] +_08124AC6: + ldr r0, [r3] + lsls r4, r0, 22 + lsrs r1, r4, 27 + movs r2, 0x3 + ldrsb r2, [r5, r2] + adds r1, r2 + ldr r0, [r6] + lsls r0, 22 + lsrs r0, 27 + cmp r1, r0 + blt _08124AF0 + lsrs r0, r4, 27 + adds r0, r2 + mov r1, r8 + ands r0, r1 + lsls r0, 5 + ldrh r2, [r3] + mov r1, r10 + ands r1, r2 + orrs r1, r0 + strh r1, [r3] +_08124AF0: + ldr r0, [r3] + lsls r4, r0, 17 + lsrs r1, r4, 27 + movs r2, 0x3 + ldrsb r2, [r5, r2] + adds r1, r2 + ldr r0, [r6] + lsls r0, 17 + lsrs r0, 27 + cmp r1, r0 + blt _08124B82 + b _08124B70 +_08124B08: + ldr r0, [r3] + lsls r4, r0, 27 + lsrs r1, r4, 27 + movs r2, 0x3 + ldrsb r2, [r5, r2] + adds r1, r2 + ldr r0, [r6] + lsls r0, 27 + lsrs r0, 27 + cmp r1, r0 + bgt _08124B30 + lsrs r0, r4, 27 + adds r0, r2 + ands r0, r7 + ldrb r2, [r3] + movs r1, 0x20 + negs r1, r1 + ands r1, r2 + orrs r1, r0 + strb r1, [r3] +_08124B30: + ldr r0, [r3] + lsls r4, r0, 22 + lsrs r1, r4, 27 + movs r2, 0x3 + ldrsb r2, [r5, r2] + adds r1, r2 + ldr r0, [r6] + lsls r0, 22 + lsrs r0, 27 + cmp r1, r0 + bgt _08124B5A + lsrs r0, r4, 27 + adds r0, r2 + mov r1, r8 + ands r0, r1 + lsls r0, 5 + ldrh r2, [r3] + mov r1, r10 + ands r1, r2 + orrs r1, r0 + strh r1, [r3] +_08124B5A: + ldr r0, [r3] + lsls r4, r0, 17 + lsrs r1, r4, 27 + movs r2, 0x3 + ldrsb r2, [r5, r2] + adds r1, r2 + ldr r0, [r6] + lsls r0, 17 + lsrs r0, 27 + cmp r1, r0 + bgt _08124B82 +_08124B70: + lsrs r0, r4, 27 + adds r0, r2 +_08124B74: + ands r0, r7 + lsls r0, 2 + ldrb r2, [r3, 0x1] + mov r1, r9 + ands r1, r2 + orrs r1, r0 + strb r1, [r3, 0x1] +_08124B82: + mov r0, r12 + adds r0, 0x1 + lsls r0, 24 + lsrs r0, 24 + mov r12, r0 + ldrb r0, [r5, 0x8] + cmp r12, r0 + bcs _08124B94 + b _08124A0C +_08124B94: + ldrb r1, [r5, 0x2] + adds r0, r1, 0x1 + strb r0, [r5, 0x2] + ldrb r0, [r5, 0xB] + lsls r0, 27 + lsls r1, 24 + asrs r0, 3 + cmp r1, r0 + beq _08124BAA + movs r0, 0 + b _08124BDE +_08124BAA: + movs r0, 0 + strb r0, [r5, 0x2] + movs r0, 0x3 + ldrsb r0, [r5, r0] + negs r0, r0 + strb r0, [r5, 0x3] + ldrb r2, [r5] + movs r1, 0x7F + movs r0, 0x7F + ands r0, r2 + cmp r0, 0x1 + bne _08124BCA + lsls r0, r2, 25 + lsrs r0, 25 + adds r0, 0x1 + b _08124BD0 +_08124BCA: + lsls r0, r2, 25 + lsrs r0, 25 + subs r0, 0x1 +_08124BD0: + ands r0, r1 + movs r1, 0x80 + negs r1, r1 + ands r1, r2 + orrs r1, r0 + strb r1, [r5] + movs r0, 0x1 +_08124BDE: + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r7} + pop {r1} + bx r1 + thumb_func_end sub_81249E4 + + thumb_func_start sub_8124BEC +sub_8124BEC: @ 8124BEC + push {r4,r5,lr} + adds r3, r0, 0 + movs r2, 0 + ldrb r0, [r3] + lsls r0, 25 + lsrs r0, 25 + cmp r0, 0x1 + beq _08124C02 + cmp r0, 0x2 + beq _08124C30 + b _08124C6A +_08124C02: + ldrb r0, [r3, 0x8] + cmp r2, r0 + bcs _08124C22 + ldr r4, _08124C2C @ =gPlttBufferFaded +_08124C0A: + ldrh r0, [r3, 0x6] + adds r0, r2 + lsls r0, 1 + adds r0, r4 + ldrh r1, [r3, 0x4] + strh r1, [r0] + adds r0, r2, 0x1 + lsls r0, 24 + lsrs r2, r0, 24 + ldrb r0, [r3, 0x8] + cmp r2, r0 + bcc _08124C0A +_08124C22: + ldrb r2, [r3] + lsls r1, r2, 25 + lsrs r1, 25 + adds r1, 0x1 + b _08124C5C + .align 2, 0 +_08124C2C: .4byte gPlttBufferFaded +_08124C30: + ldrb r0, [r3, 0x8] + cmp r2, r0 + bcs _08124C54 + ldr r5, _08124C74 @ =gPlttBufferFaded + ldr r4, _08124C78 @ =gPlttBufferUnfaded +_08124C3A: + ldrh r0, [r3, 0x6] + adds r0, r2 + lsls r0, 1 + adds r1, r0, r5 + adds r0, r4 + ldrh r0, [r0] + strh r0, [r1] + adds r0, r2, 0x1 + lsls r0, 24 + lsrs r2, r0, 24 + ldrb r0, [r3, 0x8] + cmp r2, r0 + bcc _08124C3A +_08124C54: + ldrb r2, [r3] + lsls r1, r2, 25 + lsrs r1, 25 + subs r1, 0x1 +_08124C5C: + movs r0, 0x7F + ands r1, r0 + movs r0, 0x80 + negs r0, r0 + ands r0, r2 + orrs r0, r1 + strb r0, [r3] +_08124C6A: + movs r0, 0x1 + pop {r4,r5} + pop {r1} + bx r1 + .align 2, 0 +_08124C74: .4byte gPlttBufferFaded +_08124C78: .4byte gPlttBufferUnfaded + thumb_func_end sub_8124BEC + + thumb_func_start task_tutorial_controls_fadein +task_tutorial_controls_fadein: @ 8124C7C + push {r4-r6,lr} + adds r4, r0, 0 + movs r5, 0 + ldrb r0, [r4] + cmp r0, 0 + beq _08124CE0 +_08124C88: + ldrh r0, [r4, 0x2] + asrs r0, r5 + movs r1, 0x1 + ands r0, r1 + cmp r0, 0 + beq _08124CD6 + lsls r1, r5, 1 + adds r0, r1, r5 + lsls r3, r0, 2 + adds r2, r4, r3 + ldrb r0, [r2, 0x5] + subs r0, 0x1 + strb r0, [r2, 0x5] + lsls r0, 24 + lsrs r0, 24 + adds r6, r1, 0 + cmp r0, 0xFF + bne _08124CD6 + ldrh r0, [r2, 0x8] + movs r2, 0x80 + lsls r2, 8 + adds r1, r2, 0 + ands r0, r1 + cmp r0, 0 + beq _08124CC4 + adds r0, r3, 0x4 + adds r0, r4, r0 + bl sub_81249E4 + b _08124CCC +_08124CC4: + adds r0, r3, 0x4 + adds r0, r4, r0 + bl sub_8124BEC +_08124CCC: + adds r0, r6, r5 + lsls r0, 2 + adds r0, r4, r0 + ldrb r1, [r0, 0xD] + strb r1, [r0, 0x5] +_08124CD6: + adds r0, r5, 0x1 + lsls r0, 24 + lsrs r5, r0, 24 + cmp r5, 0xF + bls _08124C88 +_08124CE0: + pop {r4-r6} + pop {r0} + bx r0 + thumb_func_end task_tutorial_controls_fadein + + thumb_func_start sub_8124CE8 +sub_8124CE8: @ 8124CE8 + push {r4-r7,lr} + adds r3, r0, 0 + lsls r1, 16 + lsrs r6, r1, 16 + movs r4, 0 + ldrb r0, [r3] + adds r0, 0x1 + strb r0, [r3] + movs r5, 0x1 + movs r7, 0x80 + negs r7, r7 +_08124CFE: + adds r0, r6, 0 + asrs r0, r4 + ands r0, r5 + cmp r0, 0 + beq _08124D2C + lsls r0, r4, 1 + adds r0, r4 + lsls r0, 2 + adds r2, r3, r0 + ldrb r0, [r2, 0x4] + lsrs r0, 7 + cmp r0, 0 + beq _08124D2C + adds r0, r5, 0 + lsls r0, r4 + ldrh r1, [r3, 0x2] + orrs r0, r1 + strh r0, [r3, 0x2] + ldrb r1, [r2, 0x4] + adds r0, r7, 0 + ands r0, r1 + orrs r0, r5 + strb r0, [r2, 0x4] +_08124D2C: + adds r0, r4, 0x1 + lsls r0, 24 + lsrs r4, r0, 24 + cmp r4, 0xF + bls _08124CFE + pop {r4-r7} + pop {r0} + bx r0 + thumb_func_end sub_8124CE8 + + thumb_func_start sub_8124D3C +sub_8124D3C: @ 8124D3C + push {r4-r7,lr} + sub sp, 0x4 + adds r6, r0, 0 + lsls r1, 16 + lsrs r7, r1, 16 + movs r5, 0 + movs r3, 0x1 +_08124D4A: + ldrh r0, [r6, 0x2] + asrs r0, r5 + ands r0, r3 + cmp r0, 0 + beq _08124DB2 + lsls r0, r5, 1 + adds r0, r5 + lsls r0, 2 + adds r4, r6, r0 + ldrb r0, [r4, 0x4] + lsrs r0, 7 + cmp r0, 0 + beq _08124DB2 + adds r0, r7, 0 + asrs r0, r5 + ands r0, r3 + cmp r0, 0 + beq _08124DB2 + ldrh r1, [r4, 0xA] + lsls r1, 1 + ldr r0, _08124DA8 @ =gPlttBufferFaded + adds r0, r1, r0 + ldr r2, _08124DAC @ =gPlttBufferUnfaded + adds r1, r2 + ldrb r2, [r4, 0xC] + lsls r2, 1 + str r3, [sp] + bl memcpy + ldrb r0, [r4, 0x4] + movs r2, 0x80 + negs r2, r2 + adds r1, r2, 0 + ands r0, r1 + strb r0, [r4, 0x4] + movs r0, 0 + strb r0, [r4, 0x6] + strb r0, [r4, 0x5] + ldrb r0, [r4, 0xF] + lsls r0, 24 + ldr r3, [sp] + cmp r0, 0 + bge _08124DB0 + movs r0, 0xFF + strb r0, [r4, 0x7] + b _08124DB2 + .align 2, 0 +_08124DA8: .4byte gPlttBufferFaded +_08124DAC: .4byte gPlttBufferUnfaded +_08124DB0: + strb r3, [r4, 0x7] +_08124DB2: + adds r0, r5, 0x1 + lsls r0, 24 + lsrs r5, r0, 24 + cmp r5, 0xF + bls _08124D4A + ldr r0, _08124DC8 @ =0x0000ffff + cmp r7, r0 + bne _08124DCC + movs r0, 0 + strb r0, [r6] + b _08124DD0 + .align 2, 0 +_08124DC8: .4byte 0x0000ffff +_08124DCC: + ldrh r0, [r6, 0x2] + bics r0, r7 +_08124DD0: + strh r0, [r6, 0x2] + add sp, 0x4 + pop {r4-r7} + pop {r0} + bx r0 + thumb_func_end sub_8124D3C + + thumb_func_start sub_8124DDC +sub_8124DDC: @ 8124DDC + push {r4-r7,lr} + adds r6, r0, 0 + ldr r0, [sp, 0x14] + ldr r4, [sp, 0x18] + lsls r1, 16 + lsrs r7, r1, 16 + lsls r2, 24 + lsrs r2, 24 + lsls r3, 24 + lsls r0, 24 + lsrs r5, r0, 24 + lsls r4, 24 + lsrs r4, 24 + movs r1, 0 + lsrs r3, 19 + adds r3, r2 + lsls r3, 1 + adds r6, r3 + cmp r1, r4 + bcs _08124E26 +_08124E04: + lsls r0, r1, 6 + adds r2, r6, r0 + movs r0, 0 + adds r3, r1, 0x1 + cmp r0, r5 + bcs _08124E1E +_08124E10: + strh r7, [r2] + adds r2, 0x2 + adds r0, 0x1 + lsls r0, 24 + lsrs r0, 24 + cmp r0, r5 + bcc _08124E10 +_08124E1E: + lsls r0, r3, 24 + lsrs r1, r0, 24 + cmp r1, r4 + bcc _08124E04 +_08124E26: + pop {r4-r7} + pop {r0} + bx r0 + thumb_func_end sub_8124DDC + + thumb_func_start sub_8124E2C +sub_8124E2C: @ 8124E2C + push {r4-r7,lr} + adds r7, r0, 0 + ldr r0, [sp, 0x14] + ldr r4, [sp, 0x18] + lsls r2, 24 + lsrs r2, 24 + lsls r3, 24 + lsls r0, 24 + lsrs r5, r0, 24 + lsls r4, 24 + lsrs r6, r4, 24 + movs r4, 0 + lsrs r3, 19 + adds r3, r2 + lsls r3, 1 + adds r7, r3 + cmp r4, r6 + bcs _08124E76 +_08124E50: + lsls r0, r4, 6 + adds r2, r7, r0 + movs r3, 0 + adds r4, 0x1 + cmp r3, r5 + bcs _08124E6E +_08124E5C: + ldrh r0, [r1] + strh r0, [r2] + adds r1, 0x2 + adds r2, 0x2 + adds r0, r3, 0x1 + lsls r0, 24 + lsrs r3, r0, 24 + cmp r3, r5 + bcc _08124E5C +_08124E6E: + lsls r0, r4, 24 + lsrs r4, r0, 24 + cmp r4, r6 + bcc _08124E50 +_08124E76: + pop {r4-r7} + pop {r0} + bx r0 + thumb_func_end sub_8124E2C + + .align 2, 0 @ Don't pad with nop. |