More function documentation in union_room, link, link_rfu_2

This commit is contained in:
PikalaxALT
2020-02-12 15:32:14 -05:00
parent 5953064c03
commit aa4a979334
23 changed files with 440 additions and 434 deletions
+1 -1
View File
@@ -45,7 +45,7 @@ _0814B716:
ldr r0, _0814B74C @ =0x0000012f ldr r0, _0814B74C @ =0x0000012f
bl PlayNewMapMusic bl PlayNewMapMusic
ldr r0, _0814B750 @ =sub_8056534 ldr r0, _0814B750 @ =sub_8056534
bl sub_80565E0 bl SetMainCallback1
_0814B73E: _0814B73E:
movs r0, 0 movs r0, 0
_0814B740: _0814B740:
+13 -13
View File
@@ -143,7 +143,7 @@ _0814BC30:
movs r0, 0x3 movs r0, 0x3
b _0814BC6A b _0814BC6A
_0814BC44: _0814BC44:
bl sub_80FA42C bl LinkRfu_SetRfuFuncToSend6600
b _0814BC66 b _0814BC66
_0814BC4A: _0814BC4A:
bl IsLinkTaskFinished bl IsLinkTaskFinished
@@ -359,7 +359,7 @@ sub_814BDBC: @ 814BDBC
beq _0814BDD2 beq _0814BDD2
b _0814BDFC b _0814BDFC
_0814BDCC: _0814BDCC:
bl sub_80FA42C bl LinkRfu_SetRfuFuncToSend6600
b _0814BDFC b _0814BDFC
_0814BDD2: _0814BDD2:
bl IsLinkTaskFinished bl IsLinkTaskFinished
@@ -494,7 +494,7 @@ _0814BEB4:
bl sub_814BB4C bl sub_814BB4C
b _0814BFC6 b _0814BFC6
_0814BED4: _0814BED4:
bl sub_80FA42C bl LinkRfu_SetRfuFuncToSend6600
b _0814BFC0 b _0814BFC0
_0814BEDA: _0814BEDA:
bl IsLinkTaskFinished bl IsLinkTaskFinished
@@ -650,7 +650,7 @@ _0814C008:
adds r1, r4, r0 adds r1, r4, r0
adds r0, r4, 0 adds r0, r4, 0
bl sub_814DA24 bl sub_814DA24
bl sub_80FA42C bl LinkRfu_SetRfuFuncToSend6600
b _0814C108 b _0814C108
_0814C01A: _0814C01A:
bl IsLinkTaskFinished bl IsLinkTaskFinished
@@ -720,7 +720,7 @@ _0814C080:
ldrb r0, [r2] ldrb r0, [r2]
adds r0, 0x1 adds r0, 0x1
strb r0, [r2] strb r0, [r2]
bl sub_80FA42C bl LinkRfu_SetRfuFuncToSend6600
b _0814C108 b _0814C108
.align 2, 0 .align 2, 0
_0814C0AC: .4byte sub_814DB84 _0814C0AC: .4byte sub_814DB84
@@ -748,7 +748,7 @@ _0814C0D2:
adds r1, r4, r3 adds r1, r4, r3
adds r0, r4, 0 adds r0, r4, 0
bl sub_814DC24 bl sub_814DC24
bl sub_80FA42C bl LinkRfu_SetRfuFuncToSend6600
b _0814C108 b _0814C108
_0814C0E4: _0814C0E4:
bl IsLinkTaskFinished bl IsLinkTaskFinished
@@ -904,7 +904,7 @@ _0814C1FC:
movs r0, 0x1E movs r0, 0x1E
movs r1, 0 movs r1, 0
bl SetGpuReg bl SetGpuReg
bl sub_80FA42C bl LinkRfu_SetRfuFuncToSend6600
b _0814C23C b _0814C23C
_0814C21E: _0814C21E:
bl IsLinkTaskFinished bl IsLinkTaskFinished
@@ -969,7 +969,7 @@ _0814C28A:
cmp r0, 0 cmp r0, 0
bne _0814C2F2 bne _0814C2F2
_0814C292: _0814C292:
bl sub_80FA42C bl LinkRfu_SetRfuFuncToSend6600
b _0814C2EC b _0814C2EC
_0814C298: _0814C298:
bl IsLinkTaskFinished bl IsLinkTaskFinished
@@ -2065,7 +2065,7 @@ _0814CADA:
bl sub_814DE50 bl sub_814DE50
cmp r0, 0 cmp r0, 0
beq _0814CB18 beq _0814CB18
bl sub_80FA42C bl LinkRfu_SetRfuFuncToSend6600
movs r0, 0 movs r0, 0
strh r0, [r4, 0x10] strh r0, [r4, 0x10]
b _0814CB12 b _0814CB12
@@ -2158,7 +2158,7 @@ _0814CB8A:
bl sub_814DE50 bl sub_814DE50
cmp r0, 0 cmp r0, 0
beq _0814CC02 beq _0814CC02
bl sub_80FA42C bl LinkRfu_SetRfuFuncToSend6600
movs r0, 0 movs r0, 0
strh r0, [r5, 0x10] strh r0, [r5, 0x10]
movs r0, 0x12 movs r0, 0x12
@@ -2846,7 +2846,7 @@ _0814D0D6:
.align 2, 0 .align 2, 0
_0814D0FC: .4byte 0x00008c9f _0814D0FC: .4byte 0x00008c9f
_0814D100: _0814D100:
bl sub_80FA42C bl LinkRfu_SetRfuFuncToSend6600
b _0814D178 b _0814D178
_0814D106: _0814D106:
bl IsLinkTaskFinished bl IsLinkTaskFinished
@@ -3028,7 +3028,7 @@ _0814D256:
beq _0814D296 beq _0814D296
b _0814D30C b _0814D30C
_0814D260: _0814D260:
bl sub_80FA42C bl LinkRfu_SetRfuFuncToSend6600
b _0814D30C b _0814D30C
_0814D266: _0814D266:
bl IsLinkTaskFinished bl IsLinkTaskFinished
@@ -3316,7 +3316,7 @@ _0814D47C:
beq _0814D498 beq _0814D498
b _0814D4B8 b _0814D4B8
_0814D482: _0814D482:
bl sub_80FA42C bl LinkRfu_SetRfuFuncToSend6600
b _0814D4B8 b _0814D4B8
_0814D488: _0814D488:
bl IsLinkTaskFinished bl IsLinkTaskFinished
+1 -1
View File
@@ -338,7 +338,7 @@ _0814D8B4:
.4byte _0814D9A2 .4byte _0814D9A2
.4byte _0814D9B2 .4byte _0814D9B2
_0814D8D4: _0814D8D4:
bl sub_80FA42C bl LinkRfu_SetRfuFuncToSend6600
b _0814D9BA b _0814D9BA
_0814D8DA: _0814D8DA:
bl IsLinkTaskFinished bl IsLinkTaskFinished
+3 -3
View File
@@ -1756,7 +1756,7 @@ _08081510:
ldr r1, [r1] ldr r1, [r1]
str r1, [r0] str r1, [r0]
adds r0, r5, 0 adds r0, r5, 0
bl sub_800B284 bl IntlConvertLinkPlayerName
lsls r0, r4, 24 lsls r0, r4, 24
lsrs r0, 24 lsrs r0, 24
bl ResetBlockReceivedFlag bl ResetBlockReceivedFlag
@@ -1785,7 +1785,7 @@ _0808154C:
strh r0, [r6] strh r0, [r6]
b _0808160A b _0808160A
_08081560: _08081560:
bl sub_800AB9C bl PrepareSendLinkCmd2FFE_or_RfuCmd6600
movs r0, 0x6 movs r0, 0x6
strh r0, [r6] strh r0, [r6]
b _0808160A b _0808160A
@@ -2276,7 +2276,7 @@ _08081940:
strb r0, [r1] strb r0, [r1]
strb r0, [r1, 0x1] strb r0, [r1, 0x1]
bl m4aMPlayAllStop bl m4aMPlayAllStop
bl sub_800AB9C bl PrepareSendLinkCmd2FFE_or_RfuCmd6600
_08081950: _08081950:
ldrh r0, [r4] ldrh r0, [r4]
adds r0, 0x1 adds r0, 0x1
+2 -2
View File
@@ -382,7 +382,7 @@ _08150B08:
bl sub_8155E68 bl sub_8155E68
cmp r0, 0 cmp r0, 0
bne _08150BFC bne _08150BFC
bl sub_80FA42C bl LinkRfu_SetRfuFuncToSend6600
b _08150BDC b _08150BDC
_08150B16: _08150B16:
bl IsLinkTaskFinished bl IsLinkTaskFinished
@@ -662,7 +662,7 @@ _08150D46:
cmp r0, 0 cmp r0, 0
bne _08150D74 bne _08150D74
_08150D4E: _08150D4E:
bl sub_80FA42C bl LinkRfu_SetRfuFuncToSend6600
_08150D52: _08150D52:
ldr r0, _08150D60 @ =gUnknown_203F3E0 ldr r0, _08150D60 @ =gUnknown_203F3E0
ldr r1, [r0] ldr r1, [r0]
+42 -42
View File
@@ -3430,14 +3430,14 @@ _080565D4:
_080565DC: .4byte gPaletteFade _080565DC: .4byte gPaletteFade
thumb_func_end sub_80565B4 thumb_func_end sub_80565B4
thumb_func_start sub_80565E0 thumb_func_start SetMainCallback1
sub_80565E0: @ 80565E0 SetMainCallback1: @ 80565E0
ldr r1, _080565E8 @ =gMain ldr r1, _080565E8 @ =gMain
str r0, [r1] str r0, [r1]
bx lr bx lr
.align 2, 0 .align 2, 0
_080565E8: .4byte gMain _080565E8: .4byte gMain
thumb_func_end sub_80565E0 thumb_func_end SetMainCallback1
thumb_func_start map_post_load_hook_exec thumb_func_start map_post_load_hook_exec
map_post_load_hook_exec: @ 80565EC map_post_load_hook_exec: @ 80565EC
@@ -3490,7 +3490,7 @@ _08056640: .4byte gFieldCallback
thumb_func_start CB2_NewGame thumb_func_start CB2_NewGame
CB2_NewGame: @ 8056644 CB2_NewGame: @ 8056644
push {lr} push {lr}
bl sub_80569BC bl FieldClearVBlankHBlankCallbacks
bl StopMapMusic bl StopMapMusic
bl sub_8056420 bl sub_8056420
bl NewGameInitData bl NewGameInitData
@@ -3508,7 +3508,7 @@ CB2_NewGame: @ 8056644
bl do_load_map_stuff_loop bl do_load_map_stuff_loop
bl SetFieldVBlankCallback bl SetFieldVBlankCallback
ldr r0, _0805669C @ =sub_8056534 ldr r0, _0805669C @ =sub_8056534
bl sub_80565E0 bl SetMainCallback1
ldr r0, _080566A0 @ =sub_80565B4 ldr r0, _080566A0 @ =sub_80565B4
bl SetMainCallback2 bl SetMainCallback2
pop {r0} pop {r0}
@@ -3537,7 +3537,7 @@ CB2_WhiteOut: @ 80566A4
lsrs r0, 24 lsrs r0, 24
cmp r0, 0x77 cmp r0, 0x77
bls _08056702 bls _08056702
bl sub_80569BC bl FieldClearVBlankHBlankCallbacks
bl StopMapMusic bl StopMapMusic
bl sub_8056420 bl sub_8056420
bl sub_8054BC8 bl sub_8054BC8
@@ -3556,7 +3556,7 @@ CB2_WhiteOut: @ 80566A4
bl sub_8112364 bl sub_8112364
bl SetFieldVBlankCallback bl SetFieldVBlankCallback
ldr r0, _08056714 @ =sub_8056534 ldr r0, _08056714 @ =sub_8056534
bl sub_80565E0 bl SetMainCallback1
ldr r0, _08056718 @ =sub_80565B4 ldr r0, _08056718 @ =sub_80565B4
bl SetMainCallback2 bl SetMainCallback2
_08056702: _08056702:
@@ -3574,11 +3574,11 @@ _08056718: .4byte sub_80565B4
thumb_func_start CB2_LoadMap thumb_func_start CB2_LoadMap
CB2_LoadMap: @ 805671C CB2_LoadMap: @ 805671C
push {lr} push {lr}
bl sub_80569BC bl FieldClearVBlankHBlankCallbacks
bl ScriptContext1_Init bl ScriptContext1_Init
bl ScriptContext2_Disable bl ScriptContext2_Disable
movs r0, 0 movs r0, 0
bl sub_80565E0 bl SetMainCallback1
ldr r0, _08056740 @ =sub_80C9BFC ldr r0, _08056740 @ =sub_80C9BFC
bl SetMainCallback2 bl SetMainCallback2
ldr r1, _08056744 @ =gMain ldr r1, _08056744 @ =gMain
@@ -3609,7 +3609,7 @@ _08056768: .4byte gMain + 0x438
_0805676C: _0805676C:
bl SetFieldVBlankCallback bl SetFieldVBlankCallback
ldr r0, _08056780 @ =sub_8056534 ldr r0, _08056780 @ =sub_8056534
bl sub_80565E0 bl SetMainCallback1
ldr r0, _08056784 @ =sub_80565B4 ldr r0, _08056784 @ =sub_80565B4
bl SetMainCallback2 bl SetMainCallback2
_0805677C: _0805677C:
@@ -3620,12 +3620,12 @@ _08056780: .4byte sub_8056534
_08056784: .4byte sub_80565B4 _08056784: .4byte sub_80565B4
thumb_func_end sub_805674C thumb_func_end sub_805674C
thumb_func_start sub_8056788 thumb_func_start CB2_ReturnToFieldCableClub
sub_8056788: @ 8056788 CB2_ReturnToFieldCableClub: @ 8056788
push {lr} push {lr}
bl sub_80569BC bl FieldClearVBlankHBlankCallbacks
ldr r0, _080567A0 @ =gFieldCallback ldr r0, _080567A0 @ =gFieldCallback
ldr r1, _080567A4 @ =sub_807DE58 ldr r1, _080567A4 @ =FieldCB_ReturnToFieldWirelessLink
str r1, [r0] str r1, [r0]
ldr r0, _080567A8 @ =c2_80567AC ldr r0, _080567A8 @ =c2_80567AC
bl SetMainCallback2 bl SetMainCallback2
@@ -3633,9 +3633,9 @@ sub_8056788: @ 8056788
bx r0 bx r0
.align 2, 0 .align 2, 0
_080567A0: .4byte gFieldCallback _080567A0: .4byte gFieldCallback
_080567A4: .4byte sub_807DE58 _080567A4: .4byte FieldCB_ReturnToFieldWirelessLink
_080567A8: .4byte c2_80567AC _080567A8: .4byte c2_80567AC
thumb_func_end sub_8056788 thumb_func_end CB2_ReturnToFieldCableClub
thumb_func_start c2_80567AC thumb_func_start c2_80567AC
c2_80567AC: @ 80567AC c2_80567AC: @ 80567AC
@@ -3646,7 +3646,7 @@ c2_80567AC: @ 80567AC
beq _080567CC beq _080567CC
bl SetFieldVBlankCallback bl SetFieldVBlankCallback
ldr r0, _080567D4 @ =c1_link_related ldr r0, _080567D4 @ =c1_link_related
bl sub_80565E0 bl SetMainCallback1
bl sub_80578D8 bl sub_80578D8
ldr r0, _080567D8 @ =sub_80565B4 ldr r0, _080567D8 @ =sub_80565B4
bl SetMainCallback2 bl SetMainCallback2
@@ -3671,7 +3671,7 @@ CB2_ReturnToField: @ 80567DC
.align 2, 0 .align 2, 0
_080567F0: .4byte c2_exit_to_overworld_2_link _080567F0: .4byte c2_exit_to_overworld_2_link
_080567F4: _080567F4:
bl sub_80569BC bl FieldClearVBlankHBlankCallbacks
ldr r0, _08056804 @ =c2_exit_to_overworld_2_local ldr r0, _08056804 @ =c2_exit_to_overworld_2_local
bl SetMainCallback2 bl SetMainCallback2
_080567FE: _080567FE:
@@ -3722,23 +3722,23 @@ _08056850: .4byte sub_80565B4
thumb_func_start c2_8056854 thumb_func_start c2_8056854
c2_8056854: @ 8056854 c2_8056854: @ 8056854
push {lr} push {lr}
bl sub_80569BC bl FieldClearVBlankHBlankCallbacks
bl StopMapMusic bl StopMapMusic
ldr r0, _08056878 @ =c1_link_related ldr r0, _08056878 @ =c1_link_related
bl sub_80565E0 bl SetMainCallback1
bl sub_80578D8 bl sub_80578D8
ldr r0, _0805687C @ =gWirelessCommType ldr r0, _0805687C @ =gWirelessCommType
ldrb r0, [r0] ldrb r0, [r0]
cmp r0, 0 cmp r0, 0
beq _08056888 beq _08056888
ldr r1, _08056880 @ =gFieldCallback ldr r1, _08056880 @ =gFieldCallback
ldr r0, _08056884 @ =sub_807DE58 ldr r0, _08056884 @ =FieldCB_ReturnToFieldWirelessLink
b _0805688C b _0805688C
.align 2, 0 .align 2, 0
_08056878: .4byte c1_link_related _08056878: .4byte c1_link_related
_0805687C: .4byte gWirelessCommType _0805687C: .4byte gWirelessCommType
_08056880: .4byte gFieldCallback _08056880: .4byte gFieldCallback
_08056884: .4byte sub_807DE58 _08056884: .4byte FieldCB_ReturnToFieldWirelessLink
_08056888: _08056888:
ldr r1, _080568A0 @ =gFieldCallback ldr r1, _080568A0 @ =gFieldCallback
ldr r0, _080568A4 @ =sub_807DDD0 ldr r0, _080568A4 @ =sub_807DDD0
@@ -3757,7 +3757,7 @@ _080568A4: .4byte sub_807DDD0
thumb_func_start CB2_ReturnToFieldWithOpenMenu thumb_func_start CB2_ReturnToFieldWithOpenMenu
CB2_ReturnToFieldWithOpenMenu: @ 80568A8 CB2_ReturnToFieldWithOpenMenu: @ 80568A8
push {lr} push {lr}
bl sub_80569BC bl FieldClearVBlankHBlankCallbacks
ldr r1, _080568BC @ =gFieldCallback2 ldr r1, _080568BC @ =gFieldCallback2
ldr r0, _080568C0 @ =FieldCB2_ReturnToStartMenuInit ldr r0, _080568C0 @ =FieldCB2_ReturnToStartMenuInit
str r0, [r1] str r0, [r1]
@@ -3772,7 +3772,7 @@ _080568C0: .4byte FieldCB2_ReturnToStartMenuInit
thumb_func_start sub_80568C4 thumb_func_start sub_80568C4
sub_80568C4: @ 80568C4 sub_80568C4: @ 80568C4
push {lr} push {lr}
bl sub_80569BC bl FieldClearVBlankHBlankCallbacks
ldr r1, _080568D8 @ =gFieldCallback ldr r1, _080568D8 @ =gFieldCallback
ldr r0, _080568DC @ =sub_807DD44 ldr r0, _080568DC @ =sub_807DD44
str r0, [r1] str r0, [r1]
@@ -3787,7 +3787,7 @@ _080568DC: .4byte sub_807DD44
thumb_func_start CB2_ReturnToFieldContinueScriptPlayMapMusic thumb_func_start CB2_ReturnToFieldContinueScriptPlayMapMusic
CB2_ReturnToFieldContinueScriptPlayMapMusic: @ 80568E0 CB2_ReturnToFieldContinueScriptPlayMapMusic: @ 80568E0
push {lr} push {lr}
bl sub_80569BC bl FieldClearVBlankHBlankCallbacks
ldr r1, _080568F4 @ =gFieldCallback ldr r1, _080568F4 @ =gFieldCallback
ldr r0, _080568F8 @ =FieldCallback_ReturnToEventScript2 ldr r0, _080568F8 @ =FieldCallback_ReturnToEventScript2
str r0, [r1] str r0, [r1]
@@ -3802,7 +3802,7 @@ _080568F8: .4byte FieldCallback_ReturnToEventScript2
thumb_func_start CB2_Overworld thumb_func_start CB2_Overworld
CB2_Overworld: @ 80568FC CB2_Overworld: @ 80568FC
push {lr} push {lr}
bl sub_80569BC bl FieldClearVBlankHBlankCallbacks
ldr r1, _08056910 @ =gFieldCallback ldr r1, _08056910 @ =gFieldCallback
ldr r0, _08056914 @ =sub_807DF7C ldr r0, _08056914 @ =sub_807DF7C
str r0, [r1] str r0, [r1]
@@ -3836,7 +3836,7 @@ _08056934: .4byte gMapHeader
thumb_func_start CB2_ContinueSavedGame thumb_func_start CB2_ContinueSavedGame
CB2_ContinueSavedGame: @ 8056938 CB2_ContinueSavedGame: @ 8056938
push {lr} push {lr}
bl sub_80569BC bl FieldClearVBlankHBlankCallbacks
bl StopMapMusic bl StopMapMusic
bl sub_8056420 bl sub_8056420
bl set_current_map_header_from_sav1 bl set_current_map_header_from_sav1
@@ -3871,7 +3871,7 @@ _0805699C:
ldr r1, _080569B4 @ =sub_8056918 ldr r1, _080569B4 @ =sub_8056918
str r1, [r0] str r1, [r0]
ldr r0, _080569B8 @ =sub_8056534 ldr r0, _080569B8 @ =sub_8056534
bl sub_80565E0 bl SetMainCallback1
bl CB2_ReturnToField bl CB2_ReturnToField
_080569AC: _080569AC:
pop {r0} pop {r0}
@@ -3882,8 +3882,8 @@ _080569B4: .4byte sub_8056918
_080569B8: .4byte sub_8056534 _080569B8: .4byte sub_8056534
thumb_func_end CB2_ContinueSavedGame thumb_func_end CB2_ContinueSavedGame
thumb_func_start sub_80569BC thumb_func_start FieldClearVBlankHBlankCallbacks
sub_80569BC: @ 80569BC FieldClearVBlankHBlankCallbacks: @ 80569BC
push {lr} push {lr}
bl sub_80CC87C bl sub_80CC87C
lsls r0, 24 lsls r0, 24
@@ -3915,7 +3915,7 @@ _080569F4:
bl SetHBlankCallback bl SetHBlankCallback
pop {r0} pop {r0}
bx r0 bx r0
thumb_func_end sub_80569BC thumb_func_end FieldClearVBlankHBlankCallbacks
thumb_func_start SetFieldVBlankCallback thumb_func_start SetFieldVBlankCallback
SetFieldVBlankCallback: @ 8056A04 SetFieldVBlankCallback: @ 8056A04
@@ -4122,7 +4122,7 @@ _08056B94:
.4byte _08056BFA .4byte _08056BFA
_08056BD0: _08056BD0:
bl InitOverworldBgs bl InitOverworldBgs
bl sub_80569BC bl FieldClearVBlankHBlankCallbacks
adds r0, r5, 0 adds r0, r5, 0
bl sub_8055920 bl sub_8055920
b _08056CCA b _08056CCA
@@ -4332,7 +4332,7 @@ _08056D60:
.4byte _08056E46 .4byte _08056E46
_08056D98: _08056D98:
bl InitOverworldBgs bl InitOverworldBgs
bl sub_80569BC bl FieldClearVBlankHBlankCallbacks
b _08056E3E b _08056E3E
_08056DA2: _08056DA2:
bl sub_8111F14 bl sub_8111F14
@@ -4914,14 +4914,14 @@ _08057268: .4byte gLinkPlayers
thumb_func_start sub_805726C thumb_func_start sub_805726C
sub_805726C: @ 805726C sub_805726C: @ 805726C
push {lr} push {lr}
bl sub_80569BC bl FieldClearVBlankHBlankCallbacks
ldr r1, _08057298 @ =gUnknown_2036E28 ldr r1, _08057298 @ =gUnknown_2036E28
movs r0, 0x1 movs r0, 0x1
strb r0, [r1] strb r0, [r1]
bl ScriptContext1_Init bl ScriptContext1_Init
bl ScriptContext2_Disable bl ScriptContext2_Disable
movs r0, 0 movs r0, 0
bl sub_80565E0 bl SetMainCallback1
ldr r0, _0805729C @ =sub_80C9BFC ldr r0, _0805729C @ =sub_80C9BFC
bl SetMainCallback2 bl SetMainCallback2
ldr r1, _080572A0 @ =gMain ldr r1, _080572A0 @ =gMain
@@ -4939,7 +4939,7 @@ _080572A4: .4byte sub_80572D8
thumb_func_start sub_80572A8 thumb_func_start sub_80572A8
sub_80572A8: @ 80572A8 sub_80572A8: @ 80572A8
push {lr} push {lr}
bl sub_80569BC bl FieldClearVBlankHBlankCallbacks
ldr r0, _080572D0 @ =gUnknown_2036E28 ldr r0, _080572D0 @ =gUnknown_2036E28
movs r1, 0x1 movs r1, 0x1
strb r1, [r0] strb r1, [r0]
@@ -4947,7 +4947,7 @@ sub_80572A8: @ 80572A8
bl ScriptContext1_Init bl ScriptContext1_Init
bl ScriptContext2_Disable bl ScriptContext2_Disable
movs r0, 0 movs r0, 0
bl sub_80565E0 bl SetMainCallback1
ldr r0, _080572D4 @ =sub_80572D8 ldr r0, _080572D4 @ =sub_80572D8
bl SetMainCallback2 bl SetMainCallback2
pop {r0} pop {r0}
@@ -4964,7 +4964,7 @@ sub_80572D8: @ 80572D8
bl sub_8057300 bl sub_8057300
bl SetFieldVBlankCallback bl SetFieldVBlankCallback
ldr r0, _080572F8 @ =sub_8056534 ldr r0, _080572F8 @ =sub_8056534
bl sub_80565E0 bl SetMainCallback1
ldr r0, _080572FC @ =sub_80565B4 ldr r0, _080572FC @ =sub_80565B4
bl SetMainCallback2 bl SetMainCallback2
pop {r0} pop {r0}
@@ -5020,7 +5020,7 @@ _08057330:
.4byte _0805740A .4byte _0805740A
_0805735C: _0805735C:
bl InitOverworldBgs bl InitOverworldBgs
bl sub_80569BC bl FieldClearVBlankHBlankCallbacks
bl sub_8111F14 bl sub_8111F14
bl sub_81113E4 bl sub_81113E4
bl sub_8111438 bl sub_8111438
@@ -5118,7 +5118,7 @@ _0805742A:
thumb_func_start sub_8057430 thumb_func_start sub_8057430
sub_8057430: @ 8057430 sub_8057430: @ 8057430
push {lr} push {lr}
bl sub_80569BC bl FieldClearVBlankHBlankCallbacks
bl StopMapMusic bl StopMapMusic
ldr r1, _08057484 @ =gUnknown_2036E28 ldr r1, _08057484 @ =gUnknown_2036E28
movs r0, 0x3 movs r0, 0x3
@@ -5149,7 +5149,7 @@ _08057488: .4byte gUnknown_2031DE0
_0805748C: .4byte CB2_LoadMap _0805748C: .4byte CB2_LoadMap
_08057490: _08057490:
ldr r0, _080574A0 @ =sub_8056534 ldr r0, _080574A0 @ =sub_8056534
bl sub_80565E0 bl SetMainCallback1
bl CB2_ReturnToField bl CB2_ReturnToField
_0805749A: _0805749A:
pop {r0} pop {r0}
@@ -5313,7 +5313,7 @@ _08057560:
bl ScriptContext1_Init bl ScriptContext1_Init
bl ScriptContext2_Disable bl ScriptContext2_Disable
movs r0, 0 movs r0, 0
bl sub_80565E0 bl SetMainCallback1
ldr r1, _08057614 @ =gFieldCallback2 ldr r1, _08057614 @ =gFieldCallback2
ldr r0, _08057618 @ =sub_80574EC ldr r0, _08057618 @ =sub_80574EC
str r0, [r1] str r0, [r1]
+3
View File
@@ -54,4 +54,7 @@
#define LINK_GROUP_WONDER_NEWS 8 #define LINK_GROUP_WONDER_NEWS 8
#define NUM_LINK_GROUP_TYPES 9 #define NUM_LINK_GROUP_TYPES 9
#define LINK_GROUP_UNION_ROOM_RESUME 9
#define LINK_GROUP_UNION_ROOM_INIT 10
#endif //GUARD_CONSTANTS_UNION_ROOM_H #endif //GUARD_CONSTANTS_UNION_ROOM_H
+8 -8
View File
@@ -246,11 +246,11 @@ void sub_800E0E8(void);
bool8 sub_800A520(void); bool8 sub_800A520(void);
bool8 sub_8010500(void); bool8 sub_8010500(void);
void sub_800DFB4(u8, u8); void sub_800DFB4(u8, u8);
void sub_800AB9C(void); void PrepareSendLinkCmd2FFE_or_RfuCmd6600(void);
void sub_800B1F4(void); void SetWirelessCommType1(void);
void sub_8009734(void); void sub_8009734(void);
void sub_800A620(void); void sub_800A620(void);
void sub_80FBB4C(void); void LinkRfu_DestroyIdleTask(void);
u8 sub_800ABAC(void); u8 sub_800ABAC(void);
u8 sub_800ABBC(void); u8 sub_800ABBC(void);
void Link_TryStartSend5FFF(void); void Link_TryStartSend5FFF(void);
@@ -264,19 +264,19 @@ bool8 IsLinkTaskFinished(void);
bool32 sub_800B270(void); bool32 sub_800B270(void);
void ResetSerial(void); void ResetSerial(void);
void sub_8054A28(void); void sub_8054A28(void);
void sub_800B1F4(void); void SetWirelessCommType1(void);
void LoadWirelessStatusIndicatorSpriteGfx(void); void LoadWirelessStatusIndicatorSpriteGfx(void);
void CreateWirelessStatusIndicatorSprite(u8, u8); void CreateWirelessStatusIndicatorSprite(u8, u8);
void sub_8009FE8(void); void sub_8009FE8(void);
void ClearLinkCallback_2(void); void ClearLinkCallback_2(void);
void sub_80FA42C(void); void LinkRfu_SetRfuFuncToSend6600(void);
void sub_800B284(struct LinkPlayer * linkPlayer); void IntlConvertLinkPlayerName(struct LinkPlayer * linkPlayer);
bool8 IsWirelessAdapterConnected(void); bool8 IsWirelessAdapterConnected(void);
bool8 sub_800A474(u8 a0); bool8 sub_800A474(u8 a0);
void LinkVSync(void); void LinkVSync(void);
bool8 HandleLinkConnection(void); bool8 HandleLinkConnection(void);
void sub_800B0B4(void); void PrepareLocalLinkPlayerBlock(void);
void sub_800B110(u32 who); void LinkPlayerFromBlock(u32 who);
void SetLinkErrorFromRfu(u32 status, u8 lastSendQueueCount, u8 lastRecvQueueCount, u8 unk_06); void SetLinkErrorFromRfu(u32 status, u8 lastSendQueueCount, u8 lastRecvQueueCount, u8 unk_06);
u8 sub_800A8D4(void); u8 sub_800A8D4(void);
+13 -13
View File
@@ -87,21 +87,21 @@ typedef struct UnkRfuStruct_2
/* 0x06c */ struct RfuBlockSend cmd_8800_sendbuf; /* 0x06c */ struct RfuBlockSend cmd_8800_sendbuf;
/* 0x080 */ struct RfuBlockSend cmd_8800_recvbuf[5]; /* 0x080 */ struct RfuBlockSend cmd_8800_recvbuf[5];
/* 0x0e4 */ u8 cmd5f00Ack[5]; /* 0x0e4 */ u8 cmd5f00Ack[5];
/* 0x0e9 */ u8 unk_e9[5]; /* 0x0e9 */ u8 cmd_6600_recvd[5];
/* 0x0ee */ vu8 errorState; /* 0x0ee */ vu8 errorState;
/* 0x0ef */ u8 unk_ef; /* 0x0ef */ u8 unk_ef;
/* 0x0f0 */ u8 linkLossRecoveryState; /* 0x0f0 */ u8 linkLossRecoveryState;
/* 0x0f1 */ u8 unk_f1; /* 0x0f1 */ u8 unk_f1;
/* 0x0f2 */ u16 unk_f2[6]; /* 0x0f2 */ u16 unk_f2[6];
/* 0x0fe */ u16 unk_fe; /* 0x0fe */ u16 cmd_6600_timer;
/* 0x100 */ u16 unk_100; /* 0x100 */ u16 cmd_6600_count;
/* 0x102 */ u8 unk_102; /* 0x102 */ u8 unk_102;
/* 0x104 */ struct RfuTgtData unk_104; /* 0x104 */ struct RfuTgtData unk_104;
/* 0x124 */ struct UnkRfuStruct_2_Sub_124 unk_124; /* 0x124 */ struct UnkRfuStruct_2_Sub_124 unk_124;
/* 0x6a0 */ struct UnkRfuStruct_2_Sub_9e8 unk_9e8; /* 0x6a0 */ struct UnkRfuStruct_2_Sub_9e8 unk_9e8;
/* 0x8d4 */ struct UnkRfuStruct_2_Sub_c1c unk_c1c; /* 0x8d4 */ struct UnkRfuStruct_2_Sub_c1c unk_c1c;
/* 0x8f4 */ vu8 unk_c3c; /* 0x8f4 */ vu8 unk_c3c;
/* 0x8f5 */ u8 unk_c3d; /* 0x8f5 */ u8 reconnectedParentIdx;
/* 0x8f6 */ vu8 child_slot; /* 0x8f6 */ vu8 child_slot;
/* 0x8f7 */ u8 unk_c3f[70]; /* 0x8f7 */ u8 unk_c3f[70];
/* 0x93d */ u8 unk_c85; /* 0x93d */ u8 unk_c85;
@@ -118,12 +118,12 @@ typedef struct UnkRfuStruct_2
/* 0x993 */ vu8 unk_cdb; /* 0x993 */ vu8 unk_cdb;
/* 0x994 */ vu8 unk_cdc; /* 0x994 */ vu8 unk_cdc;
/* 0x995 */ u8 unk_cdd; /* 0x995 */ u8 unk_cdd;
/* 0x996 */ u8 unk_cde[RFU_CHILD_MAX]; /* 0x996 */ u8 linkPlayerIdx[RFU_CHILD_MAX];
/* 0x99a */ u8 bm_PartnerFlags; /* 0x99a */ u8 bm_PartnerFlags;
/* 0x99b */ u8 bm_DisconnectSlot; /* 0x99b */ u8 bm_DisconnectSlot;
/* 0x99c */ u8 unk_ce4; /* 0x99c */ u8 unk_ce4;
/* 0x99d */ u8 unk_ce5; /* 0x99d */ u8 unk_ce5;
/* 0x99e */ u8 unk_ce6; /* 0x99e */ u8 unionRoomChatters;
/* 0x99f */ u8 acceptSlot_flag; /* 0x99f */ u8 acceptSlot_flag;
/* 0x9a0 */ bool8 unk_ce8; /* 0x9a0 */ bool8 unk_ce8;
/* 0x9a1 */ u8 unk_ce9; /* 0x9a1 */ u8 unk_ce9;
@@ -147,7 +147,7 @@ void MEvent_CreateTask_CardOrNewsOverWireless(u32 arg0);
void MEvent_CreateTask_Leader(u32 arg0); void MEvent_CreateTask_Leader(u32 arg0);
void RfuPrepareSend0x2f00(void * data); void RfuPrepareSend0x2f00(void * data);
u8 CreateTask_ListenToWireless(void); u8 CreateTask_ListenToWireless(void);
void sub_80FBB4C(void); void LinkRfu_DestroyIdleTask(void);
void sub_80F86F4(void); void sub_80F86F4(void);
void sub_80FB128(bool32 a0); void sub_80FB128(bool32 a0);
bool32 IsSendingKeysToRfu(void); bool32 IsSendingKeysToRfu(void);
@@ -161,13 +161,13 @@ u8 Rfu_GetBlockReceivedStatus(void);
void Rfu_SetBlockReceivedFlag(u8 who); void Rfu_SetBlockReceivedFlag(u8 who);
void Rfu_ResetBlockReceivedFlag(u8 who); void Rfu_ResetBlockReceivedFlag(u8 who);
bool8 Rfu_IsMaster(void); bool8 Rfu_IsMaster(void);
void sub_80F85F8(void); void ResetLinkRfuGFLayer(void);
bool32 LinkRfuMain1(void); bool32 LinkRfuMain1(void);
bool32 LinkRfuMain2(void); bool32 LinkRfuMain2(void);
bool32 IsRfuRecvQueueEmpty(void); bool32 IsRfuRecvQueueEmpty(void);
u32 GetRfuRecvQueueLength(void); u32 GetRfuRecvQueueLength(void);
void LinkRfu_Shutdown(void); void LinkRfu_Shutdown(void);
void sub_80FBB20(void); void LinkRfu_CreateIdleTask(void);
bool8 sub_80FA484(bool32 a0); bool8 sub_80FA484(bool32 a0);
void var_800D_set_xB(void); void var_800D_set_xB(void);
struct GFtgtGname *GetHostRFUtgtGname(void); struct GFtgtGname *GetHostRFUtgtGname(void);
@@ -191,7 +191,7 @@ void UpdateGameData_GroupLockedIn(bool8 started);
bool32 RfuSerialNumberIsValid(u32 a0); bool32 RfuSerialNumberIsValid(u32 a0);
bool8 sub_80FC1B0(void); bool8 sub_80FC1B0(void);
bool8 LmanAcceptSlotFlagIsNotZero(void); bool8 LmanAcceptSlotFlagIsNotZero(void);
void sub_80F8F5C(void); void LinkRfu_StopManagerAndFinalizeSlots(void);
bool32 sub_80FA5D4(void); bool32 sub_80FA5D4(void);
bool32 sub_80FC1CC(void); bool32 sub_80FC1CC(void);
bool32 WaitRfuState(bool32 a0); bool32 WaitRfuState(bool32 a0);
@@ -204,7 +204,7 @@ void RequestDisconnectSlotByTrainerNameAndId(const u8 *trainerName, u16 trainerI
void LinkRfu3_SetGnameUnameFromStaticBuffers(struct GFtgtGname *gname, u8 *uname); void LinkRfu3_SetGnameUnameFromStaticBuffers(struct GFtgtGname *gname, u8 *uname);
void InitializeRfuLinkManager_JoinGroup(void); void InitializeRfuLinkManager_JoinGroup(void);
void LinkRfuNIsend8(void); void LinkRfuNIsend8(void);
void CreateTask_sub_80FBE80(const u8 *src, u16 trainerId); void CreateTask_RfuReconnectWithParent(const u8 *src, u16 trainerId);
void UpdateGameDataWithActivitySpriteGendersFlag(u8 activity, u32 child_sprite_genders, u32 started); void UpdateGameDataWithActivitySpriteGendersFlag(u8 activity, u32 child_sprite_genders, u32 started);
void RecordMixTrainerNames(void); void RecordMixTrainerNames(void);
void LinkRfu_CreateConnectionAsParent(); void LinkRfu_CreateConnectionAsParent();
@@ -213,8 +213,8 @@ void SetGnameBufferWonderFlags(bool32 hasNews, bool32 hasCard);
void ClearAndInitHostRFUtgtGname(void); void ClearAndInitHostRFUtgtGname(void);
void sub_80F8FA0(void); void sub_80F8FA0(void);
void RfuUpdatePlayerGnameStateAndSend(u32 type, u32 species, u32 level); void RfuUpdatePlayerGnameStateAndSend(u32 type, u32 species, u32 level);
bool32 sub_80FBB0C(void); bool32 IsUnionRoomListenTaskActive(void);
void sub_80FBC00(void); void InitializeRfuLinkManager_EnterUnionRoom(void);
void sub_80FBD6C(u32 a0); void sub_80FBD6C(u32 a0);
void sub_80FC114(const u8 *name, struct GFtgtGname *structPtr, u8 a2); void sub_80FC114(const u8 *name, struct GFtgtGname *structPtr, u8 a2);
bool32 PlayerHasMetTrainerBefore(u16 id, u8 *name); bool32 PlayerHasMetTrainerBefore(u16 id, u8 *name);
+1 -1
View File
@@ -156,7 +156,7 @@ u8 GetCurrentMapType(void);
u8 get_map_light_from_warp0(void); u8 get_map_light_from_warp0(void);
const struct MapHeader *warp1_get_mapheader(void); const struct MapHeader *warp1_get_mapheader(void);
void sub_8055F88(void); void sub_8055F88(void);
void sub_8056788(void); void CB2_ReturnToFieldCableClub(void);
void ResetGameStats(void); void ResetGameStats(void);
void Overworld_CreditsMainCB(void); void Overworld_CreditsMainCB(void);
+1 -1
View File
@@ -152,7 +152,7 @@ u8 rfu_LMAN_establishConnection(u8 parent_child, u16 connect_period, u16 name_ac
rfu_LMAN_occureCallback(LMAN_MSG_LMAN_API_ERROR_RETURN, 1); rfu_LMAN_occureCallback(LMAN_MSG_LMAN_API_ERROR_RETURN, 1);
return LMAN_ERROR_ILLEGAL_PARAMETER; return LMAN_ERROR_ILLEGAL_PARAMETER;
} }
if (parent_child > 1) if (parent_child > MODE_PARENT)
{ {
lman.pcswitch_flag = PCSWITCH_1ST_SC_START; lman.pcswitch_flag = PCSWITCH_1ST_SC_START;
parent_child = MODE_PARENT; parent_child = MODE_PARENT;
+1 -1
View File
@@ -833,7 +833,7 @@ void sub_802F6A8(void)
if (gWirelessCommType == 0) if (gWirelessCommType == 0)
Link_TryStartSend5FFF(); Link_TryStartSend5FFF();
else else
sub_800AB9C(); PrepareSendLinkCmd2FFE_or_RfuCmd6600();
gBattlerControllerFuncs[gActiveBattler] = sub_802F610; gBattlerControllerFuncs[gActiveBattler] = sub_802F610;
} }
else else
+2 -2
View File
@@ -35,7 +35,7 @@ void HandleLinkBattleSetup(void)
if (gBattleTypeFlags & BATTLE_TYPE_LINK) if (gBattleTypeFlags & BATTLE_TYPE_LINK)
{ {
if (gWirelessCommType) if (gWirelessCommType)
sub_800B1F4(); SetWirelessCommType1();
if (!gReceivedRemoteLinkPlayers) if (!gReceivedRemoteLinkPlayers)
OpenLink(); OpenLink();
CreateTask(sub_8081A90, 0); CreateTask(sub_8081A90, 0);
@@ -491,7 +491,7 @@ void sub_800DD28(void)
if (gReceivedRemoteLinkPlayers && (gBattleTypeFlags & BATTLE_TYPE_20) && (gLinkPlayers[0].linkType == 0x2211)) if (gReceivedRemoteLinkPlayers && (gBattleTypeFlags & BATTLE_TYPE_20) && (gLinkPlayers[0].linkType == 0x2211))
{ {
sub_80FBB4C(); LinkRfu_DestroyIdleTask();
for (i = 0; i < GetLinkPlayerCount(); ++i) for (i = 0; i < GetLinkPlayerCount(); ++i)
{ {
if (GetBlockReceivedStatus() & gBitTable[i]) if (GetBlockReceivedStatus() & gBitTable[i])
+1 -1
View File
@@ -1152,7 +1152,7 @@ static void CB2_PreInitMultiBattle(void)
{ {
++gBattleCommunication[MULTIUSE_STATE]; ++gBattleCommunication[MULTIUSE_STATE];
if (gWirelessCommType) if (gWirelessCommType)
sub_800AB9C(); PrepareSendLinkCmd2FFE_or_RfuCmd6600();
else else
Link_TryStartSend5FFF(); Link_TryStartSend5FFF();
} }
+3 -3
View File
@@ -206,7 +206,7 @@ static void sub_807DDF0(u8 taskId)
switch (task->data[0]) switch (task->data[0])
{ {
case 0: case 0:
sub_800AB9C(); PrepareSendLinkCmd2FFE_or_RfuCmd6600();
task->data[0]++; task->data[0]++;
break; break;
case 1: case 1:
@@ -227,7 +227,7 @@ static void sub_807DDF0(u8 taskId)
} }
} }
void sub_807DE58(void) void FieldCB_ReturnToFieldWirelessLink(void)
{ {
ScriptContext2_Enable(); ScriptContext2_Enable();
Overworld_PlaySpecialMapMusic(); Overworld_PlaySpecialMapMusic();
@@ -632,7 +632,7 @@ static void sub_807E5EC(u8 taskId)
break; break;
case 2: case 2:
WarpIntoMap(); WarpIntoMap();
SetMainCallback2(sub_8056788); SetMainCallback2(CB2_ReturnToFieldCableClub);
DestroyTask(taskId); DestroyTask(taskId);
break; break;
} }
+20 -20
View File
@@ -144,11 +144,11 @@ static void LinkCB_RequestPlayerDataExchange(void);
static void Task_PrintTestData(u8 taskId); static void Task_PrintTestData(u8 taskId);
static void LinkCB_BuildCommand5FFF(void); static void LinkCB_BuildCommand5FFF(void);
static void LinkCB_WaitAckCommand5FFF(void); static void LinkCB_WaitAckCommand5FFF(void);
static void sub_800ABD4(void); static void LinkFunc_Send2FFE_1(void);
static void sub_800AC00(void); static void LinkFunc_Send2FFE_2(void);
static void CheckErrorStatus(void); static void CheckErrorStatus(void);
static void CB2_PrintErrorMessage(void); static void CB2_PrintErrorMessage(void);
static void sub_800B210(void); static void SetWirelessCommType0(void);
static void DisableSerial(void); static void DisableSerial(void);
static void EnableSerial(void); static void EnableSerial(void);
static bool8 IsSioMultiMaster(void); static bool8 IsSioMultiMaster(void);
@@ -232,7 +232,7 @@ bool8 IsWirelessAdapterConnected(void)
if (gQuestLogState == 2 || gQuestLogState == 3) if (gQuestLogState == 2 || gQuestLogState == 3)
return FALSE; return FALSE;
sub_800B1F4(); SetWirelessCommType1();
sub_80F86F4(); sub_80F86F4();
sub_80FB128(TRUE); sub_80FB128(TRUE);
if (rfu_LMAN_REQBN_softReset_and_checkID() == RFU_ID) if (rfu_LMAN_REQBN_softReset_and_checkID() == RFU_ID)
@@ -241,7 +241,7 @@ bool8 IsWirelessAdapterConnected(void)
rfu_waitREQComplete(); rfu_waitREQComplete();
return TRUE; return TRUE;
} }
sub_800B210(); SetWirelessCommType0();
CloseLink(); CloseLink();
RestoreSerialTimer3IntrHandlers(); RestoreSerialTimer3IntrHandlers();
return FALSE; return FALSE;
@@ -613,7 +613,7 @@ void ProcessRecvCmds(u8 unused)
linkPlayer->name[9] = 0; linkPlayer->name[9] = 0;
linkPlayer->name[8] = 0; linkPlayer->name[8] = 0;
} }
sub_800B284(linkPlayer); IntlConvertLinkPlayerName(linkPlayer);
if (strcmp(block->magic1, sASCIIGameFreakInc) != 0 if (strcmp(block->magic1, sASCIIGameFreakInc) != 0
|| strcmp(block->magic2, sASCIIGameFreakInc) != 0) || strcmp(block->magic2, sASCIIGameFreakInc) != 0)
{ {
@@ -1384,32 +1384,32 @@ static void LinkCB_WaitAckCommand5FFF(void)
} }
} }
void sub_800AB9C(void) void PrepareSendLinkCmd2FFE_or_RfuCmd6600(void)
{ {
if (gWirelessCommType == 1) if (gWirelessCommType == 1)
{ {
sub_80FA42C(); LinkRfu_SetRfuFuncToSend6600();
} }
else else
{ {
if (gLinkCallback == NULL) if (gLinkCallback == NULL)
{ {
gLinkCallback = sub_800ABD4; gLinkCallback = LinkFunc_Send2FFE_1;
} }
gLinkAllAcked5FFF = FALSE; gLinkAllAcked5FFF = FALSE;
} }
} }
static void sub_800ABD4(void) static void LinkFunc_Send2FFE_1(void)
{ {
if (gLastRecvQueueCount == 0) if (gLastRecvQueueCount == 0)
{ {
BuildSendCmd(LINKCMD_0x2FFE); BuildSendCmd(LINKCMD_0x2FFE);
gLinkCallback = sub_800AC00; gLinkCallback = LinkFunc_Send2FFE_2;
} }
} }
static void sub_800AC00(void) static void LinkFunc_Send2FFE_2(void)
{ {
u8 i; u8 i;
u8 linkPlayerCount; u8 linkPlayerCount;
@@ -1477,7 +1477,7 @@ void CB2_LinkError(void)
{ {
gWirelessCommType = 3; gWirelessCommType = 3;
} }
sub_80F85F8(); ResetLinkRfuGFLayer();
} }
SetVBlankCallback(sub_800978C); SetVBlankCallback(sub_800978C);
ResetBgsAndClearDma3BusyFlags(0); ResetBgsAndClearDma3BusyFlags(0);
@@ -1626,7 +1626,7 @@ bool8 HasLinkErrorOccurred(void)
return gLinkErrorOccurred; return gLinkErrorOccurred;
} }
void sub_800B0B4(void) void PrepareLocalLinkPlayerBlock(void)
{ {
struct LinkPlayerBlock * block; struct LinkPlayerBlock * block;
@@ -1638,7 +1638,7 @@ void sub_800B0B4(void)
memcpy(gBlockSendBuffer, block, sizeof(*block)); memcpy(gBlockSendBuffer, block, sizeof(*block));
} }
void sub_800B110(u32 who) void LinkPlayerFromBlock(u32 who)
{ {
u8 who_ = who; u8 who_ = who;
struct LinkPlayerBlock * block; struct LinkPlayerBlock * block;
@@ -1647,7 +1647,7 @@ void sub_800B110(u32 who)
block = (struct LinkPlayerBlock *)gBlockRecvBuffer[who_]; block = (struct LinkPlayerBlock *)gBlockRecvBuffer[who_];
player = &gLinkPlayers[who_]; player = &gLinkPlayers[who_];
*player = block->linkPlayer; *player = block->linkPlayer;
sub_800B284(player); IntlConvertLinkPlayerName(player);
if (strcmp(block->magic1, sASCIIGameFreakInc) != 0 || strcmp(block->magic2, sASCIIGameFreakInc) != 0) if (strcmp(block->magic1, sASCIIGameFreakInc) != 0 || strcmp(block->magic2, sASCIIGameFreakInc) != 0)
{ {
SetMainCallback2(CB2_LinkError); SetMainCallback2(CB2_LinkError);
@@ -1683,7 +1683,7 @@ bool8 HandleLinkConnection(void)
return FALSE; return FALSE;
} }
void sub_800B1F4(void) void SetWirelessCommType1(void)
{ {
if (gReceivedRemoteLinkPlayers == 0) if (gReceivedRemoteLinkPlayers == 0)
{ {
@@ -1691,7 +1691,7 @@ void sub_800B1F4(void)
} }
} }
static void sub_800B210(void) static void SetWirelessCommType0(void)
{ {
if (gReceivedRemoteLinkPlayers == 0) if (gReceivedRemoteLinkPlayers == 0)
{ {
@@ -1699,7 +1699,7 @@ static void sub_800B210(void)
} }
} }
void sub_800B22C(void) void SetWirelessCommType0_UnusedCopy(void)
{ {
if (gReceivedRemoteLinkPlayers == 0) if (gReceivedRemoteLinkPlayers == 0)
{ {
@@ -1725,7 +1725,7 @@ bool32 sub_800B270(void)
return FALSE; return FALSE;
} }
void sub_800B284(struct LinkPlayer * player) void IntlConvertLinkPlayerName(struct LinkPlayer * player)
{ {
player->name[10] = player->name[8]; player->name[10] = player->name[8];
ConvertInternationalString(player->name, player->language); ConvertInternationalString(player->name, player->language);
+150 -148
View File
@@ -14,11 +14,12 @@
#include "constants/species.h" #include "constants/species.h"
#include "constants/union_room.h" #include "constants/union_room.h"
struct UnkRfuStruct_8010A14{ struct SioInfo
char unk_00[15]; // PokemonSioInfo {
u8 unk_0f; char magic[15]; // PokemonSioInfo
u8 unk_10[4]; u8 playerCount;
struct LinkPlayer unk_14[5]; u8 linkPlayerIdx[RFU_CHILD_MAX];
struct LinkPlayer linkPlayers[MAX_RFU_PLAYERS];
u8 fill_a0[0x5c]; u8 fill_a0[0x5c];
}; };
@@ -36,7 +37,7 @@ u8 gHostRFUtgtUnameBuffer[PLAYER_NAME_LENGTH + 1];
static void sub_80F8AA4(void); static void sub_80F8AA4(void);
static void sub_80F8AEC(void); static void sub_80F8AEC(void);
static void MscCallback_Child(u16 a0); static void MscCallback_Child(u16 a0);
static void sub_80F8DA8(u16 a0); static void MSCCallback_SetUnkCDB(u16 a0);
static void sub_80F906C(void); static void sub_80F906C(void);
static void RfuHandleReceiveCommand(u8 unused); static void RfuHandleReceiveCommand(u8 unused);
static void ResetSendDataManager(struct RfuBlockSend *data); static void ResetSendDataManager(struct RfuBlockSend *data);
@@ -49,8 +50,8 @@ static void sub_80FA738(void);
static int sub_80FA788(void); static int sub_80FA788(void);
static void sub_80FA834(u8 taskId); static void sub_80FA834(u8 taskId);
static void sub_80FA9D0(u16 a0); static void sub_80FA9D0(u16 a0);
static void sub_80FAA58(void * a0); static void ValidateAndReceivePokemonSioInfo(void * a0);
static void sub_80FAA94(u8 taskId); static void Task_ExchangeLinkPlayers(u8 taskId);
static void sub_80FACF0(u8 taskId); static void sub_80FACF0(u8 taskId);
static void GetLinkmanErrorParams(u32 msg); static void GetLinkmanErrorParams(u32 msg);
static void sub_80FB564(s32 bmConnectedFlag); static void sub_80FB564(s32 bmConnectedFlag);
@@ -59,8 +60,8 @@ static u8 GetPartnerIndexByNameAndTrainerID(const u8 *trainerName, u16 trainerId
static void RfuReqDisconnectSlot(u32 bmDisconnectSlot); static void RfuReqDisconnectSlot(u32 bmDisconnectSlot);
static void sub_80FBE20(u32 a0, u32 a1); static void sub_80FBE20(u32 a0, u32 a1);
static void sub_80FC028(u8 taskId); static void sub_80FC028(u8 taskId);
static void sub_80FC208(void); static void rfu_dbg_clear(void);
static void nullsub_89(u8 taskId); static void Task_idle(u8 taskId);
static const struct InitializeParametersTag sRfuReqConfigTemplate = { static const struct InitializeParametersTag sRfuReqConfigTemplate = {
.maxMFrame = 4, .maxMFrame = 4,
@@ -169,21 +170,21 @@ static const char sUnref_843ED37[][16] = {
static const TaskFunc gUnknown_843ED88[] = { static const TaskFunc gUnknown_843ED88[] = {
sub_80FA834, sub_80FA834,
sub_80FAA94, Task_ExchangeLinkPlayers,
sub_80FACF0 sub_80FACF0
}; };
static void nullsub_87(const void *unused_0, u8 unused_1, u8 unused_2) static void rfu_dbg_print_str(const void *string, u8 x, u8 y)
{ {
// debug? // debug?
} }
static void nullsub_88(u16 unused_0, u8 unused_1, u8 unused_2, u8 unused_3) static void rfu_dbg_print_num(u16 num, u8 x, u8 y, u8 ndigits)
{ {
} }
void sub_80F85F8(void) void ResetLinkRfuGFLayer(void)
{ {
s32 i; s32 i;
u8 errorState_bak = Rfu.errorState; u8 errorState_bak = Rfu.errorState;
@@ -225,7 +226,7 @@ void sub_80F86F4(void)
{ {
gLinkType = 0; gLinkType = 0;
sub_80FB128(FALSE); sub_80FB128(FALSE);
sub_80F85F8(); ResetLinkRfuGFLayer();
rfu_setTimerInterrupt(3, gIntrTable + 2); rfu_setTimerInterrupt(3, gIntrTable + 2);
} }
} }
@@ -257,7 +258,7 @@ static void Task_LinkLeaderSearchForChildren(u8 taskId)
break; break;
case 18: case 18:
Rfu.unk_cdb = 0; Rfu.unk_cdb = 0;
rfu_LMAN_setMSCCallback(sub_80F8DA8); rfu_LMAN_setMSCCallback(MSCCallback_SetUnkCDB);
sub_80F8AA4(); sub_80F8AA4();
sub_80F8AEC(); sub_80F8AEC();
Rfu.state = 20; Rfu.state = 20;
@@ -285,7 +286,7 @@ static void sub_80F887C(s32 r2, s32 r5)
{ {
if (r2 & 1) if (r2 & 1)
{ {
Rfu.unk_cde[i] = r4; Rfu.linkPlayerIdx[i] = r4;
r4++; r4++;
} }
} }
@@ -296,12 +297,12 @@ static void sub_80F887C(s32 r2, s32 r5)
{ {
if (!(r1 & 1)) if (!(r1 & 1))
{ {
Rfu.unk_cde[i] = 0; Rfu.linkPlayerIdx[i] = 0;
} }
} }
for (r4 = 4; r4 != 0; r4--) for (r4 = 4; r4 != 0; r4--)
{ {
for (i = 0; i < RFU_CHILD_MAX && Rfu.unk_cde[i] != r4; i++); for (i = 0; i < RFU_CHILD_MAX && Rfu.linkPlayerIdx[i] != r4; i++);
if (i == 4) if (i == 4)
{ {
r6 = r4; r6 = r4;
@@ -311,7 +312,7 @@ static void sub_80F887C(s32 r2, s32 r5)
{ {
if (r5 & 1) if (r5 & 1)
{ {
Rfu.unk_cde[i] = r6++; Rfu.linkPlayerIdx[i] = r6++;
} }
} }
} }
@@ -362,7 +363,7 @@ static void Task_JoinGroupSearchForParent(u8 taskId)
DestroyTask(taskId); DestroyTask(taskId);
if (gUnknown_203AC08.unk_0f == 0) if (gUnknown_203AC08.unk_0f == 0)
{ {
sub_80FC208(); rfu_dbg_clear();
gUnknown_203AC08.unk_0f++; gUnknown_203AC08.unk_0f++;
} }
CreateTask(sub_80FA834, 5); CreateTask(sub_80FA834, 5);
@@ -396,7 +397,7 @@ static void sub_80F8AEC(void)
Rfu.parent_child = MODE_PARENT; Rfu.parent_child = MODE_PARENT;
} }
static void sub_80F8B34(u8 taskId) static void Task_LinkRfu_UnionRoomListen(u8 taskId)
{ {
if (GetHostRFUtgtGname()->activity == (ACTIVITY_PLYRTALK | IN_UNION_ROOM) && RfuGetErrorStatus() == 4) if (GetHostRFUtgtGname()->activity == (ACTIVITY_PLYRTALK | IN_UNION_ROOM) && RfuGetErrorStatus() == 4)
{ {
@@ -443,7 +444,7 @@ static void sub_80F8B34(u8 taskId)
break; break;
case 16: case 16:
Rfu.unk_cdb = 0; Rfu.unk_cdb = 0;
rfu_LMAN_setMSCCallback(sub_80F8DA8); rfu_LMAN_setMSCCallback(MSCCallback_SetUnkCDB);
UpdateGameData_GroupLockedIn(1); UpdateGameData_GroupLockedIn(1);
sub_80F8AA4(); sub_80F8AA4();
sub_80F8AEC(); sub_80F8AEC();
@@ -489,7 +490,7 @@ static void MscCallback_Child(u16 unused)
rfu_LMAN_REQ_sendData(TRUE); rfu_LMAN_REQ_sendData(TRUE);
} }
static void sub_80F8DA8(u16 unused) static void MSCCallback_SetUnkCDB(u16 unused)
{ {
Rfu.unk_cdb = 1; Rfu.unk_cdb = 1;
} }
@@ -507,7 +508,7 @@ void LinkRfu_Shutdown(void)
if (FuncIsActiveTask(Task_LinkLeaderSearchForChildren) == TRUE) if (FuncIsActiveTask(Task_LinkLeaderSearchForChildren) == TRUE)
{ {
DestroyTask(Rfu.unk_67); DestroyTask(Rfu.unk_67);
sub_80F85F8(); ResetLinkRfuGFLayer();
} }
} }
else if (Rfu.parent_child == MODE_CHILD) else if (Rfu.parent_child == MODE_CHILD)
@@ -515,15 +516,15 @@ void LinkRfu_Shutdown(void)
if (FuncIsActiveTask(Task_JoinGroupSearchForParent) == TRUE) if (FuncIsActiveTask(Task_JoinGroupSearchForParent) == TRUE)
{ {
DestroyTask(Rfu.unk_67); DestroyTask(Rfu.unk_67);
sub_80F85F8(); ResetLinkRfuGFLayer();
} }
} }
else if (Rfu.parent_child == 2) else if (Rfu.parent_child == 2)
{ {
if (FuncIsActiveTask(sub_80F8B34) == TRUE) if (FuncIsActiveTask(Task_LinkRfu_UnionRoomListen) == TRUE)
{ {
DestroyTask(Rfu.unk_67); DestroyTask(Rfu.unk_67);
sub_80F85F8(); ResetLinkRfuGFLayer();
} }
} }
for (i = 0; i < NELEMS(gUnknown_843ED88); i++) for (i = 0; i < NELEMS(gUnknown_843ED88); i++)
@@ -553,7 +554,7 @@ static bool8 RfuStateIs7AndPlayerIsChild(void)
static bool32 IsParentSuccessfullyReconnected(void) static bool32 IsParentSuccessfullyReconnected(void)
{ {
if (Rfu.state == 7 && !rfu_LMAN_CHILD_connectParent(gRfuLinkStatus->partner[Rfu.unk_c3d].id, 240)) if (Rfu.state == 7 && !rfu_LMAN_CHILD_connectParent(gRfuLinkStatus->partner[Rfu.reconnectedParentIdx].id, 240))
{ {
Rfu.state = 9; Rfu.state = 9;
return TRUE; return TRUE;
@@ -577,7 +578,7 @@ bool8 LmanAcceptSlotFlagIsNotZero(void)
return FALSE; return FALSE;
} }
void sub_80F8F5C(void) void LinkRfu_StopManagerAndFinalizeSlots(void)
{ {
Rfu.state = 4; Rfu.state = 4;
Rfu.acceptSlot_flag = lman.acceptSlot_flag; Rfu.acceptSlot_flag = lman.acceptSlot_flag;
@@ -772,7 +773,7 @@ static bool32 sub_80F9204(void)
Rfu.unk_cee[i] = Rfu.unk_14[i][0] / 32; Rfu.unk_cee[i] = Rfu.unk_14[i][0] / 32;
Rfu.unk_cea[i] = 0; Rfu.unk_cea[i] = 0;
Rfu.unk_14[i][0] &= 0x1f; Rfu.unk_14[i][0] &= 0x1f;
r0 = Rfu.unk_cde[i]; r0 = Rfu.linkPlayerIdx[i];
for (j = 0; j < 7; j++) for (j = 0; j < 7; j++)
{ {
gRecvCmds[r0][j] = (Rfu.unk_14[i][(j << 1) + 1] << 8) | Rfu.unk_14[i][(j << 1) + 0]; gRecvCmds[r0][j] = (Rfu.unk_14[i][(j << 1) + 1] << 8) | Rfu.unk_14[i][(j << 1) + 0];
@@ -805,7 +806,7 @@ static bool32 sub_80F9204(void)
Rfu.unk_ce5 = 0; Rfu.unk_ce5 = 0;
rfu_UNI_setSendData(Rfu.bm_PartnerFlags, Rfu.recvCmds, sizeof(Rfu.recvCmds)); rfu_UNI_setSendData(Rfu.bm_PartnerFlags, Rfu.recvCmds, sizeof(Rfu.recvCmds));
Rfu.unk_cda = sub_80F886C(Rfu.bm_PartnerFlags); Rfu.unk_cda = sub_80F886C(Rfu.bm_PartnerFlags);
CreateTask(sub_80FAA94, 0); CreateTask(Task_ExchangeLinkPlayers, 0);
} }
} }
else else
@@ -937,7 +938,7 @@ static u8 sub_80F9770(const u8 *a0)
return FALSE; return FALSE;
for (i = 0; i < RFU_CHILD_MAX; i++) for (i = 0; i < RFU_CHILD_MAX; i++)
{ {
Rfu.unk_cde[i] = a0[i]; Rfu.linkPlayerIdx[i] = a0[i];
} }
return a0[Rfu.child_slot]; return a0[Rfu.child_slot];
} }
@@ -1019,7 +1020,7 @@ static void RfuHandleReceiveCommand(u8 unused)
Rfu.cmd_8800_recvbuf[i].receiving = 2; Rfu.cmd_8800_recvbuf[i].receiving = 2;
Rfu_SetBlockReceivedFlag(i); Rfu_SetBlockReceivedFlag(i);
if (GetHostRFUtgtGname()->activity == (ACTIVITY_CHAT | IN_UNION_ROOM) && gReceivedRemoteLinkPlayers != 0 && Rfu.parent_child == MODE_CHILD) if (GetHostRFUtgtGname()->activity == (ACTIVITY_CHAT | IN_UNION_ROOM) && gReceivedRemoteLinkPlayers != 0 && Rfu.parent_child == MODE_CHILD)
sub_80FAA58(gBlockRecvBuffer); ValidateAndReceivePokemonSioInfo(gBlockRecvBuffer);
} }
} }
break; break;
@@ -1030,8 +1031,8 @@ static void RfuHandleReceiveCommand(u8 unused)
Rfu.cmd5f00Ack[i] = 1; Rfu.cmd5f00Ack[i] = 1;
break; break;
case RFU_COMMAND_0x6600: case RFU_COMMAND_0x6600:
if (Rfu.unk_100 == gRecvCmds[i][1]) if (Rfu.cmd_6600_count == gRecvCmds[i][1])
Rfu.unk_e9[i] = 1; Rfu.cmd_6600_recvd[i] = 1;
break; break;
case RFU_COMMAND_0xed00: case RFU_COMMAND_0xed00:
if (Rfu.parent_child == MODE_CHILD) if (Rfu.parent_child == MODE_CHILD)
@@ -1081,7 +1082,7 @@ static void RfuHandleReceiveCommand(u8 unused)
} }
} }
static bool8 sub_80F9C50(void) static bool8 Cmd8000recvIsFinished(void)
{ {
s32 i; s32 i;
@@ -1145,7 +1146,7 @@ static void RfuPrepareSendBuffer(u16 command)
gSendCmd[2] = Rfu.cmd_8800_sendbuf.owner + 0x80; gSendCmd[2] = Rfu.cmd_8800_sendbuf.owner + 0x80;
break; break;
case RFU_COMMAND_0xa100: case RFU_COMMAND_0xa100:
if (sub_80F9C50()) if (Cmd8000recvIsFinished())
gSendCmd[1] = Rfu.unk_5a; gSendCmd[1] = Rfu.unk_5a;
break; break;
case RFU_COMMAND_0x7700: case RFU_COMMAND_0x7700:
@@ -1155,11 +1156,11 @@ static void RfuPrepareSendBuffer(u16 command)
gSendCmd[1] = Rfu.playerCount; gSendCmd[1] = Rfu.playerCount;
buff = (u8 *)(gSendCmd + 2); buff = (u8 *)(gSendCmd + 2);
for (i = 0; i < RFU_CHILD_MAX; i++) for (i = 0; i < RFU_CHILD_MAX; i++)
buff[i] = Rfu.unk_cde[i]; buff[i] = Rfu.linkPlayerIdx[i];
break; break;
case RFU_COMMAND_0x6600: case RFU_COMMAND_0x6600:
case RFU_COMMAND_0x5f00: case RFU_COMMAND_0x5f00:
gSendCmd[1] = Rfu.unk_100; gSendCmd[1] = Rfu.cmd_6600_count;
break; break;
case RFU_COMMAND_0x2f00: case RFU_COMMAND_0x2f00:
for (i = 0; i < 6; i++) for (i = 0; i < 6; i++)
@@ -1363,45 +1364,45 @@ void Rfu_BeginBuildAndSendCommand5F(void)
CreateTask(Task_WaitRfuFuncAndSetBuildCmd5F00, 5); CreateTask(Task_WaitRfuFuncAndSetBuildCmd5F00, 5);
} }
static void sub_80FA2B0(void) static void RfuFunc_Send6600_3(void)
{ {
u8 playerCount; u8 playerCount;
u8 i; u8 i;
if (GetMultiplayerId() != 0) // child if (GetMultiplayerId() != 0) // child
{ {
if (Rfu.unk_124.count == 0 && Rfu.unk_fe > 60) if (Rfu.unk_124.count == 0 && Rfu.cmd_6600_timer > 60)
{ {
RfuPrepareSendBuffer(RFU_COMMAND_0x6600); RfuPrepareSendBuffer(RFU_COMMAND_0x6600);
Rfu.unk_fe = 0; Rfu.cmd_6600_timer = 0;
} }
} }
playerCount = GetLinkPlayerCount(); playerCount = GetLinkPlayerCount();
for (i = 0; i < playerCount; i++) for (i = 0; i < playerCount; i++)
{ {
if (Rfu.unk_e9[i] == 0) if (Rfu.cmd_6600_recvd[i] == 0)
break; break;
} }
if (i == playerCount) if (i == playerCount)
{ {
for (i = 0; i < MAX_RFU_PLAYERS; i++) for (i = 0; i < MAX_RFU_PLAYERS; i++)
Rfu.unk_e9[i] = 0; Rfu.cmd_6600_recvd[i] = 0;
Rfu.unk_100++; Rfu.cmd_6600_count++;
Rfu.RfuFunc = NULL; Rfu.RfuFunc = NULL;
} }
Rfu.unk_fe++; Rfu.cmd_6600_timer++;
} }
static void sub_80FA350(void) static void RfuFunc_Send6600_2(void)
{ {
if (Rfu.unk_124.count == 0 && gSendCmd[0] == 0) if (Rfu.unk_124.count == 0 && gSendCmd[0] == 0)
{ {
RfuPrepareSendBuffer(RFU_COMMAND_0x6600); RfuPrepareSendBuffer(RFU_COMMAND_0x6600);
Rfu.RfuFunc = sub_80FA2B0; Rfu.RfuFunc = RfuFunc_Send6600_3;
} }
} }
static void sub_80FA388(void) static void RfuFunc_Send6600_1(void)
{ {
u8 i; u8 i;
u8 playerCount; u8 playerCount;
@@ -1411,7 +1412,7 @@ static void sub_80FA388(void)
if (Rfu.unk_124.count == 0 && gSendCmd[0] == 0) if (Rfu.unk_124.count == 0 && gSendCmd[0] == 0)
{ {
RfuPrepareSendBuffer(RFU_COMMAND_0x6600); RfuPrepareSendBuffer(RFU_COMMAND_0x6600);
Rfu.RfuFunc = sub_80FA2B0; Rfu.RfuFunc = RfuFunc_Send6600_3;
} }
} }
else // parent else // parent
@@ -1419,7 +1420,7 @@ static void sub_80FA388(void)
playerCount = GetLinkPlayerCount(); playerCount = GetLinkPlayerCount();
for (i = 1; i < playerCount; i++) for (i = 1; i < playerCount; i++)
{ {
if (Rfu.unk_e9[i] == 0) if (Rfu.cmd_6600_recvd[i] == 0)
break; break;
} }
if (i == playerCount) if (i == playerCount)
@@ -1427,18 +1428,18 @@ static void sub_80FA388(void)
if (Rfu.unk_124.count == 0 && gSendCmd[0] == 0) if (Rfu.unk_124.count == 0 && gSendCmd[0] == 0)
{ {
RfuPrepareSendBuffer(RFU_COMMAND_0x6600); RfuPrepareSendBuffer(RFU_COMMAND_0x6600);
Rfu.RfuFunc = sub_80FA350; Rfu.RfuFunc = RfuFunc_Send6600_2;
} }
} }
} }
} }
void sub_80FA42C(void) void LinkRfu_SetRfuFuncToSend6600(void)
{ {
if (Rfu.RfuFunc == NULL) if (Rfu.RfuFunc == NULL)
{ {
Rfu.RfuFunc = sub_80FA388; Rfu.RfuFunc = RfuFunc_Send6600_1;
Rfu.unk_fe = 0; Rfu.cmd_6600_timer = 0;
} }
} }
@@ -1629,10 +1630,10 @@ static void sub_80FA834(u8 taskId)
switch (gTasks[taskId].data[0]) switch (gTasks[taskId].data[0])
{ {
case 0: case 0:
if (sub_80F9C50()) if (Cmd8000recvIsFinished())
{ {
ResetBlockReceivedFlags(); ResetBlockReceivedFlags();
sub_800B0B4(); PrepareLocalLinkPlayerBlock();
gTasks[taskId].data[0]++; gTasks[taskId].data[0]++;
} }
break; break;
@@ -1659,7 +1660,7 @@ static void sub_80FA834(u8 taskId)
case 3: case 3:
if (Rfu.parent_child == MODE_PARENT) if (Rfu.parent_child == MODE_PARENT)
{ {
if (sub_80F9C50()) if (Cmd8000recvIsFinished())
{ {
Rfu.unk_5a = 0; Rfu.unk_5a = 0;
RfuPrepareSendBuffer(RFU_COMMAND_0xa100); RfuPrepareSendBuffer(RFU_COMMAND_0xa100);
@@ -1676,7 +1677,7 @@ static void sub_80FA834(u8 taskId)
case 5: case 5:
for (i = 0; i < Rfu.playerCount; i++) for (i = 0; i < Rfu.playerCount; i++)
{ {
sub_800B110(i); LinkPlayerFromBlock(i);
Rfu_ResetBlockReceivedFlag(i); Rfu_ResetBlockReceivedFlag(i);
} }
gTasks[taskId].data[0]++; gTasks[taskId].data[0]++;
@@ -1686,14 +1687,14 @@ static void sub_80FA834(u8 taskId)
gReceivedRemoteLinkPlayers = 1; gReceivedRemoteLinkPlayers = 1;
Rfu.unk_ce8 = FALSE; Rfu.unk_ce8 = FALSE;
rfu_LMAN_setLinkRecovery(1, 600); rfu_LMAN_setLinkRecovery(1, 600);
if (Rfu.unk_ce6) if (Rfu.unionRoomChatters)
{ {
for (i = 0; i < RFU_CHILD_MAX; i++) for (i = 0; i < RFU_CHILD_MAX; i++)
{ {
if ((Rfu.unk_ce6 >> i) & 1) if ((Rfu.unionRoomChatters >> i) & 1)
{ {
Rfu.unk_ce5 = 1 << i; Rfu.unk_ce5 = 1 << i;
Rfu.unk_ce6 ^= (1 << i); Rfu.unionRoomChatters ^= (1 << i);
} }
} }
} }
@@ -1708,39 +1709,39 @@ static void sub_80FA9D0(u16 a0)
for (i = 0; i < RFU_CHILD_MAX; i++) for (i = 0; i < RFU_CHILD_MAX; i++)
{ {
if ((a0 >> i) & 1) if ((a0 >> i) & 1)
Rfu.unk_cde[i] = 0; Rfu.linkPlayerIdx[i] = 0;
} }
} }
static void sub_80FA9FC(const struct UnkRfuStruct_8010A14 *a0) static void ReceiveRfuLinkPlayers(const struct SioInfo *chunk)
{ {
s32 i; s32 i;
Rfu.playerCount = a0->unk_0f; Rfu.playerCount = chunk->playerCount;
for (i = 0; i < RFU_CHILD_MAX; i++) for (i = 0; i < RFU_CHILD_MAX; i++)
Rfu.unk_cde[i] = a0->unk_10[i]; Rfu.linkPlayerIdx[i] = chunk->linkPlayerIdx[i];
for (i = 0; i < MAX_RFU_PLAYERS; i++) for (i = 0; i < MAX_RFU_PLAYERS; i++)
{ {
gLinkPlayers[i] = a0->unk_14[i]; gLinkPlayers[i] = chunk->linkPlayers[i];
sub_800B284(gLinkPlayers + i); IntlConvertLinkPlayerName(gLinkPlayers + i);
} }
} }
static void sub_80FAA58(void *a0) static void ValidateAndReceivePokemonSioInfo(void *recvBuffer)
{ {
if (strcmp("PokemonSioInfo", ((struct UnkRfuStruct_8010A14 *)a0)->unk_00) == 0) if (strcmp("PokemonSioInfo", recvBuffer) == 0)
{ {
sub_80FA9FC(a0); ReceiveRfuLinkPlayers(recvBuffer);
CpuFill16(0, a0, sizeof(struct UnkRfuStruct_8010A14)); CpuFill16(0, recvBuffer, sizeof(struct SioInfo));
ResetBlockReceivedFlag(0); ResetBlockReceivedFlag(0);
} }
} }
static void sub_80FAA94(u8 taskId) static void Task_ExchangeLinkPlayers(u8 taskId)
{ {
s32 i; s32 i;
struct LinkPlayerBlock *r2; struct LinkPlayerBlock *r2;
struct UnkRfuStruct_8010A14 *r5; struct SioInfo *r5;
u8 r4 = Rfu.unk_cde[gUnknown_843EC38[Rfu.unk_ce9]]; u8 r4 = Rfu.linkPlayerIdx[gUnknown_843EC38[Rfu.unk_ce9]];
if (Rfu.unk_f1 == 1 || Rfu.unk_f1 == 2) if (Rfu.unk_f1 == 1 || Rfu.unk_f1 == 2)
{ {
Rfu.unk_ce8 = FALSE; Rfu.unk_ce8 = FALSE;
@@ -1766,42 +1767,43 @@ static void sub_80FAA94(u8 taskId)
ResetBlockReceivedFlag(r4); ResetBlockReceivedFlag(r4);
r2 = (struct LinkPlayerBlock *)gBlockRecvBuffer[r4]; r2 = (struct LinkPlayerBlock *)gBlockRecvBuffer[r4];
gLinkPlayers[r4] = r2->linkPlayer; gLinkPlayers[r4] = r2->linkPlayer;
sub_800B284(gLinkPlayers + r4); IntlConvertLinkPlayerName(gLinkPlayers + r4);
gTasks[taskId].data[0]++; gTasks[taskId].data[0]++;
} }
break; break;
case 3: case 3:
r5 = (struct UnkRfuStruct_8010A14 *)gBlockSendBuffer; // Prepare send block
memcpy(r5->unk_00, "PokemonSioInfo", sizeof("PokemonSioInfo")); r5 = (struct SioInfo *)gBlockSendBuffer;
r5->unk_0f = Rfu.playerCount; memcpy(r5->magic, "PokemonSioInfo", sizeof("PokemonSioInfo"));
r5->playerCount = Rfu.playerCount;
for (i = 0; i < RFU_CHILD_MAX; i++) for (i = 0; i < RFU_CHILD_MAX; i++)
r5->unk_10[i] = Rfu.unk_cde[i]; r5->linkPlayerIdx[i] = Rfu.linkPlayerIdx[i];
memcpy(r5->unk_14, gLinkPlayers, sizeof gLinkPlayers); memcpy(r5->linkPlayers, gLinkPlayers, sizeof gLinkPlayers);
gTasks[taskId].data[0]++; gTasks[taskId].data[0]++;
// fallthrough // fallthrough
case 4: case 4:
r5 = (struct UnkRfuStruct_8010A14 *)gBlockSendBuffer; r5 = (struct SioInfo *)gBlockSendBuffer;
r5->unk_0f = Rfu.playerCount; r5->playerCount = Rfu.playerCount;
for (i = 0; i < RFU_CHILD_MAX; i++) for (i = 0; i < RFU_CHILD_MAX; i++)
r5->unk_10[i] = Rfu.unk_cde[i]; r5->linkPlayerIdx[i] = Rfu.linkPlayerIdx[i];
memcpy(r5->unk_14, gLinkPlayers, sizeof gLinkPlayers); memcpy(r5->linkPlayers, gLinkPlayers, sizeof gLinkPlayers);
if (SendBlock(0, gBlockSendBuffer, 0xa0)) if (SendBlock(0, gBlockSendBuffer, 0xa0))
gTasks[taskId].data[0]++; gTasks[taskId].data[0]++;
break; break;
case 5: case 5:
if (IsLinkTaskFinished() && GetBlockReceivedStatus() & 1) if (IsLinkTaskFinished() && GetBlockReceivedStatus() & 1)
{ {
CpuFill16(0, gBlockRecvBuffer, sizeof(struct UnkRfuStruct_8010A14)); CpuFill16(0, gBlockRecvBuffer, sizeof(struct SioInfo));
ResetBlockReceivedFlag(0); ResetBlockReceivedFlag(0);
Rfu.unk_ce8 = FALSE; Rfu.unk_ce8 = FALSE;
if (Rfu.unk_ce6) if (Rfu.unionRoomChatters)
{ {
for (i = 0; i < RFU_CHILD_MAX; i++) for (i = 0; i < RFU_CHILD_MAX; i++)
{ {
if ((Rfu.unk_ce6 >> i) & 1) if ((Rfu.unionRoomChatters >> i) & 1)
{ {
Rfu.unk_ce5 = 1 << i; Rfu.unk_ce5 = 1 << i;
Rfu.unk_ce6 ^= (1 << i); Rfu.unionRoomChatters ^= (1 << i);
Rfu.unk_ce8 = TRUE; Rfu.unk_ce8 = TRUE;
break; break;
} }
@@ -1822,7 +1824,7 @@ static void sub_80FACF0(u8 taskId)
case 0: case 0:
if (Rfu.playerCount) if (Rfu.playerCount)
{ {
sub_800B0B4(); PrepareLocalLinkPlayerBlock();
SendBlock(0, gBlockSendBuffer, sizeof(struct LinkPlayerBlock)); SendBlock(0, gBlockSendBuffer, sizeof(struct LinkPlayerBlock));
gTasks[taskId].data[0]++; gTasks[taskId].data[0]++;
} }
@@ -1834,7 +1836,7 @@ static void sub_80FACF0(u8 taskId)
case 2: case 2:
if (GetBlockReceivedStatus() & 1) if (GetBlockReceivedStatus() & 1)
{ {
sub_80FA9FC((const struct UnkRfuStruct_8010A14 *)gBlockRecvBuffer); ReceiveRfuLinkPlayers((const struct SioInfo *)gBlockRecvBuffer);
ResetBlockReceivedFlag(0); ResetBlockReceivedFlag(0);
gReceivedRemoteLinkPlayers = 1; gReceivedRemoteLinkPlayers = 1;
DestroyTask(taskId); DestroyTask(taskId);
@@ -1969,7 +1971,7 @@ void sub_80FB030(u32 linkPlayerCount)
{ {
// The 0x80 prevents this element from being incorrectly read as a 0. // The 0x80 prevents this element from being incorrectly read as a 0.
child_sprite_genders |= (( child_sprite_genders |= ((
0x80 | ((gLinkPlayers[Rfu.unk_cde[i]].gender & 1) << 3) | (gLinkPlayers[Rfu.unk_cde[i]].trainerId & 7) 0x80 | ((gLinkPlayers[Rfu.linkPlayerIdx[i]].gender & 1) << 3) | (gLinkPlayers[Rfu.linkPlayerIdx[i]].trainerId & 7)
) << (numConnectedChildren << 3)); ) << (numConnectedChildren << 3));
numConnectedChildren++; numConnectedChildren++;
if (numConnectedChildren == linkPlayerCount - 1) if (numConnectedChildren == linkPlayerCount - 1)
@@ -2143,13 +2145,13 @@ static void LmanCallback_Child(u8 msg, u8 param_count)
Rfu.linkLossRecoveryState = 4; Rfu.linkLossRecoveryState = 4;
if (Rfu.unk_c86 != 9) if (Rfu.unk_c86 != 9)
RfuSetErrorStatus(2, msg); RfuSetErrorStatus(2, msg);
nullsub_87("LINK LOSS DISCONNECT!", 5, 5); rfu_dbg_print_str("LINK LOSS DISCONNECT!", 5, 5);
if (gReceivedRemoteLinkPlayers == 1) if (gReceivedRemoteLinkPlayers == 1)
GetLinkmanErrorParams(msg); GetLinkmanErrorParams(msg);
break; break;
case LMAN_MSG_LINK_LOSS_DETECTED_AND_START_RECOVERY: case LMAN_MSG_LINK_LOSS_DETECTED_AND_START_RECOVERY:
Rfu.linkLossRecoveryState = 1; Rfu.linkLossRecoveryState = 1;
nullsub_87("LINK LOSS RECOVERY NOW", 5, 5); rfu_dbg_print_str("LINK LOSS RECOVERY NOW", 5, 5);
break; break;
case LMAN_MSG_LINK_RECOVERY_SUCCESSED: case LMAN_MSG_LINK_RECOVERY_SUCCESSED:
Rfu.linkLossRecoveryState = 3; Rfu.linkLossRecoveryState = 3;
@@ -2191,14 +2193,14 @@ static void sub_80FB564(s32 bmConnectedFlag)
} }
} }
static u8 sub_80FB5A0(s32 a0) static u8 GetNewChildrenInUnionRoomChat(s32 bmNewChildSlot)
{ {
u8 ret = 0; u8 ret = 0;
u8 i; u8 i;
for (i = 0; i < RFU_CHILD_MAX; i++) for (i = 0; i < RFU_CHILD_MAX; i++)
{ {
if ((a0 >> i) & 1) if ((bmNewChildSlot >> i) & 1)
{ {
struct GFtgtGname *structPtr = (void *)&gRfuLinkStatus->partner[i].gname; struct GFtgtGname *structPtr = (void *)&gRfuLinkStatus->partner[i].gname;
if (structPtr->activity == (ACTIVITY_CHAT | IN_UNION_ROOM)) if (structPtr->activity == (ACTIVITY_CHAT | IN_UNION_ROOM))
@@ -2224,24 +2226,24 @@ static void LmanCallback_Parent(u8 msg, u8 param_count)
case LMAN_MSG_NEW_CHILD_CONNECT_ACCEPTED: case LMAN_MSG_NEW_CHILD_CONNECT_ACCEPTED:
if (GetHostRFUtgtGname()->activity == (ACTIVITY_CHAT | IN_UNION_ROOM) && Rfu.unk_cd9 == 0) if (GetHostRFUtgtGname()->activity == (ACTIVITY_CHAT | IN_UNION_ROOM) && Rfu.unk_cd9 == 0)
{ {
u8 idx = sub_80FB5A0(lman.param[0]); u8 bmAcceptSlot = GetNewChildrenInUnionRoomChat(lman.param[0]);
if (idx != 0) if (bmAcceptSlot != 0)
{ {
r1 = 1 << sub_80F886C(idx); r1 = 1 << sub_80F886C(bmAcceptSlot);
if (Rfu.unk_ce6 == 0 && !Rfu.unk_ce8) if (Rfu.unionRoomChatters == 0 && !Rfu.unk_ce8)
{ {
Rfu.unk_ce5 = r1; Rfu.unk_ce5 = r1;
Rfu.unk_ce6 |= (r1 ^ idx); Rfu.unionRoomChatters |= (r1 ^ bmAcceptSlot);
Rfu.unk_ce8 = TRUE; Rfu.unk_ce8 = TRUE;
} }
else else
{ {
Rfu.unk_ce6 |= idx; Rfu.unionRoomChatters |= bmAcceptSlot;
} }
} }
if (idx != lman.param[0]) if (bmAcceptSlot != lman.param[0])
{ {
Rfu.bm_DisconnectSlot |= (idx ^ lman.param[0]); Rfu.bm_DisconnectSlot |= (bmAcceptSlot ^ lman.param[0]);
Rfu.unk_ce4 = 2; Rfu.unk_ce4 = 2;
} }
} }
@@ -2326,7 +2328,7 @@ static void LmanCallback_Parent(u8 msg, u8 param_count)
rfu_LMAN_stopManager(0); rfu_LMAN_stopManager(0);
} }
if (gRfuLinkStatus->parentChild == MODE_NEUTRAL && lman.pcswitch_flag == 0 && FuncIsActiveTask(sub_80F8B34) == TRUE) if (gRfuLinkStatus->parentChild == MODE_NEUTRAL && lman.pcswitch_flag == 0 && FuncIsActiveTask(Task_LinkRfu_UnionRoomListen) == TRUE)
Rfu.state = 17; Rfu.state = 17;
RfuSetErrorStatus(2, msg); RfuSetErrorStatus(2, msg);
@@ -2418,7 +2420,7 @@ static void sub_80FBA78(void)
if (IsWirelessAdapterConnected()) if (IsWirelessAdapterConnected())
{ {
gLinkType = LINKTYPE_0x1111; gLinkType = LINKTYPE_0x1111;
sub_800B1F4(); SetWirelessCommType1();
OpenLink(); OpenLink();
SeedRng(gMain.vblankCounter2); SeedRng(gMain.vblankCounter2);
for (i = 0; i < RFU_CHILD_MAX; i++) for (i = 0; i < RFU_CHILD_MAX; i++)
@@ -2429,25 +2431,25 @@ static void sub_80FBA78(void)
AnimateSprites(); AnimateSprites();
BuildOamBuffer(); BuildOamBuffer();
UpdatePaletteFade(); UpdatePaletteFade();
sub_80FBB20(); LinkRfu_CreateIdleTask();
SetMainCallback2(sub_80FBB74); SetMainCallback2(sub_80FBB74);
} }
} }
bool32 sub_80FBB0C(void) bool32 IsUnionRoomListenTaskActive(void)
{ {
return FuncIsActiveTask(sub_80F8B34); return FuncIsActiveTask(Task_LinkRfu_UnionRoomListen);
} }
void sub_80FBB20(void) void LinkRfu_CreateIdleTask(void)
{ {
if (!FuncIsActiveTask(nullsub_89)) if (!FuncIsActiveTask(Task_idle))
Rfu.unk_66 = CreateTask(nullsub_89, 0); Rfu.unk_66 = CreateTask(Task_idle, 0);
} }
void sub_80FBB4C(void) void LinkRfu_DestroyIdleTask(void)
{ {
if (FuncIsActiveTask(nullsub_89) == TRUE) if (FuncIsActiveTask(Task_idle) == TRUE)
DestroyTask(Rfu.unk_66); DestroyTask(Rfu.unk_66);
} }
@@ -2477,7 +2479,7 @@ void InitializeRfuLinkManager_JoinGroup(void)
CreateTask_JoinGroupSearchForParent(); CreateTask_JoinGroupSearchForParent();
} }
void sub_80FBC00(void) void InitializeRfuLinkManager_EnterUnionRoom(void)
{ {
if (gQuestLogState == 2 || gQuestLogState == 3) if (gQuestLogState == 2 || gQuestLogState == 3)
return; return;
@@ -2487,7 +2489,7 @@ void sub_80FBC00(void)
sRfuReqConfig = sRfuReqConfigTemplate; sRfuReqConfig = sRfuReqConfigTemplate;
sRfuReqConfig.linkRecovery_enable = 0; sRfuReqConfig.linkRecovery_enable = 0;
sRfuReqConfig.linkRecovery_period = 600; sRfuReqConfig.linkRecovery_period = 600;
Rfu.unk_67 = CreateTask(sub_80F8B34, 1); Rfu.unk_67 = CreateTask(Task_LinkRfu_UnionRoomListen, 1);
} }
static u16 ReadU16(const void *ptr) static u16 ReadU16(const void *ptr)
@@ -2550,7 +2552,7 @@ void sub_80FBD6C(u32 a0)
for (i = 0; i < RFU_CHILD_MAX; i++) for (i = 0; i < RFU_CHILD_MAX; i++)
{ {
if (Rfu.unk_cde[i] == a0 && (Rfu.bm_PartnerFlags >> i) & 1) if (Rfu.linkPlayerIdx[i] == a0 && (Rfu.bm_PartnerFlags >> i) & 1)
var |= 1 << i; var |= 1 << i;
} }
if (var) if (var)
@@ -2587,7 +2589,7 @@ static void sub_80FBE20(u32 a0, u32 a1)
gTasks[taskId].data[1] = a1; gTasks[taskId].data[1] = a1;
} }
static void sub_80FBE80(u8 taskId) static void Task_RfuReconnectWithParent(u8 taskId)
{ {
s16 *data = gTasks[taskId].data; s16 *data = gTasks[taskId].data;
@@ -2598,7 +2600,7 @@ static void sub_80FBE80(u8 taskId)
{ {
if (gRfuLinkStatus->partner[id].slot != 0xFF) if (gRfuLinkStatus->partner[id].slot != 0xFF)
{ {
Rfu.unk_c3d = id; Rfu.reconnectedParentIdx = id;
if (IsParentSuccessfullyReconnected()) if (IsParentSuccessfullyReconnected())
DestroyTask(taskId); DestroyTask(taskId);
} }
@@ -2615,7 +2617,7 @@ static void sub_80FBE80(u8 taskId)
else else
{ {
data[15]++; data[15]++;
Rfu.unk_c3d = id; Rfu.reconnectedParentIdx = id;
} }
} }
else else
@@ -2630,13 +2632,13 @@ static void sub_80FBE80(u8 taskId)
} }
} }
void CreateTask_sub_80FBE80(const u8 *trainerName, u16 trainerId) void CreateTask_RfuReconnectWithParent(const u8 *trainerName, u16 trainerId)
{ {
u8 taskId; u8 taskId;
s16 *data; s16 *data;
Rfu.unk_f1 = 0; Rfu.unk_f1 = 0;
taskId = CreateTask(sub_80FBE80, 3); taskId = CreateTask(Task_RfuReconnectWithParent, 3);
data = gTasks[taskId].data; data = gTasks[taskId].data;
StringCopy((u8*)(data), trainerName); StringCopy((u8*)(data), trainerName);
data[8] = trainerId; data[8] = trainerId;
@@ -2719,7 +2721,7 @@ void sub_80FC114(const u8 *name, struct GFtgtGname *structPtr, u8 activity)
rfu_LMAN_forceChangeSP(); rfu_LMAN_forceChangeSP();
taskId = CreateTask(sub_80FC028, 2); taskId = CreateTask(sub_80FC028, 2);
gTasks[taskId].data[1] = activity; gTasks[taskId].data[1] = activity;
taskId2 = FindTaskIdByFunc(sub_80F8B34); taskId2 = FindTaskIdByFunc(Task_LinkRfu_UnionRoomListen);
if (activity == (ACTIVITY_CHAT | IN_UNION_ROOM)) if (activity == (ACTIVITY_CHAT | IN_UNION_ROOM))
{ {
if (taskId2 != 0xFF) if (taskId2 != 0xFF)
@@ -2753,12 +2755,12 @@ bool32 sub_80FC1CC(void)
return TRUE; return TRUE;
} }
static void sub_80FC208(void) static void rfu_dbg_clear(void)
{ {
s32 i; s32 i;
for (i = 0; i < 20; i++) for (i = 0; i < 20; i++)
nullsub_87(" ", 0, i); rfu_dbg_print_str(" ", 0, i);
} }
static const char gUnknown_843EE47[16] = { static const char gUnknown_843EE47[16] = {
@@ -2774,44 +2776,44 @@ static const char gUnknown_843EE57[9] = {
static const char gUnknown_843EE60[] = {' ', '\0'}; static const char gUnknown_843EE60[] = {' ', '\0'};
static const char gUnknown_843EE62[] = {'*', '\0'}; static const char gUnknown_843EE62[] = {'*', '\0'};
static void sub_80FC228(void) static void rfu_dbg_print_status(void)
{ {
s32 i, j; s32 i, j;
nullsub_88(GetBlockReceivedStatus(), 0x1C, 0x13, 2); rfu_dbg_print_num(GetBlockReceivedStatus(), 0x1C, 0x13, 2);
nullsub_88(gRfuLinkStatus->connSlotFlag, 0x14, 1, 1); rfu_dbg_print_num(gRfuLinkStatus->connSlotFlag, 0x14, 1, 1);
nullsub_88(gRfuLinkStatus->linkLossSlotFlag, 0x17, 1, 1); rfu_dbg_print_num(gRfuLinkStatus->linkLossSlotFlag, 0x17, 1, 1);
if (Rfu.parent_child == MODE_PARENT) if (Rfu.parent_child == MODE_PARENT)
{ {
for (i = 0; i < RFU_CHILD_MAX; i++) for (i = 0; i < RFU_CHILD_MAX; i++)
{ {
if ((gRfuLinkStatus->getNameFlag >> i) & 1) if ((gRfuLinkStatus->getNameFlag >> i) & 1)
{ {
nullsub_88(gRfuLinkStatus->partner[i].serialNo, 1, i + 3, 4); rfu_dbg_print_num(gRfuLinkStatus->partner[i].serialNo, 1, i + 3, 4);
nullsub_87((void*) &gRfuLinkStatus->partner[i].gname, 6, i + 3); rfu_dbg_print_str((void*) &gRfuLinkStatus->partner[i].gname, 6, i + 3);
nullsub_87(gRfuLinkStatus->partner[i].uname, 0x16, i + 3); rfu_dbg_print_str(gRfuLinkStatus->partner[i].uname, 0x16, i + 3);
} }
} }
for (i = 0; i < RFU_CHILD_MAX; i++) for (i = 0; i < RFU_CHILD_MAX; i++)
{ {
for (j = 0; j < 14; j++) for (j = 0; j < 14; j++)
{ {
nullsub_88(Rfu.unk_14[i][j], j * 2, i + 11, 2); rfu_dbg_print_num(Rfu.unk_14[i][j], j * 2, i + 11, 2);
} }
} }
nullsub_87("NOWSLOT", 1, 0xF); rfu_dbg_print_str("NOWSLOT", 1, 0xF);
} }
else if (gRfuLinkStatus->connSlotFlag != 0 && gRfuLinkStatus->getNameFlag != 0) else if (gRfuLinkStatus->connSlotFlag != 0 && gRfuLinkStatus->getNameFlag != 0)
{ {
for (i = 0; i < RFU_CHILD_MAX; i++) for (i = 0; i < RFU_CHILD_MAX; i++)
{ {
nullsub_88(0, 1, i + 3, 4); rfu_dbg_print_num(0, 1, i + 3, 4);
nullsub_87(gUnknown_843EE47, 6, i + 3); rfu_dbg_print_str(gUnknown_843EE47, 6, i + 3);
nullsub_87(gUnknown_843EE57, 0x16, i + 3); rfu_dbg_print_str(gUnknown_843EE57, 0x16, i + 3);
} }
nullsub_88(gRfuLinkStatus->partner[Rfu.child_slot].serialNo, 1, 3, 4); rfu_dbg_print_num(gRfuLinkStatus->partner[Rfu.child_slot].serialNo, 1, 3, 4);
nullsub_87(gRfuLinkStatus->partner[Rfu.child_slot].gname, 6, 3); rfu_dbg_print_str(gRfuLinkStatus->partner[Rfu.child_slot].gname, 6, 3);
nullsub_87(gRfuLinkStatus->partner[Rfu.child_slot].uname, 0x16, 3); rfu_dbg_print_str(gRfuLinkStatus->partner[Rfu.child_slot].uname, 0x16, 3);
} }
else else
{ {
@@ -2819,16 +2821,16 @@ static void sub_80FC228(void)
{ {
if (gRfuLinkStatus->partner[i].slot != 0xFF) if (gRfuLinkStatus->partner[i].slot != 0xFF)
{ {
nullsub_88(gRfuLinkStatus->partner[i].serialNo, 1, i + 3, 4); rfu_dbg_print_num(gRfuLinkStatus->partner[i].serialNo, 1, i + 3, 4);
nullsub_88(gRfuLinkStatus->partner[i].id, 6, i + 3, 4); rfu_dbg_print_num(gRfuLinkStatus->partner[i].id, 6, i + 3, 4);
nullsub_87(gRfuLinkStatus->partner[i].uname, 0x16, i + 3); rfu_dbg_print_str(gRfuLinkStatus->partner[i].uname, 0x16, i + 3);
} }
} }
for (; i < RFU_CHILD_MAX; i++) for (; i < RFU_CHILD_MAX; i++)
{ {
nullsub_88(0, 1, i + 3, 4); rfu_dbg_print_num(0, 1, i + 3, 4);
nullsub_87(gUnknown_843EE47, 6, i + 3); rfu_dbg_print_str(gUnknown_843EE47, 6, i + 3);
nullsub_87(gUnknown_843EE57, 0x16, i + 3); rfu_dbg_print_str(gUnknown_843EE57, 0x16, i + 3);
} }
} }
} }
@@ -2857,7 +2859,7 @@ u32 GetRfuRecvQueueLength(void)
return Rfu.unk_124.count; return Rfu.unk_124.count;
} }
static void nullsub_89(u8 taskId) static void Task_idle(u8 taskId)
{ {
} }
+3 -3
View File
@@ -856,7 +856,7 @@ void sub_80DA634(u8 taskId)
gTasks[taskId].data[0] = 1; gTasks[taskId].data[0] = 1;
break; break;
case 1: case 1:
sub_800AB9C(); PrepareSendLinkCmd2FFE_or_RfuCmd6600();
gTasks[taskId].data[0] = 2; gTasks[taskId].data[0] = 2;
break; break;
case 2: case 2:
@@ -890,7 +890,7 @@ void sub_80DA634(u8 taskId)
break; break;
case 7: case 7:
ClearContinueGameWarpStatus2(); ClearContinueGameWarpStatus2();
sub_800AB9C(); PrepareSendLinkCmd2FFE_or_RfuCmd6600();
gTasks[taskId].data[0] = 8; gTasks[taskId].data[0] = 8;
break; break;
case 8: case 8:
@@ -901,7 +901,7 @@ void sub_80DA634(u8 taskId)
} }
break; break;
case 9: case 9:
sub_800AB9C(); PrepareSendLinkCmd2FFE_or_RfuCmd6600();
gTasks[taskId].data[0] = 10; gTasks[taskId].data[0] = 10;
break; break;
case 10: case 10:
+6 -6
View File
@@ -765,9 +765,9 @@ static void sub_804C728(void)
if (gWirelessCommType) if (gWirelessCommType)
{ {
sub_800B1F4(); SetWirelessCommType1();
OpenLink(); OpenLink();
sub_80FBB20(); LinkRfu_CreateIdleTask();
} }
else else
{ {
@@ -810,14 +810,14 @@ static void sub_804C728(void)
case 4: case 4:
if (gReceivedRemoteLinkPlayers == TRUE && IsLinkPlayerDataExchangeComplete() == TRUE) if (gReceivedRemoteLinkPlayers == TRUE && IsLinkPlayerDataExchangeComplete() == TRUE)
{ {
sub_80FBB4C(); LinkRfu_DestroyIdleTask();
CalculatePlayerPartyCount(); CalculatePlayerPartyCount();
gMain.state++; gMain.state++;
sTradeMenuResourcesPtr->unk_A8 = 0; sTradeMenuResourcesPtr->unk_A8 = 0;
if (gWirelessCommType) if (gWirelessCommType)
{ {
sub_80FA484(TRUE); sub_80FA484(TRUE);
sub_800AB9C(); PrepareSendLinkCmd2FFE_or_RfuCmd6600();
} }
} }
break; break;
@@ -2004,7 +2004,7 @@ static void sub_804E908(void)
{ {
if (gWirelessCommType) if (gWirelessCommType)
{ {
sub_800AB9C(); PrepareSendLinkCmd2FFE_or_RfuCmd6600();
} }
else else
{ {
@@ -2044,7 +2044,7 @@ static void sub_804E9C0(void)
{ {
if (!sub_80FA484(FALSE)) if (!sub_80FA484(FALSE))
{ {
sub_800AB9C(); PrepareSendLinkCmd2FFE_or_RfuCmd6600();
sTradeMenuResourcesPtr->unk_6F = 13; sTradeMenuResourcesPtr->unk_6F = 13;
} }
} }
+4 -4
View File
@@ -2556,7 +2556,7 @@ static void sub_8053E8C(void)
DrawTextOnTradeWindow(0, gStringVar4, 0); DrawTextOnTradeWindow(0, gStringVar4, 0);
break; break;
case 1: case 1:
sub_800AB9C(); PrepareSendLinkCmd2FFE_or_RfuCmd6600();
gMain.state = 100; gMain.state = 100;
sTradeData->timer = 0; sTradeData->timer = 0;
break; break;
@@ -2641,7 +2641,7 @@ static void sub_8053E8C(void)
case 41: case 41:
if (sTradeData->timer == 0) if (sTradeData->timer == 0)
{ {
sub_800AB9C(); PrepareSendLinkCmd2FFE_or_RfuCmd6600();
gMain.state = 42; gMain.state = 42;
} }
else else
@@ -2660,7 +2660,7 @@ static void sub_8053E8C(void)
if (++sTradeData->timer > 60) if (++sTradeData->timer > 60)
{ {
gMain.state++; gMain.state++;
sub_800AB9C(); PrepareSendLinkCmd2FFE_or_RfuCmd6600();
} }
break; break;
case 6: case 6:
@@ -2682,7 +2682,7 @@ static void sub_8053E8C(void)
{ {
if (gWirelessCommType && gMain.savedCallback == CB2_ReturnFromLinkTrade) if (gWirelessCommType && gMain.savedCallback == CB2_ReturnFromLinkTrade)
{ {
sub_800AB9C(); PrepareSendLinkCmd2FFE_or_RfuCmd6600();
} }
else else
{ {
+160 -160
View File
@@ -66,8 +66,8 @@ static void Task_TryBecomeLinkLeader(u8 taskId);
static void Leader_DestroyResources(struct UnkStruct_Leader * leader); static void Leader_DestroyResources(struct UnkStruct_Leader * leader);
static bool8 Leader_SetStateIfMemberListChanged(struct UnkStruct_Leader * leader, u32 state1, u32 state2); static bool8 Leader_SetStateIfMemberListChanged(struct UnkStruct_Leader * leader, u32 state1, u32 state2);
static void ItemPrintFunc_PossibleGroupMembers(u8 windowId, s32 itemId, u8 y); static void ItemPrintFunc_PossibleGroupMembers(u8 windowId, s32 itemId, u8 y);
static u8 LeaderUpdateGroupMembership(struct UnkStruct_Main0 * a0); static u8 LeaderUpdateGroupMembership(struct UnkStruct_Main0 * main0);
static u8 UnionRoomLeaderField0CompactionAndCount(struct UnkStruct_Main0 * a0); static u8 UnionRoomLeaderField0CompactionAndCount(struct UnkStruct_Main0 * main0);
static void Task_TryJoinLinkGroup(u8 taskId); static void Task_TryJoinLinkGroup(u8 taskId);
static u32 IsTryingToTradeWithHoennTooSoon(struct UnkStruct_Group * group, s32 id); static u32 IsTryingToTradeWithHoennTooSoon(struct UnkStruct_Group * group, s32 id);
static void AskToJoinRfuGroup(struct UnkStruct_Group * group, s32 id); static void AskToJoinRfuGroup(struct UnkStruct_Group * group, s32 id);
@@ -79,16 +79,16 @@ static void CreateTask_StartActivity(void);
static void Task_MEvent_Leader(u8 taskId); static void Task_MEvent_Leader(u8 taskId);
static void Task_CardOrNewsWithFriend(u8 taskId); static void Task_CardOrNewsWithFriend(u8 taskId);
static void Task_CardOrNewsOverWireless(u8 taskId); static void Task_CardOrNewsOverWireless(u8 taskId);
static void Task_ResumeUnionRoom(u8 taskId); static void Task_RunUnionRoom(u8 taskId);
static u16 ReadAsU16(const u8 *data); static u16 ReadAsU16(const u8 *data);
static void ReceiveUnionRoomActivityPacket(struct UnkStruct_URoom * uRoom); static void ReceiveUnionRoomActivityPacket(struct UnkStruct_URoom * uRoom);
static bool32 UnionRoom_HandleContactFromOtherPlayer(struct UnkStruct_URoom * uRoom); static bool32 UnionRoom_HandleContactFromOtherPlayer(struct UnkStruct_URoom * uRoom);
static void Task_InitUnionRoom(u8 taskId); static void Task_InitUnionRoom(u8 taskId);
static u8 HandlePlayerListUpdate(void); static u8 HandlePlayerListUpdate(void);
static u8 CreateTask_SearchForChildOrParent(struct UnkStruct_Main4 * arg0, struct UnkStruct_Main4 * arg1, u32 arg2); static u8 CreateTask_SearchForChildOrParent(struct UnkStruct_Main4 * main4, struct UnkStruct_Main4 * arg1, u32 arg2);
static bool32 GetGnameWonderFlagByLinkGroup(struct GFtgtGname * gname, s16 arg1); static bool32 GetGnameWonderFlagByLinkGroup(struct GFtgtGname * gname, s16 linkGroup);
static u8 CreateTask_ListenForPartnersWithCompatibleSerialNos(struct UnkStruct_Main4 * arg0, u32 linkGroup); static u8 CreateTask_ListenForPartnersWithCompatibleSerialNos(struct UnkStruct_Main4 * main4, u32 linkGroup);
static u8 CreateTask_ListenForPartnersWithSerial7F7D(struct UnkStruct_Main4 * arg0, u32 linkGroup); static u8 CreateTask_ListenForPartnersWithSerial7F7D(struct UnkStruct_Main4 * main4, u32 linkGroup);
static bool32 UR_PrintFieldMessage(const u8 * str); static bool32 UR_PrintFieldMessage(const u8 * str);
static bool32 UR_RunTextPrinters_CheckPrinter0Active(void); static bool32 UR_RunTextPrinters_CheckPrinter0Active(void);
static bool8 PrintOnTextbox(u8 *textState, const u8 *str); static bool8 PrintOnTextbox(u8 *textState, const u8 *str);
@@ -98,27 +98,27 @@ static s32 TradeBoardMenuHandler(u8 *state_p, u8 *win_id_p, u8 *list_menu_id_p,
static void UR_BlankBg0(void); static void UR_BlankBg0(void);
static void JoinGroup_BlankBg0AndEnableScriptContexts(void); static void JoinGroup_BlankBg0AndEnableScriptContexts(void);
static void UR_AddTextPrinterParameterized(u8 windowId, u8 fontId, const u8 *str, u8 x, u8 y, u8 colorIdx); static void UR_AddTextPrinterParameterized(u8 windowId, u8 fontId, const u8 *str, u8 x, u8 y, u8 colorIdx);
static void BlankUnkStruct_x20Array(struct UnkStruct_x20 * arg0, u8 count); static void BlankUnkStruct_x20Array(struct UnkStruct_x20 * x20, u8 count);
static void BlankUnkStruct_x1CArray(struct UnkStruct_x1C * arg0, u8 count); static void BlankUnkStruct_x1CArray(struct UnkStruct_x1C * x1C, u8 count);
static bool8 AreGnameUnameDifferent(struct UnionGnameUnamePair * arg0, const struct UnionGnameUnamePair * arg1); static bool8 AreGnameUnameDifferent(struct UnionGnameUnamePair * arg0, const struct UnionGnameUnamePair * arg1);
static bool32 AreUnionRoomPlayerGnamesDifferent(struct UnionGnameUnamePair * arg0, struct UnionGnameUnamePair * arg1); static bool32 AreUnionRoomPlayerGnamesDifferent(struct UnionGnameUnamePair * arg0, struct UnionGnameUnamePair * arg1);
static u32 Findx20Inx1CArray(struct UnkStruct_x20 * arg0, struct UnkStruct_x1C * arg1); static u32 Findx20Inx1CArray(struct UnkStruct_x20 * x20, struct UnkStruct_x1C * x1Carr);
static u8 Appendx1Ctox20(struct UnkStruct_x20 * x20arr, struct UnkStruct_x1C * x1C, u8 count); static u8 Appendx1Ctox20(struct UnkStruct_x20 * x20arr, struct UnkStruct_x1C * x1C, u8 count);
static void PrintUnionRoomGroupOnWindow(u8 windowId, u8 x, u8 y, struct UnkStruct_x20 * group, u8 colorIdx, u8 id); static void PrintUnionRoomGroupOnWindow(u8 windowId, u8 x, u8 y, struct UnkStruct_x20 * group, u8 colorIdx, u8 id);
static void PrintGroupMemberCandidateOnWindowWithColor(u8 windowId, u8 x, u8 y, struct UnkStruct_x20 * group, u8 colorIdx, u8 id); static void PrintGroupMemberCandidateOnWindowWithColor(u8 windowId, u8 x, u8 y, struct UnkStruct_x20 * group, u8 colorIdx, u8 id);
static bool32 PlayerIsTalkingToUnionRoomAide(void); static bool32 PlayerIsTalkingToUnionRoomAide(void);
static u32 GetResponseIdx_InviteToURoomActivity(s32 activity); static u32 GetResponseIdx_InviteToURoomActivity(s32 activity);
static u32 ConvPartnerUnameAndGetWhetherMetAlready(struct UnkStruct_x20 * unkX20); static u32 ConvPartnerUnameAndGetWhetherMetAlready(struct UnkStruct_x20 * unkX20);
static s32 UnionRoomGetPlayerInteractionResponse(struct UnkStruct_Main0 * arg0, u8 arg1, u8 arg2, u32 playerGender); static s32 UnionRoomGetPlayerInteractionResponse(struct UnkStruct_Main0 * main0, u8 overrideGender, u8 playerIdx, u32 playerGender);
static void nullsub_92(u8 windowId, s32 itemId, u8 y); static void nullsub_92(u8 windowId, s32 itemId, u8 y);
static void TradeBoardListMenuItemPrintFunc(u8 windowId, s32 itemId, u8 y); static void TradeBoardListMenuItemPrintFunc(u8 windowId, s32 itemId, u8 y);
static s32 GetIndexOfNthTradeBoardOffer(struct UnkStruct_x20 * arg, s32 arg1); static s32 GetIndexOfNthTradeBoardOffer(struct UnkStruct_x20 * x20, s32 n);
static s32 GetUnionRoomPlayerGender(s32 a0, struct UnkStruct_Main0 * a1); static s32 GetUnionRoomPlayerGender(s32 playerIdx, struct UnkStruct_Main0 * main0);
static s32 IsRequestedTypeAndSpeciesInPlayerParty(u32 type, u32 species); static s32 IsRequestedTypeAndSpeciesInPlayerParty(u32 type, u32 species);
static void GetURoomActivityRejectMsg(u8 *dst, s32 arg1, u32 playerGender); static void GetURoomActivityRejectMsg(u8 *dst, s32 activity, u32 playerGender);
static void GetURoomActivityStartMsg(u8 *dst, u8 arg1); static void GetURoomActivityStartMsg(u8 *dst, u8 activity);
static s32 GetChatLeaderActionRequestMessage(u8 *dst, u32 gender, u16 *arg2, struct UnkStruct_URoom * arg3); static s32 GetChatLeaderActionRequestMessage(u8 *dst, u32 gender, u16 *activity_p, struct UnkStruct_URoom * uroom);
static bool32 PollPartnerYesNoResponse(struct UnkStruct_URoom * arg0); static bool32 PollPartnerYesNoResponse(struct UnkStruct_URoom * uroom);
static bool32 HasAtLeastTwoMonsOfLevel30OrLower(void); static bool32 HasAtLeastTwoMonsOfLevel30OrLower(void);
static void ResetUnionRoomTrade(struct UnionRoomTrade * trade); static void ResetUnionRoomTrade(struct UnionRoomTrade * trade);
static bool32 RegisterTradeMonAndGetIsEgg(u32 monId, struct UnionRoomTrade * trade); static bool32 RegisterTradeMonAndGetIsEgg(u32 monId, struct UnionRoomTrade * trade);
@@ -127,8 +127,8 @@ static u32 GetPartyPositionOfRegisteredMon(struct UnionRoomTrade * trade, u8 mpI
static void HandleCancelTrade(bool32 unlockObjs); static void HandleCancelTrade(bool32 unlockObjs);
static void UR_EnableScriptContext2AndFreezeObjectEvents(void); static void UR_EnableScriptContext2AndFreezeObjectEvents(void);
static u8 GetSinglePartnerSpriteGenderParam(s32 linkPlayer); static u8 GetSinglePartnerSpriteGenderParam(s32 linkPlayer);
static u8 GetActivePartnerSpriteGenderParam(struct UnkStruct_URoom * arg0); static u8 GetActivePartnerSpriteGenderParam(struct UnkStruct_URoom * uroom);
static void ViewURoomPartnerTrainerCard(u8 *dest, struct UnkStruct_URoom * uRoom, bool8 gender); static void ViewURoomPartnerTrainerCard(u8 *dest, struct UnkStruct_URoom * uRoom, bool8 parent_child);
#define _8456CD8(a, b) ((a) | ((b) << 8)) #define _8456CD8(a, b) ((a) | ((b) << 8))
@@ -664,7 +664,7 @@ static const u8 sUnref_84570D1[] = _("{DYNAMIC 00}·{DYNAMIC 01}");
_maxWidth - strWidth; \ _maxWidth - strWidth; \
}) })
// arg1 is a 2-nybble code // capacityCode is a 2-nybble code
// Bits 0-3: Capacity // Bits 0-3: Capacity
// Bits 4-7: Min required (if 0, must have exactly Capacity players // Bits 4-7: Min required (if 0, must have exactly Capacity players
static void PrintNumPlayersWaitingForMsg(u8 windowId, u8 capacityCode, u8 count) static void PrintNumPlayersWaitingForMsg(u8 windowId, u8 capacityCode, u8 count)
@@ -745,7 +745,7 @@ static void Task_TryBecomeLinkLeader(u8 taskId)
sPlayerCurrActivity = sLinkGroupToActivityAndCapacity[gSpecialVar_0x8004]; sPlayerCurrActivity = sLinkGroupToActivityAndCapacity[gSpecialVar_0x8004];
sPlayerActivityGroupSize = sLinkGroupToActivityAndCapacity[gSpecialVar_0x8004] >> 8; sPlayerActivityGroupSize = sLinkGroupToActivityAndCapacity[gSpecialVar_0x8004] >> 8;
SetHostRFUtgtGname(sPlayerCurrActivity, 0, 0); SetHostRFUtgtGname(sPlayerCurrActivity, 0, 0);
sub_800B1F4(); SetWirelessCommType1();
OpenLink(); OpenLink();
InitializeRfuLinkManager_LinkLeader(sPlayerActivityGroupSize & 0xF); InitializeRfuLinkManager_LinkLeader(sPlayerActivityGroupSize & 0xF);
data->state = 3; data->state = 3;
@@ -823,7 +823,7 @@ static void Task_TryBecomeLinkLeader(u8 taskId)
&& JOY_NEW(START_BUTTON)) && JOY_NEW(START_BUTTON))
{ {
data->state = 15; data->state = 15;
sub_80F8F5C(); LinkRfu_StopManagerAndFinalizeSlots();
} }
if (data->state == 6 && sub_80FA5D4()) if (data->state == 6 && sub_80FA5D4())
{ {
@@ -905,7 +905,7 @@ static void Task_TryBecomeLinkLeader(u8 taskId)
data->state = 13; data->state = 13;
} }
sub_80F8F5C(); LinkRfu_StopManagerAndFinalizeSlots();
PrintNumPlayersWaitingForMsg(data->nPlayerModeWindowId, sPlayerActivityGroupSize, data->playerCount); PrintNumPlayersWaitingForMsg(data->nPlayerModeWindowId, sPlayerActivityGroupSize, data->playerCount);
} }
else else
@@ -1289,7 +1289,7 @@ static void Task_TryJoinLinkGroup(u8 taskId)
case 0: case 0:
SetHostRFUtgtGname(sLinkGroupToURoomActivity[gSpecialVar_0x8004], 0, 0); SetHostRFUtgtGname(sLinkGroupToURoomActivity[gSpecialVar_0x8004], 0, 0);
sPlayerCurrActivity = sLinkGroupToURoomActivity[gSpecialVar_0x8004]; sPlayerCurrActivity = sLinkGroupToURoomActivity[gSpecialVar_0x8004];
sub_800B1F4(); SetWirelessCommType1();
OpenLink(); OpenLink();
InitializeRfuLinkManager_JoinGroup(); InitializeRfuLinkManager_JoinGroup();
data->field_4 = AllocZeroed(4 * sizeof(struct UnkStruct_x1C)); data->field_4 = AllocZeroed(4 * sizeof(struct UnkStruct_x1C));
@@ -1559,7 +1559,7 @@ static void AskToJoinRfuGroup(struct UnkStruct_Group * data, s32 id)
RedrawListMenu(data->listTaskId); RedrawListMenu(data->listTaskId);
IntlConvPartnerUname7(gStringVar1, data->field_0->arr[data->leaderId]); IntlConvPartnerUname7(gStringVar1, data->field_0->arr[data->leaderId]);
UpdateGameDataWithActivitySpriteGendersFlag(sLinkGroupToURoomActivity[gSpecialVar_0x8004], 0, TRUE); UpdateGameDataWithActivitySpriteGendersFlag(sLinkGroupToURoomActivity[gSpecialVar_0x8004], 0, TRUE);
CreateTask_sub_80FBE80(data->field_0->arr[data->leaderId].gname_uname.uname, ReadAsU16(data->field_0->arr[data->leaderId].gname_uname.gname.unk_00.playerTrainerId)); CreateTask_RfuReconnectWithParent(data->field_0->arr[data->leaderId].gname_uname.uname, ReadAsU16(data->field_0->arr[data->leaderId].gname_uname.gname.unk_00.playerTrainerId));
} }
u8 CreateTask_ListenToWireless(void) u8 CreateTask_ListenToWireless(void)
@@ -1586,7 +1586,7 @@ static void Task_ListenToWireless(u8 taskId)
{ {
case 0: case 0:
SetHostRFUtgtGname(0, 0, 0); SetHostRFUtgtGname(0, 0, 0);
sub_800B1F4(); SetWirelessCommType1();
OpenLink(); OpenLink();
InitializeRfuLinkManager_JoinGroup(); InitializeRfuLinkManager_JoinGroup();
sub_80FB128(TRUE); sub_80FB128(TRUE);
@@ -1882,7 +1882,7 @@ static void CB2_TransitionToCableClub(void)
break; break;
case 1: case 1:
if (!FuncIsActiveTask(Task_ExchangeCards)) if (!FuncIsActiveTask(Task_ExchangeCards))
SetMainCallback2(sub_8056788); SetMainCallback2(CB2_ReturnToFieldCableClub);
break; break;
} }
@@ -2022,7 +2022,7 @@ static void Task_RunScriptAndFadeToActivity(u8 taskId)
case 2: case 2:
if (!gPaletteFade.active) if (!gPaletteFade.active)
{ {
sub_800AB9C(); PrepareSendLinkCmd2FFE_or_RfuCmd6600();
data[0]++; data[0]++;
} }
break; break;
@@ -2074,7 +2074,7 @@ static void Task_MEvent_Leader(u8 taskId)
sPlayerActivityGroupSize = 2; sPlayerActivityGroupSize = 2;
SetHostRFUtgtGname(data->activity, 0, 0); SetHostRFUtgtGname(data->activity, 0, 0);
SetGnameBufferWonderFlags(FALSE, FALSE); SetGnameBufferWonderFlags(FALSE, FALSE);
sub_800B1F4(); SetWirelessCommType1();
OpenLink(); OpenLink();
InitializeRfuLinkManager_LinkLeader(2); InitializeRfuLinkManager_LinkLeader(2);
data->state = 1; data->state = 1;
@@ -2165,7 +2165,7 @@ static void Task_MEvent_Leader(u8 taskId)
IntlConvPartnerUname7(gStringVar1, data->field_0->arr[data->playerCount - 1]); IntlConvPartnerUname7(gStringVar1, data->field_0->arr[data->playerCount - 1]);
StringExpandPlaceholders(gStringVar4, gUnknown_8457554); StringExpandPlaceholders(gStringVar4, gUnknown_8457554);
data->state = 9; data->state = 9;
sub_80F8F5C(); LinkRfu_StopManagerAndFinalizeSlots();
} }
else else
{ {
@@ -2246,7 +2246,7 @@ static void Task_MEvent_Leader(u8 taskId)
Free(data->field_8); Free(data->field_8);
Free(data->field_0); Free(data->field_0);
Free(data->field_4); Free(data->field_4);
sub_800AB9C(); PrepareSendLinkCmd2FFE_or_RfuCmd6600();
data->state++; data->state++;
break; break;
case 17: case 17:
@@ -2281,7 +2281,7 @@ static void Task_CardOrNewsWithFriend(u8 taskId)
{ {
case 0: case 0:
SetHostRFUtgtGname(data->cardOrNews + ACTIVITY_WCARD2, 0, 0); SetHostRFUtgtGname(data->cardOrNews + ACTIVITY_WCARD2, 0, 0);
sub_800B1F4(); SetWirelessCommType1();
OpenLink(); OpenLink();
InitializeRfuLinkManager_JoinGroup(); InitializeRfuLinkManager_JoinGroup();
data->field_4 = AllocZeroed(4 * sizeof(struct UnkStruct_x1C)); data->field_4 = AllocZeroed(4 * sizeof(struct UnkStruct_x1C));
@@ -2342,7 +2342,7 @@ static void Task_CardOrNewsWithFriend(u8 taskId)
CreateWirelessStatusIndicatorSprite(0, 0); CreateWirelessStatusIndicatorSprite(0, 0);
RedrawListMenu(data->listTaskId); RedrawListMenu(data->listTaskId);
IntlConvPartnerUname(gStringVar1, data->field_0->arr[data->leaderId]); IntlConvPartnerUname(gStringVar1, data->field_0->arr[data->leaderId]);
CreateTask_sub_80FBE80(data->field_0->arr[data->leaderId].gname_uname.uname, ReadAsU16(data->field_0->arr[data->leaderId].gname_uname.gname.unk_00.playerTrainerId)); CreateTask_RfuReconnectWithParent(data->field_0->arr[data->leaderId].gname_uname.uname, ReadAsU16(data->field_0->arr[data->leaderId].gname_uname.gname.unk_00.playerTrainerId));
PlaySE(SE_PN_ON); PlaySE(SE_PN_ON);
data->state = 4; data->state = 4;
} }
@@ -2413,7 +2413,7 @@ static void Task_CardOrNewsWithFriend(u8 taskId)
break; break;
case 11: case 11:
data->state++; data->state++;
sub_800AB9C(); PrepareSendLinkCmd2FFE_or_RfuCmd6600();
break; break;
case 12: case 12:
if (IsLinkTaskFinished()) if (IsLinkTaskFinished())
@@ -2447,7 +2447,7 @@ static void Task_CardOrNewsOverWireless(u8 taskId)
{ {
case 0: case 0:
SetHostRFUtgtGname(0, 0, 0); SetHostRFUtgtGname(0, 0, 0);
sub_800B1F4(); SetWirelessCommType1();
OpenLink(); OpenLink();
InitializeRfuLinkManager_JoinGroup(); InitializeRfuLinkManager_JoinGroup();
data->field_4 = AllocZeroed(4 * sizeof(struct UnkStruct_x1C)); data->field_4 = AllocZeroed(4 * sizeof(struct UnkStruct_x1C));
@@ -2503,7 +2503,7 @@ static void Task_CardOrNewsOverWireless(u8 taskId)
data->refreshTimer = 0; data->refreshTimer = 0;
LoadWirelessStatusIndicatorSpriteGfx(); LoadWirelessStatusIndicatorSpriteGfx();
CreateWirelessStatusIndicatorSprite(0, 0); CreateWirelessStatusIndicatorSprite(0, 0);
CreateTask_sub_80FBE80(data->field_0->arr[0].gname_uname.uname, ReadAsU16(data->field_0->arr[0].gname_uname.gname.unk_00.playerTrainerId)); CreateTask_RfuReconnectWithParent(data->field_0->arr[0].gname_uname.uname, ReadAsU16(data->field_0->arr[0].gname_uname.gname.unk_00.playerTrainerId));
PlaySE(SE_PN_ON); PlaySE(SE_PN_ON);
data->state = 4; data->state = 4;
} }
@@ -2592,7 +2592,7 @@ static void Task_CardOrNewsOverWireless(u8 taskId)
break; break;
case 13: case 13:
data->state++; data->state++;
sub_800AB9C(); PrepareSendLinkCmd2FFE_or_RfuCmd6600();
break; break;
case 14: case 14:
if (IsLinkTaskFinished()) if (IsLinkTaskFinished())
@@ -2606,7 +2606,7 @@ void UnionRoomSpecial(void)
struct UnkStruct_URoom * dataPtr; struct UnkStruct_URoom * dataPtr;
ClearAndInitHostRFUtgtGname(); ClearAndInitHostRFUtgtGname();
CreateTask(Task_ResumeUnionRoom, 10); CreateTask(Task_RunUnionRoom, 10);
// dumb line needed to match // dumb line needed to match
sUnionRoomMain.uRoom = sUnionRoomMain.uRoom; sUnionRoomMain.uRoom = sUnionRoomMain.uRoom;
@@ -2658,7 +2658,7 @@ static void RestoreURoomField0FromDecompressionBuffer(struct UnkStruct_URoom * d
memcpy(data->field_0, &gDecompressionBuffer[0x3F00], 8 * sizeof(struct UnkStruct_x20)); memcpy(data->field_0, &gDecompressionBuffer[0x3F00], 8 * sizeof(struct UnkStruct_x20));
} }
static void Task_ResumeUnionRoom(u8 taskId) static void Task_RunUnionRoom(u8 taskId)
{ {
u32 id = 0; u32 id = 0;
s32 var5 = 0; s32 var5 = 0;
@@ -2675,7 +2675,7 @@ static void Task_ResumeUnionRoom(u8 taskId)
data->field_8 = AllocZeroed(sizeof(struct UnkStruct_x20)); data->field_8 = AllocZeroed(sizeof(struct UnkStruct_x20));
BlankUnkStruct_x20Array(data->field_0->arr, 8); BlankUnkStruct_x20Array(data->field_0->arr, 8);
sPlayerCurrActivity = IN_UNION_ROOM; sPlayerCurrActivity = IN_UNION_ROOM;
data->field_20 = CreateTask_SearchForChildOrParent(data->field_C, data->field_4, 9); data->field_20 = CreateTask_SearchForChildOrParent(data->field_C, data->field_4, LINK_GROUP_UNION_ROOM_RESUME);
ZeroUnionObjWork(data->unionObjs); ZeroUnionObjWork(data->unionObjs);
MakeGroupAssemblyAreasPassable(); MakeGroupAssemblyAreasPassable();
data->state = 1; data->state = 1;
@@ -2688,9 +2688,9 @@ static void Task_ResumeUnionRoom(u8 taskId)
case 2: case 2:
SetHostRFUtgtGname(IN_UNION_ROOM, 0, 0); SetHostRFUtgtGname(IN_UNION_ROOM, 0, 0);
RfuUpdatePlayerGnameStateAndSend(sUnionRoomTrade.type, sUnionRoomTrade.playerSpecies, sUnionRoomTrade.playerLevel); RfuUpdatePlayerGnameStateAndSend(sUnionRoomTrade.type, sUnionRoomTrade.playerSpecies, sUnionRoomTrade.playerLevel);
sub_800B1F4(); SetWirelessCommType1();
OpenLink(); OpenLink();
sub_80FBC00(); InitializeRfuLinkManager_EnterUnionRoom();
BlankUnkStruct_x20Array(&data->field_8->arr[0], 1); BlankUnkStruct_x20Array(&data->field_8->arr[0], 1);
BlankUnkStruct_x1CArray(data->field_4->arr, 4); BlankUnkStruct_x1CArray(data->field_4->arr, 4);
BlankUnkStruct_x1CArray(data->field_C->arr, 4); BlankUnkStruct_x1CArray(data->field_C->arr, 4);
@@ -2845,7 +2845,7 @@ static void Task_ResumeUnionRoom(u8 taskId)
break; break;
case 1: case 1:
case 2: case 2:
if (sub_80FBB0C() == TRUE) if (IsUnionRoomListenTaskActive() == TRUE)
UnionRoom_ScheduleFieldMessageAndExit(gUnknown_8457F90); UnionRoom_ScheduleFieldMessageAndExit(gUnknown_8457F90);
else else
UnionRoom_ScheduleFieldMessageWithFollowupState(30, gUnknown_8457F90); UnionRoom_ScheduleFieldMessageWithFollowupState(30, gUnknown_8457F90);
@@ -2958,7 +2958,7 @@ static void Task_ResumeUnionRoom(u8 taskId)
{ {
if (sPlayerCurrActivity == ACTIVITY_CARD) if (sPlayerCurrActivity == ACTIVITY_CARD)
{ {
ViewURoomPartnerTrainerCard(gStringVar4, data, FALSE); ViewURoomPartnerTrainerCard(gStringVar4, data, MODE_CHILD);
data->state = 40; data->state = 40;
} }
else else
@@ -2984,7 +2984,7 @@ static void Task_ResumeUnionRoom(u8 taskId)
if (PrintOnTextbox(&data->textState, gStringVar4)) if (PrintOnTextbox(&data->textState, gStringVar4))
{ {
data->state = 41; data->state = 41;
sub_800AB9C(); PrepareSendLinkCmd2FFE_or_RfuCmd6600();
data->partnerYesNoResponse = 0; data->partnerYesNoResponse = 0;
data->recvActivityRequest[0] = 0; data->recvActivityRequest[0] = 0;
} }
@@ -3042,7 +3042,7 @@ static void Task_ResumeUnionRoom(u8 taskId)
case 2: case 2:
playerGender = GetUnionRoomPlayerGender(taskData[1], data->field_0); playerGender = GetUnionRoomPlayerGender(taskData[1], data->field_0);
UpdateGameDataWithActivitySpriteGendersFlag(ACTIVITY_PLYRTALK | IN_UNION_ROOM, 0, TRUE); UpdateGameDataWithActivitySpriteGendersFlag(ACTIVITY_PLYRTALK | IN_UNION_ROOM, 0, TRUE);
if (sub_80FBB0C() == TRUE) if (IsUnionRoomListenTaskActive() == TRUE)
UnionRoom_ScheduleFieldMessageAndExit(gUnknown_84585E8[playerGender]); UnionRoom_ScheduleFieldMessageAndExit(gUnknown_84585E8[playerGender]);
else else
UnionRoom_ScheduleFieldMessageWithFollowupState(30, gUnknown_84585E8[playerGender]); UnionRoom_ScheduleFieldMessageWithFollowupState(30, gUnknown_84585E8[playerGender]);
@@ -3058,7 +3058,7 @@ static void Task_ResumeUnionRoom(u8 taskId)
{ {
playerGender = GetUnionRoomPlayerGender(taskData[1], data->field_0); playerGender = GetUnionRoomPlayerGender(taskData[1], data->field_0);
UpdateGameDataWithActivitySpriteGendersFlag(ACTIVITY_PLYRTALK | IN_UNION_ROOM, 0, TRUE); UpdateGameDataWithActivitySpriteGendersFlag(ACTIVITY_PLYRTALK | IN_UNION_ROOM, 0, TRUE);
if (sub_80FBB0C() == TRUE) if (IsUnionRoomListenTaskActive() == TRUE)
UnionRoom_ScheduleFieldMessageAndExit(gUnknown_84585E8[playerGender]); UnionRoom_ScheduleFieldMessageAndExit(gUnknown_84585E8[playerGender]);
else else
UnionRoom_ScheduleFieldMessageWithFollowupState(30, gUnknown_84585E8[playerGender]); UnionRoom_ScheduleFieldMessageWithFollowupState(30, gUnknown_84585E8[playerGender]);
@@ -3143,7 +3143,7 @@ static void Task_ResumeUnionRoom(u8 taskId)
else if (sPlayerCurrActivity == (ACTIVITY_CARD | IN_UNION_ROOM)) else if (sPlayerCurrActivity == (ACTIVITY_CARD | IN_UNION_ROOM))
{ {
RfuPrepareSend0x2f00(data->playerSendBuffer); RfuPrepareSend0x2f00(data->playerSendBuffer);
ViewURoomPartnerTrainerCard(gStringVar4, data, 1); ViewURoomPartnerTrainerCard(gStringVar4, data, MODE_PARENT);
data->state = 40; data->state = 40;
} }
else else
@@ -3185,7 +3185,7 @@ static void Task_ResumeUnionRoom(u8 taskId)
UnionRoom_ScheduleFieldMessageWithFollowupState(14, gStringVar4); UnionRoom_ScheduleFieldMessageWithFollowupState(14, gStringVar4);
break; break;
case 14: case 14:
sub_800AB9C(); PrepareSendLinkCmd2FFE_or_RfuCmd6600();
data->state = 15; data->state = 15;
break; break;
case 15: case 15:
@@ -3416,37 +3416,37 @@ void var_800D_set_xB(void)
gSpecialVar_Result = 11; gSpecialVar_Result = 11;
} }
static void ReceiveUnionRoomActivityPacket(struct UnkStruct_URoom * arg0) static void ReceiveUnionRoomActivityPacket(struct UnkStruct_URoom * uroom)
{ {
if (gRecvCmds[1][1] != 0 && (gRecvCmds[1][0] & 0xFF00) == RFU_COMMAND_0x2f00) if (gRecvCmds[1][1] != 0 && (gRecvCmds[1][0] & 0xFF00) == RFU_COMMAND_0x2f00)
{ {
arg0->recvActivityRequest[0] = gRecvCmds[1][1]; uroom->recvActivityRequest[0] = gRecvCmds[1][1];
if (gRecvCmds[1][1] == (ACTIVITY_TRADE | IN_UNION_ROOM)) if (gRecvCmds[1][1] == (ACTIVITY_TRADE | IN_UNION_ROOM))
{ {
arg0->recvActivityRequest[1] = gRecvCmds[1][2]; uroom->recvActivityRequest[1] = gRecvCmds[1][2];
arg0->recvActivityRequest[2] = gRecvCmds[1][3]; uroom->recvActivityRequest[2] = gRecvCmds[1][3];
} }
} }
} }
static bool32 UnionRoom_HandleContactFromOtherPlayer(struct UnkStruct_URoom * arg0) static bool32 UnionRoom_HandleContactFromOtherPlayer(struct UnkStruct_URoom * uroom)
{ {
if (arg0->recvActivityRequest[0] != 0) if (uroom->recvActivityRequest[0] != 0)
{ {
s32 var = GetChatLeaderActionRequestMessage(gStringVar4, gLinkPlayers[1].gender, &arg0->recvActivityRequest[0], arg0); s32 var = GetChatLeaderActionRequestMessage(gStringVar4, gLinkPlayers[1].gender, &uroom->recvActivityRequest[0], uroom);
if (var == 0) if (var == 0)
{ {
return TRUE; return TRUE;
} }
else if (var == 1) else if (var == 1)
{ {
arg0->state = 35; uroom->state = 35;
sPlayerCurrActivity = arg0->recvActivityRequest[0]; sPlayerCurrActivity = uroom->recvActivityRequest[0];
return FALSE; return FALSE;
} }
else if (var == 2) else if (var == 2)
{ {
arg0->state = 36; uroom->state = 36;
Link_TryStartSend5FFF(); Link_TryStartSend5FFF();
return FALSE; return FALSE;
} }
@@ -3486,9 +3486,9 @@ static void Task_InitUnionRoom(u8 taskId)
break; break;
case 1: case 1:
SetHostRFUtgtGname(ACTIVITY_SEARCH, 0, 0); SetHostRFUtgtGname(ACTIVITY_SEARCH, 0, 0);
sub_800B1F4(); SetWirelessCommType1();
OpenLink(); OpenLink();
sub_80FBC00(); InitializeRfuLinkManager_EnterUnionRoom();
sub_80FB128(TRUE); sub_80FB128(TRUE);
structPtr->state = 2; structPtr->state = 2;
break; break;
@@ -3501,7 +3501,7 @@ static void Task_InitUnionRoom(u8 taskId)
BlankUnkStruct_x20Array(structPtr->field_0->arr, 8); BlankUnkStruct_x20Array(structPtr->field_0->arr, 8);
structPtr->field_8 = AllocZeroed(sizeof(struct UnkStruct_x20)); structPtr->field_8 = AllocZeroed(sizeof(struct UnkStruct_x20));
BlankUnkStruct_x20Array(&structPtr->field_8->arr[0], 1); BlankUnkStruct_x20Array(&structPtr->field_8->arr[0], 1);
structPtr->field_20 = CreateTask_SearchForChildOrParent(structPtr->field_C, structPtr->field_4, 10); structPtr->field_20 = CreateTask_SearchForChildOrParent(structPtr->field_C, structPtr->field_4, LINK_GROUP_UNION_ROOM_INIT);
structPtr->state = 3; structPtr->state = 3;
break; break;
case 3: case 3:
@@ -3645,48 +3645,48 @@ static u8 HandlePlayerListUpdate(void)
static void Task_SearchForChildOrParent(u8 taskId) static void Task_SearchForChildOrParent(u8 taskId)
{ {
s32 i, j; s32 i, j;
struct UnionGnameUnamePair sp0; struct UnionGnameUnamePair gname_uname;
struct UnkStruct_Main4 ** ptr = (void*) gTasks[taskId].data; struct UnkStruct_Main4 ** ptr = (void*) gTasks[taskId].data;
bool8 parent_child; bool8 parent_child;
for (i = 0; i < RFU_CHILD_MAX; i++) for (i = 0; i < RFU_CHILD_MAX; i++)
{ {
parent_child = LinkRfu_GetNameIfCompatible(&sp0.gname, sp0.uname, i); parent_child = LinkRfu_GetNameIfCompatible(&gname_uname.gname, gname_uname.uname, i);
if (!IsPartnerActivityAcceptable(sp0.gname.activity, gTasks[taskId].data[4])) if (!IsPartnerActivityAcceptable(gname_uname.gname.activity, gTasks[taskId].data[4]))
{ {
sp0 = sUnionGnameUnamePair_Dummy; gname_uname = sUnionGnameUnamePair_Dummy;
} }
if (sp0.gname.unk_00.language == LANGUAGE_JAPANESE) if (gname_uname.gname.unk_00.language == LANGUAGE_JAPANESE)
{ {
sp0 = sUnionGnameUnamePair_Dummy; gname_uname = sUnionGnameUnamePair_Dummy;
} }
if (!parent_child) if (parent_child == MODE_CHILD)
{ {
for (j = 0; j < i; j++) for (j = 0; j < i; j++)
{ {
if (!AreGnameUnameDifferent(&ptr[1]->arr[j].gname_uname, &sp0)) if (!AreGnameUnameDifferent(&ptr[1]->arr[j].gname_uname, &gname_uname))
{ {
sp0 = sUnionGnameUnamePair_Dummy; gname_uname = sUnionGnameUnamePair_Dummy;
} }
} }
ptr[1]->arr[i].gname_uname = sp0; ptr[1]->arr[i].gname_uname = gname_uname;
ptr[1]->arr[i].active = AreGnameUnameDifferent(&ptr[1]->arr[i].gname_uname, &sUnionGnameUnamePair_Dummy); ptr[1]->arr[i].active = AreGnameUnameDifferent(&ptr[1]->arr[i].gname_uname, &sUnionGnameUnamePair_Dummy);
} }
else else
{ {
ptr[0]->arr[i].gname_uname = sp0; ptr[0]->arr[i].gname_uname = gname_uname;
ptr[0]->arr[i].active = AreGnameUnameDifferent(&ptr[0]->arr[i].gname_uname, &sUnionGnameUnamePair_Dummy); ptr[0]->arr[i].active = AreGnameUnameDifferent(&ptr[0]->arr[i].gname_uname, &sUnionGnameUnamePair_Dummy);
} }
} }
} }
static u8 CreateTask_SearchForChildOrParent(struct UnkStruct_Main4 * a0, struct UnkStruct_Main4 * a1, u32 a2) static u8 CreateTask_SearchForChildOrParent(struct UnkStruct_Main4 * main4_parent, struct UnkStruct_Main4 * main4_child, u32 linkGroup)
{ {
u8 taskId = CreateTask(Task_SearchForChildOrParent, 0); u8 taskId = CreateTask(Task_SearchForChildOrParent, 0);
struct UnkStruct_Main4 ** data = (void *)gTasks[taskId].data; struct UnkStruct_Main4 ** data = (void *)gTasks[taskId].data;
data[0] = a0; data[0] = main4_parent;
data[1] = a1; data[1] = main4_child;
gTasks[taskId].data[4] = a2; gTasks[taskId].data[4] = linkGroup;
return taskId; return taskId;
} }
@@ -4044,38 +4044,38 @@ static void UR_AddTextPrinterParameterized(u8 windowId, u8 fontId, const u8 *str
AddTextPrinter(&printerTemplate, 0xFF, NULL); AddTextPrinter(&printerTemplate, 0xFF, NULL);
} }
static void BlankUnkStruct_x20Array(struct UnkStruct_x20 * arg0, u8 count) static void BlankUnkStruct_x20Array(struct UnkStruct_x20 * x20arr, u8 count)
{ {
s32 i; s32 i;
for (i = 0; i < count; i++) for (i = 0; i < count; i++)
{ {
arg0[i].gname_uname = sUnionGnameUnamePair_Dummy; x20arr[i].gname_uname = sUnionGnameUnamePair_Dummy;
arg0[i].field_18 = 0xFF; x20arr[i].field_18 = 0xFF;
arg0[i].groupScheduledAnim = UNION_ROOM_SPAWN_NONE; x20arr[i].groupScheduledAnim = UNION_ROOM_SPAWN_NONE;
arg0[i].field_1A_1 = FALSE; x20arr[i].field_1A_1 = FALSE;
arg0[i].field_1B = 0; x20arr[i].field_1B = 0;
} }
} }
static void BlankUnkStruct_x1CArray(struct UnkStruct_x1C * arg0, u8 count) static void BlankUnkStruct_x1CArray(struct UnkStruct_x1C * x1Carr, u8 count)
{ {
s32 i; s32 i;
for (i = 0; i < RFU_CHILD_MAX; i++) for (i = 0; i < RFU_CHILD_MAX; i++)
{ {
arg0[i].gname_uname = sUnionGnameUnamePair_Dummy; x1Carr[i].gname_uname = sUnionGnameUnamePair_Dummy;
arg0[i].active = FALSE; x1Carr[i].active = FALSE;
} }
} }
static bool8 AreGnameUnameDifferent(struct UnionGnameUnamePair * arg0, const struct UnionGnameUnamePair * arg1) static bool8 AreGnameUnameDifferent(struct UnionGnameUnamePair * left, const struct UnionGnameUnamePair * right)
{ {
s32 i; s32 i;
for (i = 0; i < 2; i++) for (i = 0; i < 2; i++)
{ {
if (arg0->gname.unk_00.playerTrainerId[i] != arg1->gname.unk_00.playerTrainerId[i]) if (left->gname.unk_00.playerTrainerId[i] != right->gname.unk_00.playerTrainerId[i])
{ {
return TRUE; return TRUE;
} }
@@ -4083,7 +4083,7 @@ static bool8 AreGnameUnameDifferent(struct UnionGnameUnamePair * arg0, const str
for (i = 0; i < 8; i++) for (i = 0; i < 8; i++)
{ {
if (arg0->uname[i] != arg1->uname[i]) if (left->uname[i] != right->uname[i])
{ {
return TRUE; return TRUE;
} }
@@ -4092,34 +4092,34 @@ static bool8 AreGnameUnameDifferent(struct UnionGnameUnamePair * arg0, const str
return FALSE; return FALSE;
} }
static bool32 AreUnionRoomPlayerGnamesDifferent(struct UnionGnameUnamePair * arg0, struct UnionGnameUnamePair * arg1) static bool32 AreUnionRoomPlayerGnamesDifferent(struct UnionGnameUnamePair * left, struct UnionGnameUnamePair * right)
{ {
s32 i; s32 i;
if (arg0->gname.activity != arg1->gname.activity) if (left->gname.activity != right->gname.activity)
{ {
return TRUE; return TRUE;
} }
if (arg0->gname.started != arg1->gname.started) if (left->gname.started != right->gname.started)
{ {
return TRUE; return TRUE;
} }
for (i = 0; i < RFU_CHILD_MAX; i++) for (i = 0; i < RFU_CHILD_MAX; i++)
{ {
if (arg0->gname.child_sprite_gender[i] != arg1->gname.child_sprite_gender[i]) if (left->gname.child_sprite_gender[i] != right->gname.child_sprite_gender[i])
{ {
return TRUE; return TRUE;
} }
} }
if (arg0->gname.species != arg1->gname.species) if (left->gname.species != right->gname.species)
{ {
return TRUE; return TRUE;
} }
if (arg0->gname.type != arg1->gname.type) if (left->gname.type != right->gname.type)
{ {
return TRUE; return TRUE;
} }
@@ -4127,17 +4127,17 @@ static bool32 AreUnionRoomPlayerGnamesDifferent(struct UnionGnameUnamePair * arg
return FALSE; return FALSE;
} }
static u32 Findx20Inx1CArray(struct UnkStruct_x20 * arg0, struct UnkStruct_x1C * arg1) static u32 Findx20Inx1CArray(struct UnkStruct_x20 * x20, struct UnkStruct_x1C * x1Carr)
{ {
u8 result = 0xFF; u8 result = 0xFF;
s32 i; s32 i;
for (i = 0; i < RFU_CHILD_MAX; i++) for (i = 0; i < RFU_CHILD_MAX; i++)
{ {
if (arg1[i].active && !AreGnameUnameDifferent(&arg0->gname_uname, &arg1[i].gname_uname)) if (x1Carr[i].active && !AreGnameUnameDifferent(&x20->gname_uname, &x1Carr[i].gname_uname))
{ {
result = i; result = i;
arg1[i].active = FALSE; x1Carr[i].active = FALSE;
} }
} }
@@ -4243,40 +4243,40 @@ static u32 GetResponseIdx_InviteToURoomActivity(s32 activity)
} }
} }
static u32 ConvPartnerUnameAndGetWhetherMetAlready(struct UnkStruct_x20 * arg0) static u32 ConvPartnerUnameAndGetWhetherMetAlready(struct UnkStruct_x20 * x20)
{ {
u8 sp0[30]; u8 sp0[30];
IntlConvPartnerUname(sp0, *arg0); IntlConvPartnerUname(sp0, *x20);
return PlayerHasMetTrainerBefore(ReadAsU16(arg0->gname_uname.gname.unk_00.playerTrainerId), sp0); return PlayerHasMetTrainerBefore(ReadAsU16(x20->gname_uname.gname.unk_00.playerTrainerId), sp0);
} }
static s32 UnionRoomGetPlayerInteractionResponse(struct UnkStruct_Main0 * arg0, u8 arg1, u8 arg2, u32 playerGender) static s32 UnionRoomGetPlayerInteractionResponse(struct UnkStruct_Main0 * main0, u8 overrideGender, u8 playerIdx, u32 playerGender)
{ {
bool32 r2; bool32 metBefore;
struct UnkStruct_x20 * x20 = &arg0->arr[arg2]; struct UnkStruct_x20 * x20 = &main0->arr[playerIdx];
if (!x20->gname_uname.gname.started && arg1 == 0) if (!x20->gname_uname.gname.started && overrideGender == 0)
{ {
IntlConvPartnerUname(gStringVar1, *x20); IntlConvPartnerUname(gStringVar1, *x20);
r2 = PlayerHasMetTrainerBefore(ReadAsU16(x20->gname_uname.gname.unk_00.playerTrainerId), gStringVar1); metBefore = PlayerHasMetTrainerBefore(ReadAsU16(x20->gname_uname.gname.unk_00.playerTrainerId), gStringVar1);
if (x20->gname_uname.gname.activity == (ACTIVITY_CHAT | IN_UNION_ROOM)) if (x20->gname_uname.gname.activity == (ACTIVITY_CHAT | IN_UNION_ROOM))
{ {
StringExpandPlaceholders(gStringVar4, gUnknown_8457F80[r2][playerGender]); StringExpandPlaceholders(gStringVar4, gUnknown_8457F80[metBefore][playerGender]);
return 2; return 2;
} }
else else
{ {
UR_PrintFieldMessage(gURText_PleaseWaitMsgs[r2]); UR_PrintFieldMessage(gURText_PleaseWaitMsgs[metBefore]);
return 1; return 1;
} }
} }
else else
{ {
IntlConvPartnerUname(gStringVar1, *x20); IntlConvPartnerUname(gStringVar1, *x20);
if (arg1 != 0) if (overrideGender != 0)
{ {
playerGender = (x20->gname_uname.gname.unk_00.playerTrainerId[arg1 + 1] >> 3) & 1; playerGender = (x20->gname_uname.gname.unk_00.playerTrainerId[overrideGender + 1] >> 3) & 1;
} }
switch (x20->gname_uname.gname.activity & 0x3F) switch (x20->gname_uname.gname.activity & 0x3F)
{ {
@@ -4365,18 +4365,18 @@ static void TradeBoardListMenuItemPrintFunc(u8 windowId, s32 itemId, u8 y)
} }
} }
static s32 GetIndexOfNthTradeBoardOffer(struct UnkStruct_x20 * arg, s32 arg1) static s32 GetIndexOfNthTradeBoardOffer(struct UnkStruct_x20 * x20, s32 n)
{ {
s32 i; s32 i;
s32 j = 0; s32 j = 0;
for (i = 0; i < 8; i++) for (i = 0; i < 8; i++)
{ {
if (arg[i].groupScheduledAnim == UNION_ROOM_SPAWN_IN && arg[i].gname_uname.gname.species != SPECIES_NONE) if (x20[i].groupScheduledAnim == UNION_ROOM_SPAWN_IN && x20[i].gname_uname.gname.species != SPECIES_NONE)
{ {
j++; j++;
} }
if (j == arg1 + 1) if (j == n + 1)
{ {
return i; return i;
} }
@@ -4385,9 +4385,9 @@ static s32 GetIndexOfNthTradeBoardOffer(struct UnkStruct_x20 * arg, s32 arg1)
return -1; return -1;
} }
static s32 GetUnionRoomPlayerGender(s32 arg1, struct UnkStruct_Main0 * arg0) static s32 GetUnionRoomPlayerGender(s32 playerIdx, struct UnkStruct_Main0 * main0)
{ {
return arg0->arr[arg1].gname_uname.gname.playerGender; return main0->arr[playerIdx].gname_uname.gname.playerGender;
} }
static s32 IsRequestedTypeAndSpeciesInPlayerParty(u32 type, u32 species) static s32 IsRequestedTypeAndSpeciesInPlayerParty(u32 type, u32 species)
@@ -4515,18 +4515,18 @@ static s32 GetChatLeaderActionRequestMessage(u8 *dst, u32 gender, u16 *activity_
return result; return result;
} }
static bool32 PollPartnerYesNoResponse(struct UnkStruct_URoom * arg0) static bool32 PollPartnerYesNoResponse(struct UnkStruct_URoom * uroom)
{ {
if (gRecvCmds[0][1] != 0) if (gRecvCmds[0][1] != 0)
{ {
if (gRecvCmds[0][1] == (ACTIVITY_ACCEPT | IN_UNION_ROOM)) if (gRecvCmds[0][1] == (ACTIVITY_ACCEPT | IN_UNION_ROOM))
{ {
arg0->partnerYesNoResponse = ACTIVITY_ACCEPT | IN_UNION_ROOM; uroom->partnerYesNoResponse = ACTIVITY_ACCEPT | IN_UNION_ROOM;
return TRUE; return TRUE;
} }
else if (gRecvCmds[0][1] == (ACTIVITY_DECLINE | IN_UNION_ROOM)) else if (gRecvCmds[0][1] == (ACTIVITY_DECLINE | IN_UNION_ROOM))
{ {
arg0->partnerYesNoResponse = ACTIVITY_DECLINE | IN_UNION_ROOM; uroom->partnerYesNoResponse = ACTIVITY_DECLINE | IN_UNION_ROOM;
return TRUE; return TRUE;
} }
} }
@@ -4560,16 +4560,16 @@ static bool32 HasAtLeastTwoMonsOfLevel30OrLower(void)
return FALSE; return FALSE;
} }
static void ResetUnionRoomTrade(struct UnionRoomTrade * arg0) static void ResetUnionRoomTrade(struct UnionRoomTrade * uroomTrade)
{ {
arg0->field_0 = 0; uroomTrade->field_0 = 0;
arg0->type = 0; uroomTrade->type = 0;
arg0->playerPersonality = 0; uroomTrade->playerPersonality = 0;
arg0->playerSpecies = 0; uroomTrade->playerSpecies = 0;
arg0->playerLevel = 0; uroomTrade->playerLevel = 0;
arg0->species = 0; uroomTrade->species = 0;
arg0->level = 0; uroomTrade->level = 0;
arg0->personality = 0; uroomTrade->personality = 0;
} }
void Script_ResetUnionRoomTrade(void) void Script_ResetUnionRoomTrade(void)
@@ -4663,17 +4663,17 @@ static u8 GetSinglePartnerSpriteGenderParam(s32 linkPlayer)
return retval; return retval;
} }
static u8 GetActivePartnerSpriteGenderParam(struct UnkStruct_URoom * arg0) static u8 GetActivePartnerSpriteGenderParam(struct UnkStruct_URoom * uroom)
{ {
u8 retVal = 0x80; u8 retVal = 0x80;
u8 i; u8 i;
for (i = 0; i < RFU_CHILD_MAX; i++) for (i = 0; i < RFU_CHILD_MAX; i++)
{ {
if (arg0->field_C->arr[i].active) if (uroom->field_C->arr[i].active)
{ {
retVal |= arg0->field_C->arr[i].gname_uname.gname.playerGender << 3; retVal |= uroom->field_C->arr[i].gname_uname.gname.playerGender << 3;
retVal |= arg0->field_C->arr[i].gname_uname.gname.unk_00.playerTrainerId[0] & 7; retVal |= uroom->field_C->arr[i].gname_uname.gname.unk_00.playerTrainerId[0] & 7;
break; break;
} }
} }
@@ -4681,7 +4681,7 @@ static u8 GetActivePartnerSpriteGenderParam(struct UnkStruct_URoom * arg0)
return retVal; return retVal;
} }
static void ViewURoomPartnerTrainerCard(u8 *unused, struct UnkStruct_URoom * arg1, bool8 arg2) static void ViewURoomPartnerTrainerCard(u8 *unused, struct UnkStruct_URoom * uroom, bool8 parent_child)
{ {
struct TrainerCard * trainerCard = &gTrainerCards[GetMultiplayerId() ^ 1]; struct TrainerCard * trainerCard = &gTrainerCards[GetMultiplayerId() ^ 1];
s32 i; s32 i;
@@ -4689,61 +4689,61 @@ static void ViewURoomPartnerTrainerCard(u8 *unused, struct UnkStruct_URoom * arg
DynamicPlaceholderTextUtil_Reset(); DynamicPlaceholderTextUtil_Reset();
StringCopy(arg1->trainerCardStrbufs[0], gTrainerClassNames[sub_80447F0()]); StringCopy(uroom->trainerCardStrbufs[0], gTrainerClassNames[sub_80447F0()]);
DynamicPlaceholderTextUtil_SetPlaceholderPtr(0, arg1->trainerCardStrbufs[0]); DynamicPlaceholderTextUtil_SetPlaceholderPtr(0, uroom->trainerCardStrbufs[0]);
DynamicPlaceholderTextUtil_SetPlaceholderPtr(1, trainerCard->playerName); DynamicPlaceholderTextUtil_SetPlaceholderPtr(1, trainerCard->playerName);
StringCopy(arg1->field_174, gUnknown_84594B0[trainerCard->stars]); StringCopy(uroom->field_174, gUnknown_84594B0[trainerCard->stars]);
DynamicPlaceholderTextUtil_SetPlaceholderPtr(2, arg1->field_174); DynamicPlaceholderTextUtil_SetPlaceholderPtr(2, uroom->field_174);
ConvertIntToDecimalStringN(arg1->trainerCardStrbufs[2], trainerCard->caughtMonsCount, STR_CONV_MODE_LEFT_ALIGN, 3); ConvertIntToDecimalStringN(uroom->trainerCardStrbufs[2], trainerCard->caughtMonsCount, STR_CONV_MODE_LEFT_ALIGN, 3);
DynamicPlaceholderTextUtil_SetPlaceholderPtr(3, arg1->trainerCardStrbufs[2]); DynamicPlaceholderTextUtil_SetPlaceholderPtr(3, uroom->trainerCardStrbufs[2]);
ConvertIntToDecimalStringN(arg1->trainerCardStrbufs[3], trainerCard->playTimeHours, STR_CONV_MODE_LEFT_ALIGN, 3); ConvertIntToDecimalStringN(uroom->trainerCardStrbufs[3], trainerCard->playTimeHours, STR_CONV_MODE_LEFT_ALIGN, 3);
ConvertIntToDecimalStringN(arg1->trainerCardStrbufs[4], trainerCard->playTimeMinutes, STR_CONV_MODE_LEADING_ZEROS, 2); ConvertIntToDecimalStringN(uroom->trainerCardStrbufs[4], trainerCard->playTimeMinutes, STR_CONV_MODE_LEADING_ZEROS, 2);
DynamicPlaceholderTextUtil_SetPlaceholderPtr(4, arg1->trainerCardStrbufs[3]); DynamicPlaceholderTextUtil_SetPlaceholderPtr(4, uroom->trainerCardStrbufs[3]);
DynamicPlaceholderTextUtil_SetPlaceholderPtr(5, arg1->trainerCardStrbufs[4]); DynamicPlaceholderTextUtil_SetPlaceholderPtr(5, uroom->trainerCardStrbufs[4]);
DynamicPlaceholderTextUtil_ExpandPlaceholders(arg1->field_1A4, gUnknown_84594C4); DynamicPlaceholderTextUtil_ExpandPlaceholders(uroom->field_1A4, gUnknown_84594C4);
StringCopy(gStringVar4, arg1->field_1A4); StringCopy(gStringVar4, uroom->field_1A4);
n = trainerCard->linkBattleWins; n = trainerCard->linkBattleWins;
if (n > 9999) if (n > 9999)
{ {
n = 9999; n = 9999;
} }
ConvertIntToDecimalStringN(arg1->trainerCardStrbufs[0], n, STR_CONV_MODE_LEFT_ALIGN, 4); ConvertIntToDecimalStringN(uroom->trainerCardStrbufs[0], n, STR_CONV_MODE_LEFT_ALIGN, 4);
DynamicPlaceholderTextUtil_SetPlaceholderPtr(0, arg1->trainerCardStrbufs[0]); DynamicPlaceholderTextUtil_SetPlaceholderPtr(0, uroom->trainerCardStrbufs[0]);
n = trainerCard->linkBattleLosses; n = trainerCard->linkBattleLosses;
if (n > 9999) if (n > 9999)
{ {
n = 9999; n = 9999;
} }
ConvertIntToDecimalStringN(arg1->trainerCardStrbufs[1], n, STR_CONV_MODE_LEFT_ALIGN, 4); ConvertIntToDecimalStringN(uroom->trainerCardStrbufs[1], n, STR_CONV_MODE_LEFT_ALIGN, 4);
DynamicPlaceholderTextUtil_SetPlaceholderPtr(2, arg1->trainerCardStrbufs[1]); DynamicPlaceholderTextUtil_SetPlaceholderPtr(2, uroom->trainerCardStrbufs[1]);
ConvertIntToDecimalStringN(arg1->trainerCardStrbufs[2], trainerCard->pokemonTrades, STR_CONV_MODE_LEFT_ALIGN, 5); ConvertIntToDecimalStringN(uroom->trainerCardStrbufs[2], trainerCard->pokemonTrades, STR_CONV_MODE_LEFT_ALIGN, 5);
DynamicPlaceholderTextUtil_SetPlaceholderPtr(3, arg1->trainerCardStrbufs[2]); DynamicPlaceholderTextUtil_SetPlaceholderPtr(3, uroom->trainerCardStrbufs[2]);
for (i = 0; i < 4; i++) for (i = 0; i < 4; i++)
{ {
CopyEasyChatWord(arg1->trainerCardStrbufs[i + 3], trainerCard->var_28[i]); CopyEasyChatWord(uroom->trainerCardStrbufs[i + 3], trainerCard->var_28[i]);
DynamicPlaceholderTextUtil_SetPlaceholderPtr(i + 4, arg1->trainerCardStrbufs[i + 3]); DynamicPlaceholderTextUtil_SetPlaceholderPtr(i + 4, uroom->trainerCardStrbufs[i + 3]);
} }
DynamicPlaceholderTextUtil_ExpandPlaceholders(arg1->field_1A4, gUnknown_8459504); DynamicPlaceholderTextUtil_ExpandPlaceholders(uroom->field_1A4, gUnknown_8459504);
StringAppend(gStringVar4, arg1->field_1A4); StringAppend(gStringVar4, uroom->field_1A4);
if (arg2 == TRUE) if (parent_child == MODE_PARENT)
{ {
DynamicPlaceholderTextUtil_ExpandPlaceholders(arg1->field_1A4, gUnknown_8459588); DynamicPlaceholderTextUtil_ExpandPlaceholders(uroom->field_1A4, gUnknown_8459588);
StringAppend(gStringVar4, arg1->field_1A4); StringAppend(gStringVar4, uroom->field_1A4);
} }
else if (arg2 == FALSE) else if (parent_child == MODE_CHILD)
{ {
DynamicPlaceholderTextUtil_ExpandPlaceholders(arg1->field_1A4, gUnknown_8459580[trainerCard->gender]); DynamicPlaceholderTextUtil_ExpandPlaceholders(uroom->field_1A4, gUnknown_8459580[trainerCard->gender]);
StringAppend(gStringVar4, arg1->field_1A4); StringAppend(gStringVar4, uroom->field_1A4);
} }
} }
+1 -1
View File
@@ -183,7 +183,7 @@ void CB2_UnionRoomBattle(void)
case 50: case 50:
if (!UpdatePaletteFade()) if (!UpdatePaletteFade())
{ {
sub_800AB9C(); PrepareSendLinkCmd2FFE_or_RfuCmd6600();
gMain.state++; gMain.state++;
} }
break; break;
+1
View File
@@ -525,6 +525,7 @@ const u8 *const gUnknown_84594B0[] = {
ALIGNED(4) const u8 gUnknown_84594C4[] = _("This is {SPECIAL_F7 0x00} {SPECIAL_F7 0x01}'s\nTRAINER CARD…\l{SPECIAL_F7 0x02}\pPOKéDEX: {SPECIAL_F7 0x03}\nTIME: {SPECIAL_F7 0x04}:{SPECIAL_F7 0x05}\p"); ALIGNED(4) const u8 gUnknown_84594C4[] = _("This is {SPECIAL_F7 0x00} {SPECIAL_F7 0x01}'s\nTRAINER CARD…\l{SPECIAL_F7 0x02}\pPOKéDEX: {SPECIAL_F7 0x03}\nTIME: {SPECIAL_F7 0x04}:{SPECIAL_F7 0x05}\p");
ALIGNED(4) const u8 gUnknown_8459504[] = _("BATTLES: {SPECIAL_F7 0x00} WINS {SPECIAL_F7 0x02} LOSSES\nTRADES: {SPECIAL_F7 0x03} TIMES\p“{SPECIAL_F7 0x04} {SPECIAL_F7 0x05}\n{SPECIAL_F7 0x06} {SPECIAL_F7 0x07}”\p"); ALIGNED(4) const u8 gUnknown_8459504[] = _("BATTLES: {SPECIAL_F7 0x00} WINS {SPECIAL_F7 0x02} LOSSES\nTRADES: {SPECIAL_F7 0x03} TIMES\p“{SPECIAL_F7 0x04} {SPECIAL_F7 0x05}\n{SPECIAL_F7 0x06} {SPECIAL_F7 0x07}”\p");
ALIGNED(4) const u8 gUnknown_8459544[] = _("{SPECIAL_F7 0x01}: Glad to have met you!{PAUSE 60}"); ALIGNED(4) const u8 gUnknown_8459544[] = _("{SPECIAL_F7 0x01}: Glad to have met you!{PAUSE 60}");
ALIGNED(4) const u8 gUnknown_8459564[] = _("{SPECIAL_F7 0x01}: Glad to meet you!{PAUSE 60}"); ALIGNED(4) const u8 gUnknown_8459564[] = _("{SPECIAL_F7 0x01}: Glad to meet you!{PAUSE 60}");