diff options
author | PikalaxALT <pikalaxalt@gmail.com> | 2018-03-30 13:06:58 -0400 |
---|---|---|
committer | PikalaxALT <pikalaxalt@gmail.com> | 2018-03-30 13:06:58 -0400 |
commit | e8b47004b3e429a6d322853631b2375408d9563c (patch) | |
tree | 6ccbabab5d2f4a02e043a5fc751fda9acd934671 | |
parent | 9007978827e723c6d4fb4978ae8dc94f8a3900ab (diff) |
through nonmatching sub_80B90C0
-rw-r--r-- | asm/contest_effect.s | 129 | ||||
-rw-r--r-- | src/contest_effect.c | 105 |
2 files changed, 103 insertions, 131 deletions
diff --git a/asm/contest_effect.s b/asm/contest_effect.s index 6808c9204..22d116663 100644 --- a/asm/contest_effect.s +++ b/asm/contest_effect.s @@ -5,135 +5,6 @@ .text - thumb_func_start sub_80B9038 -sub_80B9038: @ 80B9038 - push {r4-r7,lr} - mov r7, r9 - mov r6, r8 - push {r6,r7} - lsls r0, 24 - lsrs r0, 24 - mov r8, r0 - movs r7, 0 - movs r5, 0 - ldr r4, _080B907C @ =gSharedMem + 0x192D0 - ldr r0, _080B9080 @ =gContestMoves - mov r9, r0 - movs r6, 0 -_080B9052: - ldrb r0, [r4, 0x11] - adds r0, r4 - adds r1, r5, r4 - ldrb r0, [r0] - ldrb r1, [r1] - cmp r0, r1 - bls _080B909A - adds r0, r4, 0 - subs r0, 0x70 - adds r0, r6, r0 - ldrh r0, [r0, 0x6] - lsls r0, 3 - add r0, r9 - ldrb r0, [r0, 0x1] - lsls r0, 29 - lsrs r0, 29 - cmp r8, r0 - bne _080B9084 - movs r0, 0x28 - b _080B9086 - .align 2, 0 -_080B907C: .4byte gSharedMem + 0x192D0 -_080B9080: .4byte gContestMoves -_080B9084: - movs r0, 0xA -_080B9086: - strh r0, [r4, 0x4] - strb r5, [r4, 0x8] - movs r0, 0xFF - strb r0, [r4, 0x9] - bl sub_80B9120 - lsls r0, 24 - cmp r0, 0 - beq _080B909A - adds r7, 0x1 -_080B909A: - adds r6, 0x1C - adds r5, 0x1 - cmp r5, 0x3 - ble _080B9052 - cmp r7, 0 - bne _080B90B0 - ldr r0, _080B90BC @ =gSharedMem + 0x192D0 - ldrb r0, [r0, 0x11] - movs r1, 0x36 - bl SetContestantStatusUnk14 -_080B90B0: - pop {r3,r4} - mov r8, r3 - mov r9, r4 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_080B90BC: .4byte gSharedMem + 0x192D0 - thumb_func_end sub_80B9038 - - thumb_func_start sub_80B90C0 -sub_80B90C0: @ 80B90C0 - push {lr} - lsls r0, 24 - lsrs r3, r0, 24 - ldr r2, _080B90EC @ =gSharedMem + 0x192D0 - adds r0, r2, 0 - adds r0, 0xD - adds r0, r3, r0 - movs r1, 0x1 - strb r1, [r0] - lsls r0, r3, 3 - subs r0, r3 - lsls r0, 2 - subs r2, 0x70 - adds r2, r0, r2 - ldrb r1, [r2, 0x10] - movs r0, 0x2 - ands r0, r1 - cmp r0, 0 - beq _080B90F0 - adds r0, r3, 0 - movs r1, 0x2D - b _080B9116 - .align 2, 0 -_080B90EC: .4byte gSharedMem + 0x192D0 -_080B90F0: - ldrb r0, [r2, 0x12] - cmp r0, 0 - bne _080B910E - ldrb r1, [r2, 0xB] - movs r0, 0x80 - ands r0, r1 - cmp r0, 0 - bne _080B911A - ldrb r1, [r2, 0xC] - movs r0, 0x6 - ands r0, r1 - cmp r0, 0 - bne _080B911A - movs r0, 0x1 - b _080B911C -_080B910E: - subs r0, 0x1 - strb r0, [r2, 0x12] - adds r0, r3, 0 - movs r1, 0x2C -_080B9116: - bl SetContestantStatusUnk13 -_080B911A: - movs r0, 0 -_080B911C: - pop {r1} - bx r1 - thumb_func_end sub_80B90C0 - thumb_func_start sub_80B9120 sub_80B9120: @ 80B9120 push {r4-r7,lr} diff --git a/src/contest_effect.c b/src/contest_effect.c index d5e9ca2e4..e28334b12 100644 --- a/src/contest_effect.c +++ b/src/contest_effect.c @@ -3,9 +3,9 @@ #include "random.h" #include "contest.h" -u8 sub_80B9120(void); -bool8 sub_80B90C0(u8); void sub_80B9038(u8); +bool8 sub_80B90C0(u8); +u8 sub_80B9120(void); s16 sub_80B9224(s16); s16 sub_80B9268(s16); @@ -1003,3 +1003,104 @@ void ContestEffect_47(void) SetContestantStatusUnk13(shared192D0.unk11, 61); } } + +void sub_80B9038(u8 category) +{ + int i; + int r7 = 0; + + for (i = 0; i < 4; i++) + { + if (shared192D0.unk0[shared192D0.unk11] > shared192D0.unk0[i]) + { + if (category == gContestMoves[sContestantStatus[i].currMove].contestCategory) + shared192D0.unk4 = 40; + else + shared192D0.unk4 = 10; + shared192D0.unk8[0] = i; + shared192D0.unk8[1] = 0xFF; + if (sub_80B9120()) + r7++; + } + } + + if (r7 == 0) + SetContestantStatusUnk14(shared192D0.unk11, 0x36); +} + +#ifdef NONMATCHING +bool8 sub_80B90C0(u8 i) +{ + shared192D0.unkD[i] = 1; + if (sContestantStatus[i].unk10_1) + SetContestantStatusUnk13(i, 45); + else if (sContestantStatus[i].unk12 == 0) + { + if (sContestantStatus[i].unkB_7 || sContestantStatus[i].unkC_1) + return FALSE; + return TRUE; + } + else + { + sContestantStatus[i].unk12--; + SetContestantStatusUnk13(i, 44); + } + return FALSE; +} +#else +__attribute__((naked)) bool8 sub_80B90C0(u8 i) +{ + asm_unified("\tpush {lr}\n" + "\tlsls r0, 24\n" + "\tlsrs r3, r0, 24\n" + "\tldr r2, _080B90EC @ =gSharedMem + 0x192D0\n" + "\tadds r0, r2, 0\n" + "\tadds r0, 0xD\n" + "\tadds r0, r3, r0\n" + "\tmovs r1, 0x1\n" + "\tstrb r1, [r0]\n" + "\tlsls r0, r3, 3\n" + "\tsubs r0, r3\n" + "\tlsls r0, 2\n" + "\tsubs r2, 0x70\n" + "\tadds r2, r0, r2\n" + "\tldrb r1, [r2, 0x10]\n" + "\tmovs r0, 0x2\n" + "\tands r0, r1\n" + "\tcmp r0, 0\n" + "\tbeq _080B90F0\n" + "\tadds r0, r3, 0\n" + "\tmovs r1, 0x2D\n" + "\tb _080B9116\n" + "\t.align 2, 0\n" + "_080B90EC: .4byte gSharedMem + 0x192D0\n" + "_080B90F0:\n" + "\tldrb r0, [r2, 0x12]\n" + "\tcmp r0, 0\n" + "\tbne _080B910E\n" + "\tldrb r1, [r2, 0xB]\n" + "\tmovs r0, 0x80\n" + "\tands r0, r1\n" + "\tcmp r0, 0\n" + "\tbne _080B911A\n" + "\tldrb r1, [r2, 0xC]\n" + "\tmovs r0, 0x6\n" + "\tands r0, r1\n" + "\tcmp r0, 0\n" + "\tbne _080B911A\n" + "\tmovs r0, 0x1\n" + "\tb _080B911C\n" + "_080B910E:\n" + "\tsubs r0, 0x1\n" + "\tstrb r0, [r2, 0x12]\n" + "\tadds r0, r3, 0\n" + "\tmovs r1, 0x2C\n" + "_080B9116:\n" + "\tbl SetContestantStatusUnk13\n" + "_080B911A:\n" + "\tmovs r0, 0\n" + "_080B911C:\n" + "\tpop {r1}\n" + "\tbx r1"); +} +#endif |