diff options
-rw-r--r-- | asm/contest_link_80C857C.s | 67 | ||||
-rw-r--r-- | include/contest.h | 1 | ||||
-rw-r--r-- | src/battle/contest_link_80C857C.c | 33 | ||||
-rw-r--r-- | src/contest.c | 6 | ||||
-rw-r--r-- | src/script_pokemon_util_80C4BF0.c | 6 | ||||
-rw-r--r-- | sym_common.txt | 2 |
6 files changed, 41 insertions, 74 deletions
diff --git a/asm/contest_link_80C857C.s b/asm/contest_link_80C857C.s index 2fdd4bbcd..e73efe74d 100644 --- a/asm/contest_link_80C857C.s +++ b/asm/contest_link_80C857C.s @@ -5,73 +5,6 @@ .text - thumb_func_start sub_80C88AC -sub_80C88AC: @ 80C88AC - push {r4,r5,lr} - lsls r0, 24 - lsrs r2, r0, 24 - ldr r1, _080C88D4 @ =gTasks - lsls r0, r2, 2 - adds r0, r2 - lsls r0, 3 - adds r5, r0, r1 - movs r1, 0x8 - ldrsh r0, [r5, r1] - cmp r0, 0 - beq _080C88D8 - cmp r0, 0x1 - beq _080C88FC - movs r0, 0 - strh r0, [r5, 0x8] - adds r0, r2, 0 - bl SwitchTaskToFollowupFunc - b _080C8924 - .align 2, 0 -_080C88D4: .4byte gTasks -_080C88D8: - bl GetMultiplayerId - lsls r0, 24 - cmp r0, 0 - bne _080C891E - bl sub_8007ECC - lsls r0, 24 - cmp r0, 0 - beq _080C8924 - ldr r0, _080C88F8 @ =gRngValue - movs r1, 0x4 - bl sub_80C857C - b _080C891E - .align 2, 0 -_080C88F8: .4byte gRngValue -_080C88FC: - movs r0, 0 - bl sub_80C85AC - lsls r0, 24 - cmp r0, 0 - beq _080C8924 - ldr r0, _080C892C @ =gRngValue - ldr r4, _080C8930 @ =gBlockRecvBuffer - adds r1, r4, 0 - movs r2, 0x4 - bl memcpy - ldr r0, _080C8934 @ =gUnknown_03005D28 - adds r1, r4, 0 - movs r2, 0x4 - bl memcpy -_080C891E: - ldrh r0, [r5, 0x8] - adds r0, 0x1 - strh r0, [r5, 0x8] -_080C8924: - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_080C892C: .4byte gRngValue -_080C8930: .4byte gBlockRecvBuffer -_080C8934: .4byte gUnknown_03005D28 - thumb_func_end sub_80C88AC - .ifdef ENGLISH thumb_func_start sub_80C8938 sub_80C8938: @ 80C8938 diff --git a/include/contest.h b/include/contest.h index e8e68f0e6..dfa0e38da 100644 --- a/include/contest.h +++ b/include/contest.h @@ -273,5 +273,6 @@ struct UnknownContestStruct6 extern u8 gContestPlayerMonIndex; extern u8 gIsLinkContest; +extern u32 gContestRngValue; #endif // GUARD_CONTEST_H diff --git a/src/battle/contest_link_80C857C.c b/src/battle/contest_link_80C857C.c index b86e7bb9c..937193172 100644 --- a/src/battle/contest_link_80C857C.c +++ b/src/battle/contest_link_80C857C.c @@ -1,5 +1,6 @@ #include "global.h" #include "ewram.h" +#include "random.h" #include "task.h" #include "contest.h" #include "text.h" @@ -296,6 +297,38 @@ void sub_80C8734(u8 taskId) } } +void sub_80C88AC(u8 taskId) +{ + switch (gTasks[taskId].data[0]) + { + default: + gTasks[taskId].data[0] = 0; + SwitchTaskToFollowupFunc(taskId); + break; + case 0: + if (GetMultiplayerId() == 0) + { + if (sub_8007ECC()) + { + sub_80C857C(&gRngValue, sizeof(u32)); + gTasks[taskId].data[0]++; + } + } + else + { + gTasks[taskId].data[0]++; + } + break; + case 1: + if (sub_80C85AC(0)) + { + memcpy(&gRngValue, gBlockRecvBuffer[0], sizeof(u32)); + memcpy(&gContestRngValue, gBlockRecvBuffer[0], sizeof(u32)); + gTasks[taskId].data[0]++; + } + break; + } +} asm(".section .text_de"); diff --git a/src/contest.c b/src/contest.c index 93d1a8efc..ce29d80b0 100644 --- a/src/contest.c +++ b/src/contest.c @@ -59,7 +59,7 @@ extern u16 gBattle_BG0_Y; extern u16 gBattle_BG0_X; extern u16 gBattle_BG1_X; extern u16 gBattle_WIN0H; -extern u32 gUnknown_03005D28; // saved RNG value +extern u32 gContestRngValue; // saved RNG value extern struct SpriteTemplate gUnknown_02024E8C; @@ -495,7 +495,7 @@ void sub_80AB6B4(u8 taskId) GetMultiplayerId(); // unused return value DestroyTask(taskId); gTasks[sContest.mainTaskId].func = sub_80AB960; - gRngValue = gUnknown_03005D28; + gRngValue = gContestRngValue; } } @@ -1812,7 +1812,7 @@ void sub_80ADDA4(u8 taskId) sub_80AF668(); sub_80AF138(); sub_80BE23C(sContestantStatus[gContestPlayerMonIndex].prevMove); - gUnknown_03005D28 = gRngValue; + gContestRngValue = gRngValue; StringExpandPlaceholders(gStringVar4, gUnknown_083CB02C); Text_InitWindow8002EB0(&gMenuWindow, gStringVar4, 776, 1, 15); gTasks[taskId].data[2] = 0; diff --git a/src/script_pokemon_util_80C4BF0.c b/src/script_pokemon_util_80C4BF0.c index f991297ab..e51bc3522 100644 --- a/src/script_pokemon_util_80C4BF0.c +++ b/src/script_pokemon_util_80C4BF0.c @@ -45,7 +45,7 @@ extern u16 gSpecialVar_ContestCategory; extern u16 gSpecialVar_ContestRank; extern u16 gSpecialVar_Result; -extern u32 gUnknown_03005D28; +extern u32 gContestRngValue; extern u8 gUnknown_02038694; extern u8 gUnknown_0203856C; @@ -373,8 +373,8 @@ void ScriptRandom(void) if(gIsLinkContest & 1) { - gUnknown_03005D28 = 1103515245 * gUnknown_03005D28 + 24691; - random = gUnknown_03005D28 >> 16; + gContestRngValue = 1103515245 * gContestRngValue + 24691; + random = gContestRngValue >> 16; scriptPtr = &gSpecialVar_Result; } else diff --git a/sym_common.txt b/sym_common.txt index 64e87c046..0bc9fd80c 100644 --- a/sym_common.txt +++ b/sym_common.txt @@ -213,7 +213,7 @@ gFieldItemUseCallback = .; gBagPocketScrollStates = .; . += 0x14; SYMBOL(gCurrentBagPocketItemSlots, 4) -SYMBOL(gUnknown_03005D28, 4) +SYMBOL(gContestRngValue, 4) // record_mixing.c SYMBOL(gUnknown_03005D2C, 4) |