diff options
author | camthesaxman <cameronghall@cox.net> | 2017-12-19 23:25:04 -0600 |
---|---|---|
committer | camthesaxman <cameronghall@cox.net> | 2017-12-19 23:25:04 -0600 |
commit | b2460cb232e328fe2b4bb354c2ad789d0e79c1f0 (patch) | |
tree | 00e5e683bc377cdc3984bb940daea4e1f605dfe1 | |
parent | fa136a7ffbdeee5f8e1174b2d36c2e34c653a08a (diff) |
decompile unref_sub_80B01E0 - sub_80B0F28
-rw-r--r-- | asm/contest.s | 2033 | ||||
-rw-r--r-- | include/util.h | 1 | ||||
-rw-r--r-- | src/contest.c | 1029 |
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 + } + } + } +} |