summaryrefslogtreecommitdiff
path: root/asm/roulette_util.s
diff options
context:
space:
mode:
Diffstat (limited to 'asm/roulette_util.s')
-rw-r--r--asm/roulette_util.s780
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.