summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorcamthesaxman <cameronghall@cox.net>2017-12-19 23:25:04 -0600
committercamthesaxman <cameronghall@cox.net>2017-12-19 23:25:04 -0600
commitb2460cb232e328fe2b4bb354c2ad789d0e79c1f0 (patch)
tree00e5e683bc377cdc3984bb940daea4e1f605dfe1
parentfa136a7ffbdeee5f8e1174b2d36c2e34c653a08a (diff)
decompile unref_sub_80B01E0 - sub_80B0F28
-rw-r--r--asm/contest.s2033
-rw-r--r--include/util.h1
-rw-r--r--src/contest.c1029
3 files changed, 1010 insertions, 2053 deletions
diff --git a/asm/contest.s b/asm/contest.s
index 09d347f7d..581fd60d6 100644
--- a/asm/contest.s
+++ b/asm/contest.s
@@ -5,2039 +5,6 @@
.text
- thumb_func_start unref_sub_80B01E0
-unref_sub_80B01E0: @ 80B01E0
- push {r4,r5,lr}
- movs r3, 0
- ldr r2, _080B0224 @ =gSprites
- ldr r4, _080B0228 @ =gSharedMem + 0x19204
- ldrb r1, [r4, 0x9]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r2, 0x1C
- adds r0, r2
- ldr r1, [r0]
- ldr r0, _080B022C @ =SpriteCallbackDummy
- cmp r1, r0
- bne _080B021A
- adds r5, r4, 0
- adds r5, 0x9
- adds r4, r1, 0
-_080B0202:
- adds r3, 0x1
- cmp r3, 0x3
- bgt _080B021A
- adds r0, r3, r5
- ldrb r1, [r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r2
- ldr r0, [r0]
- cmp r0, r4
- beq _080B0202
-_080B021A:
- cmp r3, 0x4
- beq _080B0230
- movs r0, 0
- b _080B0232
- .align 2, 0
-_080B0224: .4byte gSprites
-_080B0228: .4byte gSharedMem + 0x19204
-_080B022C: .4byte SpriteCallbackDummy
-_080B0230:
- movs r0, 0x1
-_080B0232:
- pop {r4,r5}
- pop {r1}
- bx r1
- thumb_func_end unref_sub_80B01E0
-
- thumb_func_start sub_80B0238
-sub_80B0238: @ 80B0238
- push {r4,lr}
- adds r4, r0, 0
- ldrb r1, [r4, 0x1]
- movs r0, 0x4
- negs r0, r0
- ands r0, r1
- movs r1, 0x1
- orrs r0, r1
- strb r0, [r4, 0x1]
- adds r0, r4, 0
- bl InitSpriteAffineAnim
- adds r0, r4, 0
- adds r0, 0x3E
- ldrb r1, [r0]
- movs r0, 0x4
- ands r0, r1
- cmp r0, 0
- beq _080B0268
- ldr r0, _080B0264 @ =sub_80B02A8
- b _080B0272
- .align 2, 0
-_080B0264: .4byte sub_80B02A8
-_080B0268:
- adds r0, r4, 0
- movs r1, 0x1
- bl StartSpriteAffineAnim
- ldr r0, _080B027C @ =sub_80B0280
-_080B0272:
- str r0, [r4, 0x1C]
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_080B027C: .4byte sub_80B0280
- thumb_func_end sub_80B0238
-
- thumb_func_start sub_80B0280
-sub_80B0280: @ 80B0280
- push {lr}
- adds r3, r0, 0
- adds r0, 0x3F
- ldrb r1, [r0]
- movs r0, 0x20
- ands r0, r1
- cmp r0, 0
- beq _080B02A0
- adds r2, r3, 0
- adds r2, 0x3E
- ldrb r0, [r2]
- movs r1, 0x4
- orrs r0, r1
- strb r0, [r2]
- ldr r0, _080B02A4 @ =sub_80B02A8
- str r0, [r3, 0x1C]
-_080B02A0:
- pop {r0}
- bx r0
- .align 2, 0
-_080B02A4: .4byte sub_80B02A8
- thumb_func_end sub_80B0280
-
- thumb_func_start sub_80B02A8
-sub_80B02A8: @ 80B02A8
- push {r4,lr}
- adds r4, r0, 0
- adds r2, r4, 0
- adds r2, 0x3E
- ldrb r1, [r2]
- movs r0, 0x5
- negs r0, r0
- ands r0, r1
- strb r0, [r2]
- movs r0, 0x2E
- ldrsh r1, [r4, r0]
- lsls r0, r1, 3
- subs r0, r1
- lsls r0, 2
- ldr r1, _080B02EC @ =gSharedMem + 0x19260
- adds r0, r1
- ldrb r1, [r0, 0xB]
- lsls r1, 30
- lsrs r1, 30
- adds r0, r4, 0
- bl StartSpriteAnim
- adds r0, r4, 0
- movs r1, 0x2
- bl StartSpriteAffineAnim
- ldr r0, _080B02F0 @ =sub_80B02F4
- str r0, [r4, 0x1C]
- movs r0, 0x18
- bl PlaySE
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_080B02EC: .4byte gSharedMem + 0x19260
-_080B02F0: .4byte sub_80B02F4
- thumb_func_end sub_80B02A8
-
- thumb_func_start sub_80B02F4
-sub_80B02F4: @ 80B02F4
- push {r4,lr}
- adds r4, r0, 0
- adds r0, 0x3F
- ldrb r1, [r0]
- movs r0, 0x20
- ands r0, r1
- cmp r0, 0
- beq _080B0318
- adds r0, r4, 0
- bl FreeSpriteOamMatrix
- ldrb r0, [r4, 0x1]
- movs r1, 0x4
- negs r1, r1
- ands r1, r0
- strb r1, [r4, 0x1]
- ldr r0, _080B0320 @ =SpriteCallbackDummy
- str r0, [r4, 0x1C]
-_080B0318:
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_080B0320: .4byte SpriteCallbackDummy
- thumb_func_end sub_80B02F4
-
- thumb_func_start sub_80B0324
-sub_80B0324: @ 80B0324
- push {r4,lr}
- ldr r0, _080B035C @ =sub_80B0458
- movs r1, 0x1E
- bl CreateTask
- lsls r0, 24
- lsrs r0, 24
- ldr r1, _080B0360 @ =gSharedMem + 0x19204
- strb r0, [r1, 0xD]
- movs r2, 0
- lsls r1, r0, 2
- adds r1, r0
- lsls r1, 3
- ldr r4, _080B0364 @ =gTasks + 0x8
- movs r3, 0xFF
-_080B0342:
- lsls r0, r2, 3
- adds r0, r1
- adds r0, r4
- strh r3, [r0]
- adds r0, r2, 0x1
- lsls r0, 24
- lsrs r2, r0, 24
- cmp r2, 0x3
- bls _080B0342
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_080B035C: .4byte sub_80B0458
-_080B0360: .4byte gSharedMem + 0x19204
-_080B0364: .4byte gTasks + 0x8
- thumb_func_end sub_80B0324
-
- thumb_func_start sub_80B0368
-sub_80B0368: @ 80B0368
- push {r4,r5,lr}
- lsls r0, 24
- lsrs r0, 24
- ldr r3, _080B03A0 @ =gTasks
- ldr r5, _080B03A4 @ =gSharedMem + 0x19204
- ldrb r2, [r5, 0xD]
- lsls r1, r2, 2
- adds r1, r2
- adds r1, r0
- lsls r1, 3
- adds r3, 0x8
- adds r1, r3
- movs r4, 0
- strh r4, [r1]
- lsls r0, 2
- adds r0, 0x1
- lsls r0, 1
- ldrb r2, [r5, 0xD]
- lsls r1, r2, 2
- adds r1, r2
- lsls r1, 3
- adds r0, r1
- adds r0, r3
- strh r4, [r0]
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_080B03A0: .4byte gTasks
-_080B03A4: .4byte gSharedMem + 0x19204
- thumb_func_end sub_80B0368
-
- thumb_func_start sub_80B03A8
-sub_80B03A8: @ 80B03A8
- push {r4,lr}
- adds r4, r0, 0
- lsls r4, 24
- lsrs r4, 24
- ldr r0, _080B03D0 @ =sub_80B03D8
- movs r1, 0x1F
- bl CreateTask
- lsls r0, 24
- lsrs r0, 24
- ldr r2, _080B03D4 @ =gTasks
- lsls r1, r0, 2
- adds r1, r0
- lsls r1, 3
- adds r1, r2
- strh r4, [r1, 0x8]
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_080B03D0: .4byte sub_80B03D8
-_080B03D4: .4byte gTasks
- thumb_func_end sub_80B03A8
-
- thumb_func_start sub_80B03D8
-sub_80B03D8: @ 80B03D8
- push {r4-r7,lr}
- lsls r0, 24
- lsrs r0, 24
- adds r5, r0, 0
- ldr r2, _080B044C @ =gTasks
- lsls r0, r5, 2
- adds r0, r5
- lsls r0, 3
- adds r0, r2
- ldrb r0, [r0, 0x8]
- adds r4, r0, 0
- ldr r6, _080B0450 @ =gSharedMem + 0x19204
- ldrb r1, [r6, 0xD]
- lsls r0, r1, 2
- adds r0, r1
- adds r0, r4
- lsls r0, 3
- adds r7, r2, 0
- adds r7, 0x8
- adds r1, r0, r7
- movs r2, 0
- ldrsh r0, [r1, r2]
- cmp r0, 0
- beq _080B040C
- cmp r0, 0xFF
- bne _080B0444
-_080B040C:
- movs r3, 0
- movs r0, 0xFF
- strh r0, [r1]
- lsls r1, r4, 2
- adds r1, 0x1
- lsls r1, 1
- ldrb r2, [r6, 0xD]
- lsls r0, r2, 2
- adds r0, r2
- lsls r0, 3
- adds r1, r0
- adds r1, r7
- strh r3, [r1]
- adds r0, r6, 0
- adds r0, 0x14
- adds r0, r4, r0
- ldrb r0, [r0]
- adds r0, 0x5
- lsls r0, 4
- adds r0, 0x6
- ldr r3, _080B0454 @ =0x00004bff
- movs r1, 0x2
- movs r2, 0
- bl BlendPalette
- adds r0, r5, 0
- bl DestroyTask
-_080B0444:
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_080B044C: .4byte gTasks
-_080B0450: .4byte gSharedMem + 0x19204
-_080B0454: .4byte 0x00004bff
- thumb_func_end sub_80B03D8
-
- thumb_func_start sub_80B0458
-sub_80B0458: @ 80B0458
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- lsls r0, 24
- lsrs r0, 24
- movs r6, 0
- lsls r1, r0, 2
- adds r1, r0
- mov r9, r1
- lsls r7, r1, 3
- ldr r0, _080B04A8 @ =gTasks + 0x8
- mov r8, r0
- movs r1, 0x8
- negs r1, r1
- add r1, r8
- mov r10, r1
-_080B047C:
- lsls r0, r6, 26
- lsrs r3, r0, 24
- lsls r0, r3, 1
- adds r0, r7
- mov r4, r8
- adds r2, r0, r4
- ldrh r4, [r2]
- movs r5, 0
- ldrsh r0, [r2, r5]
- cmp r0, 0xFF
- beq _080B04F6
- adds r0, r3, 0x1
- lsls r1, r0, 1
- adds r1, r7
- add r1, r8
- movs r5, 0
- ldrsh r1, [r1, r5]
- adds r5, r0, 0
- cmp r1, 0
- bne _080B04AC
- adds r0, r4, 0x1
- b _080B04AE
- .align 2, 0
-_080B04A8: .4byte gTasks + 0x8
-_080B04AC:
- subs r0, r4, 0x1
-_080B04AE:
- strh r0, [r2]
- lsls r1, r3, 1
- mov r0, r9
- lsls r2, r0, 3
- adds r0, r1, r2
- mov r3, r10
- adds r3, 0x8
- adds r0, r3
- movs r4, 0
- ldrsh r0, [r0, r4]
- adds r4, r1, 0
- cmp r0, 0x10
- beq _080B04CC
- cmp r0, 0
- bne _080B04DA
-_080B04CC:
- lsls r0, r5, 1
- adds r0, r2
- adds r0, r3
- ldrh r1, [r0]
- movs r2, 0x1
- eors r1, r2
- strh r1, [r0]
-_080B04DA:
- ldr r0, _080B0510 @ =gSharedMem + 0x19204
- adds r0, 0x14
- adds r0, r6, r0
- ldrb r0, [r0]
- adds r0, 0x5
- lsls r0, 4
- adds r0, 0x6
- adds r1, r4, r7
- add r1, r8
- ldrb r2, [r1]
- movs r1, 0x2
- ldr r3, _080B0514 @ =0x00004bff
- bl BlendPalette
-_080B04F6:
- adds r0, r6, 0x1
- lsls r0, 24
- lsrs r6, r0, 24
- cmp r6, 0x3
- bls _080B047C
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_080B0510: .4byte gSharedMem + 0x19204
-_080B0514: .4byte 0x00004bff
- thumb_func_end sub_80B0458
-
- thumb_func_start sub_80B0518
-sub_80B0518: @ 80B0518
- push {r4,lr}
- ldr r0, _080B0540 @ =sub_80B05FC
- movs r1, 0x1E
- bl CreateTask
- ldr r1, _080B0544 @ =gSharedMem + 0x19204
- strb r0, [r1, 0xE]
- movs r4, 0
-_080B0528:
- adds r0, r4, 0
- bl sub_80B0548
- adds r0, r4, 0x1
- lsls r0, 24
- lsrs r4, r0, 24
- cmp r4, 0x3
- bls _080B0528
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_080B0540: .4byte sub_80B05FC
-_080B0544: .4byte gSharedMem + 0x19204
- thumb_func_end sub_80B0518
-
- thumb_func_start sub_80B0548
-sub_80B0548: @ 80B0548
- push {r4,r5,lr}
- lsls r0, 24
- lsrs r0, 24
- ldr r3, _080B0580 @ =gTasks
- ldr r4, _080B0584 @ =gSharedMem + 0x19204
- ldrb r2, [r4, 0xE]
- lsls r1, r2, 2
- adds r1, r2
- adds r1, r0
- lsls r1, 3
- adds r3, 0x8
- adds r1, r3
- movs r5, 0
- movs r2, 0xFF
- strh r2, [r1]
- lsls r0, 2
- adds r0, 0x1
- lsls r0, 1
- ldrb r2, [r4, 0xE]
- lsls r1, r2, 2
- adds r1, r2
- lsls r1, 3
- adds r0, r1
- adds r0, r3
- strh r5, [r0]
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_080B0580: .4byte gTasks
-_080B0584: .4byte gSharedMem + 0x19204
- thumb_func_end sub_80B0548
-
- thumb_func_start sub_80B0588
-sub_80B0588: @ 80B0588
- push {r4,lr}
- movs r4, 0
-_080B058C:
- adds r0, r4, 0
- bl sub_80B05A4
- adds r0, r4, 0x1
- lsls r0, 24
- lsrs r4, r0, 24
- cmp r4, 0x3
- bls _080B058C
- pop {r4}
- pop {r0}
- bx r0
- thumb_func_end sub_80B0588
-
- thumb_func_start sub_80B05A4
-sub_80B05A4: @ 80B05A4
- push {r4-r6,lr}
- adds r4, r0, 0
- lsls r4, 24
- lsrs r4, 24
- adds r0, r4, 0
- bl sub_80B0548
- adds r0, r4, 0x5
- lsls r2, r0, 5
- ldr r3, _080B05E8 @ =gPlttBufferUnfaded + 0x14
- adds r6, r2, r3
- ldr r5, _080B05EC @ =gPlttBufferFaded + 0x14
- adds r2, r5
- ldr r1, _080B05F0 @ =0x040000d4
- str r6, [r1]
- str r2, [r1, 0x4]
- ldr r2, _080B05F4 @ =0x80000001
- str r2, [r1, 0x8]
- ldr r6, [r1, 0x8]
- lsls r0, 4
- adds r4, 0xC
- adds r0, r4
- lsls r0, 1
- subs r3, 0x14
- adds r3, r0, r3
- subs r5, 0x14
- adds r0, r5
- str r3, [r1]
- str r0, [r1, 0x4]
- str r2, [r1, 0x8]
- ldr r0, [r1, 0x8]
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_080B05E8: .4byte gPlttBufferUnfaded + 0x14
-_080B05EC: .4byte gPlttBufferFaded + 0x14
-_080B05F0: .4byte 0x040000d4
-_080B05F4: .4byte 0x80000001
- thumb_func_end sub_80B05A4
-
- thumb_func_start nullsub_19
-nullsub_19: @ 80B05F8
- bx lr
- thumb_func_end nullsub_19
-
- thumb_func_start sub_80B05FC
-sub_80B05FC: @ 80B05FC
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- lsls r0, 24
- lsrs r0, 24
- movs r7, 0
- lsls r1, r0, 2
- adds r1, r0
- mov r9, r1
- lsls r6, r1, 3
- ldr r0, _080B0664 @ =gTasks + 0x8
- mov r8, r0
- ldr r1, _080B0668 @ =0x00004bff
- mov r10, r1
-_080B061C:
- lsls r0, r7, 26
- lsrs r3, r0, 24
- lsls r0, r3, 1
- adds r0, r6
- mov r4, r8
- adds r2, r0, r4
- movs r5, 0
- ldrsh r0, [r2, r5]
- cmp r0, 0xFF
- beq _080B06C2
- adds r0, r3, 0x2
- lsls r0, 1
- adds r0, r6
- adds r1, r0, r4
- ldrh r0, [r1]
- adds r0, 0x1
- movs r4, 0
- strh r0, [r1]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x2
- ble _080B06C2
- strh r4, [r1]
- adds r0, r3, 0x1
- lsls r1, r0, 1
- adds r1, r6
- add r1, r8
- movs r4, 0
- ldrsh r1, [r1, r4]
- adds r4, r0, 0
- cmp r1, 0
- bne _080B066C
- ldrh r0, [r2]
- adds r0, 0x1
- b _080B0670
- .align 2, 0
-_080B0664: .4byte gTasks + 0x8
-_080B0668: .4byte 0x00004bff
-_080B066C:
- ldrh r0, [r2]
- subs r0, 0x1
-_080B0670:
- strh r0, [r2]
- lsls r1, r3, 1
- mov r5, r9
- lsls r2, r5, 3
- adds r0, r1, r2
- ldr r3, _080B06DC @ =gTasks
- adds r3, 0x8
- adds r0, r3
- movs r5, 0
- ldrsh r0, [r0, r5]
- adds r5, r1, 0
- cmp r0, 0x10
- beq _080B068E
- cmp r0, 0
- bne _080B069C
-_080B068E:
- lsls r0, r4, 1
- adds r0, r2
- adds r0, r3
- ldrh r1, [r0]
- movs r2, 0x1
- eors r1, r2
- strh r1, [r0]
-_080B069C:
- adds r4, r7, 0x5
- lsls r4, 4
- adds r0, r4, 0
- adds r0, 0xA
- adds r5, r6
- add r5, r8
- ldrb r2, [r5]
- movs r1, 0x1
- mov r3, r10
- bl BlendPalette
- adds r4, 0xC
- adds r4, r7
- ldrb r2, [r5]
- adds r0, r4, 0
- movs r1, 0x1
- mov r3, r10
- bl BlendPalette
-_080B06C2:
- adds r0, r7, 0x1
- lsls r0, 24
- lsrs r7, r0, 24
- cmp r7, 0x3
- bls _080B061C
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_080B06DC: .4byte gTasks
- thumb_func_end sub_80B05FC
-
- thumb_func_start unref_sub_80B06E0
-unref_sub_80B06E0: @ 80B06E0
- push {r4-r7,lr}
- mov r7, r8
- push {r7}
- adds r7, r0, 0
- ldr r0, _080B073C @ =sub_80B0748
- movs r1, 0xA
- bl CreateTask
- lsls r0, 24
- lsrs r5, r0, 24
- movs r3, 0
- lsls r0, r5, 2
- adds r0, r5
- lsls r6, r0, 3
- ldr r0, _080B0740 @ =gTasks + 0x8
- mov r8, r0
- ldr r1, _080B0744 @ =gSharedMem + 0x19338
- mov r12, r1
-_080B0704:
- lsls r4, r3, 2
- lsls r0, r3, 26
- lsrs r0, 23
- adds r0, r6
- add r0, r8
- adds r2, r7, r3
- ldrb r1, [r2]
- strh r1, [r0]
- ldrb r0, [r2]
- cmp r0, 0
- beq _080B0726
- mov r1, r12
- adds r0, r4, r1
- ldrb r1, [r0, 0x2]
- movs r2, 0x2
- orrs r1, r2
- strb r1, [r0, 0x2]
-_080B0726:
- adds r0, r3, 0x1
- lsls r0, 24
- lsrs r3, r0, 24
- cmp r3, 0x3
- bls _080B0704
- adds r0, r5, 0
- pop {r3}
- mov r8, r3
- pop {r4-r7}
- pop {r1}
- bx r1
- .align 2, 0
-_080B073C: .4byte sub_80B0748
-_080B0740: .4byte gTasks + 0x8
-_080B0744: .4byte gSharedMem + 0x19338
- thumb_func_end unref_sub_80B06E0
-
- thumb_func_start sub_80B0748
-sub_80B0748: @ 80B0748
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- sub sp, 0x20
- lsls r0, 24
- lsrs r0, 24
- str r0, [sp]
- movs r0, 0
- str r0, [sp, 0x4]
- ldr r2, _080B07F4 @ =gTasks
- movs r1, 0x8
- adds r1, r2
- mov r10, r1
- ldr r3, [sp]
- lsls r3, 2
- str r3, [sp, 0x1C]
- ldr r1, [sp]
- adds r0, r3, r1
- lsls r0, 3
- str r0, [sp, 0xC]
-_080B0774:
- ldr r0, _080B07F8 @ =gUnknown_02038696
- ldr r3, [sp, 0x4]
- adds r0, r3, r0
- ldrb r4, [r0]
- lsls r0, r4, 26
- lsrs r1, r0, 24
- lsls r0, r1, 1
- str r0, [sp, 0x8]
- ldr r3, [sp]
- lsls r0, r3, 2
- adds r0, r3
- lsls r6, r0, 3
- ldr r3, [sp, 0x8]
- adds r0, r3, r6
- add r0, r10
- mov r9, r0
- ldrb r7, [r0]
- cmp r7, 0
- bne _080B079C
- b _080B0910
-_080B079C:
- adds r3, r1, 0x1
- lsls r0, r3, 1
- adds r0, r6
- add r0, r10
- ldrb r0, [r0]
- mov r8, r0
- adds r2, r1, 0x2
- lsls r0, r2, 1
- adds r0, r6
- add r0, r10
- ldrb r5, [r0]
- adds r1, 0x3
- lsls r0, r1, 1
- adds r0, r6
- add r0, r10
- ldrb r6, [r0]
- str r3, [sp, 0x10]
- str r2, [sp, 0x14]
- str r1, [sp, 0x18]
- cmp r7, 0x1
- bne _080B0818
- adds r0, r6, 0x1
- lsls r0, 24
- lsrs r6, r0, 24
- cmp r6, 0x1
- beq _080B07D2
- b _080B08EA
-_080B07D2:
- movs r6, 0
- adds r0, r4, 0x5
- lsls r0, 4
- adds r0, 0x1
- movs r1, 0x3
- adds r2, r5, 0
- ldr r3, _080B07FC @ =0x00007fff
- bl BlendPalette
- cmp r5, 0
- bne _080B0800
- mov r0, r8
- cmp r0, 0x4
- bne _080B0800
- mov r1, r9
- strh r6, [r1]
- b _080B08EA
- .align 2, 0
-_080B07F4: .4byte gTasks
-_080B07F8: .4byte gUnknown_02038696
-_080B07FC: .4byte 0x00007fff
-_080B0800:
- adds r0, r5, 0x2
- lsls r0, 24
- lsrs r5, r0, 24
- cmp r5, 0xD
- bls _080B08EA
- movs r5, 0
- mov r0, r8
- adds r0, 0x1
- lsls r0, 24
- lsrs r0, 24
- mov r8, r0
- b _080B08EA
-_080B0818:
- cmp r7, 0x2
- beq _080B0820
- cmp r7, 0x4
- bne _080B0896
-_080B0820:
- adds r0, r6, 0x1
- lsls r0, 24
- lsrs r6, r0, 24
- cmp r6, 0x3
- bne _080B08EA
- movs r6, 0
- adds r0, r4, 0x5
- lsls r0, 4
- adds r0, 0x1
- ldr r2, _080B0854 @ =gUnknown_083CC5A4
- lsls r1, r4, 1
- adds r1, r2
- ldrh r3, [r1]
- movs r1, 0x3
- adds r2, r5, 0
- bl BlendPalette
- cmp r5, 0
- bne _080B0858
- mov r2, r8
- cmp r2, 0x2
- bne _080B0858
- mov r3, r9
- strh r6, [r3]
- b _080B08EA
- .align 2, 0
-_080B0854: .4byte gUnknown_083CC5A4
-_080B0858:
- adds r0, r5, 0x1
- lsls r0, 24
- lsrs r5, r0, 24
- cmp r5, 0xE
- bne _080B08EA
- movs r5, 0
- mov r0, r8
- adds r0, 0x1
- lsls r0, 24
- lsrs r0, 24
- mov r8, r0
- cmp r7, 0x4
- bne _080B08EA
- cmp r0, 0x1
- bne _080B08EA
- adds r4, 0x9
- lsls r4, 4
- adds r0, r4, 0x2
- movs r1, 0x1
- movs r2, 0x4
- movs r3, 0
- bl BlendPalette
- adds r4, 0x5
- adds r0, r4, 0
- movs r1, 0x1
- movs r2, 0x4
- movs r3, 0
- bl BlendPalette
- b _080B08EA
-_080B0896:
- cmp r7, 0x3
- bne _080B08EA
- adds r0, r6, 0x1
- lsls r0, 24
- lsrs r6, r0, 24
- cmp r6, 0xC
- bne _080B08EA
- movs r6, 0
- adds r0, r4, 0x5
- lsls r0, 4
- adds r4, r0, 0x1
- adds r0, r4, 0
- movs r1, 0x3
- adds r2, r5, 0
- movs r3, 0
- bl BlendPalette
- adds r0, r5, 0x1
- lsls r0, 24
- lsrs r5, r0, 24
- cmp r5, 0x5
- bne _080B08EA
- ldr r0, _080B0930 @ =gPlttBufferFaded
- lsls r1, r4, 1
- adds r0, r1, r0
- ldrh r2, [r0]
- ldr r0, _080B0934 @ =gPlttBufferUnfaded
- adds r1, r0
- ldrh r0, [r1]
- ldr r1, _080B0938 @ =0x040000d4
- str r2, [r1]
- str r0, [r1, 0x4]
- movs r0, 0x80
- lsls r0, 24
- orrs r7, r0
- str r7, [r1, 0x8]
- ldr r0, [r1, 0x8]
- ldr r1, [sp, 0x8]
- ldr r2, [sp, 0xC]
- adds r0, r1, r2
- add r0, r10
- strh r6, [r0]
-_080B08EA:
- ldr r3, [sp, 0x10]
- lsls r0, r3, 1
- ldr r1, [sp, 0xC]
- adds r0, r1
- add r0, r10
- mov r2, r8
- strh r2, [r0]
- ldr r3, [sp, 0x14]
- lsls r0, r3, 1
- adds r0, r1
- add r0, r10
- strh r5, [r0]
- ldr r1, [sp, 0x18]
- lsls r0, r1, 1
- ldr r2, [sp, 0xC]
- adds r0, r2
- add r0, r10
- strh r6, [r0]
- ldr r2, _080B093C @ =gTasks
-_080B0910:
- ldr r0, [sp, 0x4]
- adds r0, 0x1
- lsls r0, 24
- lsrs r0, 24
- str r0, [sp, 0x4]
- cmp r0, 0x3
- bhi _080B0920
- b _080B0774
-_080B0920:
- movs r4, 0
- ldr r3, [sp, 0x1C]
- ldr r1, [sp]
- adds r0, r3, r1
- lsls r1, r0, 3
- adds r2, 0x8
- adds r0, r1, r2
- b _080B0950
- .align 2, 0
-_080B0930: .4byte gPlttBufferFaded
-_080B0934: .4byte gPlttBufferUnfaded
-_080B0938: .4byte 0x040000d4
-_080B093C: .4byte gTasks
-_080B0940:
- adds r0, r4, 0x1
- lsls r0, 24
- lsrs r4, r0, 24
- cmp r4, 0x3
- bhi _080B0958
- lsls r0, r4, 3
- adds r0, r1
- adds r0, r2
-_080B0950:
- movs r3, 0
- ldrsh r0, [r0, r3]
- cmp r0, 0
- beq _080B0940
-_080B0958:
- cmp r4, 0x4
- bne _080B0980
- movs r4, 0
- ldr r3, _080B0990 @ =gSharedMem + 0x19338
- movs r5, 0x3
- negs r5, r5
-_080B0964:
- lsls r1, r4, 2
- adds r1, r3
- ldrb r2, [r1, 0x2]
- adds r0, r5, 0
- ands r0, r2
- strb r0, [r1, 0x2]
- adds r0, r4, 0x1
- lsls r0, 24
- lsrs r4, r0, 24
- cmp r4, 0x3
- bls _080B0964
- ldr r0, [sp]
- bl DestroyTask
-_080B0980:
- add sp, 0x20
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_080B0990: .4byte gSharedMem + 0x19338
- thumb_func_end sub_80B0748
-
- thumb_func_start unref_sub_80B0994
-unref_sub_80B0994: @ 80B0994
- push {lr}
- lsls r0, 24
- cmp r0, 0
- beq _080B09A6
- ldr r0, _080B09AC @ =gSharedMem + 0x19204
- ldrb r1, [r0, 0x6]
- movs r2, 0x4
- orrs r1, r2
- strb r1, [r0, 0x6]
-_080B09A6:
- pop {r0}
- bx r0
- .align 2, 0
-_080B09AC: .4byte gSharedMem + 0x19204
- thumb_func_end unref_sub_80B0994
-
- thumb_func_start sub_80B09B0
-sub_80B09B0: @ 80B09B0
- push {lr}
- lsls r0, 24
- lsrs r2, r0, 24
- lsls r0, r2, 3
- subs r0, r2
- lsls r0, 2
- ldr r1, _080B09D4 @ =gSharedMem + 0x19260
- adds r0, r1
- ldrb r1, [r0, 0x15]
- movs r0, 0x10
- ands r0, r1
- cmp r0, 0
- beq _080B09D8
- adds r0, r2, 0
- bl sub_80B0368
- b _080B09DE
- .align 2, 0
-_080B09D4: .4byte gSharedMem + 0x19260
-_080B09D8:
- adds r0, r2, 0
- bl sub_80B03A8
-_080B09DE:
- pop {r0}
- bx r0
- thumb_func_end sub_80B09B0
-
- thumb_func_start sub_80B09E4
-sub_80B09E4: @ 80B09E4
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- sub sp, 0xC
- mov r9, r0
- lsls r0, 24
- lsrs r0, 24
- mov r9, r0
- ldr r0, _080B0B2C @ =gUnknown_02038696
- mov r1, r9
- adds r7, r1, r0
- ldrb r0, [r7]
- lsls r5, r0, 2
- adds r5, r0
- lsls r5, 27
- movs r2, 0x80
- lsls r2, 22
- adds r5, r2
- lsrs r5, 24
- lsls r4, r1, 3
- ldr r0, _080B0B30 @ =gUnknown_083CC4B4
- adds r0, r4, r0
- bl LoadCompressedObjectPic
- ldr r0, _080B0B34 @ =gUnknown_083CC4D4
- adds r4, r0
- adds r0, r4, 0
- bl LoadSpritePalette
- mov r3, r9
- lsls r4, r3, 1
- add r4, r9
- lsls r4, 3
- ldr r0, _080B0B38 @ =gSpriteTemplate_83CC53C
- adds r4, r0
- adds r0, r4, 0
- movs r1, 0xB8
- adds r2, r5, 0
- movs r3, 0x1D
- bl CreateSprite
- mov r8, r0
- mov r0, r8
- lsls r0, 24
- lsrs r0, 24
- mov r8, r0
- adds r0, r4, 0
- movs r1, 0xF8
- adds r2, r5, 0
- movs r3, 0x1D
- bl CreateSprite
- adds r6, r0, 0
- lsls r6, 24
- lsrs r6, 24
- ldr r1, _080B0B3C @ =gSprites
- mov r10, r1
- lsls r5, r6, 4
- adds r5, r6
- lsls r5, 2
- add r5, r10
- ldrh r2, [r5, 0x4]
- lsls r1, r2, 22
- lsrs r1, 22
- adds r1, 0x40
- ldr r3, _080B0B40 @ =0x000003ff
- adds r0, r3, 0
- ands r1, r0
- ldr r0, _080B0B44 @ =0xfffffc00
- ands r0, r2
- orrs r0, r1
- strh r0, [r5, 0x4]
- ldrb r0, [r7]
- lsls r3, r0, 2
- adds r3, r0
- lsls r3, 6
- ldr r0, _080B0B48 @ =0x0600e026
- adds r3, r0
- mov r1, r8
- lsls r4, r1, 4
- add r4, r8
- lsls r4, 2
- add r4, r10
- ldrh r0, [r4, 0x4]
- lsls r0, 22
- lsrs r0, 17
- ldr r2, _080B0B4C @ =0x06010000
- mov r10, r2
- add r0, r10
- str r0, [sp]
- movs r0, 0
- movs r1, 0x3
- movs r2, 0xC0
- lsls r2, 19
- bl CopySpriteTiles
- ldrb r0, [r7]
- lsls r3, r0, 2
- adds r3, r0
- lsls r3, 6
- ldr r7, _080B0B50 @ =0x0600e036
- adds r3, r7
- ldrh r0, [r5, 0x4]
- lsls r0, 22
- lsrs r0, 17
- add r0, r10
- str r0, [sp]
- movs r0, 0
- movs r1, 0x3
- movs r2, 0xC0
- lsls r2, 19
- bl CopySpriteTiles
- ldrh r0, [r4, 0x4]
- lsls r0, 22
- lsrs r0, 17
- movs r1, 0xA0
- lsls r1, 3
- adds r0, r1
- add r0, r10
- movs r2, 0
- str r2, [sp, 0x8]
- ldr r1, _080B0B54 @ =0x040000d4
- add r3, sp, 0x8
- mov r12, r3
- str r3, [r1]
- str r0, [r1, 0x4]
- ldr r3, _080B0B58 @ =0x850000c0
- str r3, [r1, 0x8]
- ldr r0, [r1, 0x8]
- add r0, sp, 0x4
- strb r2, [r0]
- strb r2, [r0]
- ldrh r0, [r5, 0x4]
- lsls r0, 22
- lsrs r0, 17
- movs r7, 0xA0
- lsls r7, 3
- adds r0, r7
- add r0, r10
- str r2, [sp, 0x8]
- mov r2, r12
- str r2, [r1]
- str r0, [r1, 0x4]
- str r3, [r1, 0x8]
- ldr r0, [r1, 0x8]
- strh r6, [r4, 0x2E]
- mov r3, r8
- strh r3, [r5, 0x2E]
- mov r7, r9
- strh r7, [r4, 0x30]
- mov r0, r9
- strh r0, [r5, 0x30]
- mov r0, r8
- add sp, 0xC
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r1}
- bx r1
- .align 2, 0
-_080B0B2C: .4byte gUnknown_02038696
-_080B0B30: .4byte gUnknown_083CC4B4
-_080B0B34: .4byte gUnknown_083CC4D4
-_080B0B38: .4byte gSpriteTemplate_83CC53C
-_080B0B3C: .4byte gSprites
-_080B0B40: .4byte 0x000003ff
-_080B0B44: .4byte 0xfffffc00
-_080B0B48: .4byte 0x0600e026
-_080B0B4C: .4byte 0x06010000
-_080B0B50: .4byte 0x0600e036
-_080B0B54: .4byte 0x040000d4
-_080B0B58: .4byte 0x850000c0
- thumb_func_end sub_80B09E4
-
- thumb_func_start sub_80B0B5C
-sub_80B0B5C: @ 80B0B5C
- push {r4,r5,lr}
- lsls r0, 24
- lsrs r0, 24
- ldr r1, _080B0B94 @ =gSprites
- lsls r5, r0, 4
- adds r5, r0
- lsls r5, 2
- adds r5, r1
- ldrh r0, [r5, 0x2E]
- lsls r0, 24
- lsrs r0, 24
- lsls r4, r0, 4
- adds r4, r0
- lsls r4, 2
- adds r4, r1
- adds r0, r4, 0
- bl FreeSpriteOamMatrix
- adds r0, r4, 0
- bl DestroySprite
- adds r0, r5, 0
- bl DestroySpriteAndFreeResources
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_080B0B94: .4byte gSprites
- thumb_func_end sub_80B0B5C
-
- thumb_func_start sub_80B0B98
-sub_80B0B98: @ 80B0B98
- ldr r1, _080B0BAC @ =REG_BLDCNT
- movs r2, 0xFD
- lsls r2, 6
- adds r0, r2, 0
- strh r0, [r1]
- adds r1, 0x2
- ldr r2, _080B0BB0 @ =0x00000907
- adds r0, r2, 0
- strh r0, [r1]
- bx lr
- .align 2, 0
-_080B0BAC: .4byte REG_BLDCNT
-_080B0BB0: .4byte 0x00000907
- thumb_func_end sub_80B0B98
-
- thumb_func_start sub_80B0BB4
-sub_80B0BB4: @ 80B0BB4
- ldr r0, _080B0BC0 @ =REG_BLDCNT
- movs r1, 0
- strh r1, [r0]
- adds r0, 0x2
- strh r1, [r0]
- bx lr
- .align 2, 0
-_080B0BC0: .4byte REG_BLDCNT
- thumb_func_end sub_80B0BB4
-
- thumb_func_start sub_80B0BC4
-sub_80B0BC4: @ 80B0BC4
- push {r4-r6,lr}
- mov r6, r9
- mov r5, r8
- push {r5,r6}
- adds r4, r0, 0
- mov r9, r1
- lsls r4, 24
- lsrs r4, 24
- mov r0, r9
- lsls r0, 24
- lsrs r0, 24
- mov r9, r0
- bl sub_80B0B98
- ldr r1, _080B0C38 @ =gSprites
- mov r8, r1
- lsls r6, r4, 4
- adds r6, r4
- lsls r6, 2
- adds r0, r6, r1
- movs r1, 0x30
- ldrsh r2, [r0, r1]
- lsls r2, 2
- ldr r1, _080B0C3C @ =gSharedMem + 0x19338
- adds r2, r1
- ldrb r1, [r2, 0x2]
- movs r3, 0x2
- orrs r1, r3
- strb r1, [r2, 0x2]
- ldrh r5, [r0, 0x2E]
- lsls r5, 24
- lsrs r5, 24
- movs r1, 0x1
- bl StartSpriteAffineAnim
- lsls r4, r5, 4
- adds r4, r5
- lsls r4, 2
- mov r1, r8
- adds r0, r4, r1
- movs r1, 0x1
- bl StartSpriteAffineAnim
- movs r0, 0x1C
- add r8, r0
- add r6, r8
- ldr r0, _080B0C40 @ =sub_80B0C5C
- str r0, [r6]
- add r4, r8
- ldr r0, _080B0C44 @ =SpriteCallbackDummy
- str r0, [r4]
- mov r1, r9
- cmp r1, 0
- bne _080B0C48
- movs r0, 0x65
- bl PlaySE
- b _080B0C4E
- .align 2, 0
-_080B0C38: .4byte gSprites
-_080B0C3C: .4byte gSharedMem + 0x19338
-_080B0C40: .4byte sub_80B0C5C
-_080B0C44: .4byte SpriteCallbackDummy
-_080B0C48:
- movs r0, 0x2
- bl PlaySE
-_080B0C4E:
- pop {r3,r4}
- mov r8, r3
- mov r9, r4
- pop {r4-r6}
- pop {r0}
- bx r0
- thumb_func_end sub_80B0BC4
-
- thumb_func_start sub_80B0C5C
-sub_80B0C5C: @ 80B0C5C
- push {lr}
- mov r12, r0
- adds r0, 0x3F
- ldrb r1, [r0]
- movs r0, 0x20
- ands r0, r1
- cmp r0, 0
- beq _080B0CA4
- mov r0, r12
- ldrh r1, [r0, 0x2E]
- lsls r1, 24
- lsrs r1, 24
- ldr r2, _080B0CA8 @ =gSprites
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r1, r0, r2
- adds r0, r1, 0
- adds r0, 0x3F
- ldrb r0, [r0]
- lsls r0, 26
- cmp r0, 0
- bge _080B0CA4
- mov r3, r12
- adds r3, 0x3E
- ldrb r0, [r3]
- movs r2, 0x4
- orrs r0, r2
- strb r0, [r3]
- adds r1, 0x3E
- ldrb r0, [r1]
- orrs r0, r2
- strb r0, [r1]
- ldr r0, _080B0CAC @ =sub_80B0CB0
- mov r1, r12
- str r0, [r1, 0x1C]
-_080B0CA4:
- pop {r0}
- bx r0
- .align 2, 0
-_080B0CA8: .4byte gSprites
-_080B0CAC: .4byte sub_80B0CB0
- thumb_func_end sub_80B0C5C
-
- thumb_func_start sub_80B0CB0
-sub_80B0CB0: @ 80B0CB0
- push {lr}
- movs r1, 0x30
- ldrsh r2, [r0, r1]
- lsls r2, 2
- ldr r1, _080B0CD8 @ =gSharedMem + 0x19338
- adds r2, r1
- ldrb r3, [r2, 0x2]
- movs r1, 0x3
- negs r1, r1
- ands r1, r3
- strb r1, [r2, 0x2]
- ldrh r0, [r0, 0x2E]
- lsls r0, 24
- lsrs r0, 24
- bl sub_80B0B5C
- bl sub_80B0BB4
- pop {r0}
- bx r0
- .align 2, 0
-_080B0CD8: .4byte gSharedMem + 0x19338
- thumb_func_end sub_80B0CB0
-
- thumb_func_start sub_80B0CDC
-sub_80B0CDC: @ 80B0CDC
- lsls r0, 24
- lsrs r0, 22
- ldr r1, _080B0CF0 @ =gSharedMem + 0x19338
- adds r0, r1
- ldrb r2, [r0, 0x2]
- movs r1, 0x3
- negs r1, r1
- ands r1, r2
- strb r1, [r0, 0x2]
- bx lr
- .align 2, 0
-_080B0CF0: .4byte gSharedMem + 0x19338
- thumb_func_end sub_80B0CDC
-
- thumb_func_start unref_sub_80B0CF4
-unref_sub_80B0CF4: @ 80B0CF4
- push {r4-r7,lr}
- mov r7, r8
- push {r7}
- sub sp, 0x8
- ldr r0, _080B0D5C @ =gSharedMem
- movs r1, 0xC0
- lsls r1, 9
- adds r0, r1
- ldrb r1, [r0]
- movs r2, 0x1
- eors r1, r2
- strb r1, [r0]
- cmp r1, 0
- bne _080B0D6C
- movs r4, 0
- ldr r6, _080B0D60 @ =gUnknown_083CA308
- adds r3, r6, 0x1
- mov r8, r3
- ldr r5, _080B0D64 @ =gUnknown_083CA310
- adds r7, r5, 0x1
-_080B0D1C:
- lsls r1, r4, 1
- adds r0, r1, r6
- ldrb r2, [r0]
- mov r3, r8
- adds r0, r1, r3
- ldrb r3, [r0]
- adds r0, r1, r5
- ldrb r0, [r0]
- adds r0, 0x5
- lsls r0, 24
- lsrs r0, 24
- str r0, [sp]
- adds r1, r7
- ldrb r0, [r1]
- adds r0, 0x1
- lsls r0, 24
- lsrs r0, 24
- str r0, [sp, 0x4]
- ldr r0, _080B0D68 @ =gUnknown_03004210
- movs r1, 0
- bl FillWindowRect_DefaultPalette
- adds r0, r4, 0x1
- lsls r0, 24
- lsrs r4, r0, 24
- cmp r4, 0x3
- bls _080B0D1C
- bl sub_80AE514
- bl sub_80AEB30
- b _080B0D70
- .align 2, 0
-_080B0D5C: .4byte gSharedMem
-_080B0D60: .4byte gUnknown_083CA308
-_080B0D64: .4byte gUnknown_083CA310
-_080B0D68: .4byte gUnknown_03004210
-_080B0D6C:
- bl sub_80B0D7C
-_080B0D70:
- add sp, 0x8
- pop {r3}
- mov r8, r3
- pop {r4-r7}
- pop {r0}
- bx r0
- thumb_func_end unref_sub_80B0CF4
-
- thumb_func_start sub_80B0D7C
-sub_80B0D7C: @ 80B0D7C
- push {r4-r7,lr}
- mov r7, r9
- mov r6, r8
- push {r6,r7}
- sub sp, 0x10
- movs r5, 0
- ldr r0, _080B0ED0 @ =gSharedMem
- movs r1, 0xC0
- lsls r1, 9
- adds r0, r1
- ldrb r0, [r0]
- cmp r0, 0
- bne _080B0D98
- b _080B0EC2
-_080B0D98:
- movs r4, 0
- ldr r7, _080B0ED4 @ =gUnknown_083CA308
- adds r3, r7, 0x1
- mov r9, r3
- ldr r6, _080B0ED8 @ =gUnknown_083CA310
- adds r0, r6, 0x1
- mov r8, r0
-_080B0DA6:
- lsls r1, r4, 1
- adds r0, r1, r7
- ldrb r2, [r0]
- mov r3, r9
- adds r0, r1, r3
- ldrb r3, [r0]
- adds r0, r1, r6
- ldrb r0, [r0]
- adds r0, 0x5
- lsls r0, 24
- lsrs r0, 24
- str r0, [sp]
- add r1, r8
- ldrb r0, [r1]
- adds r0, 0x1
- lsls r0, 24
- lsrs r0, 24
- str r0, [sp, 0x4]
- ldr r0, _080B0EDC @ =gUnknown_03004210
- movs r1, 0
- bl FillWindowRect_DefaultPalette
- adds r0, r4, 0x1
- lsls r0, 24
- lsrs r4, r0, 24
- cmp r4, 0x3
- bls _080B0DA6
- movs r4, 0
- ldr r6, _080B0ED8 @ =gUnknown_083CA310
- adds r7, r6, 0x1
-_080B0DE2:
- lsls r0, r4, 3
- subs r0, r4
- lsls r0, 2
- ldr r1, _080B0EE0 @ =gSharedMem + 0x19260
- adds r0, r1
- ldrh r2, [r0, 0x4]
- movs r1, 0x4
- ldrsh r0, [r0, r1]
- cmp r0, 0
- bge _080B0E08
- negs r0, r0
- lsls r0, 16
- lsrs r2, r0, 16
- add r1, sp, 0x8
- movs r0, 0xAE
- strb r0, [r1]
- adds r0, r5, 0x1
- lsls r0, 24
- lsrs r5, r0, 24
-_080B0E08:
- mov r0, sp
- adds r0, r5
- adds r0, 0x8
- lsls r1, r2, 16
- asrs r1, 16
- movs r2, 0
- movs r3, 0x4
- bl ConvertIntToDecimalStringN
- ldr r0, _080B0EE4 @ =gUnknown_02038696
- adds r0, r4, r0
- ldrb r0, [r0]
- movs r1, 0x16
- adds r2, r0, 0
- muls r2, r1
- movs r3, 0x94
- lsls r3, 2
- adds r2, r3
- lsls r0, 1
- adds r1, r0, r6
- ldrb r3, [r1]
- adds r0, r7
- ldrb r0, [r0]
- str r0, [sp]
- ldr r0, _080B0EDC @ =gUnknown_03004210
- add r1, sp, 0x8
- bl sub_8003460
- movs r5, 0
- adds r0, r4, 0x1
- lsls r0, 24
- lsrs r4, r0, 24
- cmp r4, 0x3
- bls _080B0DE2
- movs r4, 0
- ldr r6, _080B0ED4 @ =gUnknown_083CA308
- adds r7, r6, 0x1
-_080B0E52:
- lsls r0, r4, 3
- subs r0, r4
- lsls r0, 2
- ldr r1, _080B0EE0 @ =gSharedMem + 0x19260
- adds r0, r1
- ldrh r2, [r0, 0x2]
- movs r1, 0x2
- ldrsh r0, [r0, r1]
- cmp r0, 0
- bge _080B0E78
- negs r0, r0
- lsls r0, 16
- lsrs r2, r0, 16
- add r1, sp, 0x8
- movs r0, 0xAE
- strb r0, [r1]
- adds r0, r5, 0x1
- lsls r0, 24
- lsrs r5, r0, 24
-_080B0E78:
- mov r0, sp
- adds r0, r5
- adds r0, 0x8
- lsls r1, r2, 16
- asrs r1, 16
- movs r2, 0
- movs r3, 0x4
- bl ConvertIntToDecimalStringN
- ldr r0, _080B0EE4 @ =gUnknown_02038696
- adds r0, r4, r0
- ldrb r1, [r0]
- lsls r2, r1, 2
- adds r2, r1
- lsls r2, 18
- movs r3, 0x80
- lsls r3, 18
- adds r2, r3
- lsrs r2, 16
- lsls r1, 1
- adds r0, r1, r6
- ldrb r3, [r0]
- adds r1, r7
- ldrb r0, [r1]
- str r0, [sp]
- ldr r0, _080B0EDC @ =gUnknown_03004210
- add r1, sp, 0x8
- bl sub_8003460
- movs r5, 0
- adds r0, r4, 0x1
- lsls r0, 24
- lsrs r4, r0, 24
- cmp r4, 0x3
- bls _080B0E52
- bl sub_80AEB30
-_080B0EC2:
- add sp, 0x10
- pop {r3,r4}
- mov r8, r3
- mov r9, r4
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_080B0ED0: .4byte gSharedMem
-_080B0ED4: .4byte gUnknown_083CA308
-_080B0ED8: .4byte gUnknown_083CA310
-_080B0EDC: .4byte gUnknown_03004210
-_080B0EE0: .4byte gSharedMem + 0x19260
-_080B0EE4: .4byte gUnknown_02038696
- thumb_func_end sub_80B0D7C
-
- thumb_func_start unref_sub_80B0EE8
-unref_sub_80B0EE8: @ 80B0EE8
- push {r4-r7,lr}
- adds r7, r0, 0
- movs r4, 0
- subs r0, r1, 0x1
- cmp r4, r0
- bge _080B0F20
- adds r6, r0, 0
-_080B0EF6:
- adds r3, r0, 0
- adds r5, r4, 0x1
- cmp r0, r4
- ble _080B0F18
- lsls r0, 2
- subs r0, 0x4
- adds r0, r7
-_080B0F04:
- ldr r1, [r0]
- ldr r2, [r0, 0x4]
- cmp r1, r2
- ble _080B0F10
- str r1, [r0, 0x4]
- str r2, [r0]
-_080B0F10:
- subs r0, 0x4
- subs r3, 0x1
- cmp r3, r4
- bgt _080B0F04
-_080B0F18:
- adds r4, r5, 0
- adds r0, r6, 0
- cmp r4, r0
- blt _080B0EF6
-_080B0F20:
- pop {r4-r7}
- pop {r0}
- bx r0
- thumb_func_end unref_sub_80B0EE8
-
- thumb_func_start sub_80B0F28
-sub_80B0F28: @ 80B0F28
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- sub sp, 0x14
- lsls r0, 24
- lsrs r0, 24
- mov r8, r0
- add r4, sp, 0x4
- adds r0, r4, 0
- movs r1, 0
- movs r2, 0x8
- bl memset
- movs r5, 0
- add r4, sp, 0x4
- adds r6, r4, 0
- movs r7, 0
-_080B0F4E:
- bl Random
- adds r1, r0, 0
- mov r0, sp
- adds r0, r7
- adds r0, 0x4
- strh r1, [r0]
- movs r2, 0
- cmp r2, r5
- bge _080B0F86
- lsls r0, r1, 16
- lsrs r0, 16
- mov r1, sp
- ldrh r1, [r1, 0x4]
- cmp r0, r1
- beq _080B0F80
-_080B0F6E:
- adds r2, 0x1
- cmp r2, r5
- bge _080B0F86
- lsls r0, r2, 1
- adds r0, r4, r0
- ldrh r1, [r6]
- ldrh r0, [r0]
- cmp r1, r0
- bne _080B0F6E
-_080B0F80:
- subs r6, 0x2
- subs r7, 0x2
- subs r5, 0x1
-_080B0F86:
- adds r6, 0x2
- adds r7, 0x2
- adds r5, 0x1
- cmp r5, 0x3
- ble _080B0F4E
- mov r2, r8
- cmp r2, 0
- bne _080B1050
- movs r5, 0
- ldr r3, _080B1008 @ =gUnknown_02038696
- mov r8, r3
-_080B0F9C:
- mov r6, r8
- strb r5, [r6]
- movs r4, 0
- cmp r4, r5
- bge _080B1018
- ldr r7, _080B100C @ =gUnknown_02038670
- mov r9, r7
- lsls r0, r5, 1
- adds r1, r0, 0
- add r1, r9
- mov r12, r1
- mov r2, sp
- adds r2, 0x4
- str r2, [sp, 0xC]
- add r0, sp
- adds r0, 0x4
- str r0, [sp, 0x10]
- ldr r3, _080B1008 @ =gUnknown_02038696
- adds r6, r3, 0
- mov r10, r6
-_080B0FC4:
- ldrb r0, [r3]
- lsls r2, r0, 1
- mov r7, r9
- adds r0, r2, r7
- movs r6, 0
- ldrsh r1, [r0, r6]
- mov r7, r12
- movs r6, 0
- ldrsh r0, [r7, r6]
- cmp r1, r0
- blt _080B0FEC
- cmp r1, r0
- bne _080B1010
- ldr r7, [sp, 0xC]
- adds r0, r7, r2
- ldrh r0, [r0]
- ldr r1, [sp, 0x10]
- ldrh r1, [r1]
- cmp r0, r1
- bcs _080B1010
-_080B0FEC:
- adds r2, r5, 0
- cmp r5, r4
- ble _080B1004
- subs r0, r5, 0x1
- mov r6, r10
- adds r1, r0, r6
-_080B0FF8:
- ldrb r0, [r1]
- strb r0, [r1, 0x1]
- subs r1, 0x1
- subs r2, 0x1
- cmp r2, r4
- bgt _080B0FF8
-_080B1004:
- strb r5, [r3]
- b _080B1018
- .align 2, 0
-_080B1008: .4byte gUnknown_02038696
-_080B100C: .4byte gUnknown_02038670
-_080B1010:
- adds r3, 0x1
- adds r4, 0x1
- cmp r4, r5
- blt _080B0FC4
-_080B1018:
- cmp r4, r5
- bne _080B1020
- mov r7, r8
- strb r5, [r7]
-_080B1020:
- movs r0, 0x1
- add r8, r0
- adds r5, 0x1
- cmp r5, 0x3
- ble _080B0F9C
- ldr r4, _080B104C @ =gUnknown_02038696
- mov r0, sp
- adds r1, r4, 0
- movs r2, 0x4
- bl memcpy
- movs r5, 0
-_080B1038:
- mov r1, sp
- adds r0, r1, r5
- ldrb r0, [r0]
- adds r0, r4
- strb r5, [r0]
- adds r5, 0x1
- cmp r5, 0x3
- ble _080B1038
- b _080B10FC
- .align 2, 0
-_080B104C: .4byte gUnknown_02038696
-_080B1050:
- mov r0, sp
- movs r1, 0xFF
- movs r2, 0x4
- bl memset
- movs r5, 0
- ldr r3, _080B1070 @ =gUnknown_02038696
- movs r6, 0
-_080B1060:
- ldr r0, _080B1074 @ =gSharedMem + 0x19260
- adds r0, r6, r0
- ldrb r0, [r0, 0xB]
- lsls r0, 30
- lsrs r2, r0, 30
- mov r7, sp
- adds r1, r7, r2
- b _080B1082
- .align 2, 0
-_080B1070: .4byte gUnknown_02038696
-_080B1074: .4byte gSharedMem + 0x19260
-_080B1078:
- adds r0, r2, 0x1
- lsls r0, 24
- lsrs r2, r0, 24
- mov r0, sp
- adds r1, r0, r2
-_080B1082:
- ldrb r0, [r1]
- cmp r0, 0xFF
- bne _080B1078
- strb r5, [r1]
- strb r2, [r3]
- adds r3, 0x1
- adds r6, 0x1C
- adds r5, 0x1
- cmp r5, 0x3
- ble _080B1060
- movs r5, 0
-_080B1098:
- movs r4, 0x3
- adds r1, r5, 0x1
- mov r10, r1
- cmp r4, r5
- ble _080B10F6
- mov r9, r4
- ldr r2, _080B110C @ =gUnknown_02038696
- mov r8, r2
- add r3, sp, 0x4
- mov r12, r3
-_080B10AC:
- lsls r0, r4, 3
- subs r0, r4
- lsls r0, 2
- ldr r6, _080B1110 @ =gSharedMem + 0x19244
- adds r1, r0, r6
- ldrb r2, [r1, 0xB]
- ldr r7, _080B1114 @ =gSharedMem + 0x19260
- adds r0, r7
- ldrb r3, [r0, 0xB]
- mov r1, r9
- ands r1, r2
- mov r0, r9
- ands r0, r3
- subs r3, r4, 0x1
- cmp r1, r0
- bne _080B10F0
- mov r0, r8
- adds r7, r3, r0
- adds r2, r4, r0
- ldrb r6, [r7]
- ldrb r1, [r2]
- cmp r6, r1
- bcs _080B10F0
- lsls r0, r3, 1
- add r0, r12
- lsls r1, r4, 1
- add r1, r12
- ldrh r0, [r0]
- ldrh r1, [r1]
- cmp r0, r1
- bcs _080B10F0
- ldrb r0, [r2]
- strb r6, [r2]
- strb r0, [r7]
-_080B10F0:
- adds r4, r3, 0
- cmp r4, r5
- bgt _080B10AC
-_080B10F6:
- mov r5, r10
- cmp r5, 0x2
- ble _080B1098
-_080B10FC:
- add sp, 0x14
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_080B110C: .4byte gUnknown_02038696
-_080B1110: .4byte gSharedMem + 0x19244
-_080B1114: .4byte gSharedMem + 0x19260
- thumb_func_end sub_80B0F28
-
thumb_func_start sub_80B1118
sub_80B1118: @ 80B1118
push {r4,r5,lr}
diff --git a/include/util.h b/include/util.h
index 87fa4aecc..676c3bd9b 100644
--- a/include/util.h
+++ b/include/util.h
@@ -11,5 +11,6 @@ void StoreWordInTwoHalfwords(u16 *, u32);
void LoadWordFromTwoHalfwords(u16 *, u32 *);
u16 CalcCRC16(u8 *data, int length);
void DoBgAffineSet(struct BgAffineDstData *dest, u32 texX, u32 texY, s16 scrX, s16 scrY, s16 sx, s16 sy, u16 alpha);
+void CopySpriteTiles(u8 shape, u8 size, u8 *tiles, u16 *tilemap, u8 *output);
#endif // GUARD_UTIL_H
diff --git a/src/contest.c b/src/contest.c
index c44b07dea..94369b87e 100644
--- a/src/contest.c
+++ b/src/contest.c
@@ -4,6 +4,7 @@
#include "constants/songs.h"
#include "constants/species.h"
#include "battle_anim.h"
+#include "blend_palette.h"
#include "contest.h"
#include "contest_link_80C857C.h"
#include "data2.h"
@@ -27,6 +28,7 @@
#include "text.h"
#include "tv.h"
#include "unknown_task.h"
+#include "util.h"
extern bool8 AreMovesContestCombo(u16, u16);
extern void sub_80C8A38(u8);
@@ -51,8 +53,9 @@ struct Shared19204
/*0x19205*/ u8 unk19205;
/*0x19206*/ u8 unk19206[4];
/*0x1920A*/ u16 unk1920A_0:1;
- /*0x1920A*/ u16 unk1920A_1:1;
- /*0x1920A*/ u16 unk1920A_2:2;
+ u16 unk1920A_1:1;
+ u16 unk1920A_2:1;
+ u16 unk1920A_3:1;
u16 unk1920A_4:1;
u16 unk1920A_5:1;
u16 unk1920A_6:1;
@@ -61,7 +64,10 @@ struct Shared19204
u16 unk1920B_1:1;
u16 unk1920B_2:1;
/*0x1920C*/ u8 unk1920C;
- /*0x1920D*/ u8 unk1920D[0x14-0xD];
+ /*0x1920D*/ u8 unk1920D[4];
+ /*0x19211*/ u8 unk19211;
+ /*0x19212*/ u8 unk19212;
+ /*0x19213*/ u8 filler19213;
/*0x19214*/ u8 unk19214;
/*0x19215*/ u8 unk19215;
/*0x19216*/ u8 unk19216;
@@ -279,6 +285,7 @@ extern const u8 gUnknownText_UnknownFormatting2[];
extern const u8 gUnknownText_UnknownFormatting3[];
extern const u8 gUnknown_083CC59C[];
extern const u8 gUnknown_083CC5A2[];
+extern const u16 gUnknown_083CC5A4[];
extern const u8 gUnknownText_MissedTurn[];
extern const u8 gUnknownText_LinkStandbyAndWinner[];
@@ -375,13 +382,24 @@ void sub_80B0034(void);
void sub_80B00C8(void);
void nullsub_18(int);
void sub_80B0238(struct Sprite *);
+void sub_80B0280(struct Sprite *);
+void sub_80B02A8(struct Sprite *);
+void sub_80B02F4(struct Sprite *);
void sub_80B0324(void);
void sub_80B03A8(u8);
+void sub_80B03D8(u8);
+void sub_80B0458(u8);
void sub_80B0518(void);
-void nullsub_19();
-void sub_80B09B0();
-u8 sub_80B09E4();
-void sub_80B0BC4();
+void sub_80B0548(u8);
+void sub_80B05A4(u8);
+void nullsub_19(int);
+void sub_80B05FC(u8);
+void sub_80B0748(u8);
+void sub_80B09B0(u8);
+u8 sub_80B09E4(u8);
+void sub_80B0BC4(u8, bool8);
+void sub_80B0C5C(struct Sprite *);
+void sub_80B0CB0(struct Sprite *);
void sub_80B0CDC(u8, int);
void sub_80B0D7C(void);
void sub_80B1118(void);
@@ -1112,7 +1130,7 @@ void sub_80AC2CC(u8 taskId)
gSprites[spriteId].callback = sub_80AD8FC;
gTasks[taskId].data[2] = spriteId;
gObjectBankIDs[gBankAttacker] = spriteId;
- sub_80B0BC4(sub_80B09E4(shared19204.unk19215), 0);
+ sub_80B0BC4(sub_80B09E4(shared19204.unk19215), FALSE);
gTasks[taskId].data[0] = 4;
return;
case 4:
@@ -3377,12 +3395,12 @@ void sub_80AFC74(u8 taskId)
void sub_80AFE30(void)
{
s32 i;
-
+
LoadSpriteSheet(&gUnknown_083CA350);
for (i = 0; i < 4; i++)
{
u8 y = gUnknown_083CA338[gUnknown_02038696[i]];
-
+
shared19338[i].unk0 = CreateSprite(&gSpriteTemplate_83CA3AC, 180, y, 1);
}
}
@@ -3391,7 +3409,7 @@ void sub_80AFE78(u8 a)
{
u8 spriteId;
s16 r5;
-
+
shared19338[a].unk2_0 = 1;
spriteId = shared19338[a].unk0;
r5 = shared19260_[a].unk4 / 10 * 2;
@@ -3412,7 +3430,7 @@ void sub_80AFE78(u8 a)
void sub_80AFF10(void)
{
s32 i;
-
+
for (i = 0; i < 4; i++)
sub_80AFE78(i);
}
@@ -3420,7 +3438,7 @@ void sub_80AFF10(void)
bool8 sub_80AFF28(void)
{
s32 i;
-
+
for (i = 0; i < 4; i++)
{
if (shared19338[i].unk2_0)
@@ -3448,7 +3466,7 @@ void sub_80AFF60(struct Sprite *sprite)
void sub_80AFFA0(void)
{
s32 i;
-
+
for (i = 0; i < 4; i++)
gSprites[shared19338[i].unk0].pos1.y = gUnknown_083CA338[gUnknown_02038696[i]];
}
@@ -3456,7 +3474,7 @@ void sub_80AFFA0(void)
void sub_80AFFE0(bool8 a)
{
s32 i;
-
+
for (i = 0; i < 4; i++)
{
if (gUnknown_02038696[i] > 1)
@@ -3472,7 +3490,7 @@ void sub_80AFFE0(bool8 a)
void sub_80B0034(void)
{
s32 i;
-
+
LoadSpritePalette(&gUnknown_083CA3E4);
for (i = 0; i < 4; i++)
{
@@ -3489,7 +3507,7 @@ void sub_80B0034(void)
void sub_80B00C8(void)
{
u8 spriteId;
-
+
LoadCompressedObjectPic(&gUnknown_083CA46C);
LoadSpritePalette(&gUnknown_083CA474);
spriteId = CreateSprite(&gSpriteTemplate_83CA484, 30, 44, 1);
@@ -3504,7 +3522,7 @@ void nullsub_18(int unused)
void unref_sub_80B011C(void)
{
u8 i;
-
+
LoadCompressedObjectPic(&gUnknown_083CC3AC);
for (i = 0; i < 4; i++)
LoadCompressedObjectPalette(&gUnknown_083CC3B4[i]);
@@ -3514,7 +3532,7 @@ void unref_sub_80B011C(void)
&gSpriteTemplate_83CC454[i],
gUnknown_083CA330[i][0], gUnknown_083CA330[i][1],
5);
-
+
gSprites[spriteId].invisible = TRUE;
gSprites[spriteId].data[0] = i;
shared19204.unk1920D[i] = spriteId;
@@ -3524,7 +3542,978 @@ void unref_sub_80B011C(void)
void unref_sub_80B01B0(void)
{
s32 i;
-
+
for (i = 0; i < 4; i++)
gSprites[shared19204.unk1920D[i]].callback = sub_80B0238;
}
+
+bool8 unref_sub_80B01E0(void)
+{
+ s32 i;
+
+ for (i = 0; i < 4; i++)
+ {
+ if (gSprites[shared19204.unk1920D[i]].callback != SpriteCallbackDummy)
+ break;
+ }
+ if (i == 4)
+ return TRUE;
+ else
+ return FALSE;
+}
+
+void sub_80B0238(struct Sprite *sprite)
+{
+ sprite->oam.affineMode = 1;
+ InitSpriteAffineAnim(sprite);
+ if (sprite->invisible)
+ {
+ sprite->callback = sub_80B02A8;
+ }
+ else
+ {
+ StartSpriteAffineAnim(sprite, 1);
+ sprite->callback = sub_80B0280;
+ }
+}
+
+void sub_80B0280(struct Sprite *sprite)
+{
+ if (sprite->affineAnimEnded)
+ {
+ sprite->invisible = TRUE;
+ sprite->callback = sub_80B02A8;
+ }
+}
+
+void sub_80B02A8(struct Sprite *sprite)
+{
+ sprite->invisible = FALSE;
+ StartSpriteAnim(sprite, shared19260_[sprite->data[0]].unkB_0);
+ StartSpriteAffineAnim(sprite, 2);
+ sprite->callback = sub_80B02F4;
+ PlaySE(SE_JYUNI);
+}
+
+void sub_80B02F4(struct Sprite *sprite)
+{
+ if (sprite->affineAnimEnded)
+ {
+ FreeSpriteOamMatrix(sprite);
+ sprite->oam.affineMode = 0;
+ sprite->callback = SpriteCallbackDummy;
+ }
+}
+
+void sub_80B0324(void)
+{
+ u8 i;
+ u8 taskId = CreateTask(sub_80B0458, 30);
+
+ shared19204.unk19211 = taskId;
+ for (i = 0; i < 4; i++)
+ gTasks[taskId].data[i * 4] = 0xFF;
+}
+
+void sub_80B0368(u8 a)
+{
+ gTasks[shared19204.unk19211].data[a * 4 + 0] = 0;
+ gTasks[shared19204.unk19211].data[a * 4 + 1] = 0;
+}
+
+void sub_80B03A8(u8 a)
+{
+ u8 taskId = CreateTask(sub_80B03D8, 31);
+
+ gTasks[taskId].data[0] = a;
+}
+
+void sub_80B03D8(u8 taskId)
+{
+ u8 r4 = gTasks[taskId].data[0];
+
+ if (gTasks[shared19204.unk19211].data[r4 * 4 + 0] == 0
+ || gTasks[shared19204.unk19211].data[r4 * 4 + 0] == 0xFF)
+ {
+ gTasks[shared19204.unk19211].data[r4 * 4 + 0] = 0xFF;
+ gTasks[shared19204.unk19211].data[r4 * 4 + 1] = 0;
+ BlendPalette((shared19204.unk19218[r4] + 5) * 16 + 6, 2, 0, 0x4BFF);
+ DestroyTask(taskId);
+ }
+}
+
+void sub_80B0458(u8 taskId)
+{
+ u8 i;
+
+ for (i = 0; i < 4; i++)
+ {
+ u8 r3 = i * 4;
+
+ if (gTasks[taskId].data[r3 + 0] != 0xFF)
+ {
+ if (gTasks[taskId].data[r3 + 1] == 0)
+ gTasks[taskId].data[r3 + 0]++;
+ else
+ gTasks[taskId].data[r3 + 0]--;
+
+ if (gTasks[taskId].data[r3 + 0] == 16
+ || gTasks[taskId].data[r3 + 0] == 0)
+ gTasks[taskId].data[r3 + 1] ^= 1;
+
+ BlendPalette(
+ (shared19204.unk19218[i] + 5) * 16 + 6,
+ 2,
+ gTasks[taskId].data[r3 + 0],
+ 0x4BFF);
+ }
+ }
+}
+
+void sub_80B0518(void)
+{
+ u8 i;
+
+ shared19204.unk19212 = CreateTask(sub_80B05FC, 30);
+ for (i = 0; i < 4; i++)
+ sub_80B0548(i);
+}
+
+void sub_80B0548(u8 a)
+{
+ gTasks[shared19204.unk19212].data[a * 4 + 0] = 0xFF;
+ gTasks[shared19204.unk19212].data[a * 4 + 1] = 0;
+}
+
+void sub_80B0588(void)
+{
+ u8 i;
+
+ for (i = 0; i < 4; i++)
+ sub_80B05A4(i);
+}
+
+void sub_80B05A4(u8 a)
+{
+ u32 var;
+ u32 r0;
+
+ sub_80B0548(a);
+
+ // 2-byte DMA copy? Why?
+
+ r0 = a + 5;
+ {
+ void *src = gPlttBufferUnfaded + r0 * 16 + 10;
+ void *dest = gPlttBufferFaded + r0 * 16 + 10;
+ DmaCopy16(3, src, dest, 2);
+ }
+ var = (a + 5) * 16 + 12 + a;
+ {
+ void *src = gPlttBufferUnfaded + var;
+ void *dest = gPlttBufferFaded + var;
+ DmaCopy16(3, src, dest, 2);
+ }
+}
+
+void nullsub_19(int unused)
+{
+}
+
+void sub_80B05FC(u8 taskId)
+{
+ u8 i;
+
+ for (i = 0; i < 4; i++)
+ {
+ u8 r3 = i * 4;
+
+ if (gTasks[taskId].data[r3 + 0] != 0xFF)
+ {
+ if (++gTasks[taskId].data[r3 + 2] > 2)
+ {
+ gTasks[taskId].data[r3 + 2] = 0;
+
+ if (gTasks[taskId].data[r3 + 1] == 0)
+ gTasks[taskId].data[r3 + 0]++;
+ else
+ gTasks[taskId].data[r3 + 0]--;
+
+ if (gTasks[taskId].data[r3 + 0] == 16
+ || gTasks[taskId].data[r3 + 0] == 0)
+ gTasks[taskId].data[r3 + 1] ^= 1;
+
+ BlendPalette((i + 5) * 16 + 10, 1, gTasks[taskId].data[r3 + 0], 0x4BFF);
+ BlendPalette((i + 5) * 16 + 12 + i, 1, gTasks[taskId].data[r3 + 0], 0x4BFF);
+ }
+ }
+ }
+}
+
+u8 unref_sub_80B06E0(u8 *a)
+{
+ u8 i;
+ u8 taskId = CreateTask(sub_80B0748, 10);
+
+ for (i = 0; i < 4; i++)
+ {
+ u8 r0 = i * 4;
+
+ gTasks[taskId].data[r0] = a[i];
+ if (a[i] != 0)
+ shared19338[i].unk2_1 = 1;
+ }
+ return taskId;
+}
+
+#ifdef NONMATCHING
+void sub_80B0748(u8 taskId)
+{
+ u8 i;
+ u8 r4_2;
+ u8 r1;
+ u8 r7;
+
+ for (i = 0; i < 4; i++)
+ {
+ //#define r4 r4_2
+ r4 = gUnknown_02038696[i];
+ r1 = r4 * 4;
+ r7 = gTasks[taskId].data[r1 + 0];
+
+ if (r7 != 0)
+ {
+ //_080B079C
+ u8 r8 = gTasks[taskId].data[r1 + 1];
+ u8 r5 = gTasks[taskId].data[r1 + 2];
+ u8 r6 = gTasks[taskId].data[r1 + 3];
+
+ if (r7 == 1)
+ {
+ r6++;
+ if (r6 == 1)
+ {
+ //_080B07D2
+ r6 = 0;
+ BlendPalette((r4 + 5) * 16 + 1, 3, r5, 0x7FFF);
+ if (r5 == 0 && r8 == 4)
+ {
+ gTasks[taskId].data[r1 + 0] = 0;
+ //asm("");
+ }
+ //_080B0800
+ else
+ {
+ r5 += 2;
+ if (r5 > 13)
+ {
+ r5 = 0;
+ r8++;
+ }
+ }
+ }
+ //to _080B08EA
+ }
+ //_080B0818
+ else if (r7 == 2 || r7 == 4)
+ {
+ r6++;
+ if (r6 == 3)
+ {
+ r6 = 0;
+ BlendPalette((r4 + 5) * 16 + 1, 3, r5, gUnknown_083CC5A4[r4]);
+ if (r5 == 0 && r8 == 2)
+ {
+ gTasks[taskId].data[r1 + 0] = 0;
+ }
+ //_080B0858
+ else
+ {
+ r5 += 1;
+ if (r5 == 14)
+ {
+ r5 = 0;
+ r8++;
+ if (r7 == 4 && r8 == 1)
+ {
+ BlendPalette((r4 + 9) * 16 + 2, 1, 4, 0);
+ BlendPalette((r4 + 9) * 16 + 5, 1, 4, 0);
+ }
+ }
+ }
+ }
+ //to _080B08EA
+ }
+ //_080B0896
+ else if (r7 == 3)
+ {
+ r6++;
+ if (r6 == 12)
+ {
+ r6 = 0;
+ BlendPalette((r4 + 5) * 16 + 1, 3, r5, 0);
+ r5 += 1;
+ if (r5 == 5)
+ {
+ // What the hell? These aren't pointers.
+ // This code would crash if run.
+ {
+ void *src = (void *)(u32)gPlttBufferFaded[(r4 + 5) * 16 + 1];
+ void *dest = (void *)(u32)gPlttBufferUnfaded[(r4 + 5) * 16 + 1];
+ u32 size = 6;
+ DmaCopy16(3, src, dest, size);
+ }
+ gTasks[taskId].data[r1 + 0] = 0;
+ }
+ }
+ }
+ //_080B08EA
+ gTasks[taskId].data[r1 + 1] = r8;
+ gTasks[taskId].data[r1 + 2] = r5;
+ gTasks[taskId].data[r1 + 3] = r6;
+ }
+ //_080B0910
+ }
+ //_080B0920
+
+ #define i r4_2
+ for (i = 0; i < 4; i++) // r4 is i
+ {
+ if (gTasks[taskId].data[i * 4 + 0] != 0)
+ break;
+ }
+ //_080B0958
+ if (i == 4)
+ {
+ for (i = 0; i < 4; i++)
+ shared19338[i].unk2_2 = 0;
+ DestroyTask(taskId);
+ }
+ #undef i
+}
+#else
+__attribute__((naked))
+void sub_80B0748(u8 taskId)
+{
+ asm(".syntax unified\n\
+ push {r4-r7,lr}\n\
+ mov r7, r10\n\
+ mov r6, r9\n\
+ mov r5, r8\n\
+ push {r5-r7}\n\
+ sub sp, 0x20\n\
+ lsls r0, 24\n\
+ lsrs r0, 24\n\
+ str r0, [sp]\n\
+ movs r0, 0\n\
+ str r0, [sp, 0x4]\n\
+ ldr r2, _080B07F4 @ =gTasks\n\
+ movs r1, 0x8\n\
+ adds r1, r2\n\
+ mov r10, r1\n\
+ ldr r3, [sp]\n\
+ lsls r3, 2\n\
+ str r3, [sp, 0x1C]\n\
+ ldr r1, [sp]\n\
+ adds r0, r3, r1\n\
+ lsls r0, 3\n\
+ str r0, [sp, 0xC]\n\
+_080B0774:\n\
+ ldr r0, _080B07F8 @ =gUnknown_02038696\n\
+ ldr r3, [sp, 0x4]\n\
+ adds r0, r3, r0\n\
+ ldrb r4, [r0]\n\
+ lsls r0, r4, 26\n\
+ lsrs r1, r0, 24\n\
+ lsls r0, r1, 1\n\
+ str r0, [sp, 0x8]\n\
+ ldr r3, [sp]\n\
+ lsls r0, r3, 2\n\
+ adds r0, r3\n\
+ lsls r6, r0, 3\n\
+ ldr r3, [sp, 0x8]\n\
+ adds r0, r3, r6\n\
+ add r0, r10\n\
+ mov r9, r0\n\
+ ldrb r7, [r0]\n\
+ cmp r7, 0\n\
+ bne _080B079C\n\
+ b _080B0910\n\
+_080B079C:\n\
+ adds r3, r1, 0x1\n\
+ lsls r0, r3, 1\n\
+ adds r0, r6\n\
+ add r0, r10\n\
+ ldrb r0, [r0]\n\
+ mov r8, r0\n\
+ adds r2, r1, 0x2\n\
+ lsls r0, r2, 1\n\
+ adds r0, r6\n\
+ add r0, r10\n\
+ ldrb r5, [r0]\n\
+ adds r1, 0x3\n\
+ lsls r0, r1, 1\n\
+ adds r0, r6\n\
+ add r0, r10\n\
+ ldrb r6, [r0]\n\
+ str r3, [sp, 0x10]\n\
+ str r2, [sp, 0x14]\n\
+ str r1, [sp, 0x18]\n\
+ cmp r7, 0x1\n\
+ bne _080B0818\n\
+ adds r0, r6, 0x1\n\
+ lsls r0, 24\n\
+ lsrs r6, r0, 24\n\
+ cmp r6, 0x1\n\
+ beq _080B07D2\n\
+ b _080B08EA\n\
+_080B07D2:\n\
+ movs r6, 0\n\
+ adds r0, r4, 0x5\n\
+ lsls r0, 4\n\
+ adds r0, 0x1\n\
+ movs r1, 0x3\n\
+ adds r2, r5, 0\n\
+ ldr r3, _080B07FC @ =0x00007fff\n\
+ bl BlendPalette\n\
+ cmp r5, 0\n\
+ bne _080B0800\n\
+ mov r0, r8\n\
+ cmp r0, 0x4\n\
+ bne _080B0800\n\
+ mov r1, r9\n\
+ strh r6, [r1]\n\
+ b _080B08EA\n\
+ .align 2, 0\n\
+_080B07F4: .4byte gTasks\n\
+_080B07F8: .4byte gUnknown_02038696\n\
+_080B07FC: .4byte 0x00007fff\n\
+_080B0800:\n\
+ adds r0, r5, 0x2\n\
+ lsls r0, 24\n\
+ lsrs r5, r0, 24\n\
+ cmp r5, 0xD\n\
+ bls _080B08EA\n\
+ movs r5, 0\n\
+ mov r0, r8\n\
+ adds r0, 0x1\n\
+ lsls r0, 24\n\
+ lsrs r0, 24\n\
+ mov r8, r0\n\
+ b _080B08EA\n\
+_080B0818:\n\
+ cmp r7, 0x2\n\
+ beq _080B0820\n\
+ cmp r7, 0x4\n\
+ bne _080B0896\n\
+_080B0820:\n\
+ adds r0, r6, 0x1\n\
+ lsls r0, 24\n\
+ lsrs r6, r0, 24\n\
+ cmp r6, 0x3\n\
+ bne _080B08EA\n\
+ movs r6, 0\n\
+ adds r0, r4, 0x5\n\
+ lsls r0, 4\n\
+ adds r0, 0x1\n\
+ ldr r2, _080B0854 @ =gUnknown_083CC5A4\n\
+ lsls r1, r4, 1\n\
+ adds r1, r2\n\
+ ldrh r3, [r1]\n\
+ movs r1, 0x3\n\
+ adds r2, r5, 0\n\
+ bl BlendPalette\n\
+ cmp r5, 0\n\
+ bne _080B0858\n\
+ mov r2, r8\n\
+ cmp r2, 0x2\n\
+ bne _080B0858\n\
+ mov r3, r9\n\
+ strh r6, [r3]\n\
+ b _080B08EA\n\
+ .align 2, 0\n\
+_080B0854: .4byte gUnknown_083CC5A4\n\
+_080B0858:\n\
+ adds r0, r5, 0x1\n\
+ lsls r0, 24\n\
+ lsrs r5, r0, 24\n\
+ cmp r5, 0xE\n\
+ bne _080B08EA\n\
+ movs r5, 0\n\
+ mov r0, r8\n\
+ adds r0, 0x1\n\
+ lsls r0, 24\n\
+ lsrs r0, 24\n\
+ mov r8, r0\n\
+ cmp r7, 0x4\n\
+ bne _080B08EA\n\
+ cmp r0, 0x1\n\
+ bne _080B08EA\n\
+ adds r4, 0x9\n\
+ lsls r4, 4\n\
+ adds r0, r4, 0x2\n\
+ movs r1, 0x1\n\
+ movs r2, 0x4\n\
+ movs r3, 0\n\
+ bl BlendPalette\n\
+ adds r4, 0x5\n\
+ adds r0, r4, 0\n\
+ movs r1, 0x1\n\
+ movs r2, 0x4\n\
+ movs r3, 0\n\
+ bl BlendPalette\n\
+ b _080B08EA\n\
+_080B0896:\n\
+ cmp r7, 0x3\n\
+ bne _080B08EA\n\
+ adds r0, r6, 0x1\n\
+ lsls r0, 24\n\
+ lsrs r6, r0, 24\n\
+ cmp r6, 0xC\n\
+ bne _080B08EA\n\
+ movs r6, 0\n\
+ adds r0, r4, 0x5\n\
+ lsls r0, 4\n\
+ adds r4, r0, 0x1\n\
+ adds r0, r4, 0\n\
+ movs r1, 0x3\n\
+ adds r2, r5, 0\n\
+ movs r3, 0\n\
+ bl BlendPalette\n\
+ adds r0, r5, 0x1\n\
+ lsls r0, 24\n\
+ lsrs r5, r0, 24\n\
+ cmp r5, 0x5\n\
+ bne _080B08EA\n\
+ ldr r0, _080B0930 @ =gPlttBufferFaded\n\
+ lsls r1, r4, 1\n\
+ adds r0, r1, r0\n\
+ ldrh r2, [r0]\n\
+ ldr r0, _080B0934 @ =gPlttBufferUnfaded\n\
+ adds r1, r0\n\
+ ldrh r0, [r1]\n\
+ ldr r1, _080B0938 @ =0x040000d4\n\
+ str r2, [r1]\n\
+ str r0, [r1, 0x4]\n\
+ movs r0, 0x80\n\
+ lsls r0, 24\n\
+ orrs r7, r0\n\
+ str r7, [r1, 0x8]\n\
+ ldr r0, [r1, 0x8]\n\
+ ldr r1, [sp, 0x8]\n\
+ ldr r2, [sp, 0xC]\n\
+ adds r0, r1, r2\n\
+ add r0, r10\n\
+ strh r6, [r0]\n\
+_080B08EA:\n\
+ ldr r3, [sp, 0x10]\n\
+ lsls r0, r3, 1\n\
+ ldr r1, [sp, 0xC]\n\
+ adds r0, r1\n\
+ add r0, r10\n\
+ mov r2, r8\n\
+ strh r2, [r0]\n\
+ ldr r3, [sp, 0x14]\n\
+ lsls r0, r3, 1\n\
+ adds r0, r1\n\
+ add r0, r10\n\
+ strh r5, [r0]\n\
+ ldr r1, [sp, 0x18]\n\
+ lsls r0, r1, 1\n\
+ ldr r2, [sp, 0xC]\n\
+ adds r0, r2\n\
+ add r0, r10\n\
+ strh r6, [r0]\n\
+ ldr r2, _080B093C @ =gTasks\n\
+_080B0910:\n\
+ ldr r0, [sp, 0x4]\n\
+ adds r0, 0x1\n\
+ lsls r0, 24\n\
+ lsrs r0, 24\n\
+ str r0, [sp, 0x4]\n\
+ cmp r0, 0x3\n\
+ bhi _080B0920\n\
+ b _080B0774\n\
+_080B0920:\n\
+ movs r4, 0\n\
+ ldr r3, [sp, 0x1C]\n\
+ ldr r1, [sp]\n\
+ adds r0, r3, r1\n\
+ lsls r1, r0, 3\n\
+ adds r2, 0x8\n\
+ adds r0, r1, r2\n\
+ b _080B0950\n\
+ .align 2, 0\n\
+_080B0930: .4byte gPlttBufferFaded\n\
+_080B0934: .4byte gPlttBufferUnfaded\n\
+_080B0938: .4byte 0x040000d4\n\
+_080B093C: .4byte gTasks\n\
+_080B0940:\n\
+ adds r0, r4, 0x1\n\
+ lsls r0, 24\n\
+ lsrs r4, r0, 24\n\
+ cmp r4, 0x3\n\
+ bhi _080B0958\n\
+ lsls r0, r4, 3\n\
+ adds r0, r1\n\
+ adds r0, r2\n\
+_080B0950:\n\
+ movs r3, 0\n\
+ ldrsh r0, [r0, r3]\n\
+ cmp r0, 0\n\
+ beq _080B0940\n\
+_080B0958:\n\
+ cmp r4, 0x4\n\
+ bne _080B0980\n\
+ movs r4, 0\n\
+ ldr r3, _080B0990 @ =gSharedMem + 0x19338\n\
+ movs r5, 0x3\n\
+ negs r5, r5\n\
+_080B0964:\n\
+ lsls r1, r4, 2\n\
+ adds r1, r3\n\
+ ldrb r2, [r1, 0x2]\n\
+ adds r0, r5, 0\n\
+ ands r0, r2\n\
+ strb r0, [r1, 0x2]\n\
+ adds r0, r4, 0x1\n\
+ lsls r0, 24\n\
+ lsrs r4, r0, 24\n\
+ cmp r4, 0x3\n\
+ bls _080B0964\n\
+ ldr r0, [sp]\n\
+ bl DestroyTask\n\
+_080B0980:\n\
+ add sp, 0x20\n\
+ pop {r3-r5}\n\
+ mov r8, r3\n\
+ mov r9, r4\n\
+ mov r10, r5\n\
+ pop {r4-r7}\n\
+ pop {r0}\n\
+ bx r0\n\
+ .align 2, 0\n\
+_080B0990: .4byte gSharedMem + 0x19338\n\
+ .syntax divided\n");
+}
+#endif
+
+void unref_sub_80B0994(u8 a)
+{
+ if (a != 0)
+ shared19204.unk1920A_2 = 1;
+}
+
+void sub_80B09B0(u8 a)
+{
+ if (shared19260_[a].unk15_4)
+ sub_80B0368(a);
+ else
+ sub_80B03A8(a);
+}
+
+extern const struct CompressedSpriteSheet gUnknown_083CC4B4[];
+extern const struct SpritePalette gUnknown_083CC4D4[];
+extern const struct SpriteTemplate gSpriteTemplate_83CC53C[];
+
+u8 sub_80B09E4(u8 a)
+{
+ u8 r5 = gUnknown_02038696[a] * 40 + 32;
+ u8 r8;
+ u8 r6;
+ volatile u8 zero;
+
+ LoadCompressedObjectPic(&gUnknown_083CC4B4[a]);
+ LoadSpritePalette(&gUnknown_083CC4D4[a]);
+ r8 = CreateSprite(&gSpriteTemplate_83CC53C[a], 184, r5, 29);
+ r6 = CreateSprite(&gSpriteTemplate_83CC53C[a], 248, r5, 29);
+ gSprites[r6].oam.tileNum += 64;
+
+ CopySpriteTiles(0, 3, (void *)VRAM, (u16 *)(VRAM + 0xE000 + gUnknown_02038696[a] * 5 * 64 + 0x26), (u8 *)(VRAM + 0x10000 + gSprites[r8].oam.tileNum * 32));
+ CopySpriteTiles(0, 3, (void *)VRAM, (u16 *)(VRAM + 0xE000 + gUnknown_02038696[a] * 5 * 64 + 0x36), (u8 *)(VRAM + 0x10000 + gSprites[r6].oam.tileNum * 32));
+
+ {
+ void *dest = (void *)(VRAM + 0x10000 + (0x28 + gSprites[r8].oam.tileNum) * 32);
+ u32 size = 0x300;
+ DmaFill32(3, 0, dest, size);
+ }
+
+ // What is this?
+ zero = 0;
+ zero = 0;
+
+ {
+ void *dest = (void *)(VRAM + 0x10000 + (0x28 + gSprites[r6].oam.tileNum) * 32);
+ u32 size = 0x300;
+ DmaFill32(3, 0, dest, size);
+ }
+
+ gSprites[r8].data[0] = r6;
+ gSprites[r6].data[0] = r8;
+ gSprites[r8].data[1] = a;
+ gSprites[r6].data[1] = a;
+ return r8;
+}
+
+void sub_80B0B5C(u8 spriteId)
+{
+ u8 spriteId2 = gSprites[spriteId].data[0];
+
+ FreeSpriteOamMatrix(&gSprites[spriteId2]);
+ DestroySprite(&gSprites[spriteId2]);
+ DestroySpriteAndFreeResources(&gSprites[spriteId]);
+}
+
+void sub_80B0B98(void)
+{
+ REG_BLDCNT = 0x3F40;
+ REG_BLDALPHA = 0x0907;
+}
+
+void sub_80B0BB4(void)
+{
+ REG_BLDCNT = 0;
+ REG_BLDALPHA = 0;
+}
+
+void sub_80B0BC4(u8 a, bool8 b)
+{
+ u8 r5;
+
+ sub_80B0B98();
+ shared19338[gSprites[a].data[1]].unk2_1 = 1;
+ r5 = gSprites[a].data[0];
+ StartSpriteAffineAnim(&gSprites[a], 1);
+ StartSpriteAffineAnim(&gSprites[r5], 1);
+ gSprites[a].callback = sub_80B0C5C;
+ gSprites[r5].callback = SpriteCallbackDummy;
+ if (b == FALSE)
+ PlaySE(SE_C_PIKON);
+ else
+ PlaySE(SE_PC_LOGON);
+}
+
+void sub_80B0C5C(struct Sprite *sprite)
+{
+ if (sprite->affineAnimEnded)
+ {
+ u8 r1 = sprite->data[0];
+
+ if (gSprites[r1].affineAnimEnded)
+ {
+ sprite->invisible = TRUE;
+ gSprites[r1].invisible = TRUE;
+ sprite->callback = sub_80B0CB0;
+ }
+ }
+}
+
+void sub_80B0CB0(struct Sprite *sprite)
+{
+ shared19338[sprite->data[1]].unk2_1 = 0;
+ sub_80B0B5C(sprite->data[0]);
+ sub_80B0BB4();
+}
+
+void sub_80B0CDC(u8 a, int unused)
+{
+ shared19338[a].unk2_1 = 0;
+}
+
+void unref_sub_80B0CF4(void)
+{
+ //shared18000.unk18000 ^= 1;
+ gSharedMem[0x18000] ^= 1;
+ //if (shared18000.unk18000 == 0)
+ if (gSharedMem[0x18000] == 0)
+ {
+ u8 i;
+
+ for (i = 0; i < 4; i++)
+ {
+ FillWindowRect_DefaultPalette(
+ &gUnknown_03004210,
+ 0,
+ gUnknown_083CA308[i][0],
+ gUnknown_083CA308[i][1],
+ gUnknown_083CA310[i][0] + 5,
+ gUnknown_083CA310[i][1] + 1);
+ }
+ sub_80AE514();
+ sub_80AEB30();
+ }
+ else
+ {
+ sub_80B0D7C();
+ }
+}
+
+void sub_80B0D7C(void)
+{
+ u8 r5 = 0;
+ u8 sp8[8];
+
+ if (gSharedMem[0x18000] != 0)
+ {
+ u8 i;
+ s16 r2;
+
+ for (i = 0; i < 4; i++)
+ {
+ FillWindowRect_DefaultPalette(
+ &gUnknown_03004210,
+ 0,
+ gUnknown_083CA308[i][0],
+ gUnknown_083CA308[i][1],
+ gUnknown_083CA310[i][0] + 5,
+ gUnknown_083CA310[i][1] + 1);
+ }
+ for (i = 0; i < 4; i++)
+ {
+ r2 = shared19260_[i].unk4;
+ if (r2 < 0)
+ {
+ r2 = -r2;
+ sp8[0] = CHAR_HYPHEN;
+ r5++;
+ }
+ ConvertIntToDecimalStringN(sp8 + r5, r2, 0, 4);
+ sub_8003460(
+ &gUnknown_03004210,
+ sp8,
+ 592 + gUnknown_02038696[i] * 22,
+ gUnknown_083CA310[gUnknown_02038696[i]][0],
+ gUnknown_083CA310[gUnknown_02038696[i]][1]);
+ r5 = 0;
+ }
+ for (i = 0; i < 4; i++)
+ {
+ r2 = shared19260_[i].unk2;
+ if (r2 < 0)
+ {
+ r2 = -r2;
+ sp8[0] = CHAR_HYPHEN;
+ r5++;
+ }
+ ConvertIntToDecimalStringN(sp8 + r5, r2, 0, 4);
+ sub_8003460(
+ &gUnknown_03004210,
+ sp8,
+ 512 + gUnknown_02038696[i] * 20,
+ gUnknown_083CA308[gUnknown_02038696[i]][0],
+ gUnknown_083CA308[gUnknown_02038696[i]][1]);
+ r5 = 0;
+ }
+ sub_80AEB30();
+ }
+}
+
+void unref_sub_80B0EE8(s32 *a, s32 b)
+{
+ s32 i;
+ s32 j;
+
+ for (i = 0; i < b - 1; i++)
+ {
+ for (j = b - 1; j > i; j--)
+ {
+ if (a[j - 1] > a[j])
+ {
+ s32 temp = a[j];
+
+ a[j] = a[j - 1];
+ a[j - 1] = temp;
+ }
+ }
+ }
+}
+
+void sub_80B0F28(u8 a)
+{
+ u8 sp0[4];
+ u16 sp4[4] = {0};
+ s32 i;
+ s32 r2;
+ s32 r4;
+
+ for (i = 0; i < 4; i++)
+ {
+ sp4[i] = Random();
+ for (r2 = 0; r2 < i; r2++)
+ {
+ if (sp4[i] == sp4[r2])
+ {
+ i--;
+ break;
+ }
+ }
+ }
+
+ if (a == 0)
+ {
+ for (i = 0; i < 4; i++) //_080B0F9C
+ {
+ gUnknown_02038696[i] = i;
+ for (r4 = 0; r4 < i; r4++) //_080B0FC4
+ {
+ if (gUnknown_02038670[gUnknown_02038696[r4]] < gUnknown_02038670[i]
+ || (gUnknown_02038670[gUnknown_02038696[r4]] == gUnknown_02038670[i] && sp4[gUnknown_02038696[r4]] < sp4[i]))
+ {
+ //_080B0FEC
+ for (r2 = i; r2 > r4; r2--)
+ gUnknown_02038696[r2] = gUnknown_02038696[r2 - 1];
+ //_080B1004
+ gUnknown_02038696[r4] = i;
+ break;
+ }
+ //_080B1010
+ }
+ if (r4 == i)
+ gUnknown_02038696[i] = i;
+ }
+ memcpy(sp0, gUnknown_02038696, sizeof(sp0));
+ for (i = 0; i < 4; i++)
+ gUnknown_02038696[sp0[i]] = i;
+ }
+ //_080B1050
+ else
+ {
+ //u8 r2;
+
+ memset(sp0, 0xFF, sizeof(sp0));
+ for (i = 0; i < 4; i++)
+ {
+ u8 r2 = shared19260_[i].unkB_0;
+
+ while (1)
+ {
+ u8 *ptr = &sp0[r2];
+ if (*ptr == 0xFF)
+ {
+ *ptr = i;
+ //sp0[r2] = i;
+ gUnknown_02038696[i] = r2;
+ break;
+ }
+ r2++;
+ }
+ }
+ //_080B1098
+ for (i = 0; i < 3; i++)
+ {
+ for (r4 = 3; r4 > i; r4--)
+ {
+ if (shared19260_[r4 - 1].unkB_0 == shared19260_[r4].unkB_0
+ && gUnknown_02038696[r4 - 1] < gUnknown_02038696[r4]
+ && sp4[r4 - 1] < sp4[r4])
+ {
+ u8 temp = gUnknown_02038696[r4];
+
+ gUnknown_02038696[r4] = gUnknown_02038696[r4 - 1];
+ gUnknown_02038696[r4 - 1] = temp;
+ }
+ //_080B10F0
+ }
+ }
+ }
+}