diff options
-rw-r--r-- | asm/contest_link_80C2020.s | 242 | ||||
-rw-r--r-- | src/battle/contest_link_80C2020.c | 83 |
2 files changed, 80 insertions, 245 deletions
diff --git a/asm/contest_link_80C2020.s b/asm/contest_link_80C2020.s index 7c74539f9..e442f5afc 100644 --- a/asm/contest_link_80C2020.s +++ b/asm/contest_link_80C2020.s @@ -5,248 +5,6 @@ .text - thumb_func_start sub_80C3F00 -sub_80C3F00: @ 80C3F00 - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - ldr r0, _080C4098 @ =gUnknown_02038678 - ldrh r2, [r0] - adds r4, r0, 0 - adds r3, r4, 0x2 - movs r0, 0x2 - mov r8, r0 -_080C3F16: - lsls r0, r2, 16 - asrs r0, 16 - movs r5, 0 - ldrsh r1, [r3, r5] - cmp r0, r1 - bge _080C3F24 - ldrh r2, [r3] -_080C3F24: - adds r3, 0x2 - movs r0, 0x1 - negs r0, r0 - add r8, r0 - mov r1, r8 - cmp r1, 0 - bge _080C3F16 - lsls r0, r2, 16 - mov r9, r0 - cmp r0, 0 - bge _080C3F62 - ldrh r2, [r4] - adds r3, r4, 0x2 - movs r4, 0x2 - mov r8, r4 -_080C3F42: - lsls r0, r2, 16 - asrs r0, 16 - movs r5, 0 - ldrsh r1, [r3, r5] - cmp r0, r1 - ble _080C3F50 - ldrh r2, [r3] -_080C3F50: - adds r3, 0x2 - movs r0, 0x1 - negs r0, r0 - add r8, r0 - lsls r1, r2, 16 - mov r9, r1 - mov r4, r8 - cmp r4, 0 - bge _080C3F42 -_080C3F62: - movs r5, 0 - mov r8, r5 - mov r10, r5 -_080C3F68: - ldr r0, _080C409C @ =gUnknown_02038670 - mov r1, r8 - lsls r7, r1, 1 - adds r0, r7, r0 - movs r2, 0 - ldrsh r1, [r0, r2] - lsls r0, r1, 5 - subs r0, r1 - lsls r0, 2 - adds r0, r1 - lsls r0, 3 - mov r4, r9 - asrs r6, r4, 16 - adds r1, r6, 0 - cmp r6, 0 - bge _080C3F8A - negs r1, r6 -_080C3F8A: - bl __divsi3 - adds r4, r0, 0 - movs r1, 0xA - bl __modsi3 - cmp r0, 0x4 - ble _080C3F9C - adds r4, 0xA -_080C3F9C: - ldr r0, _080C40A0 @ =gSharedMem + 0x18018 - mov r1, r10 - adds r5, r1, r0 - adds r0, r4, 0 - movs r1, 0xA - bl __divsi3 - str r0, [r5] - ldr r0, _080C40A4 @ =gUnknown_02038688 - adds r7, r0 - movs r2, 0 - ldrsh r1, [r7, r2] - cmp r1, 0 - bge _080C3FBA - negs r1, r1 -_080C3FBA: - lsls r0, r1, 5 - subs r0, r1 - lsls r0, 2 - adds r0, r1 - lsls r0, 3 - adds r1, r6, 0 - cmp r1, 0 - bge _080C3FCC - negs r1, r1 -_080C3FCC: - bl __divsi3 - adds r4, r0, 0 - movs r1, 0xA - bl __modsi3 - cmp r0, 0x4 - ble _080C3FDE - adds r4, 0xA -_080C3FDE: - adds r0, r4, 0 - movs r1, 0xA - bl __divsi3 - str r0, [r5, 0x4] - movs r4, 0 - ldrsh r0, [r7, r4] - cmp r0, 0 - bge _080C3FF4 - movs r0, 0x1 - strb r0, [r5, 0x10] -_080C3FF4: - ldr r1, [r5] - lsls r0, r1, 1 - adds r0, r1 - lsls r0, 2 - subs r0, r1 - lsls r0, 11 - movs r1, 0x64 - bl __divsi3 - adds r1, r0, 0 - movs r4, 0xFF - ands r0, r4 - cmp r0, 0x7F - bls _080C4016 - movs r0, 0x80 - lsls r0, 1 - adds r1, r0 -_080C4016: - lsrs r0, r1, 8 - str r0, [r5, 0x8] - ldr r1, [r5, 0x4] - lsls r0, r1, 1 - adds r0, r1 - lsls r0, 2 - subs r0, r1 - lsls r0, 11 - movs r1, 0x64 - bl __divsi3 - adds r1, r0, 0 - ands r0, r4 - cmp r0, 0x7F - bls _080C403A - movs r2, 0x80 - lsls r2, 1 - adds r1, r2 -_080C403A: - lsrs r0, r1, 8 - str r0, [r5, 0xC] - mov r0, r8 - lsls r4, r0, 24 - lsrs r4, 24 - adds r0, r4, 0 - movs r1, 0x1 - bl sub_80C3990 - strb r0, [r5, 0x11] - adds r0, r4, 0 - movs r1, 0x1 - bl sub_80C39E4 - lsls r0, 24 - asrs r0, 24 - cmp r0, 0 - bge _080C4060 - negs r0, r0 -_080C4060: - strb r0, [r5, 0x12] - ldr r0, _080C40A8 @ =gContestFinalStandings - add r0, r8 - ldrb r0, [r0] - cmp r0, 0 - beq _080C40B4 - ldr r4, [r5, 0x8] - ldrh r2, [r5, 0x8] - ldr r3, [r5, 0xC] - ldrh r1, [r5, 0xC] - ldrb r0, [r5, 0x10] - cmp r0, 0 - beq _080C4080 - lsls r0, r1, 16 - negs r0, r0 - lsrs r1, r0, 16 -_080C4080: - lsls r0, r2, 16 - asrs r2, r0, 16 - lsls r0, r1, 16 - asrs r1, r0, 16 - adds r0, r2, r1 - cmp r0, 0x58 - bne _080C40B4 - cmp r1, 0 - ble _080C40AC - subs r0, r3, 0x1 - str r0, [r5, 0xC] - b _080C40B4 - .align 2, 0 -_080C4098: .4byte gUnknown_02038678 -_080C409C: .4byte gUnknown_02038670 -_080C40A0: .4byte gSharedMem + 0x18018 -_080C40A4: .4byte gUnknown_02038688 -_080C40A8: .4byte gContestFinalStandings -_080C40AC: - cmp r2, 0 - ble _080C40B4 - subs r0, r4, 0x1 - str r0, [r5, 0x8] -_080C40B4: - movs r1, 0x14 - add r10, r1 - movs r2, 0x1 - add r8, r2 - mov r4, r8 - cmp r4, 0x3 - bgt _080C40C4 - b _080C3F68 -_080C40C4: - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r0} - bx r0 - thumb_func_end sub_80C3F00 - thumb_func_start sub_80C40D4 sub_80C40D4: @ 80C40D4 push {r4-r7,lr} diff --git a/src/battle/contest_link_80C2020.c b/src/battle/contest_link_80C2020.c index 2bf48bb43..36b4ccc31 100644 --- a/src/battle/contest_link_80C2020.c +++ b/src/battle/contest_link_80C2020.c @@ -56,11 +56,17 @@ struct UnkEwramStruct18000 { }; struct UnkEwramStruct18018 { - u8 filler_00[0x50]; + s32 unk_00; + s32 unk_04; + u32 unk_08; + u32 unk_0c; + u8 unk_10; + u8 unk_11; + u8 unk_12; }; #define eContestLink80C2020Struct2018000 (*(struct UnkEwramStruct18000 *)(gSharedMem + 0x18000)) -#define eContestLink80C2020Struct2018018 (*(struct UnkEwramStruct18018 *)(gSharedMem + 0x18018)) +#define eContestLink80C2020Struct2018018 ((struct UnkEwramStruct18018 *)(gSharedMem + 0x18018)) #define eContestLink80C2020Struct2018068 (gSharedMem + 0x18068) static void sub_80C2430(void); @@ -301,7 +307,7 @@ void sub_80C2358(void) LoadAllContestMonIcons(0, TRUE); sub_80C2340(); eContestLink80C2020Struct2018000 = (struct UnkEwramStruct18000){}; - eContestLink80C2020Struct2018018 = (struct UnkEwramStruct18018){}; + memset(eContestLink80C2020Struct2018018, 0, 4 * sizeof(struct UnkEwramStruct18018)); sub_80C33DC(); BeginNormalPaletteFade(0xffffffff, 0, 16, 0, 0); gPaletteFade.bufferTransferDisabled = FALSE; @@ -2071,3 +2077,74 @@ void sub_80C3EA4(u8 taskId) gTasks[taskId].data[11] ^= 1; } } + +void sub_80C3F00(void) +{ + s32 i; + s16 r2 = gUnknown_02038678[0]; + s32 r4; + u32 r5; + s8 r0; + + for (i = 1; i < 4; i++) + { + if (r2 < gUnknown_02038678[i]) + r2 = gUnknown_02038678[i]; + } + + if (r2 < 0) + { + r2 = gUnknown_02038678[0]; + + for (i = 1; i < 4; i++) + { + if (r2 > gUnknown_02038678[i]) + r2 = gUnknown_02038678[i]; + } + } + + for (i = 0; i < 4; i++) + { + r4 = 1000 * gUnknown_02038670[i] / ABS(r2); + if ((r4 % 10) >= 5) + r4 += 10; + eContestLink80C2020Struct2018018[i].unk_00 = r4 / 10; + + r4 = 1000 * ABS(gUnknown_02038688[i]) / ABS(r2); + if ((r4 % 10) >= 5) + r4 += 10; + eContestLink80C2020Struct2018018[i].unk_04 = r4 / 10; + + if (gUnknown_02038688[i] < 0) + eContestLink80C2020Struct2018018[i].unk_10 = 1; + + r5 = 22528 * eContestLink80C2020Struct2018018[i].unk_00 / 100; + if ((r5 % 256) >= 128) + r5 += 256; + eContestLink80C2020Struct2018018[i].unk_08 = r5 / 256; + + r5 = eContestLink80C2020Struct2018018[i].unk_04 * 22528 / 100; + if ((r5 % 256) >= 128) + r5 += 256; + eContestLink80C2020Struct2018018[i].unk_0c = r5 / 256; + + eContestLink80C2020Struct2018018[i].unk_11 = sub_80C3990(i, 1); + r0 = sub_80C39E4(i, 1); + eContestLink80C2020Struct2018018[i].unk_12 = ABS(r0); + + if (gContestFinalStandings[i]) + { + s16 r2__ = eContestLink80C2020Struct2018018[i].unk_08; + s16 r1__ = eContestLink80C2020Struct2018018[i].unk_0c; + if (eContestLink80C2020Struct2018018[i].unk_10) + r1__ = -r1__; + if (r2__ + r1__ == 88) + { + if (r1__ > 0) + eContestLink80C2020Struct2018018[i].unk_0c--; + else if (r2__ > 0) + eContestLink80C2020Struct2018018[i].unk_08--; + } + } + } +} |