summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--INSTALL.md6
-rw-r--r--asm/contest_link_80C2020.s4
-rw-r--r--asm/contest_link_80C857C.s1811
-rw-r--r--data/specials.inc1
-rw-r--r--include/contest.h12
-rw-r--r--include/ewram.h1
-rw-r--r--include/link.h2
-rw-r--r--ld_script.txt1
-rw-r--r--src/battle/anim/guard.c3
-rw-r--r--src/battle/battle_2.c17
-rw-r--r--src/battle/contest_link_80C857C.c723
-rw-r--r--src/contest.c6
-rw-r--r--src/contest_ai.c1
-rw-r--r--src/debug/matsuda_debug_menu.c9
-rw-r--r--src/engine/link.c9
-rw-r--r--src/engine/trade.c16
-rw-r--r--src/field/field_fadetransition.c2
-rw-r--r--src/rom3.c2
-rw-r--r--src/scene/berry_blender.c16
-rw-r--r--src/script_pokemon_util_80C4BF0.c17
-rw-r--r--sym_common.txt2
21 files changed, 777 insertions, 1884 deletions
diff --git a/INSTALL.md b/INSTALL.md
index b852dd126..dfd992f2f 100644
--- a/INSTALL.md
+++ b/INSTALL.md
@@ -6,12 +6,12 @@ Make sure that there is an environment variable called DEVKITARM with the path o
Then get the compiler from https://github.com/pret/agbcc and run the following commands.
- build.sh
- install.sh PATH_OF_POKERUBY_DIRECTORY
+ ./build.sh
+ ./install.sh PATH_OF_POKERUBY_DIRECTORY
Then in the pokeruby directory, build the tools.
- build_tools.sh
+ ./build_tools.sh
Finally, build the rom.
diff --git a/asm/contest_link_80C2020.s b/asm/contest_link_80C2020.s
index 8a0f096f0..891711bc5 100644
--- a/asm/contest_link_80C2020.s
+++ b/asm/contest_link_80C2020.s
@@ -657,7 +657,7 @@ sub_80C25C0: @ 80C25C0
push {r4,lr}
lsls r0, 24
lsrs r4, r0, 24
- bl sub_8007ECC
+ bl IsLinkTaskFinished
lsls r0, 24
cmp r0, 0
beq _080C25EC
@@ -5778,7 +5778,7 @@ sub_80C4B5C: @ 80C4B5C
ldrh r0, [r0]
cmp r0, 0x1
bne _080C4B90
- bl sub_8007ECC
+ bl IsLinkTaskFinished
lsls r0, 24
cmp r0, 0
beq _080C4B9E
diff --git a/asm/contest_link_80C857C.s b/asm/contest_link_80C857C.s
deleted file mode 100644
index 6afcaec6d..000000000
--- a/asm/contest_link_80C857C.s
+++ /dev/null
@@ -1,1811 +0,0 @@
- .include "constants/gba_constants.inc"
- .include "include/macros.inc"
-
- .syntax unified
-
- .text
-
- thumb_func_start sub_80C857C
-sub_80C857C: @ 80C857C
- push {r4,r5,lr}
- adds r2, r0, 0
- lsls r4, r1, 16
- lsrs r4, 16
- ldr r5, _080C85A8 @ =gSharedMem + 0x1E000
- adds r0, r5, 0
- adds r1, r2, 0
- adds r2, r4, 0
- bl memcpy
- bl bitmask_all_link_players_but_self
- lsls r0, 24
- lsrs r0, 24
- adds r1, r5, 0
- adds r2, r4, 0
- bl SendBlock
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_080C85A8: .4byte gSharedMem + 0x1E000
- thumb_func_end sub_80C857C
-
- thumb_func_start sub_80C85AC
-sub_80C85AC: @ 80C85AC
- push {r4,lr}
- lsls r0, 24
- lsrs r0, 24
- movs r1, 0x80
- lsls r1, 17
- lsls r1, r0
- lsrs r4, r1, 24
- bl GetBlockReceivedStatus
- adds r1, r4, 0
- ands r1, r0
- cmp r1, 0
- beq _080C85D0
- adds r0, r4, 0
- bl ResetBlockReceivedFlag
- movs r0, 0x1
- b _080C85D2
-_080C85D0:
- movs r0, 0
-_080C85D2:
- pop {r4}
- pop {r1}
- bx r1
- thumb_func_end sub_80C85AC
-
- thumb_func_start sub_80C85D8
-sub_80C85D8: @ 80C85D8
- push {r4,lr}
- movs r4, 0
-_080C85DC:
- bl GetBlockReceivedStatus
- lsls r0, 24
- lsrs r0, 24
- asrs r0, r4
- movs r1, 0x1
- ands r0, r1
- cmp r0, 0
- bne _080C85F2
- movs r0, 0
- b _080C85FE
-_080C85F2:
- adds r4, 0x1
- cmp r4, 0x3
- ble _080C85DC
- bl ResetBlockReceivedFlags
- movs r0, 0x1
-_080C85FE:
- pop {r4}
- pop {r1}
- bx r1
- thumb_func_end sub_80C85D8
-
-.ifdef ENGLISH
- thumb_func_start sub_80C8604
-sub_80C8604: @ 80C8604
- push {r4-r6,lr}
- lsls r0, 24
- lsrs r2, r0, 24
- movs r1, 0
- ldr r5, _080C8638 @ =gTasks
- ldr r6, _080C863C @ =sub_80C8644
- ldr r4, _080C8640 @ =gBlockRecvBuffer
- movs r3, 0xFF
-_080C8614:
- lsls r0, r1, 8
- adds r0, r4
- strh r3, [r0]
- adds r0, r1, 0x1
- lsls r0, 24
- lsrs r1, r0, 24
- cmp r1, 0x3
- bls _080C8614
- lsls r0, r2, 2
- adds r0, r2
- lsls r0, 3
- adds r0, r5
- movs r1, 0
- strh r1, [r0, 0x8]
- str r6, [r0]
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_080C8638: .4byte gTasks
-_080C863C: .4byte sub_80C8644
-_080C8640: .4byte gBlockRecvBuffer
- thumb_func_end sub_80C8604
-.else
- thumb_func_start sub_80C8604
-sub_80C8604: @ 80C8604
- lsls r0, 24
- lsrs r0, 24
- ldr r2, _080C861C @ =gTasks
- lsls r1, r0, 2
- adds r1, r0
- lsls r1, 3
- adds r1, r2
- movs r0, 0
- strh r0, [r1, 0x8]
- ldr r0, _080C8620 @ =sub_80C8644
- str r0, [r1]
- bx lr
- .align 2, 0
-_080C861C: .4byte gTasks
-_080C8620: .4byte sub_80C8644
- thumb_func_end sub_80C8604
-.endif
-
- thumb_func_start sub_80C8644
-sub_80C8644: @ 80C8644
- lsls r0, 24
- lsrs r0, 24
- ldr r2, _080C8658 @ =gTasks
- lsls r1, r0, 2
- adds r1, r0
- lsls r1, 3
- adds r1, r2
- ldr r0, _080C865C @ =sub_80C8660
- str r0, [r1]
- bx lr
- .align 2, 0
-_080C8658: .4byte gTasks
-_080C865C: .4byte sub_80C8660
- thumb_func_end sub_80C8644
-
- thumb_func_start sub_80C8660
-sub_80C8660: @ 80C8660
- push {r4,lr}
- lsls r0, 24
- lsrs r4, r0, 24
- ldr r0, _080C8694 @ =gReceivedRemoteLinkPlayers
- ldrb r0, [r0]
- cmp r0, 0
- beq _080C868E
- bl GetMultiplayerId
- ldr r1, _080C8698 @ =gContestPlayerMonIndex
- strb r0, [r1]
- bl GetLinkPlayerCount
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x4
- bne _080C868E
- ldr r1, _080C869C @ =gIsLinkContest
- movs r0, 0x1
- strb r0, [r1]
- adds r0, r4, 0
- bl SwitchTaskToFollowupFunc
-_080C868E:
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_080C8694: .4byte gReceivedRemoteLinkPlayers
-_080C8698: .4byte gContestPlayerMonIndex
-_080C869C: .4byte gIsLinkContest
- thumb_func_end sub_80C8660
-
- thumb_func_start sub_80C86A0
-sub_80C86A0: @ 80C86A0
- push {r4,r5,lr}
- adds r4, r0, 0
-.ifdef ENGLISH
- movs r5, 0x2
-.else
- movs r5, 0x5
-.endif
- ldrb r0, [r4]
- cmp r0, 0xFC
- bne _080C86B6
- ldrb r0, [r4, 0x1]
- cmp r0, 0x15
- bne _080C86B6
-.ifdef ENGLISH
- movs r0, 0x2
-.else
- movs r0, 0x5
-.endif
- b _080C872C
-_080C86B6:
- adds r0, r4, 0
- bl StringLength
- lsls r0, 16
- lsrs r0, 16
- cmp r0, 0x5
- bhi _080C872A
- ldrb r0, [r4]
- cmp r0, 0xFF
- beq _080C872A
-_080C86CA:
- ldrb r1, [r4]
- adds r0, r1, 0
- adds r0, 0x45
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x33
- bls _080C871E
- adds r0, r1, 0
- adds r0, 0x5F
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x9
- bls _080C871E
- adds r0, r1, 0
- cmp r0, 0
- beq _080C871E
- cmp r0, 0xAD
- beq _080C871E
- cmp r0, 0xB8
- beq _080C871E
- cmp r0, 0xAB
- beq _080C871E
- cmp r0, 0xAC
- beq _080C871E
- cmp r0, 0xB5
- beq _080C871E
- cmp r0, 0xB6
- beq _080C871E
- cmp r0, 0xBA
- beq _080C871E
- cmp r0, 0xAE
- beq _080C871E
- cmp r0, 0xB0
- beq _080C871E
- cmp r0, 0xB1
- beq _080C871E
- cmp r0, 0xB2
- beq _080C871E
- cmp r0, 0xB3
- beq _080C871E
- cmp r0, 0xB1
- bne _080C8728
-_080C871E:
- adds r4, 0x1
- ldrb r0, [r4]
- cmp r0, 0xFF
- bne _080C86CA
- b _080C872A
-_080C8728:
- movs r5, 0x1
-_080C872A:
- adds r0, r5, 0
-_080C872C:
- pop {r4,r5}
- pop {r1}
- bx r1
- thumb_func_end sub_80C86A0
-
-.ifdef ENGLISH
- thumb_func_start sub_80C8734
-sub_80C8734: @ 80C8734
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- sub sp, 0x4
- lsls r0, 24
- lsrs r0, 24
- mov r9, r0
- ldr r1, _080C8768 @ =gTasks
- lsls r5, r0, 2
- adds r0, r5, r0
- lsls r0, 3
- adds r4, r0, r1
- movs r1, 0x8
- ldrsh r0, [r4, r1]
- cmp r0, 0
- beq _080C876C
- cmp r0, 0x1
- beq _080C87D0
- movs r0, 0
- strh r0, [r4, 0x8]
- mov r0, r9
- bl SwitchTaskToFollowupFunc
- b _080C8896
- .align 2, 0
-_080C8768: .4byte gTasks
-_080C876C:
- bl GetMultiplayerId
- lsls r0, 24
- cmp r0, 0
- bne _080C87A8
- bl sub_8007ECC
- lsls r0, 24
- cmp r0, 0
- bne _080C8782
- b _080C8896
-_080C8782:
- ldr r0, _080C879C @ =gBlockSendBuffer
- ldr r1, _080C87A0 @ =gContestPlayerMonIndex
- ldrb r1, [r1]
- lsls r1, 6
- ldr r2, _080C87A4 @ =gContestMons
- adds r1, r2
- movs r2, 0x40
- bl memcpy
- movs r0, 0x2
- bl sub_8007E9C
- b _080C87BA
- .align 2, 0
-_080C879C: .4byte gBlockSendBuffer
-_080C87A0: .4byte gContestPlayerMonIndex
-_080C87A4: .4byte gContestMons
-_080C87A8:
- ldr r0, _080C87C4 @ =gBlockSendBuffer
- ldr r1, _080C87C8 @ =gContestPlayerMonIndex
- ldrb r1, [r1]
- lsls r1, 6
- ldr r2, _080C87CC @ =gContestMons
- adds r1, r2
- movs r2, 0x40
- bl memcpy
-_080C87BA:
- ldrh r0, [r4, 0x8]
- adds r0, 0x1
- strh r0, [r4, 0x8]
- b _080C8896
- .align 2, 0
-_080C87C4: .4byte gBlockSendBuffer
-_080C87C8: .4byte gContestPlayerMonIndex
-_080C87CC: .4byte gContestMons
-_080C87D0:
- bl sub_80C85D8
- lsls r0, 24
- cmp r0, 0
- beq _080C8896
- movs r7, 0
- str r5, [sp]
- ldr r0, _080C8818 @ =gContestMons
- ldr r6, _080C881C @ =gLinkPlayers
- movs r5, 0
- mov r10, r0
- movs r2, 0xFF
- mov r8, r2
-_080C87EA:
- lsls r1, r7, 8
- ldr r0, _080C8820 @ =gBlockRecvBuffer
- adds r1, r0
- mov r0, r10
- movs r2, 0x40
- bl memcpy
- ldr r0, _080C8824 @ =gContestMons + 0x2
- adds r4, r5, r0
- ldrh r0, [r6, 0x1A]
- cmp r0, 0x1
- bne _080C8828
- adds r0, r4, 0
- bl sub_80C86A0
- adds r1, r0, 0
- lsls r1, 24
- lsrs r1, 24
- adds r0, r4, 0
- bl ConvertInternationalString
- b _080C883E
- .align 2, 0
-_080C8818: .4byte gContestMons
-_080C881C: .4byte gLinkPlayers
-_080C8820: .4byte gBlockRecvBuffer
-_080C8824: .4byte gContestMons + 0x2
-_080C8828:
- ldrb r0, [r4, 0xA]
- cmp r0, 0xFC
- bne _080C8838
- adds r0, r4, 0
- movs r1, 0x1
- bl ConvertInternationalString
- b _080C883E
-_080C8838:
- strb r0, [r4, 0x5]
- mov r1, r8
- strb r1, [r4, 0xA]
-_080C883E:
- ldr r0, _080C886C @ =gContestMons + 0xD
- adds r4, r5, r0
- ldrh r0, [r6, 0x1A]
- cmp r0, 0x1
- bne _080C8870
- mov r2, r8
- strb r2, [r4, 0x7]
- ldrb r0, [r4, 0x4]
- strb r0, [r4, 0x6]
- ldrb r0, [r4, 0x3]
- strb r0, [r4, 0x5]
- ldrb r0, [r4, 0x2]
- strb r0, [r4, 0x4]
- ldrb r0, [r4, 0x1]
- strb r0, [r4, 0x3]
- ldrb r0, [r4]
- strb r0, [r4, 0x2]
- movs r0, 0x15
- strb r0, [r4, 0x1]
- movs r0, 0xFC
- strb r0, [r4]
- b _080C8878
- .align 2, 0
-_080C886C: .4byte gContestMons + 0xD
-_080C8870:
- ldrb r0, [r4, 0x7]
- strb r0, [r4, 0x5]
- mov r0, r8
- strb r0, [r4, 0x7]
-_080C8878:
- adds r6, 0x1C
- adds r5, 0x40
- movs r1, 0x40
- add r10, r1
- adds r7, 0x1
- cmp r7, 0x3
- ble _080C87EA
- ldr r0, _080C88A8 @ =gTasks
- ldr r1, [sp]
- add r1, r9
- lsls r1, 3
- adds r1, r0
- ldrh r0, [r1, 0x8]
- adds r0, 0x1
- strh r0, [r1, 0x8]
-_080C8896:
- add sp, 0x4
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_080C88A8: .4byte gTasks
- thumb_func_end sub_80C8734
-.else
- thumb_func_start sub_80C8734
-sub_80C8734: @ 80C8734
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- sub sp, 0x4
- lsls r0, 24
- lsrs r5, r0, 24
- ldr r1, _080C8760 @ =gTasks
- lsls r4, r5, 2
- adds r0, r4, r5
- lsls r0, 3
- adds r2, r0, r1
- movs r3, 0x8
- ldrsh r0, [r2, r3]
- cmp r0, 0x1
- beq _080C8800
- cmp r0, 0x1
- bgt _080C8764
- cmp r0, 0
- beq _080C8770
- b _080C88E0
- .align 2, 0
-_080C8760: .4byte gTasks
-_080C8764:
- cmp r0, 0x2
- bne _080C876A
- b _080C88D4_B
-_080C876A:
- cmp r0, 0x8
- beq _080C8770
- b _080C88E0
-_080C8770:
- bl GetMultiplayerId
- lsls r0, 24
- cmp r0, 0
- bne _080C87D4
- bl sub_8007ECC
- lsls r0, 24
- cmp r0, 0
- bne _080C8786
- b _080C88EE
-_080C8786:
- ldr r0, _080C87A0 @ =gTasks
- lsls r1, r5, 2
- adds r1, r5
- lsls r1, 3
- adds r4, r1, r0
- movs r1, 0x8
- ldrsh r0, [r4, r1]
- cmp r0, 0
- bne _080C87A4
- movs r0, 0x3
- strh r0, [r4, 0x8]
- b _080C88EE
- .align 2, 0
-_080C87A0: .4byte gTasks
-_080C87A4:
- ldr r0, _080C87C8 @ =gBlockSendBuffer
- ldr r1, _080C87CC @ =gContestPlayerMonIndex
- ldrb r1, [r1]
- lsls r1, 6
- ldr r2, _080C87D0 @ =gContestMons
- adds r1, r2
- movs r2, 0x40
- bl memcpy
- movs r0, 0
- bl de_sub_80C9274
- movs r0, 0x2
- bl sub_8007E9C
- movs r0, 0x1
- strh r0, [r4, 0x8]
- b _080C88EE
- .align 2, 0
-_080C87C8: .4byte gBlockSendBuffer
-_080C87CC: .4byte gContestPlayerMonIndex
-_080C87D0: .4byte gContestMons
-_080C87D4:
- ldr r0, _080C87F0 @ =gBlockSendBuffer
- ldr r1, _080C87F4 @ =gContestPlayerMonIndex
- ldrb r1, [r1]
- lsls r1, 6
- ldr r2, _080C87F8 @ =gContestMons
- adds r1, r2
- movs r2, 0x40
- bl memcpy
- movs r0, 0
- bl de_sub_80C9294
- ldr r1, _080C87FC @ =gTasks
- b _080C88E0
- .align 2, 0
-_080C87F0: .4byte gBlockSendBuffer
-_080C87F4: .4byte gContestPlayerMonIndex
-_080C87F8: .4byte gContestMons
-_080C87FC: .4byte gTasks
-_080C8800:
- bl sub_80C85D8
- lsls r0, 24
- cmp r0, 0
- beq _080C88EE
- movs r2, 0
- mov r8, r2
- str r4, [sp]
- ldr r0, _080C884C @ =gContestMons
- ldr r7, _080C8850 @ =gLinkPlayers
- movs r6, 0
- mov r10, r0
- movs r3, 0xFF
- mov r9, r3
-_080C881C:
- mov r0, r8
- lsls r1, r0, 8
- ldr r0, _080C8854 @ =gBlockRecvBuffer
- adds r1, r0
- mov r0, r10
- movs r2, 0x40
- bl memcpy
- ldr r1, _080C8858 @ =gContestMons + 0x2
- adds r4, r6, r1
- ldrh r0, [r7, 0x1A]
- cmp r0, 0x1
- bne _080C885C
- adds r0, r4, 0
- bl sub_80C86A0
- adds r1, r0, 0
- lsls r1, 24
- lsrs r1, 24
- adds r0, r4, 0
- bl ConvertInternationalString
- b _080C8872
- .align 2, 0
-_080C884C: .4byte gContestMons
-_080C8850: .4byte gLinkPlayers
-_080C8854: .4byte gBlockRecvBuffer
-_080C8858: .4byte gContestMons + 0x2
-_080C885C:
- ldrb r0, [r4, 0xA]
- cmp r0, 0xFC
- bne _080C886C
- adds r0, r4, 0
- movs r1, 0x1
- bl ConvertInternationalString
- b _080C8872
-_080C886C:
- strb r0, [r4, 0x5]
- mov r2, r9
- strb r2, [r4, 0xA]
-_080C8872:
- ldr r0, _080C88A0 @ =gContestMons + 0xD
- adds r4, r6, r0
- ldrh r0, [r7, 0x1A]
- cmp r0, 0x1
- bne _080C88A4
- mov r3, r9
- strb r3, [r4, 0x7]
- ldrb r0, [r4, 0x4]
- strb r0, [r4, 0x6]
- ldrb r0, [r4, 0x3]
- strb r0, [r4, 0x5]
- ldrb r0, [r4, 0x2]
- strb r0, [r4, 0x4]
- ldrb r0, [r4, 0x1]
- strb r0, [r4, 0x3]
- ldrb r0, [r4]
- strb r0, [r4, 0x2]
- movs r0, 0x15
- strb r0, [r4, 0x1]
- movs r0, 0xFC
- strb r0, [r4]
- b _080C88AC
- .align 2, 0
-_080C88A0: .4byte gContestMons + 0xD
-_080C88A4:
- ldrb r0, [r4, 0x7]
- strb r0, [r4, 0x5]
- mov r0, r9
- strb r0, [r4, 0x7]
-_080C88AC:
- adds r7, 0x1C
- adds r6, 0x40
- movs r1, 0x40
- add r10, r1
- movs r2, 0x1
- add r8, r2
- mov r3, r8
- cmp r3, 0x3
- ble _080C881C
- ldr r0, _080C88D0 @ =gTasks
- ldr r2, [sp]
- adds r1, r2, r5
- lsls r1, 3
- adds r1, r0
- ldrh r0, [r1, 0x8]
- adds r0, 0x1
- strh r0, [r1, 0x8]
- b _080C88EE
- .align 2, 0
-_080C88D0: .4byte gTasks
-_080C88D4_B:
- movs r0, 0
- strh r0, [r2, 0x8]
- adds r0, r5, 0
- bl SwitchTaskToFollowupFunc
- b _080C88EE
-_080C88E0:
- lsls r0, r5, 2
- adds r0, r5
- lsls r0, 3
- adds r0, r1
- ldrh r1, [r0, 0x8]
- adds r1, 0x1
- strh r1, [r0, 0x8]
-_080C88EE:
- add sp, 0x4
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r0}
- bx r0
- thumb_func_end sub_80C8734
-.endif
-
- 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
- push {r4-r7,lr}
- mov r7, r8
- push {r7}
- lsls r0, 24
- lsrs r5, r0, 24
- ldr r0, _080C8968 @ =gTasks
- mov r8, r0
- lsls r6, r5, 2
- adds r0, r6, r5
- lsls r7, r0, 3
- mov r1, r8
- adds r4, r7, r1
- movs r1, 0x8
- ldrsh r0, [r4, r1]
- cmp r0, 0
- beq _080C896C
- cmp r0, 0x1
- beq _080C8998
- movs r0, 0
- strh r0, [r4, 0x8]
- adds r0, r5, 0
- bl SwitchTaskToFollowupFunc
- b _080C89CE
- .align 2, 0
-_080C8968: .4byte gTasks
-_080C896C:
- ldr r1, _080C8994 @ =gBlockSendBuffer
- ldrh r0, [r4, 0x1A]
- strb r0, [r1]
- bl GetMultiplayerId
- lsls r0, 24
- cmp r0, 0
- bne _080C898C
- bl sub_8007ECC
- lsls r0, 24
- cmp r0, 0
- beq _080C89CE
- movs r0, 0x2
- bl sub_8007E9C
-_080C898C:
- ldrh r0, [r4, 0x8]
- adds r0, 0x1
- strh r0, [r4, 0x8]
- b _080C89CE
- .align 2, 0
-_080C8994: .4byte gBlockSendBuffer
-_080C8998:
- bl sub_80C85D8
- lsls r0, 24
- cmp r0, 0
- beq _080C89CE
- movs r3, 0
- mov r12, r8
- adds r1, r6, 0
- ldr r4, _080C89D8 @ =gBlockRecvBuffer
- mov r0, r12
- adds r0, 0xA
- adds r2, r7, r0
- movs r6, 0x80
- lsls r6, 1
-_080C89B4:
- ldrh r0, [r4]
- strh r0, [r2]
- adds r4, r6
- adds r2, 0x2
- adds r3, 0x1
- cmp r3, 0x3
- ble _080C89B4
- adds r1, r5
- lsls r1, 3
- add r1, r12
- ldrh r0, [r1, 0x8]
- adds r0, 0x1
- strh r0, [r1, 0x8]
-_080C89CE:
- pop {r3}
- mov r8, r3
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_080C89D8: .4byte gBlockRecvBuffer
- thumb_func_end sub_80C8938
-.else
- thumb_func_start sub_80C8938
-sub_80C8938: @ 80C8938
- push {r4-r7,lr}
- mov r7, r8
- push {r7}
- lsls r0, 24
- lsrs r4, r0, 24
- ldr r1, _080C8960 @ =gTasks
- lsls r5, r4, 2
- adds r0, r5, r4
- lsls r6, r0, 3
- adds r2, r6, r1
- movs r3, 0x8
- ldrsh r0, [r2, r3]
- mov r8, r1
- cmp r0, 0x1
- beq _080C89C4
- cmp r0, 0x1
- bgt _080C8964
- cmp r0, 0
- beq _080C896C
- b _080C8A0C
- .align 2, 0
-_080C8960: .4byte gTasks
-_080C8964:
- cmp r0, 0x2
- beq _080C8A00
- cmp r0, 0x8
- bne _080C8A0C
-_080C896C:
- ldr r1, _080C89A0 @ =gBlockSendBuffer
- lsls r0, r4, 2
- adds r0, r4
- lsls r0, 3
- mov r2, r8
- adds r4, r0, r2
- ldrh r0, [r4, 0x1A]
- strb r0, [r1]
- bl GetMultiplayerId
- lsls r0, 24
- cmp r0, 0
- bne _080C89B6
- bl sub_8007ECC
- lsls r0, 24
- cmp r0, 0
- beq _080C8A1A
- movs r3, 0x8
- ldrsh r0, [r4, r3]
- cmp r0, 0
- bne _080C89A4
- movs r0, 0x3
- strh r0, [r4, 0x8]
- b _080C8A1A
- .align 2, 0
-_080C89A0: .4byte gBlockSendBuffer
-_080C89A4:
- movs r0, 0x1
- bl de_sub_80C9274
- movs r0, 0x2
- bl sub_8007E9C
- movs r0, 0x1
- strh r0, [r4, 0x8]
- b _080C8A1A
-_080C89B6:
- movs r0, 0x1
- bl de_sub_80C9294
- ldrh r0, [r4, 0x8]
- adds r0, 0x1
- strh r0, [r4, 0x8]
- b _080C8A1A
-_080C89C4:
- bl sub_80C85D8
- lsls r0, 24
- cmp r0, 0
- beq _080C8A1A
- movs r3, 0
- adds r7, r5, 0
- ldr r1, _080C89FC @ =gBlockRecvBuffer
- mov r0, r8
- adds r0, 0xA
- adds r2, r6, r0
- movs r5, 0x80
- lsls r5, 1
-_080C89DE:
- ldrh r0, [r1]
- strh r0, [r2]
- adds r1, r5
- adds r2, 0x2
- adds r3, 0x1
- cmp r3, 0x3
- ble _080C89DE
- adds r1, r7, r4
- lsls r1, 3
- add r1, r8
- ldrh r0, [r1, 0x8]
- adds r0, 0x1
- strh r0, [r1, 0x8]
- b _080C8A1A
- .align 2, 0
-_080C89FC: .4byte gBlockRecvBuffer
-_080C8A00:
- movs r0, 0
- strh r0, [r2, 0x8]
- adds r0, r4, 0
- bl SwitchTaskToFollowupFunc
- b _080C8A1A
-_080C8A0C:
- lsls r0, r4, 2
- adds r0, r4
- lsls r0, 3
- add r0, r8
- ldrh r1, [r0, 0x8]
- adds r1, 0x1
- strh r1, [r0, 0x8]
-_080C8A1A:
- pop {r3}
- mov r8, r3
- pop {r4-r7}
- pop {r0}
- bx r0
- thumb_func_end sub_80C8938
-.endif
-
- thumb_func_start sub_80C89DC
-sub_80C89DC: @ 80C89DC
- push {r4,lr}
- lsls r0, 24
- lsrs r2, r0, 24
- ldr r1, _080C8A04 @ =gTasks
- lsls r0, r2, 2
- adds r0, r2
- lsls r0, 3
- adds r4, r0, r1
- movs r1, 0x8
- ldrsh r0, [r4, r1]
- cmp r0, 0
- beq _080C8A08
- cmp r0, 0x1
- beq _080C8A20
- movs r0, 0
- strh r0, [r4, 0x8]
- adds r0, r2, 0
- bl SwitchTaskToFollowupFunc
- b _080C8A30
- .align 2, 0
-_080C8A04: .4byte gTasks
-_080C8A08:
- bl sub_8007ECC
- lsls r0, 24
- cmp r0, 0
- beq _080C8A30
- ldr r0, _080C8A1C @ =gContestPlayerMonIndex
- movs r1, 0x1
- bl sub_80C857C
- b _080C8A2A
- .align 2, 0
-_080C8A1C: .4byte gContestPlayerMonIndex
-_080C8A20:
- bl sub_80C85D8
- lsls r0, 24
- cmp r0, 0
- beq _080C8A30
-_080C8A2A:
- ldrh r0, [r4, 0x8]
- adds r0, 0x1
- strh r0, [r4, 0x8]
-_080C8A30:
- pop {r4}
- pop {r0}
- bx r0
- thumb_func_end sub_80C89DC
-
- thumb_func_start sub_80C8A38
-sub_80C8A38: @ 80C8A38
- push {r4-r7,lr}
- lsls r0, 24
- lsrs r5, r0, 24
- ldr r7, _080C8A60 @ =gTasks
- lsls r6, r5, 2
- adds r0, r6, r5
- lsls r0, 3
- adds r4, r0, r7
- movs r1, 0x8
- ldrsh r0, [r4, r1]
- cmp r0, 0
- beq _080C8A64
- cmp r0, 0x1
- beq _080C8A94
- movs r0, 0
- strh r0, [r4, 0x8]
- adds r0, r5, 0
- bl SwitchTaskToFollowupFunc
- b _080C8AC2
- .align 2, 0
-_080C8A60: .4byte gTasks
-_080C8A64:
- bl sub_8007ECC
- lsls r0, 24
- cmp r0, 0
- beq _080C8AC2
- ldr r0, _080C8A8C @ =gContestPlayerMonIndex
- ldrb r1, [r0]
- lsls r0, r1, 3
- subs r0, r1
- lsls r0, 2
- ldr r1, _080C8A90 @ =gSharedMem + 0x19266
- adds r0, r1
- movs r1, 0x2
- bl sub_80C857C
- ldrh r0, [r4, 0x8]
- adds r0, 0x1
- strh r0, [r4, 0x8]
- b _080C8AC2
- .align 2, 0
-_080C8A8C: .4byte gContestPlayerMonIndex
-_080C8A90: .4byte gSharedMem + 0x19266
-_080C8A94:
- bl sub_80C85D8
- lsls r0, 24
- cmp r0, 0
- beq _080C8AC2
- ldr r1, _080C8AC8 @ =gBlockRecvBuffer
- ldr r3, _080C8ACC @ =gSharedMem + 0x19266
- movs r4, 0x80
- lsls r4, 1
- movs r2, 0x3
-_080C8AA8:
- ldrh r0, [r1]
- strh r0, [r3]
- adds r1, r4
- adds r3, 0x1C
- subs r2, 0x1
- cmp r2, 0
- bge _080C8AA8
- adds r1, r6, r5
- lsls r1, 3
- adds r1, r7
- ldrh r0, [r1, 0x8]
- adds r0, 0x1
- strh r0, [r1, 0x8]
-_080C8AC2:
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_080C8AC8: .4byte gBlockRecvBuffer
-_080C8ACC: .4byte gSharedMem + 0x19266
- thumb_func_end sub_80C8A38
-
- thumb_func_start sub_80C8AD0
-sub_80C8AD0: @ 80C8AD0
- push {r4,lr}
- lsls r0, 24
- lsrs r4, r0, 24
- ldr r1, _080C8AF8 @ =gTasks
- lsls r0, r4, 2
- adds r0, r4
- lsls r0, 3
- adds r2, r0, r1
- movs r3, 0x8
- ldrsh r0, [r2, r3]
- adds r3, r1, 0
- cmp r0, 0xB
- bls _080C8AEC
- b _080C8C70
-_080C8AEC:
- lsls r0, 2
- ldr r1, _080C8AFC @ =_080C8B00
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .align 2, 0
-_080C8AF8: .4byte gTasks
-_080C8AFC: .4byte _080C8B00
- .align 2, 0
-_080C8B00:
- .4byte _080C8B30
- .4byte _080C8B4C
- .4byte _080C8B74
- .4byte _080C8B98
- .4byte _080C8BB0
- .4byte _080C8B74
- .4byte _080C8BD8
- .4byte _080C8BF0
- .4byte _080C8B74
- .4byte _080C8C18
- .4byte _080C8C30
- .4byte _080C8B74
-_080C8B30:
- bl sub_8007ECC
- lsls r0, 24
- cmp r0, 0
- bne _080C8B3C
- b _080C8C7A
-_080C8B3C:
- ldr r0, _080C8B48 @ =gUnknown_02038678
- movs r1, 0x8
- bl sub_80C857C
- b _080C8C4C
- .align 2, 0
-_080C8B48: .4byte gUnknown_02038678
-_080C8B4C:
- bl sub_80C85D8
- lsls r0, 24
- cmp r0, 0
- bne _080C8B58
- b _080C8C7A
-_080C8B58:
- ldr r0, _080C8B68 @ =gUnknown_02038678
- ldr r1, _080C8B6C @ =gUnknown_0203869B
- ldrb r1, [r1]
- lsls r1, 8
- ldr r2, _080C8B70 @ =gBlockRecvBuffer
- adds r1, r2
- movs r2, 0x8
- b _080C8C48
- .align 2, 0
-_080C8B68: .4byte gUnknown_02038678
-_080C8B6C: .4byte gUnknown_0203869B
-_080C8B70: .4byte gBlockRecvBuffer
-_080C8B74:
- lsls r0, r4, 2
- adds r0, r4
- lsls r0, 3
- adds r2, r0, r3
- ldrh r0, [r2, 0xA]
- adds r1, r0, 0x1
- strh r1, [r2, 0xA]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0xA
- bgt _080C8B8C
- b _080C8C7A
-_080C8B8C:
- movs r0, 0
- strh r0, [r2, 0xA]
- ldrh r0, [r2, 0x8]
- adds r0, 0x1
- strh r0, [r2, 0x8]
- b _080C8C7A
-_080C8B98:
- bl sub_8007ECC
- lsls r0, 24
- cmp r0, 0
- beq _080C8C7A
- ldr r0, _080C8BAC @ =gUnknown_02038680
- movs r1, 0x8
- bl sub_80C857C
- b _080C8C4C
- .align 2, 0
-_080C8BAC: .4byte gUnknown_02038680
-_080C8BB0:
- bl sub_80C85D8
- lsls r0, 24
- cmp r0, 0
- beq _080C8C7A
- ldr r0, _080C8BCC @ =gUnknown_02038680
- ldr r1, _080C8BD0 @ =gUnknown_0203869B
- ldrb r1, [r1]
- lsls r1, 8
- ldr r2, _080C8BD4 @ =gBlockRecvBuffer
- adds r1, r2
- movs r2, 0x8
- b _080C8C48
- .align 2, 0
-_080C8BCC: .4byte gUnknown_02038680
-_080C8BD0: .4byte gUnknown_0203869B
-_080C8BD4: .4byte gBlockRecvBuffer
-_080C8BD8:
- bl sub_8007ECC
- lsls r0, 24
- cmp r0, 0
- beq _080C8C7A
- ldr r0, _080C8BEC @ =gUnknown_02038688
- movs r1, 0x8
- bl sub_80C857C
- b _080C8C4C
- .align 2, 0
-_080C8BEC: .4byte gUnknown_02038688
-_080C8BF0:
- bl sub_80C85D8
- lsls r0, 24
- cmp r0, 0
- beq _080C8C7A
- ldr r0, _080C8C0C @ =gUnknown_02038688
- ldr r1, _080C8C10 @ =gUnknown_0203869B
- ldrb r1, [r1]
- lsls r1, 8
- ldr r2, _080C8C14 @ =gBlockRecvBuffer
- adds r1, r2
- movs r2, 0x8
- b _080C8C48
- .align 2, 0
-_080C8C0C: .4byte gUnknown_02038688
-_080C8C10: .4byte gUnknown_0203869B
-_080C8C14: .4byte gBlockRecvBuffer
-_080C8C18:
- bl sub_8007ECC
- lsls r0, 24
- cmp r0, 0
- beq _080C8C7A
- ldr r0, _080C8C2C @ =gContestFinalStandings
- movs r1, 0x4
- bl sub_80C857C
- b _080C8C4C
- .align 2, 0
-_080C8C2C: .4byte gContestFinalStandings
-_080C8C30:
- bl sub_80C85D8
- lsls r0, 24
- cmp r0, 0
- beq _080C8C7A
- ldr r0, _080C8C60 @ =gContestFinalStandings
- ldr r1, _080C8C64 @ =gUnknown_0203869B
- ldrb r1, [r1]
- lsls r1, 8
- ldr r2, _080C8C68 @ =gBlockRecvBuffer
- adds r1, r2
- movs r2, 0x4
-_080C8C48:
- bl memcpy
-_080C8C4C:
- ldr r1, _080C8C6C @ =gTasks
- lsls r0, r4, 2
- adds r0, r4
- lsls r0, 3
- adds r0, r1
- ldrh r1, [r0, 0x8]
- adds r1, 0x1
- strh r1, [r0, 0x8]
- b _080C8C7A
- .align 2, 0
-_080C8C60: .4byte gContestFinalStandings
-_080C8C64: .4byte gUnknown_0203869B
-_080C8C68: .4byte gBlockRecvBuffer
-_080C8C6C: .4byte gTasks
-_080C8C70:
- movs r0, 0
- strh r0, [r2, 0x8]
- adds r0, r4, 0
- bl SwitchTaskToFollowupFunc
-_080C8C7A:
- pop {r4}
- pop {r0}
- bx r0
- thumb_func_end sub_80C8AD0
-
- thumb_func_start sub_80C8C80
-sub_80C8C80: @ 80C8C80
- push {r4,lr}
- lsls r0, 24
- lsrs r4, r0, 24
- ldr r1, _080C8CA8 @ =gTasks
- lsls r0, r4, 2
- adds r0, r4
- lsls r0, 3
- adds r2, r0, r1
- movs r3, 0x8
- ldrsh r0, [r2, r3]
- adds r3, r1, 0
- cmp r0, 0xB
- bls _080C8C9C
- b _080C8E0C
-_080C8C9C:
- lsls r0, 2
- ldr r1, _080C8CAC @ =_080C8CB0
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .align 2, 0
-_080C8CA8: .4byte gTasks
-_080C8CAC: .4byte _080C8CB0
- .align 2, 0
-_080C8CB0:
- .4byte _080C8CE0
- .4byte _080C8CFC
- .4byte _080C8D24
- .4byte _080C8D46
- .4byte _080C8D60
- .4byte _080C8D24
- .4byte _080C8D88
- .4byte _080C8DA0
- .4byte _080C8D24
- .4byte _080C8DB4
- .4byte _080C8DCC
- .4byte _080C8D24
-_080C8CE0:
- bl sub_8007ECC
- lsls r0, 24
- cmp r0, 0
- bne _080C8CEC
- b _080C8E16
-_080C8CEC:
- ldr r0, _080C8CF8 @ =gSharedMem + 0x19260
- movs r1, 0x70
- bl sub_80C857C
- b _080C8DE8
- .align 2, 0
-_080C8CF8: .4byte gSharedMem + 0x19260
-_080C8CFC:
- bl sub_80C85D8
- lsls r0, 24
- cmp r0, 0
- bne _080C8D08
- b _080C8E16
-_080C8D08:
- ldr r0, _080C8D18 @ =gSharedMem + 0x19260
- ldr r1, _080C8D1C @ =gUnknown_0203869B
- ldrb r1, [r1]
- lsls r1, 8
- ldr r2, _080C8D20 @ =gBlockRecvBuffer
- adds r1, r2
- movs r2, 0x70
- b _080C8DE4
- .align 2, 0
-_080C8D18: .4byte gSharedMem + 0x19260
-_080C8D1C: .4byte gUnknown_0203869B
-_080C8D20: .4byte gBlockRecvBuffer
-_080C8D24:
- lsls r0, r4, 2
- adds r0, r4
- lsls r0, 3
- adds r2, r0, r3
- ldrh r0, [r2, 0xA]
- adds r1, r0, 0x1
- strh r1, [r2, 0xA]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0xA
- ble _080C8E16
- movs r0, 0
- strh r0, [r2, 0xA]
- ldrh r0, [r2, 0x8]
- adds r0, 0x1
- strh r0, [r2, 0x8]
- b _080C8E16
-_080C8D46:
- bl sub_8007ECC
- lsls r0, 24
- cmp r0, 0
- beq _080C8E16
- ldr r0, _080C8D5C @ =gSharedMem + 0x192D0
- movs r1, 0x14
- bl sub_80C857C
- b _080C8DE8
- .align 2, 0
-_080C8D5C: .4byte gSharedMem + 0x192D0
-_080C8D60:
- bl sub_80C85D8
- lsls r0, 24
- cmp r0, 0
- beq _080C8E16
- ldr r0, _080C8D7C @ =gSharedMem + 0x192D0
- ldr r1, _080C8D80 @ =gUnknown_0203869B
- ldrb r1, [r1]
- lsls r1, 8
- ldr r2, _080C8D84 @ =gBlockRecvBuffer
- adds r1, r2
- movs r2, 0x14
- b _080C8DE4
- .align 2, 0
-_080C8D7C: .4byte gSharedMem + 0x192D0
-_080C8D80: .4byte gUnknown_0203869B
-_080C8D84: .4byte gBlockRecvBuffer
-_080C8D88:
- bl sub_8007ECC
- lsls r0, 24
- cmp r0, 0
- beq _080C8E16
- ldr r0, _080C8D9C @ =gSharedMem + 0x19328
- movs r1, 0x4
- bl sub_80C857C
- b _080C8DE8
- .align 2, 0
-_080C8D9C: .4byte gSharedMem + 0x19328
-_080C8DA0:
- bl sub_80C85D8
- lsls r0, 24
- cmp r0, 0
- beq _080C8E16
- ldr r0, _080C8DB0 @ =gSharedMem + 0x19328
- b _080C8DD8
- .align 2, 0
-_080C8DB0: .4byte gSharedMem + 0x19328
-_080C8DB4:
- bl sub_8007ECC
- lsls r0, 24
- cmp r0, 0
- beq _080C8E16
- ldr r0, _080C8DC8 @ =gUnknown_02038696
- movs r1, 0x4
- bl sub_80C857C
- b _080C8DE8
- .align 2, 0
-_080C8DC8: .4byte gUnknown_02038696
-_080C8DCC:
- bl sub_80C85D8
- lsls r0, 24
- cmp r0, 0
- beq _080C8E16
- ldr r0, _080C8DFC @ =gUnknown_02038696
-_080C8DD8:
- ldr r1, _080C8E00 @ =gUnknown_0203869B
- ldrb r1, [r1]
- lsls r1, 8
- ldr r2, _080C8E04 @ =gBlockRecvBuffer
- adds r1, r2
- movs r2, 0x4
-_080C8DE4:
- bl memcpy
-_080C8DE8:
- ldr r1, _080C8E08 @ =gTasks
- lsls r0, r4, 2
- adds r0, r4
- lsls r0, 3
- adds r0, r1
- ldrh r1, [r0, 0x8]
- adds r1, 0x1
- strh r1, [r0, 0x8]
- b _080C8E16
- .align 2, 0
-_080C8DFC: .4byte gUnknown_02038696
-_080C8E00: .4byte gUnknown_0203869B
-_080C8E04: .4byte gBlockRecvBuffer
-_080C8E08: .4byte gTasks
-_080C8E0C:
- movs r0, 0
- strh r0, [r2, 0x8]
- adds r0, r4, 0
- bl SwitchTaskToFollowupFunc
-_080C8E16:
- pop {r4}
- pop {r0}
- bx r0
- thumb_func_end sub_80C8C80
-
-.ifdef ENGLISH
- thumb_func_start sub_80C8E1C
-sub_80C8E1C: @ 80C8E1C
- push {r4-r7,lr}
- mov r7, r8
- push {r7}
- lsls r0, 24
- lsrs r5, r0, 24
- ldr r0, _080C8E4C @ =gTasks
- mov r8, r0
- lsls r6, r5, 2
- adds r0, r6, r5
- lsls r7, r0, 3
- mov r1, r8
- adds r4, r7, r1
- movs r1, 0x8
- ldrsh r0, [r4, r1]
- cmp r0, 0
- beq _080C8E50
- cmp r0, 0x1
- beq _080C8E7C
- movs r0, 0
- strh r0, [r4, 0x8]
- adds r0, r5, 0
- bl SwitchTaskToFollowupFunc
- b _080C8EAE
- .align 2, 0
-_080C8E4C: .4byte gTasks
-_080C8E50:
- ldr r1, _080C8E78 @ =gBlockSendBuffer
- movs r0, 0x64
- strb r0, [r1]
- bl GetMultiplayerId
- lsls r0, 24
- cmp r0, 0
- bne _080C8E70
- bl sub_8007ECC
- lsls r0, 24
- cmp r0, 0
- beq _080C8EAE
- movs r0, 0x2
- bl sub_8007E9C
-_080C8E70:
- ldrh r0, [r4, 0x8]
- adds r0, 0x1
- strh r0, [r4, 0x8]
- b _080C8EAE
- .align 2, 0
-_080C8E78: .4byte gBlockSendBuffer
-_080C8E7C:
- bl sub_80C85D8
- lsls r0, 24
- cmp r0, 0
- beq _080C8EAE
- ldr r1, _080C8EB8 @ =gBlockRecvBuffer
- mov r0, r8
- adds r0, 0x12
- adds r2, r7, r0
- movs r4, 0x80
- lsls r4, 1
- movs r3, 0x3
-_080C8E94:
- ldrh r0, [r1]
- strh r0, [r2]
- adds r1, r4
- adds r2, 0x2
- subs r3, 0x1
- cmp r3, 0
- bge _080C8E94
- adds r1, r6, r5
- lsls r1, 3
- add r1, r8
- ldrh r0, [r1, 0x8]
- adds r0, 0x1
- strh r0, [r1, 0x8]
-_080C8EAE:
- pop {r3}
- mov r8, r3
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_080C8EB8: .4byte gBlockRecvBuffer
- thumb_func_end sub_80C8E1C
-.else
- thumb_func_start sub_80C8E1C
-sub_80C8E1C: @ 80C8E1C
- push {r4-r7,lr}
- lsls r0, 24
- lsrs r5, r0, 24
- ldr r1, _080C8E40 @ =gTasks
- lsls r4, r5, 2
- adds r0, r4, r5
- lsls r6, r0, 3
- adds r2, r6, r1
- movs r3, 0x8
- ldrsh r0, [r2, r3]
- adds r7, r1, 0
- cmp r0, 0x1
- beq _080C8EB0
- cmp r0, 0x1
- bgt _080C8E44
- cmp r0, 0
- beq _080C8E4C
- b _080C8EF8
- .align 2, 0
-_080C8E40: .4byte gTasks
-_080C8E44:
- cmp r0, 0x2
- beq _080C8EEC
- cmp r0, 0x8
- bne _080C8EF8
-_080C8E4C:
- ldr r1, _080C8E80 @ =gBlockSendBuffer
- movs r0, 0x64
- strb r0, [r1]
- bl GetMultiplayerId
- lsls r0, 24
- cmp r0, 0
- bne _080C8E9A
- bl sub_8007ECC
- lsls r0, 24
- cmp r0, 0
- beq _080C8F06
- ldr r0, _080C8E84 @ =gTasks
- lsls r1, r5, 2
- adds r1, r5
- lsls r1, 3
- adds r4, r1, r0
- movs r1, 0x8
- ldrsh r0, [r4, r1]
- cmp r0, 0
- bne _080C8E88
- movs r0, 0x3
- strh r0, [r4, 0x8]
- b _080C8F06
- .align 2, 0
-_080C8E80: .4byte gBlockSendBuffer
-_080C8E84: .4byte gTasks
-_080C8E88:
- movs r0, 0
- bl de_sub_80C9274
- movs r0, 0x2
- bl sub_8007E9C
- movs r0, 0x1
- strh r0, [r4, 0x8]
- b _080C8F06
-_080C8E9A:
- movs r0, 0
- bl de_sub_80C9294
- ldr r0, _080C8EAC @ =gTasks
- lsls r1, r5, 2
- adds r1, r5
- lsls r1, 3
- adds r1, r0
- b _080C8EDE
- .align 2, 0
-_080C8EAC: .4byte gTasks
-_080C8EB0:
- bl sub_80C85D8
- lsls r0, 24
- cmp r0, 0
- beq _080C8F06
- adds r1, r4, 0
- ldr r4, _080C8EE8 @ =gBlockRecvBuffer
- adds r0, r7, 0
- adds r0, 0x12
- adds r2, r6, r0
- movs r6, 0x80
- lsls r6, 1
- movs r3, 0x3
-_080C8ECA:
- ldrh r0, [r4]
- strh r0, [r2]
- adds r4, r6
- adds r2, 0x2
- subs r3, 0x1
- cmp r3, 0
- bge _080C8ECA
- adds r1, r5
- lsls r1, 3
- adds r1, r7
-_080C8EDE:
- ldrh r0, [r1, 0x8]
- adds r0, 0x1
- strh r0, [r1, 0x8]
- b _080C8F06
- .align 2, 0
-_080C8EE8: .4byte gBlockRecvBuffer
-_080C8EEC:
- movs r0, 0
- strh r0, [r2, 0x8]
- adds r0, r5, 0
- bl SwitchTaskToFollowupFunc
- b _080C8F06
-_080C8EF8:
- lsls r0, r5, 2
- adds r0, r5
- lsls r0, 3
- adds r0, r7
- ldrh r1, [r0, 0x8]
- adds r1, 0x1
- strh r1, [r0, 0x8]
-_080C8F06:
- pop {r4-r7}
- pop {r0}
- bx r0
- thumb_func_end sub_80C8E1C
-.endif
-
- thumb_func_start sub_80C8EBC
-sub_80C8EBC: @ 80C8EBC
- push {r4,lr}
- lsls r0, 24
- lsrs r2, r0, 24
- ldr r1, _080C8EE4 @ =gTasks
- lsls r0, r2, 2
- adds r0, r2
- lsls r0, 3
- adds r4, r0, r1
- movs r1, 0x8
- ldrsh r0, [r4, r1]
- cmp r0, 0
- beq _080C8EE8_B
- cmp r0, 0x1
- beq _080C8F00
- movs r0, 0
- strh r0, [r4, 0x8]
- adds r0, r2, 0
- bl SwitchTaskToFollowupFunc
- b _080C8F22
- .align 2, 0
-_080C8EE4: .4byte gTasks
-_080C8EE8_B:
- bl sub_8007ECC
- lsls r0, 24
- cmp r0, 0
- beq _080C8F22
- ldr r0, _080C8EFC @ =gUnknown_02038670
- movs r1, 0x8
- bl sub_80C857C
- b _080C8F1C
- .align 2, 0
-_080C8EFC: .4byte gUnknown_02038670
-_080C8F00:
- bl sub_80C85D8
- lsls r0, 24
- cmp r0, 0
- beq _080C8F22
- ldr r0, _080C8F28 @ =gUnknown_02038670
- ldr r1, _080C8F2C @ =gUnknown_0203869B
- ldrb r1, [r1]
- lsls r1, 8
- ldr r2, _080C8F30 @ =gBlockRecvBuffer
- adds r1, r2
- movs r2, 0x8
- bl memcpy
-_080C8F1C:
- ldrh r0, [r4, 0x8]
- adds r0, 0x1
- strh r0, [r4, 0x8]
-_080C8F22:
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_080C8F28: .4byte gUnknown_02038670
-_080C8F2C: .4byte gUnknown_0203869B
-_080C8F30: .4byte gBlockRecvBuffer
- thumb_func_end sub_80C8EBC
-
- thumb_func_start sub_80C8F34
-sub_80C8F34: @ 80C8F34
- push {r4,lr}
- lsls r0, 24
- lsrs r2, r0, 24
- ldr r1, _080C8F5C @ =gTasks
- lsls r0, r2, 2
- adds r0, r2
- lsls r0, 3
- adds r4, r0, r1
- movs r1, 0x8
- ldrsh r0, [r4, r1]
- cmp r0, 0
- beq _080C8F60
- cmp r0, 0x1
- beq _080C8F78
- movs r0, 0
- strh r0, [r4, 0x8]
- adds r0, r2, 0
- bl SwitchTaskToFollowupFunc
- b _080C8F9A
- .align 2, 0
-_080C8F5C: .4byte gTasks
-_080C8F60:
- bl sub_8007ECC
- lsls r0, 24
- cmp r0, 0
- beq _080C8F9A
- ldr r0, _080C8F74 @ =gUnknown_02038696
- movs r1, 0x4
- bl sub_80C857C
- b _080C8F94
- .align 2, 0
-_080C8F74: .4byte gUnknown_02038696
-_080C8F78:
- bl sub_80C85D8
- lsls r0, 24
- cmp r0, 0
- beq _080C8F9A
- ldr r0, _080C8FA0 @ =gUnknown_02038696
- ldr r1, _080C8FA4 @ =gUnknown_0203869B
- ldrb r1, [r1]
- lsls r1, 8
- ldr r2, _080C8FA8 @ =gBlockRecvBuffer
- adds r1, r2
- movs r2, 0x4
- bl memcpy
-_080C8F94:
- ldrh r0, [r4, 0x8]
- adds r0, 0x1
- strh r0, [r4, 0x8]
-_080C8F9A:
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_080C8FA0: .4byte gUnknown_02038696
-_080C8FA4: .4byte gUnknown_0203869B
-_080C8FA8: .4byte gBlockRecvBuffer
- thumb_func_end sub_80C8F34
-
- .align 2, 0 @ Don't pad with nop.
diff --git a/data/specials.inc b/data/specials.inc
index 6904a2b6b..73aa3e093 100644
--- a/data/specials.inc
+++ b/data/specials.inc
@@ -1,4 +1,5 @@
.macro def_special ptr
+.global SPECIAL_\ptr
.set SPECIAL_\ptr, __special__
.set __special__, __special__ + 1
.4byte \ptr
diff --git a/include/contest.h b/include/contest.h
index 6b1f1f520..b0bdd7f61 100644
--- a/include/contest.h
+++ b/include/contest.h
@@ -271,4 +271,16 @@ struct UnknownContestStruct6
#define shared19338 ((struct UnknownContestStruct4 *)(gSharedMem + 0x19338))
#define shared19348 (*(struct UnknownContestStruct8 *)(gSharedMem + 0x19348))
+extern u8 gContestPlayerMonIndex;
+extern u8 gIsLinkContest;
+extern u32 gContestRngValue;
+extern u8 gUnknown_02038696[4];
+extern s16 gUnknown_02038670[4];
+extern s16 gUnknown_02038678[4];
+extern s16 gUnknown_02038680[4];
+extern u16 gUnknown_02038688[4];
+extern u8 gContestFinalStandings[4];
+extern u8 gUnknown_02038696[4];
+extern u8 gUnknown_0203869B;
+
#endif // GUARD_CONTEST_H
diff --git a/include/ewram.h b/include/ewram.h
index 13e478ff1..2f1c2d1ab 100644
--- a/include/ewram.h
+++ b/include/ewram.h
@@ -261,6 +261,7 @@ extern u8 gSharedMem[];
#define eHallOfFame (struct HallOfFame *)(gSharedMem + 0x1E000)
#define HALL_OF_FAME_SHEET_0 ((u8 *)(gSharedMem + 0x1E000))
#define ewram1E000_2 (const u8 *)(gSharedMem + 0x1E000)
+#define eContestLinkSendBuffer gSharedMem + 0x1E000
#define HALL_OF_FAME_SHEET_1 ((u8 *)(gSharedMem + 0x1E800))
#define ewram_1f000 (*(struct DecoPCPointers *)(gSharedMem + 0x1f000))
#define ewramSavedPokeballsPocket ((struct ItemSlot *)(gSharedMem + 0x1F000)) // saved Pokeballs pocket (for Wally battle)
diff --git a/include/link.h b/include/link.h
index f3e918bc6..e8dfc333a 100644
--- a/include/link.h
+++ b/include/link.h
@@ -167,7 +167,7 @@ u8 GetMultiplayerId(void);
u8 bitmask_all_link_players_but_self(void);
bool8 SendBlock(u8, void *, u16);
bool8 sub_8007E9C(u8);
-bool8 sub_8007ECC(void);
+bool8 IsLinkTaskFinished(void);
u8 GetBlockReceivedStatus(void);
void ResetBlockReceivedFlags(void);
void ResetBlockReceivedFlag(u8);
diff --git a/ld_script.txt b/ld_script.txt
index 40167f410..2f452283a 100644
--- a/ld_script.txt
+++ b/ld_script.txt
@@ -179,7 +179,6 @@ SECTIONS {
src/field/field_special_scene.o(.text);
src/field/rotating_gate.o(.text);
src/field/safari_zone.o(.text);
- asm/contest_link_80C857C.o(.text);
src/battle/contest_link_80C857C.o(.text);
src/field/item_use.o(.text);
src/battle/anim/powder.o(.text);
diff --git a/src/battle/anim/guard.c b/src/battle/anim/guard.c
index ab093eab1..254160109 100644
--- a/src/battle/anim/guard.c
+++ b/src/battle/anim/guard.c
@@ -1,4 +1,5 @@
#include "global.h"
+#include "battle.h"
#include "battle_anim.h"
#include "rom_8077ABC.h"
@@ -12,7 +13,7 @@ extern u16 gBattleTypeFlags;
void sub_80D3014(struct Sprite *sprite)
{
- if ((gBattleTypeFlags & 1) && IsAnimBankSpriteVisible(gAnimBankAttacker ^ 2))
+ if ((gBattleTypeFlags & BATTLE_TYPE_DOUBLE) && IsAnimBankSpriteVisible(gAnimBankAttacker ^ 2))
{
sub_807A3FC(gAnimBankAttacker, 0, &sprite->pos1.x, &sprite->pos1.y);
sprite->pos1.y += 40;
diff --git a/src/battle/battle_2.c b/src/battle/battle_2.c
index e72a875fb..2171c6ef6 100644
--- a/src/battle/battle_2.c
+++ b/src/battle/battle_2.c
@@ -414,7 +414,7 @@ void sub_800EC9C(void)
case 0:
if (gBattleTypeFlags & BATTLE_TYPE_LINK)
{
- if (gReceivedRemoteLinkPlayers != 0 && sub_8007ECC())
+ if (gReceivedRemoteLinkPlayers != 0 && IsLinkTaskFinished())
{
gBattleStruct->unk0 = 1;
gBattleStruct->unk1 = 1;
@@ -491,7 +491,7 @@ void sub_800EC9C(void)
}
break;
case 2:
- if (sub_8007ECC())
+ if (IsLinkTaskFinished())
{
SendBlock(bitmask_all_link_players_but_self(), gPlayerParty, sizeof(*gPlayerParty) * 2);
gBattleCommunication[0]++;
@@ -506,7 +506,7 @@ void sub_800EC9C(void)
}
break;
case 4:
- if (sub_8007ECC())
+ if (IsLinkTaskFinished())
{
SendBlock(bitmask_all_link_players_but_self(), gPlayerParty + 2, sizeof(*gPlayerParty) * 2);
gBattleCommunication[0]++;
@@ -521,7 +521,7 @@ void sub_800EC9C(void)
}
break;
case 6:
- if (sub_8007ECC())
+ if (IsLinkTaskFinished())
{
SendBlock(bitmask_all_link_players_but_self(), gPlayerParty + 4, sizeof(*gPlayerParty) * 2);
gBattleCommunication[0]++;
@@ -623,7 +623,7 @@ void sub_800F104(void)
}
}
#endif
- if (sub_8007ECC())
+ if (IsLinkTaskFinished())
{
sub_800F02C();
SendBlock(bitmask_all_link_players_but_self(), gSharedMem, 0x60);
@@ -696,7 +696,7 @@ void sub_800F298(void)
}
}
#endif
- if (sub_8007ECC())
+ if (IsLinkTaskFinished())
{
gBattleStruct->unk0 = 1;
gBattleStruct->unk1 = 1;
@@ -790,7 +790,7 @@ void sub_800F298(void)
break;
case 2:
step_2:
- if (sub_8007ECC())
+ if (IsLinkTaskFinished())
{
SendBlock(bitmask_all_link_players_but_self(), ewram1D000, sizeof(struct Pokemon) * 2);
gBattleCommunication[0]++;
@@ -853,7 +853,7 @@ void sub_800F298(void)
}
break;
case 4:
- if (sub_8007ECC())
+ if (IsLinkTaskFinished())
{
SendBlock(bitmask_all_link_players_but_self(), ewram1D000 + 2, sizeof(struct Pokemon));
gBattleCommunication[0]++;
@@ -940,7 +940,6 @@ void sub_800F298(void)
if (battle_load_something(gUnknown_02024D1F, gUnknown_02024D1F + 1) != 0)
{
gPreBattleCallback1 = gMain.callback1;
- // debug
#if DEBUG
gMain.callback1 = debug_sub_80139E4;
#else
diff --git a/src/battle/contest_link_80C857C.c b/src/battle/contest_link_80C857C.c
index 616a72d27..4fb236294 100644
--- a/src/battle/contest_link_80C857C.c
+++ b/src/battle/contest_link_80C857C.c
@@ -1,9 +1,728 @@
#include "global.h"
+#include "ewram.h"
+#include "random.h"
+#include "task.h"
+#include "contest.h"
+#include "text.h"
+#include "string_util.h"
#include "link.h"
+static void sub_80C8644(u8 taskId);
+static void sub_80C8660(u8 taskId);
+#if GERMAN
+static void de_sub_80C9274(bool32 arg0);
+static void de_sub_80C9294(bool32 arg0);
+#endif
+
+static void SendBlockToAllOpponents(const void *data, u16 size)
+{
+ memcpy(eContestLinkSendBuffer, data, size);
+ SendBlock(bitmask_all_link_players_but_self(), eContestLinkSendBuffer, size);
+}
+
+static bool8 HasPlayerReceivedBlock(u8 who)
+{
+ u8 flag = 1 << who;
+ if (!(GetBlockReceivedStatus() & flag))
+ return FALSE;
+ ResetBlockReceivedFlag(flag);
+ return TRUE;
+}
+
+static bool8 HaveAllPlayersReceivedBlock(void)
+{
+ int i;
+
+ for (i = 0; i < MAX_LINK_PLAYERS; i++)
+ {
+ if (!((GetBlockReceivedStatus() >> i) & 1))
+ return FALSE;
+ }
+ ResetBlockReceivedFlags();
+ return TRUE;
+}
+
+void sub_80C8604(u8 taskId)
+{
+#if ENGLISH
+ u8 i;
+
+ for (i = 0; i < 4; i++)
+ gBlockRecvBuffer[i][0] = 0xff;
+#endif
+ gTasks[taskId].data[0] = 0;
+ gTasks[taskId].func = sub_80C8644;
+}
+
+static void sub_80C8644(u8 taskId)
+{
+ gTasks[taskId].func = sub_80C8660;
+}
+
+static void sub_80C8660(u8 taskId)
+{
+ if (gReceivedRemoteLinkPlayers)
+ {
+ gContestPlayerMonIndex = GetMultiplayerId();
+ if (GetLinkPlayerCount() == MAX_LINK_PLAYERS)
+ {
+ gIsLinkContest = TRUE;
+ SwitchTaskToFollowupFunc(taskId);
+ }
+ }
+}
+
+#ifdef NONMATCHING
+u8 sub_80C86A0(const u8 *string)
+{
+ u8 language = GAME_LANGUAGE;
+ if (string[0] == EXT_CTRL_CODE_BEGIN && string[1] == 0x15)
+ return language;
+ if (StringLength(string) > 5)
+ return language;
+ for (; *string != EOS; string++)
+ {
+ if (!((*string >= CHAR_A && *string <= CHAR_z) ||
+ (*string >= CHAR_0 + 0 && *string <= CHAR_0 + 9) ||
+ *string == CHAR_SPACE ||
+ *string == CHAR_PERIOD ||
+ *string == CHAR_COMMA ||
+ *string == 0xAB ||
+ *string == CHAR_QUESTION_MARK ||
+ *string == CHAR_MALE ||
+ *string == CHAR_FEMALE ||
+ *string == CHAR_SLASH ||
+ *string == CHAR_HYPHEN ||
+ *string == CHAR_ELLIPSIS ||
+ *string == 0xB1 ||
+ *string == 0xB2 ||
+ *string == 0xB3 ||
+ *string == 0xB1
+ ))
+ {
+ language = LANGUAGE_JAPANESE;
+ break;
+ }
+ }
+ return language;
+}
+#else
+__attribute__((naked)) u8 sub_80C86A0(const u8 *string)
+{
+ asm_unified("\tpush {r4,r5,lr}\n"
+ "\tadds r4, r0, 0\n"
+ ".ifdef ENGLISH\n"
+ "\tmovs r5, 0x2\n"
+ ".else\n"
+ "\tmovs r5, 0x5\n"
+ ".endif\n"
+ "\tldrb r0, [r4]\n"
+ "\tcmp r0, 0xFC\n"
+ "\tbne _080C86B6\n"
+ "\tldrb r0, [r4, 0x1]\n"
+ "\tcmp r0, 0x15\n"
+ "\tbne _080C86B6\n"
+ ".ifdef ENGLISH\n"
+ "\tmovs r0, 0x2\n"
+ ".else\n"
+ "\tmovs r0, 0x5\n"
+ ".endif\n"
+ "\tb _080C872C\n"
+ "_080C86B6:\n"
+ "\tadds r0, r4, 0\n"
+ "\tbl StringLength\n"
+ "\tlsls r0, 16\n"
+ "\tlsrs r0, 16\n"
+ "\tcmp r0, 0x5\n"
+ "\tbhi _080C872A\n"
+ "\tldrb r0, [r4]\n"
+ "\tcmp r0, 0xFF\n"
+ "\tbeq _080C872A\n"
+ "_080C86CA:\n"
+ "\tldrb r1, [r4]\n"
+ "\tadds r0, r1, 0\n"
+ "\tadds r0, 0x45\n"
+ "\tlsls r0, 24\n"
+ "\tlsrs r0, 24\n"
+ "\tcmp r0, 0x33\n"
+ "\tbls _080C871E\n"
+ "\tadds r0, r1, 0\n"
+ "\tadds r0, 0x5F\n"
+ "\tlsls r0, 24\n"
+ "\tlsrs r0, 24\n"
+ "\tcmp r0, 0x9\n"
+ "\tbls _080C871E\n"
+ "\tadds r0, r1, 0\n"
+ "\tcmp r0, 0\n"
+ "\tbeq _080C871E\n"
+ "\tcmp r0, 0xAD\n"
+ "\tbeq _080C871E\n"
+ "\tcmp r0, 0xB8\n"
+ "\tbeq _080C871E\n"
+ "\tcmp r0, 0xAB\n"
+ "\tbeq _080C871E\n"
+ "\tcmp r0, 0xAC\n"
+ "\tbeq _080C871E\n"
+ "\tcmp r0, 0xB5\n"
+ "\tbeq _080C871E\n"
+ "\tcmp r0, 0xB6\n"
+ "\tbeq _080C871E\n"
+ "\tcmp r0, 0xBA\n"
+ "\tbeq _080C871E\n"
+ "\tcmp r0, 0xAE\n"
+ "\tbeq _080C871E\n"
+ "\tcmp r0, 0xB0\n"
+ "\tbeq _080C871E\n"
+ "\tcmp r0, 0xB1\n"
+ "\tbeq _080C871E\n"
+ "\tcmp r0, 0xB2\n"
+ "\tbeq _080C871E\n"
+ "\tcmp r0, 0xB3\n"
+ "\tbeq _080C871E\n"
+ "\tcmp r0, 0xB1\n"
+ "\tbne _080C8728\n"
+ "_080C871E:\n"
+ "\tadds r4, 0x1\n"
+ "\tldrb r0, [r4]\n"
+ "\tcmp r0, 0xFF\n"
+ "\tbne _080C86CA\n"
+ "\tb _080C872A\n"
+ "_080C8728:\n"
+ "\tmovs r5, 0x1\n"
+ "_080C872A:\n"
+ "\tadds r0, r5, 0\n"
+ "_080C872C:\n"
+ "\tpop {r4,r5}\n"
+ "\tpop {r1}\n"
+ "\tbx r1");
+}
+#endif
+
+void sub_80C8734(u8 taskId)
+{
+ int i;
+ u8 *name;
+
+ switch (gTasks[taskId].data[0]) {
+#if ENGLISH
+ default:
+ gTasks[taskId].data[0] = 0;
+ SwitchTaskToFollowupFunc(taskId);
+ break;
+#elif GERMAN
+ case 8:
+#endif
+ case 0:
+ if (GetMultiplayerId() == 0) {
+ if (IsLinkTaskFinished()) {
+#if ENGLISH
+ memcpy(gBlockSendBuffer, gContestMons + gContestPlayerMonIndex, sizeof(struct ContestPokemon));
+ sub_8007E9C(2);
+ gTasks[taskId].data[0]++;
+#elif GERMAN
+ if (gTasks[taskId].data[0] == 0)
+ {
+ gTasks[taskId].data[0] = 3;
+ }
+ else
+ {
+ memcpy(gBlockSendBuffer, gContestMons + gContestPlayerMonIndex, sizeof(struct ContestPokemon));
+ de_sub_80C9274(FALSE);
+ sub_8007E9C(2);
+ gTasks[taskId].data[0] = 1;
+ }
+#endif
+ }
+ }
+ else
+ {
+ memcpy(gBlockSendBuffer, gContestMons + gContestPlayerMonIndex, sizeof(struct ContestPokemon));
+#if GERMAN
+ de_sub_80C9294(FALSE);
+#endif
+ gTasks[taskId].data[0]++;
+ }
+ break;
+ case 1:
+ if (HaveAllPlayersReceivedBlock())
+ {
+ for (i = 0; i < MAX_LINK_PLAYERS; i++)
+ {
+ memcpy(gContestMons + i, gBlockRecvBuffer[i], sizeof(struct ContestPokemon));
+ name = gContestMons[i].nickname;
+ if (gLinkPlayers[i].language == LANGUAGE_JAPANESE)
+ {
+ ConvertInternationalString(name, sub_80C86A0(name));
+ }
+ else if (name[10] == EXT_CTRL_CODE_BEGIN)
+ {
+ ConvertInternationalString(name, LANGUAGE_JAPANESE);
+ } else
+ {
+ name[5] = name[10];
+ name[10] = EOS;
+ }
+ name = gContestMons[i].trainerName;
+ if (gLinkPlayers[i].language == LANGUAGE_JAPANESE)
+ {
+ name[7] = EOS;
+ name[6] = name[4];
+ name[5] = name[3];
+ name[4] = name[2];
+ name[3] = name[1];
+ name[2] = name[0];
+ name[1] = 0x15;
+ name[0] = EXT_CTRL_CODE_BEGIN;
+ }
+ else
+ {
+ name[5] = name[7];
+ name[7] = EOS;
+ }
+ }
+ gTasks[taskId].data[0]++;
+ }
+ break;
+#if GERMAN
+ case 2:
+ gTasks[taskId].data[0] = 0;
+ SwitchTaskToFollowupFunc(taskId);
+ break;
+ default:
+ gTasks[taskId].data[0]++;
+ break;
+#endif
+ }
+}
+
+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 (IsLinkTaskFinished())
+ {
+ SendBlockToAllOpponents(&gRngValue, sizeof(u32));
+ gTasks[taskId].data[0]++;
+ }
+ }
+ else
+ {
+ gTasks[taskId].data[0]++;
+ }
+ break;
+ case 1:
+ if (HasPlayerReceivedBlock(0))
+ {
+ memcpy(&gRngValue, gBlockRecvBuffer[0], sizeof(u32));
+ memcpy(&gContestRngValue, gBlockRecvBuffer[0], sizeof(u32));
+ gTasks[taskId].data[0]++;
+ }
+ break;
+ }
+}
+
+void sub_80C8938(u8 taskId)
+{
+ int i;
+
+ switch (gTasks[taskId].data[0])
+ {
+#if ENGLISH
+ default:
+ gTasks[taskId].data[0] = 0;
+ SwitchTaskToFollowupFunc(taskId);
+ break;
+#elif GERMAN
+ case 8:
+#endif
+ case 0:
+ gBlockSendBuffer[0] = gTasks[taskId].data[9];
+ if (GetMultiplayerId() == 0)
+ {
+ if (IsLinkTaskFinished())
+ {
+#if ENGLISH
+ sub_8007E9C(2);
+ gTasks[taskId].data[0]++;
+#elif GERMAN
+ if (gTasks[taskId].data[0] == 0)
+ {
+ gTasks[taskId].data[0] = 3;
+ }
+ else
+ {
+ de_sub_80C9274(TRUE);
+ sub_8007E9C(2);
+ gTasks[taskId].data[0] = 1;
+ }
+#endif
+ }
+ }
+ else
+ {
+#if GERMAN
+ de_sub_80C9294(TRUE);
+#endif
+ gTasks[taskId].data[0]++;
+ }
+ break;
+ case 1:
+ if (HaveAllPlayersReceivedBlock())
+ {
+ for (i = 0; i < MAX_LINK_PLAYERS; i++)
+ {
+ gTasks[taskId].data[i + 1] = gBlockRecvBuffer[i][0];
+ }
+ gTasks[taskId].data[0]++;
+ }
+ break;
+#if GERMAN
+ case 2:
+ gTasks[taskId].data[0] = 0;
+ SwitchTaskToFollowupFunc(taskId);
+ break;
+ default:
+ gTasks[taskId].data[0]++;
+ break;
+#endif
+ }
+}
+
+void sub_80C89DC(u8 taskId)
+{
+ switch (gTasks[taskId].data[0])
+ {
+ default:
+ gTasks[taskId].data[0] = 0;
+ SwitchTaskToFollowupFunc(taskId);
+ break;
+ case 0:
+ if (IsLinkTaskFinished())
+ {
+ SendBlockToAllOpponents(&gContestPlayerMonIndex, sizeof(u8));
+ gTasks[taskId].data[0]++;
+ }
+ break;
+ case 1:
+ if (HaveAllPlayersReceivedBlock())
+ {
+ gTasks[taskId].data[0]++;
+ }
+ break;
+ }
+}
+
+void sub_80C8A38(u8 taskId)
+{
+ int i;
+
+ switch (gTasks[taskId].data[0])
+ {
+ default:
+ gTasks[taskId].data[0] = 0;
+ SwitchTaskToFollowupFunc(taskId);
+ break;
+ case 0:
+ if (IsLinkTaskFinished())
+ {
+ SendBlockToAllOpponents(&sContestantStatus[gContestPlayerMonIndex].currMove, sizeof(u16));
+ gTasks[taskId].data[0]++;
+ }
+ break;
+ case 1:
+ if (HaveAllPlayersReceivedBlock())
+ {
+ for (i = 0; i < MAX_LINK_PLAYERS; i++)
+ {
+ *&sContestantStatus[i].currMove = gBlockRecvBuffer[i][0];
+ }
+ gTasks[taskId].data[0]++;
+ }
+ break;
+ }
+}
+
+void sub_80C8AD0(u8 taskId)
+{
+ switch (gTasks[taskId].data[0])
+ {
+ case 0:
+ if (IsLinkTaskFinished())
+ {
+ SendBlockToAllOpponents(gUnknown_02038678, sizeof gUnknown_02038678);
+ gTasks[taskId].data[0]++;
+ }
+ break;
+ case 1:
+ if (HaveAllPlayersReceivedBlock())
+ {
+ memcpy(gUnknown_02038678, gBlockRecvBuffer[gUnknown_0203869B], sizeof gUnknown_02038678);
+ gTasks[taskId].data[0]++;
+ }
+ break;
+ case 2:
+ case 5:
+ case 8:
+ case 11:
+ if (gTasks[taskId].data[1]++ > 10)
+ {
+ gTasks[taskId].data[1] = 0;
+ gTasks[taskId].data[0]++;
+ }
+ break;
+ case 3:
+ if (IsLinkTaskFinished())
+ {
+ SendBlockToAllOpponents(gUnknown_02038680, sizeof gUnknown_02038680);
+ gTasks[taskId].data[0]++;
+ }
+ break;
+ case 4:
+ if (HaveAllPlayersReceivedBlock())
+ {
+ memcpy(gUnknown_02038680, gBlockRecvBuffer[gUnknown_0203869B], sizeof gUnknown_02038680);
+ gTasks[taskId].data[0]++;
+ }
+ break;
+ case 6:
+ if (IsLinkTaskFinished())
+ {
+ SendBlockToAllOpponents(gUnknown_02038688, sizeof gUnknown_02038688);
+ gTasks[taskId].data[0]++;
+ }
+ break;
+ case 7:
+ if (HaveAllPlayersReceivedBlock())
+ {
+ memcpy(gUnknown_02038688, gBlockRecvBuffer[gUnknown_0203869B], sizeof gUnknown_02038688);
+ gTasks[taskId].data[0]++;
+ }
+ break;
+ case 9:
+ if (IsLinkTaskFinished())
+ {
+ SendBlockToAllOpponents(gContestFinalStandings, sizeof gContestFinalStandings);
+ gTasks[taskId].data[0]++;
+ }
+ break;
+ case 10:
+ if (HaveAllPlayersReceivedBlock())
+ {
+ memcpy(gContestFinalStandings, gBlockRecvBuffer[gUnknown_0203869B], sizeof gContestFinalStandings);
+ gTasks[taskId].data[0]++;
+ }
+ break;
+ default:
+ gTasks[taskId].data[0] = 0;
+ SwitchTaskToFollowupFunc(taskId);
+ break;
+ }
+}
+
+void sub_80C8C80(u8 taskId)
+{
+ switch (gTasks[taskId].data[0])
+ {
+ case 0:
+ if (IsLinkTaskFinished())
+ {
+ SendBlockToAllOpponents(sContestantStatus, 4 * sizeof(struct ContestantStatus));
+ gTasks[taskId].data[0]++;
+ }
+ break;
+ case 1:
+ if (HaveAllPlayersReceivedBlock())
+ {
+ memcpy(sContestantStatus, gBlockRecvBuffer[gUnknown_0203869B], 4 * sizeof(struct ContestantStatus));
+ gTasks[taskId].data[0]++;
+ }
+ break;
+ case 2:
+ case 5:
+ case 8:
+ case 11:
+ if (gTasks[taskId].data[1]++ > 10)
+ {
+ gTasks[taskId].data[1] = 0;
+ gTasks[taskId].data[0]++;
+ }
+ break;
+ case 3:
+ if (IsLinkTaskFinished())
+ {
+ SendBlockToAllOpponents(&shared192D0, sizeof shared192D0);
+ gTasks[taskId].data[0]++;
+ }
+ break;
+ case 4:
+ if (HaveAllPlayersReceivedBlock())
+ {
+ memcpy(&shared192D0, gBlockRecvBuffer[gUnknown_0203869B], sizeof shared192D0);
+ gTasks[taskId].data[0]++;
+ }
+ break;
+ case 6:
+ if (IsLinkTaskFinished())
+ {
+ SendBlockToAllOpponents(&shared19328, sizeof shared19328);
+ gTasks[taskId].data[0]++;
+ }
+ break;
+ case 7:
+ if (HaveAllPlayersReceivedBlock())
+ {
+ memcpy(&shared19328, gBlockRecvBuffer[gUnknown_0203869B], sizeof shared19328);
+ gTasks[taskId].data[0]++;
+ }
+ break;
+ case 9:
+ if (IsLinkTaskFinished())
+ {
+ SendBlockToAllOpponents(gUnknown_02038696, sizeof gUnknown_02038696);
+ gTasks[taskId].data[0]++;
+ }
+ break;
+ case 10:
+ if (HaveAllPlayersReceivedBlock())
+ {
+ memcpy(gUnknown_02038696, gBlockRecvBuffer[gUnknown_0203869B], sizeof gUnknown_02038696);
+ gTasks[taskId].data[0]++;
+ }
+ break;
+ default:
+ gTasks[taskId].data[0] = 0;
+ SwitchTaskToFollowupFunc(taskId);
+ break;
+ }
+}
+
+void sub_80C8E1C(u8 taskId)
+{
+ int i;
+
+ switch (gTasks[taskId].data[0])
+ {
+#if ENGLISH
+ default:
+ gTasks[taskId].data[0] = 0;
+ SwitchTaskToFollowupFunc(taskId);
+ break;
+#elif GERMAN
+ case 8:
+#endif
+ case 0:
+ gBlockSendBuffer[0] = 0x64;
+ if (GetMultiplayerId() == 0)
+ {
+ if (IsLinkTaskFinished())
+ {
+#if ENGLISH
+ sub_8007E9C(2);
+ gTasks[taskId].data[0]++;
+#elif GERMAN
+ if (gTasks[taskId].data[0] == 0)
+ {
+ gTasks[taskId].data[0] = 3;
+ }
+ else
+ {
+ de_sub_80C9274(FALSE);
+ sub_8007E9C(2);
+ gTasks[taskId].data[0] = 1;
+ }
+#endif
+ }
+ }
+ else
+ {
+#if GERMAN
+ de_sub_80C9294(FALSE);
+#endif
+ gTasks[taskId].data[0]++;
+ }
+ break;
+ case 1:
+ if (HaveAllPlayersReceivedBlock())
+ {
+ for (i = 0; i < MAX_LINK_PLAYERS; i++)
+ {
+ gTasks[taskId].data[5 + i] = gBlockRecvBuffer[i][0];
+ }
+ gTasks[taskId].data[0]++;
+ }
+ break;
+#if GERMAN
+ case 2:
+ gTasks[taskId].data[0] = 0;
+ SwitchTaskToFollowupFunc(taskId);
+ break;
+ default:
+ gTasks[taskId].data[0]++;
+ break;
+#endif
+ }
+}
+
+void sub_80C8EBC(u8 taskId)
+{
+ switch (gTasks[taskId].data[0])
+ {
+ default:
+ gTasks[taskId].data[0] = 0;
+ SwitchTaskToFollowupFunc(taskId);
+ break;
+ case 0:
+ if (IsLinkTaskFinished())
+ {
+ SendBlockToAllOpponents(gUnknown_02038670, sizeof gUnknown_02038670);
+ gTasks[taskId].data[0]++;
+ }
+ break;
+ case 1:
+ if (HaveAllPlayersReceivedBlock())
+ {
+ memcpy(gUnknown_02038670, gBlockRecvBuffer[gUnknown_0203869B], sizeof gUnknown_02038670);
+ gTasks[taskId].data[0]++;
+ }
+ break;
+ }
+}
+
+void sub_80C8F34(u8 taskId)
+{
+ switch (gTasks[taskId].data[0])
+ {
+ default:
+ gTasks[taskId].data[0] = 0;
+ SwitchTaskToFollowupFunc(taskId);
+ break;
+ case 0:
+ if (IsLinkTaskFinished())
+ {
+ SendBlockToAllOpponents(gUnknown_02038696, sizeof gUnknown_02038696);
+ gTasks[taskId].data[0]++;
+ }
+ break;
+ case 1:
+ if (HaveAllPlayersReceivedBlock())
+ {
+ memcpy(gUnknown_02038696, gBlockRecvBuffer[gUnknown_0203869B], sizeof gUnknown_02038696);
+ gTasks[taskId].data[0]++;
+ }
+ break;
+ }
+}
+
#if GERMAN
-void de_sub_80C9274(bool32 arg0)
+static void de_sub_80C9274(bool32 arg0)
{
if (deUnkValue2 == 1)
{
@@ -14,7 +733,7 @@ void de_sub_80C9274(bool32 arg0)
}
}
-void de_sub_80C9294(bool32 arg0)
+static void de_sub_80C9294(bool32 arg0)
{
if (deUnkValue2 == 1)
{
diff --git a/src/contest.c b/src/contest.c
index 2f988b9e4..e2695627e 100644
--- a/src/contest.c
+++ b/src/contest.c
@@ -61,7 +61,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;
@@ -498,7 +498,7 @@ void sub_80AB6B4(u8 taskId)
GetMultiplayerId(); // unused return value
DestroyTask(taskId);
gTasks[sContest.mainTaskId].func = sub_80AB960;
- gRngValue = gUnknown_03005D28;
+ gRngValue = gContestRngValue;
}
}
@@ -2004,7 +2004,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/contest_ai.c b/src/contest_ai.c
index 66b387270..1e249083b 100644
--- a/src/contest_ai.c
+++ b/src/contest_ai.c
@@ -8,7 +8,6 @@ extern u8 AreMovesContestCombo(u16, u16);
extern bool8 sub_80B214C(u8);
extern bool8 Contest_IsMonsTurnDisabled(u8);
-extern s16 gUnknown_02038670[];
extern u16 gSpecialVar_ContestCategory;
extern u8 *gAIScriptPtr;
diff --git a/src/debug/matsuda_debug_menu.c b/src/debug/matsuda_debug_menu.c
index da1937adb..efd952ef7 100644
--- a/src/debug/matsuda_debug_menu.c
+++ b/src/debug/matsuda_debug_menu.c
@@ -18,14 +18,7 @@
#include "ewram.h"
extern u8 gUnknown_0203856C;
-extern s16 gUnknown_02038670[];
-extern s16 gUnknown_02038678[];
-extern s16 gUnknown_02038680[];
-extern u8 gContestFinalStandings[];
extern u8 gUnknown_02038694;
-extern u8 gIsLinkContest;
-extern u8 gUnknown_0203869B;
-extern u8 gContestPlayerMonIndex;
extern u16 gSpecialVar_ContestCategory;
extern u16 gSpecialVar_ContestRank;
@@ -40,8 +33,6 @@ extern u16 gBattle_BG3_Y;
extern u8 (*gMenuCallback)(void);
-extern bool8 gReceivedRemoteLinkPlayers;
-
static bool8 sub_80A9B78(void);
static void sub_80A9BE4(u8 taskId);
static void sub_80A9C98(u8);
diff --git a/src/engine/link.c b/src/engine/link.c
index 31311d345..8888f22f5 100644
--- a/src/engine/link.c
+++ b/src/engine/link.c
@@ -916,14 +916,9 @@ bool8 sub_8007E9C(u8 a1)
}
}
-bool8 sub_8007ECC(void)
+bool8 IsLinkTaskFinished(void)
{
- u8 retVal = FALSE;
-
- if (!gLinkCallback)
- retVal = TRUE;
-
- return retVal;
+ return gLinkCallback == NULL;
}
u8 GetBlockReceivedStatus(void)
diff --git a/src/engine/trade.c b/src/engine/trade.c
index c878f62db..36e6fc757 100644
--- a/src/engine/trade.c
+++ b/src/engine/trade.c
@@ -1711,7 +1711,7 @@ static bool8 sub_8048D44(void)
gUnknown_03004824->unk_0075 ++;
break;
case 1:
- if (sub_8007ECC())
+ if (IsLinkTaskFinished())
{
if (GetBlockReceivedStatus() == 0)
{
@@ -2210,7 +2210,7 @@ static void sub_8049A20(void)
{
sub_804AADC(3, 1);
gUnknown_03004824->linkData[0] = 0xbbbb;
- if (sub_8007ECC())
+ if (IsLinkTaskFinished())
{
Trade_SendData(gUnknown_03004824);
}
@@ -2239,7 +2239,7 @@ static void sub_8049AC0(void)
else
{
sub_804AADC(3, 1);
- if (sub_8007ECC())
+ if (IsLinkTaskFinished())
{
gUnknown_03004824->linkData[0] = 0xbbcc;
Trade_SendData(gUnknown_03004824);
@@ -4632,7 +4632,7 @@ static void sub_804BB78(void)
switch (gUnknown_03004828->unk_00bd)
{
case 1:
- if (sub_8007ECC())
+ if (IsLinkTaskFinished())
{
Trade_SendData(gUnknown_03004828);
gUnknown_03004828->unk_00bd ++;
@@ -5534,13 +5534,13 @@ static void sub_804DC88(void)
gMain.state = 101;
gUnknown_03004828->unk_00c0 = 0;
}
- if (sub_8007ECC())
+ if (IsLinkTaskFinished())
{
gMain.state = 2;
}
break;
case 101:
- if (sub_8007ECC())
+ if (IsLinkTaskFinished())
{
gMain.state = 2;
}
@@ -5592,7 +5592,7 @@ static void sub_804DC88(void)
gMain.state = 42;
break;
case 42:
- if (sub_8007ECC())
+ if (IsLinkTaskFinished())
{
sub_8125E04();
gSoftResetDisabled = FALSE;
@@ -5607,7 +5607,7 @@ static void sub_804DC88(void)
}
break;
case 6:
- if (sub_8007ECC())
+ if (IsLinkTaskFinished())
{
BeginNormalPaletteFade(-1, 0, 0, 16, 0);
gMain.state ++;
diff --git a/src/field/field_fadetransition.c b/src/field/field_fadetransition.c
index 16ba50e4b..21235500a 100644
--- a/src/field/field_fadetransition.c
+++ b/src/field/field_fadetransition.c
@@ -146,7 +146,7 @@ void sub_8080A5C(u8 taskId)
task->data[0]++;
break;
case 1:
- if (sub_8007ECC())
+ if (IsLinkTaskFinished())
{
pal_fill_for_map_transition();
task->data[0]++;
diff --git a/src/rom3.c b/src/rom3.c
index 34746c1a8..7b3051b86 100644
--- a/src/rom3.c
+++ b/src/rom3.c
@@ -477,7 +477,7 @@ void sub_800C1A8(u8 taskId)
}
break;
case 4:
- if (sub_8007ECC())
+ if (IsLinkTaskFinished())
{
var = (ewram14004arr(0, gTasks[taskId].data[15]) | (ewram14004arr(1, gTasks[taskId].data[15]) << 8));
gTasks[taskId].data[13] = 1;
diff --git a/src/scene/berry_blender.c b/src/scene/berry_blender.c
index c636e245c..24cbcb9c0 100644
--- a/src/scene/berry_blender.c
+++ b/src/scene/berry_blender.c
@@ -1163,7 +1163,7 @@ static void sub_804E9F8(void)
gBerryBlenderData->framesToWait = 0;
break;
case 9:
- if (sub_8007ECC())
+ if (IsLinkTaskFinished())
{
ResetBlockReceivedFlags();
if (GetMultiplayerId() == 0)
@@ -1215,7 +1215,7 @@ static void sub_804E9F8(void)
}
break;
case 13:
- if (sub_8007ECC())
+ if (IsLinkTaskFinished())
{
gBerryBlenderData->field_0++;
sub_8051414(&gBerryBlenderData->field_168);
@@ -1257,7 +1257,7 @@ static void sub_804E9F8(void)
gBerryBlenderData->field_0++;
break;
case 20:
- if (sub_8007ECC())
+ if (IsLinkTaskFinished())
{
sub_8007E24();
gBerryBlenderData->field_0++;
@@ -2506,7 +2506,7 @@ static void sub_8050954(void)
case 3:
if (/*multiplayerID != 0*/ GetMultiplayerId() != 0)
gBerryBlenderData->field_6F++;
- else if (sub_8007ECC())
+ else if (IsLinkTaskFinished())
{
gBerryBlenderData->field_1BC = gBerryBlenderData->gameFrameTime;
gBerryBlenderData->field_1C0 = gBerryBlenderData->max_RPM;
@@ -2646,7 +2646,7 @@ bool8 sub_8050CE8(void)
gBerryBlenderData->framesToWait = 0;
break;
case 1:
- if (sub_8007ECC())
+ if (IsLinkTaskFinished())
{
gBerryBlenderData->field_1C4++;
gSoftResetDisabled = TRUE;
@@ -2665,7 +2665,7 @@ bool8 sub_8050CE8(void)
}
break;
case 4:
- if (sub_8007ECC())
+ if (IsLinkTaskFinished())
{
if (sub_8125E6C())
gBerryBlenderData->field_1C4 = 5;
@@ -2752,7 +2752,7 @@ static void sub_8050E30(void)
gBerryBlenderData->field_6F++;
break;
case 6:
- if (sub_8007ECC())
+ if (IsLinkTaskFinished())
{
gBerryBlenderData->framesToWait = 0;
gBerryBlenderData->field_6F++;
@@ -2771,7 +2771,7 @@ static void sub_8050E30(void)
sub_80084A4();
break;
case 9:
- if (sub_8007ECC())
+ if (IsLinkTaskFinished())
{
BeginNormalPaletteFade(-1, 0, 0, 0x10, 0);
gBerryBlenderData->field_6F++;
diff --git a/src/script_pokemon_util_80C4BF0.c b/src/script_pokemon_util_80C4BF0.c
index f991297ab..02e66d313 100644
--- a/src/script_pokemon_util_80C4BF0.c
+++ b/src/script_pokemon_util_80C4BF0.c
@@ -32,26 +32,13 @@ extern void sub_80C4698(u8 *, u8);
extern struct SpriteTemplate gUnknown_02024E8C;
-extern u8 gContestPlayerMonIndex;
-extern u8 gIsLinkContest;
-extern u8 gPlayerPartyCount;
extern u8 gSelectedOrderFromParty[];
-extern u16 gSpecialVar_0x8004;
-extern u16 gSpecialVar_0x8005;
-extern u16 gSpecialVar_0x8006;
-
extern u16 gSpecialVar_ContestCategory;
extern u16 gSpecialVar_ContestRank;
-extern u16 gSpecialVar_Result;
-
-extern u32 gUnknown_03005D28;
extern u8 gUnknown_02038694;
extern u8 gUnknown_0203856C;
-extern u8 gContestFinalStandings[];
-extern s16 gUnknown_02038670[];
-extern s16 gUnknown_02038678[];
void SetContestTrainerGfxIds(void)
{
@@ -373,8 +360,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 f079673f0..64d9107ee 100644
--- a/sym_common.txt
+++ b/sym_common.txt
@@ -257,7 +257,7 @@ gFieldItemUseCallback = .;
gBagPocketScrollStates = .;
. += 0x14;
SYMBOL(gCurrentBagPocketItemSlots, 4)
-SYMBOL(gUnknown_03005D28, 4)
+SYMBOL(gContestRngValue, 4)
#if DEBUG
unk_debug_common_0 = .;