summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--asm/contest_link_80C857C.s67
-rw-r--r--include/contest.h1
-rw-r--r--src/battle/contest_link_80C857C.c33
-rw-r--r--src/contest.c6
-rw-r--r--src/script_pokemon_util_80C4BF0.c6
-rw-r--r--sym_common.txt2
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)