diff options
-rw-r--r-- | asm/contest_link_80C2020.s | 170 | ||||
-rw-r--r-- | src/battle/contest_link_80C2020.c | 72 |
2 files changed, 72 insertions, 170 deletions
diff --git a/asm/contest_link_80C2020.s b/asm/contest_link_80C2020.s index 2b60f2dd3..503ccd4be 100644 --- a/asm/contest_link_80C2020.s +++ b/asm/contest_link_80C2020.s @@ -5,176 +5,6 @@ .text - thumb_func_start sub_80C42C0 -sub_80C42C0: @ 80C42C0 - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - lsls r0, 24 - lsrs r0, 24 - mov r12, r0 - movs r6, 0 - mov r9, r6 - ldr r1, _080C4308 @ =gTasks - lsls r0, 2 - add r0, r12 - lsls r0, 3 - adds r0, r1 - ldrb r5, [r0, 0x8] - ldrh r7, [r0, 0xA] - ldrh r1, [r0, 0xC] - mov r8, r1 - movs r2, 0xC - ldrsh r0, [r0, r2] - cmp r0, 0 - beq _080C4310 - ldr r1, _080C430C @ =gSharedMem + 0x18000 - lsls r2, r5, 1 - adds r0, r1, 0 - adds r0, 0xC - adds r0, r2, r0 - movs r3, 0 - ldrsh r0, [r0, r3] - mov r10, r1 - adds r4, r2, 0 - cmp r0, 0 - bgt _080C4328 - b _080C4326 - .align 2, 0 -_080C4308: .4byte gTasks -_080C430C: .4byte gSharedMem + 0x18000 -_080C4310: - ldr r1, _080C4350 @ =gSharedMem + 0x18000 - lsls r2, r5, 1 - adds r0, r1, 0 - adds r0, 0xC - adds r0, r2, r0 - movs r3, 0 - ldrsh r0, [r0, r3] - mov r10, r1 - adds r4, r2, 0 - cmp r0, 0x57 - ble _080C4328 -_080C4326: - movs r6, 0x1 -_080C4328: - mov r0, r10 - adds r0, 0xC - adds r3, r4, r0 - ldrh r2, [r3] - movs r0, 0 - ldrsh r1, [r3, r0] - lsls r0, r7, 16 - asrs r0, 16 - cmp r1, r0 - bne _080C4340 - movs r1, 0x1 - mov r9, r1 -_080C4340: - mov r0, r9 - cmp r0, 0 - bne _080C4362 - cmp r6, 0 - beq _080C4354 - strh r7, [r3] - b _080C4362 - .align 2, 0 -_080C4350: .4byte gSharedMem + 0x18000 -_080C4354: - mov r1, r8 - cmp r1, 0 - beq _080C435E - subs r0, r2, 0x1 - b _080C4360 -_080C435E: - adds r0, r2, 0x1 -_080C4360: - strh r0, [r3] -_080C4362: - cmp r6, 0 - bne _080C43C8 - mov r2, r9 - cmp r2, 0 - bne _080C43CE - movs r2, 0 - ldr r0, _080C4388 @ =gSharedMem + 0x1800C - adds r6, r4, r0 - adds r0, r4, r5 - lsls r5, r0, 5 -_080C4376: - movs r0, 0 - ldrsh r3, [r6, r0] - adds r0, r2, 0x1 - lsls r1, r0, 3 - adds r4, r0, 0 - cmp r3, r1 - blt _080C438C - movs r0, 0x8 - b _080C43A8 - .align 2, 0 -_080C4388: .4byte gSharedMem + 0x1800C -_080C438C: - lsls r0, r2, 3 - cmp r3, r0 - blt _080C43A6 - adds r0, r3, 0 - cmp r3, 0 - bge _080C439A - adds r0, r3, 0x7 -_080C439A: - asrs r0, 3 - lsls r0, 3 - subs r0, r3, r0 - lsls r0, 24 - lsrs r0, 24 - b _080C43A8 -_080C43A6: - movs r0, 0 -_080C43A8: - cmp r0, 0x3 - bhi _080C43B4 - ldr r3, _080C43B0 @ =0x0000504c - b _080C43B6 - .align 2, 0 -_080C43B0: .4byte 0x0000504c -_080C43B4: - ldr r3, _080C43EC @ =0x00005057 -_080C43B6: - adds r1, r0, r3 - adds r0, r5, r2 - lsls r0, 1 - ldr r2, _080C43F0 @ =0x0600e18e - adds r0, r2 - strh r1, [r0] - adds r2, r4, 0 - cmp r2, 0xA - ble _080C4376 -_080C43C8: - mov r3, r9 - cmp r3, 0 - beq _080C43DC -_080C43CE: - mov r1, r10 - ldrb r0, [r1, 0x14] - subs r0, 0x1 - strb r0, [r1, 0x14] - mov r0, r12 - bl DestroyTask -_080C43DC: - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_080C43EC: .4byte 0x00005057 -_080C43F0: .4byte 0x0600e18e - thumb_func_end sub_80C42C0 - thumb_func_start sub_80C43F4 sub_80C43F4: @ 80C43F4 push {r4,r5,lr} diff --git a/src/battle/contest_link_80C2020.c b/src/battle/contest_link_80C2020.c index cbef4f9b7..72f78ead5 100644 --- a/src/battle/contest_link_80C2020.c +++ b/src/battle/contest_link_80C2020.c @@ -2478,3 +2478,75 @@ void sub_80C40D4(u8 arg0, u8 arg1) "_080C42BC: .4byte gSharedMem + 0x18000"); } #endif //NONMATCHING + +void sub_80C42C0(u8 taskId /*r12*/) +{ + bool32 r6 = FALSE; + bool32 r9 = FALSE; + u8 r5 = gTasks[taskId].data[0]; + s16 r7 = gTasks[taskId].data[1]; + s16 r1 = gTasks[taskId].data[2]; + s32 i; + + if (r1 != 0) + { + if (eContestLink80C2020Struct2018000.unk_0c[r5] <= 0) + r6 = TRUE; + } + else + { + if (eContestLink80C2020Struct2018000.unk_0c[r5] >= 88) + r6 = TRUE; + } + if (eContestLink80C2020Struct2018000.unk_0c[r5] == r7) + r9 = TRUE; + + if (!r9) + { + if (r6) + { + eContestLink80C2020Struct2018000.unk_0c[r5] = r7; + } + else if (r1 != 0) + { + eContestLink80C2020Struct2018000.unk_0c[r5]--; + } + else + { + eContestLink80C2020Struct2018000.unk_0c[r5]++; + } + } + if (!r6) + { + if (!r9) + { + for (i = 0; i < 11; i++) + { + u8 r0; + u16 tile; + if (eContestLink80C2020Struct2018000.unk_0c[r5] >= 8 * (i + 1)) + { + r0 = 8; + } + else if (eContestLink80C2020Struct2018000.unk_0c[r5] >= 8 * i) + { + r0 = eContestLink80C2020Struct2018000.unk_0c[r5] % 8; + } + else + { + r0 = 0; + } + if (r0 < 4) + tile = 0x504C + r0; + else + tile = 0x5057 + r0; + *(vu16 *)(0x0600E18E + 2 * (96 * r5 + i)) = tile; + } + } + } + if (r9) + { + eContestLink80C2020Struct2018000.unk_14--; + DestroyTask(taskId); + } +} |