summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rwxr-xr-xasm/battle_tower.s4
-rw-r--r--asm/berry_blender.s14
-rw-r--r--asm/cable_club.s12
-rw-r--r--asm/contest_link_80FC4F4.s2
-rw-r--r--asm/link.s229
-rw-r--r--asm/link_rfu.s4
-rw-r--r--asm/record_mixing.s6
-rw-r--r--asm/rom4.s18
-rw-r--r--asm/rom6.s2
-rw-r--r--asm/rom_8011DC0.s2
-rw-r--r--asm/start_menu.s2
-rw-r--r--asm/trade.s28
-rw-r--r--asm/trainer_card.s2
-rw-r--r--include/link.h9
-rw-r--r--include/link_rfu.h24
-rw-r--r--src/battle_2.c25
-rw-r--r--src/battle_controller_player.c4
-rw-r--r--src/battle_controllers.c4
-rw-r--r--src/evolution_scene.c4
-rw-r--r--src/link.c119
-rw-r--r--src/main.c2
-rw-r--r--src/reshow_battle_screen.c2
-rw-r--r--sym_common.txt2
23 files changed, 207 insertions, 313 deletions
diff --git a/asm/battle_tower.s b/asm/battle_tower.s
index 122d9d27c..c21a706f4 100755
--- a/asm/battle_tower.s
+++ b/asm/battle_tower.s
@@ -5264,7 +5264,7 @@ _08164D14:
ldrb r0, [r0]
cmp r0, 0
beq _08164DB0
- ldr r0, =gLinkVSyncDisabled
+ ldr r0, =gSerialIsRFU
ldrb r0, [r0]
cmp r0, 0
bne _08164DB0
@@ -5302,7 +5302,7 @@ _08164DB6:
thumb_func_start sub_8164DCC
sub_8164DCC: @ 8164DCC
push {lr}
- ldr r0, =gLinkVSyncDisabled
+ ldr r0, =gSerialIsRFU
ldrb r0, [r0]
cmp r0, 0
beq _08164DDA
diff --git a/asm/berry_blender.s b/asm/berry_blender.s
index 6d18ab7cb..fc7e747b9 100644
--- a/asm/berry_blender.s
+++ b/asm/berry_blender.s
@@ -516,7 +516,7 @@ _0807FBBE:
ldrb r0, [r0]
cmp r0, 0
beq _0807FC14
- ldr r0, =gLinkVSyncDisabled
+ ldr r0, =gSerialIsRFU
ldrb r0, [r0]
cmp r0, 0
beq _0807FC14
@@ -1122,7 +1122,7 @@ _08080126:
bne _0808016A
b _080804F8
_0808016A:
- ldr r0, =gLinkVSyncDisabled
+ ldr r0, =gSerialIsRFU
ldrb r0, [r0]
cmp r0, 0
bne _08080174
@@ -3334,7 +3334,7 @@ sub_80814B0: @ 80814B0
ldrb r0, [r0]
cmp r0, 0
beq _080814E4
- ldr r0, =gLinkVSyncDisabled
+ ldr r0, =gSerialIsRFU
ldrb r0, [r0]
cmp r0, 0
beq _080814E4
@@ -4706,7 +4706,7 @@ sub_8081F94: @ 8081F94
ldrb r0, [r0]
cmp r0, 0
beq _08081FB8
- ldr r0, =gLinkVSyncDisabled
+ ldr r0, =gSerialIsRFU
ldrb r0, [r0]
cmp r0, 0
beq _08081FB8
@@ -4852,7 +4852,7 @@ _080820EC:
ldrb r0, [r0]
cmp r0, 0
beq _0808218C
- ldr r0, =gLinkVSyncDisabled
+ ldr r0, =gSerialIsRFU
ldrb r0, [r0]
cmp r0, 0
beq _0808218C
@@ -4968,7 +4968,7 @@ _080821D4:
ldrb r0, [r0]
cmp r0, 0
beq _08082254
- ldr r0, =gLinkVSyncDisabled
+ ldr r0, =gSerialIsRFU
ldrb r0, [r0]
cmp r0, 0
beq _08082254
@@ -6250,7 +6250,7 @@ sub_8082D28: @ 8082D28
lsls r0, 24
lsrs r1, r0, 24
_08082D3C:
- ldr r0, =gLinkVSyncDisabled
+ ldr r0, =gSerialIsRFU
ldrb r0, [r0]
cmp r0, 0
beq _08082DCC
diff --git a/asm/cable_club.s b/asm/cable_club.s
index 15ba76e9c..254272c4d 100644
--- a/asm/cable_club.s
+++ b/asm/cable_club.s
@@ -2172,7 +2172,7 @@ sub_80B360C: @ 80B360C
movs r5, 0x1
eors r0, r5
bl sub_813C2A0
- ldr r0, =gLinkVSyncDisabled
+ ldr r0, =gSerialIsRFU
ldrb r0, [r0]
cmp r0, 0
beq _080B36B2
@@ -2512,7 +2512,7 @@ _080B391C:
thumb_func_start sub_80B3924
sub_80B3924: @ 80B3924
push {lr}
- ldr r0, =gLinkVSyncDisabled
+ ldr r0, =gSerialIsRFU
ldrb r0, [r0]
cmp r0, 0
beq _080B3940
@@ -2552,7 +2552,7 @@ sub_80B3968: @ 80B3968
ldr r2, =0x00002211
adds r0, r2, 0
strh r0, [r1]
- ldr r0, =gLinkVSyncDisabled
+ ldr r0, =gSerialIsRFU
ldrb r0, [r0]
cmp r0, 0
beq _080B3994
@@ -2661,7 +2661,7 @@ _080B3A62:
ldrb r0, [r0]
cmp r0, 0
beq _080B3AA6
- ldr r0, =gLinkVSyncDisabled
+ ldr r0, =gSerialIsRFU
ldrb r0, [r0]
cmp r0, 0
bne _080B3AA0
@@ -2752,7 +2752,7 @@ _080B3B20:
beq _080B3B9E
b _080B3BB8
_080B3B2A:
- ldr r0, =gLinkVSyncDisabled
+ ldr r0, =gSerialIsRFU
ldrb r0, [r0]
cmp r0, 0
beq _080B3B40
@@ -2825,7 +2825,7 @@ _080B3BB8:
thumb_func_start sub_80B3BC4
sub_80B3BC4: @ 80B3BC4
push {lr}
- ldr r0, =gLinkVSyncDisabled
+ ldr r0, =gSerialIsRFU
ldrb r0, [r0]
cmp r0, 0
bne _080B3BD6
diff --git a/asm/contest_link_80FC4F4.s b/asm/contest_link_80FC4F4.s
index f1e2019da..953f69479 100644
--- a/asm/contest_link_80FC4F4.s
+++ b/asm/contest_link_80FC4F4.s
@@ -147,7 +147,7 @@ sub_80FC5DC: @ 80FC5DC
ldr r1, =gUnknown_02039F2A
movs r0, 0x1
strb r0, [r1]
- ldr r0, =gLinkVSyncDisabled
+ ldr r0, =gSerialIsRFU
ldrb r0, [r0]
cmp r0, 0x1
bne _080FC60C
diff --git a/asm/link.s b/asm/link.s
index 0f1c1cb68..5e5349f63 100644
--- a/asm/link.s
+++ b/asm/link.s
@@ -5,207 +5,10 @@
.text
- thumb_func_start sub_800A44C
-sub_800A44C: @ 800A44C
- ldr r0, =gUnknown_020223C0
- ldr r0, [r0]
- bx lr
- .pool
- thumb_func_end sub_800A44C
-
- thumb_func_start sub_800A458
-sub_800A458: @ 800A458
- push {lr}
- ldr r0, =0x0000aaaa
- bl sub_8009D90
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_800A458
-
- thumb_func_start GetMultiplayerId
-GetMultiplayerId: @ 800A468
- push {lr}
- ldr r0, =gLinkVSyncDisabled
- ldrb r0, [r0]
- cmp r0, 0x1
- beq _0800A484
- ldr r0, =0x04000128
- ldr r0, [r0]
- lsls r0, 26
- lsrs r0, 30
- b _0800A48C
- .pool
-_0800A484:
- bl rfu_get_multiplayer_id
- lsls r0, 24
- lsrs r0, 24
-_0800A48C:
- pop {r1}
- bx r1
- thumb_func_end GetMultiplayerId
-
- thumb_func_start bitmask_all_link_players_but_self
-bitmask_all_link_players_but_self: @ 800A490
- push {lr}
- bl GetMultiplayerId
- adds r1, r0, 0
- lsls r1, 24
- lsrs r1, 24
- movs r0, 0x1
- lsls r0, r1
- movs r1, 0xF
- eors r0, r1
- lsls r0, 24
- lsrs r0, 24
- pop {r1}
- bx r1
- thumb_func_end bitmask_all_link_players_but_self
-
- thumb_func_start SendBlock
-SendBlock: @ 800A4AC
- push {lr}
- adds r3, r1, 0
- lsls r2, 16
- lsrs r1, r2, 16
- ldr r0, =gLinkVSyncDisabled
- ldrb r0, [r0]
- cmp r0, 0x1
- beq _0800A4C8
- adds r0, r3, 0
- bl sub_800A2F4
- b _0800A4CE
- .pool
-_0800A4C8:
- adds r0, r3, 0
- bl sub_800FE84
-_0800A4CE:
- lsls r0, 24
- lsrs r0, 24
- pop {r1}
- bx r1
- thumb_func_end SendBlock
-
- thumb_func_start sub_800A4D8
-sub_800A4D8: @ 800A4D8
- push {lr}
- lsls r0, 24
- lsrs r1, r0, 24
- adds r2, r1, 0
- ldr r0, =gLinkVSyncDisabled
- ldrb r0, [r0]
- cmp r0, 0x1
- bne _0800A4F8
- adds r0, r1, 0
- bl sub_8010100
- lsls r0, 24
- lsrs r0, 24
- b _0800A514
- .pool
-_0800A4F8:
- ldr r0, =gUnknown_03003140
- ldr r0, [r0]
- cmp r0, 0
- beq _0800A508
- movs r0, 0
- b _0800A514
- .pool
-_0800A508:
- ldr r0, =gUnknown_03003150
- strb r2, [r0]
- ldr r0, =0x0000cccc
- bl sub_8009D90
- movs r0, 0x1
-_0800A514:
- pop {r1}
- bx r1
- .pool
- thumb_func_end sub_800A4D8
-
- thumb_func_start sub_800A520
-sub_800A520: @ 800A520
- push {lr}
- ldr r0, =gLinkVSyncDisabled
- ldrb r0, [r0]
- cmp r0, 0x1
- bne _0800A538
- bl sub_8010500
- lsls r0, 24
- lsrs r0, 24
- b _0800A546
- .pool
-_0800A538:
- movs r1, 0
- ldr r0, =gUnknown_03003140
- ldr r0, [r0]
- cmp r0, 0
- bne _0800A544
- movs r1, 0x1
-_0800A544:
- adds r0, r1, 0
-_0800A546:
- pop {r1}
- bx r1
- .pool
- thumb_func_end sub_800A520
-
- thumb_func_start GetBlockReceivedStatus
-GetBlockReceivedStatus: @ 800A550
- push {lr}
- ldr r0, =gLinkVSyncDisabled
- ldrb r0, [r0]
- cmp r0, 0x1
- beq _0800A57C
- ldr r2, =gUnknown_0300307C
- ldrb r0, [r2, 0x3]
- lsls r0, 3
- ldrb r1, [r2, 0x2]
- lsls r1, 2
- orrs r0, r1
- ldrb r1, [r2, 0x1]
- lsls r1, 1
- orrs r0, r1
- ldrb r1, [r2]
- orrs r0, r1
- b _0800A580
- .pool
-_0800A57C:
- bl sub_800FCD8
-_0800A580:
- lsls r0, 24
- lsrs r0, 24
- pop {r1}
- bx r1
- thumb_func_end GetBlockReceivedStatus
-
- thumb_func_start sub_800A588
-sub_800A588: @ 800A588
- push {lr}
- lsls r0, 24
- lsrs r1, r0, 24
- ldr r0, =gLinkVSyncDisabled
- ldrb r0, [r0]
- cmp r0, 0x1
- bne _0800A5A4
- adds r0, r1, 0
- bl sub_800F6FC
- b _0800A5AC
- .pool
-_0800A5A4:
- ldr r0, =gUnknown_0300307C
- adds r0, r1, r0
- movs r1, 0x1
- strb r1, [r0]
-_0800A5AC:
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_800A588
-
thumb_func_start ResetBlockReceivedFlags
ResetBlockReceivedFlags: @ 800A5B4
push {r4,lr}
- ldr r0, =gLinkVSyncDisabled
+ ldr r0, =gSerialIsRFU
ldrb r0, [r0]
cmp r0, 0x1
bne _0800A5D4
@@ -240,7 +43,7 @@ ResetBlockReceivedFlag: @ 800A5EC
push {lr}
lsls r0, 24
lsrs r1, r0, 24
- ldr r0, =gLinkVSyncDisabled
+ ldr r0, =gSerialIsRFU
ldrb r0, [r0]
cmp r0, 0x1
bne _0800A608
@@ -986,7 +789,7 @@ sub_800ABAC: @ 800ABAC
thumb_func_start sub_800ABBC
sub_800ABBC: @ 800ABBC
push {lr}
- ldr r0, =gLinkVSyncDisabled
+ ldr r0, =gSerialIsRFU
ldrb r0, [r0]
cmp r0, 0
bne _0800ABDC
@@ -1019,7 +822,7 @@ sub_800ABF4: @ 800ABF4
push {lr}
lsls r0, 16
lsrs r3, r0, 16
- ldr r0, =gLinkVSyncDisabled
+ ldr r0, =gSerialIsRFU
ldrb r0, [r0]
cmp r0, 0x1
bne _0800AC0C
@@ -1046,7 +849,7 @@ _0800AC20:
thumb_func_start sub_800AC34
sub_800AC34: @ 800AC34
push {lr}
- ldr r0, =gLinkVSyncDisabled
+ ldr r0, =gSerialIsRFU
ldrb r0, [r0]
cmp r0, 0x1
bne _0800AC48
@@ -1144,7 +947,7 @@ _0800ACF4:
thumb_func_start sub_800AD10
sub_800AD10: @ 800AD10
push {lr}
- ldr r0, =gLinkVSyncDisabled
+ ldr r0, =gSerialIsRFU
ldrb r0, [r0]
cmp r0, 0x1
bne _0800AD24
@@ -1248,7 +1051,7 @@ _0800ADDA:
thumb_func_start sub_800ADF8
sub_800ADF8: @ 800ADF8
push {lr}
- ldr r0, =gLinkVSyncDisabled
+ ldr r0, =gSerialIsRFU
ldrb r0, [r0]
cmp r0, 0x1
bne _0800AE0C
@@ -1415,7 +1218,7 @@ c2_800ACD4: @ 800AF30
bl FillPalette
bl ResetTasks
bl remove_some_task
- ldr r1, =gLinkVSyncDisabled
+ ldr r1, =gSerialIsRFU
ldrb r0, [r1]
cmp r0, 0
beq _0800AF8C
@@ -1669,7 +1472,7 @@ _0800B20C:
bl PlaySE
b _0800B260
_0800B214:
- ldr r0, =gLinkVSyncDisabled
+ ldr r0, =gSerialIsRFU
ldrb r0, [r0]
cmp r0, 0x2
bne _0800B244
@@ -1708,7 +1511,7 @@ _0800B260:
ldrb r1, [r1]
cmp r1, 0xA0
bne _0800B2D0
- ldr r4, =gLinkVSyncDisabled
+ ldr r4, =gSerialIsRFU
ldrb r2, [r4]
cmp r2, 0x1
bne _0800B2A8
@@ -1910,7 +1713,7 @@ _0800B3F4:
thumb_func_start HandleLinkConnection
HandleLinkConnection: @ 800B40C
push {r4,r5,lr}
- ldr r0, =gLinkVSyncDisabled
+ ldr r0, =gSerialIsRFU
ldrb r0, [r0]
cmp r0, 0
bne _0800B45C
@@ -1965,7 +1768,7 @@ sub_800B488: @ 800B488
ldrb r0, [r0]
cmp r0, 0
bne _0800B498
- ldr r1, =gLinkVSyncDisabled
+ ldr r1, =gSerialIsRFU
movs r0, 0x1
strb r0, [r1]
_0800B498:
@@ -1981,7 +1784,7 @@ sub_800B4A4: @ 800B4A4
ldrb r1, [r0]
cmp r1, 0
bne _0800B4B2
- ldr r0, =gLinkVSyncDisabled
+ ldr r0, =gSerialIsRFU
strb r1, [r0]
_0800B4B2:
pop {r0}
@@ -1996,7 +1799,7 @@ sub_800B4C0: @ 800B4C0
ldrb r1, [r0]
cmp r1, 0
bne _0800B4CE
- ldr r0, =gLinkVSyncDisabled
+ ldr r0, =gSerialIsRFU
strb r1, [r0]
_0800B4CE:
pop {r0}
@@ -2007,7 +1810,7 @@ _0800B4CE:
thumb_func_start sub_800B4DC
sub_800B4DC: @ 800B4DC
push {lr}
- ldr r0, =gLinkVSyncDisabled
+ ldr r0, =gSerialIsRFU
ldrb r0, [r0]
cmp r0, 0
bne _0800B4FC
@@ -2041,7 +1844,7 @@ _0800B514:
thumb_func_start sub_800B518
sub_800B518: @ 800B518
- ldr r0, =gLinkVSyncDisabled
+ ldr r0, =gSerialIsRFU
ldrb r0, [r0]
bx lr
.pool
diff --git a/asm/link_rfu.s b/asm/link_rfu.s
index d5d22a8db..a2b90dc7a 100644
--- a/asm/link_rfu.s
+++ b/asm/link_rfu.s
@@ -4737,7 +4737,7 @@ sub_800E3A8: @ 800E3A8
mov r5, r8
push {r5-r7}
sub sp, 0x20
- ldr r0, =gLinkVSyncDisabled
+ ldr r0, =gSerialIsRFU
ldrb r0, [r0]
cmp r0, 0
bne _0800E3BE
@@ -9820,7 +9820,7 @@ sub_8010DB4: @ 8010DB4
cmp r0, 0
beq _08010DE4
_08010DDE:
- ldr r1, =gLinkVSyncDisabled
+ ldr r1, =gSerialIsRFU
movs r0, 0x2
strb r0, [r1]
_08010DE4:
diff --git a/asm/record_mixing.s b/asm/record_mixing.s
index 7e9ea30d1..8a1f41126 100644
--- a/asm/record_mixing.s
+++ b/asm/record_mixing.s
@@ -621,7 +621,7 @@ _080E726C:
bne _080E730A
movs r0, 0x4
strh r0, [r5]
- ldr r0, =gLinkVSyncDisabled
+ ldr r0, =gSerialIsRFU
ldrb r0, [r0]
cmp r0, 0
bne _080E7296
@@ -664,7 +664,7 @@ _080E72C0:
ldr r0, [r0]
bl Free
bl sub_808729C
- ldr r0, =gLinkVSyncDisabled
+ ldr r0, =gSerialIsRFU
ldrb r0, [r0]
cmp r0, 0
beq _080E72F8
@@ -2393,7 +2393,7 @@ _080E80C0:
lsls r0, 24
cmp r0, 0
bne _080E810A
- ldr r0, =gLinkVSyncDisabled
+ ldr r0, =gSerialIsRFU
ldrb r0, [r0]
cmp r0, 0
beq _080E80E8
diff --git a/asm/rom4.s b/asm/rom4.s
index fdb8d7a60..a7e98d013 100644
--- a/asm/rom4.s
+++ b/asm/rom4.s
@@ -3395,7 +3395,7 @@ c2_8056854: @ 8086140
ldr r0, =c1_link_related
bl set_callback1
bl sub_8086C2C
- ldr r0, =gLinkVSyncDisabled
+ ldr r0, =gSerialIsRFU
ldrb r0, [r0]
cmp r0, 0
beq _08086174
@@ -3586,7 +3586,7 @@ sub_808631C: @ 808631C
bne _0808632E
bl sub_80097E8
_0808632E:
- ldr r0, =gLinkVSyncDisabled
+ ldr r0, =gSerialIsRFU
ldrb r0, [r0]
cmp r0, 0
beq _08086348
@@ -3768,7 +3768,7 @@ _080864DA:
bl cur_mapheader_run_tileset_funcs_after_some_cpuset
b _08086506
_080864E0:
- ldr r0, =gLinkVSyncDisabled
+ ldr r0, =gSerialIsRFU
ldrb r0, [r0]
cmp r0, 0
beq _08086506
@@ -4056,7 +4056,7 @@ _08086766:
bl cur_mapheader_run_tileset_funcs_after_some_cpuset
b _08086792
_0808676C:
- ldr r0, =gLinkVSyncDisabled
+ ldr r0, =gSerialIsRFU
ldrb r0, [r0]
cmp r0, 0
beq _08086792
@@ -4565,7 +4565,7 @@ _08086BCA:
thumb_func_start c1_link_related
c1_link_related: @ 8086BD8
push {r4,lr}
- ldr r0, =gLinkVSyncDisabled
+ ldr r0, =gSerialIsRFU
ldrb r0, [r0]
cmp r0, 0
beq _08086BF2
@@ -4631,7 +4631,7 @@ c1_link_related_func_set: @ 8086C50
thumb_func_start sub_8086C64
sub_8086C64: @ 8086C64
push {lr}
- ldr r0, =gLinkVSyncDisabled
+ ldr r0, =gSerialIsRFU
ldrb r0, [r0]
cmp r0, 0
beq _08086C82
@@ -5029,7 +5029,7 @@ _08086FC0:
movs r0, 0x11
strh r0, [r1]
_08086FC6:
- ldr r0, =gLinkVSyncDisabled
+ ldr r0, =gSerialIsRFU
ldrb r0, [r0]
cmp r0, 0
beq _08086FFC
@@ -5926,7 +5926,7 @@ _08087666:
thumb_func_start sub_808766C
sub_808766C: @ 808766C
push {lr}
- ldr r0, =gLinkVSyncDisabled
+ ldr r0, =gSerialIsRFU
ldrb r0, [r0]
cmp r0, 0
bne _08087688
@@ -5946,7 +5946,7 @@ _0808768A:
thumb_func_start sub_8087690
sub_8087690: @ 8087690
push {lr}
- ldr r0, =gLinkVSyncDisabled
+ ldr r0, =gSerialIsRFU
ldrb r0, [r0]
cmp r0, 0
bne _080876B0
diff --git a/asm/rom6.s b/asm/rom6.s
index 87b780ba5..20058db9d 100644
--- a/asm/rom6.s
+++ b/asm/rom6.s
@@ -11823,7 +11823,7 @@ _0813B790:
b _0813B7C6
.pool
_0813B7A8:
- ldr r0, =gLinkVSyncDisabled
+ ldr r0, =gSerialIsRFU
ldrb r0, [r0]
cmp r0, 0
bne _0813B7B4
diff --git a/asm/rom_8011DC0.s b/asm/rom_8011DC0.s
index 8185238bd..fc70f498a 100644
--- a/asm/rom_8011DC0.s
+++ b/asm/rom_8011DC0.s
@@ -28592,7 +28592,7 @@ sub_8020C70: @ 8020C70
ldrb r0, [r0]
cmp r0, 0
beq _08020C8E
- ldr r0, =gLinkVSyncDisabled
+ ldr r0, =gSerialIsRFU
ldrb r0, [r0]
cmp r0, 0
bne _08020CAC
diff --git a/asm/start_menu.s b/asm/start_menu.s
index 3c8c4c3cf..0da38ba4b 100644
--- a/asm/start_menu.s
+++ b/asm/start_menu.s
@@ -1712,7 +1712,7 @@ _080A05AC:
movs r2, 0x10
movs r3, 0
bl BeginNormalPaletteFade
- ldr r0, =gLinkVSyncDisabled
+ ldr r0, =gSerialIsRFU
ldrb r0, [r0]
cmp r0, 0
beq _080A0620
diff --git a/asm/trade.s b/asm/trade.s
index ebb624d90..61a814421 100644
--- a/asm/trade.s
+++ b/asm/trade.s
@@ -135,7 +135,7 @@ _08077258:
thumb_func_start sub_8077260
sub_8077260: @ 8077260
push {lr}
- ldr r0, =gLinkVSyncDisabled
+ ldr r0, =gSerialIsRFU
ldrb r0, [r0]
cmp r0, 0
beq _08077280
@@ -409,7 +409,7 @@ _080774B2:
ldr r0, [r0]
adds r0, 0xA8
strb r2, [r0]
- ldr r0, =gLinkVSyncDisabled
+ ldr r0, =gSerialIsRFU
ldrb r0, [r0]
cmp r0, 0
beq _08077528
@@ -531,7 +531,7 @@ _08077600:
ldr r0, [r0]
adds r0, 0xA8
strb r2, [r0]
- ldr r0, =gLinkVSyncDisabled
+ ldr r0, =gSerialIsRFU
ldrb r0, [r0]
cmp r0, 0
bne _0807762A
@@ -543,7 +543,7 @@ _0807762A:
b _08077B46
.pool
_08077648:
- ldr r0, =gLinkVSyncDisabled
+ ldr r0, =gSerialIsRFU
ldrb r0, [r0]
cmp r0, 0
beq _08077680
@@ -1182,7 +1182,7 @@ _08077C28:
b _080780D8
.pool
_08077C3C:
- ldr r0, =gLinkVSyncDisabled
+ ldr r0, =gSerialIsRFU
ldrb r0, [r0]
cmp r0, 0
beq _08077C50
@@ -1780,7 +1780,7 @@ sub_807816C: @ 807816C
adds r0, 0x7E
ldrb r0, [r0]
strb r0, [r1, 0x1]
- ldr r0, =gLinkVSyncDisabled
+ ldr r0, =gSerialIsRFU
ldrb r0, [r0]
cmp r0, 0
beq _080781B4
@@ -1809,7 +1809,7 @@ sub_80781C8: @ 80781C8
ldr r5, =gMain
ldr r0, =sub_80773AC
str r0, [r5, 0x8]
- ldr r0, =gLinkVSyncDisabled
+ ldr r0, =gSerialIsRFU
ldrb r0, [r0]
cmp r0, 0
beq _08078220
@@ -4004,7 +4004,7 @@ sub_8079490: @ 8079490
ands r0, r1
cmp r0, 0
bne _080794C4
- ldr r0, =gLinkVSyncDisabled
+ ldr r0, =gSerialIsRFU
ldrb r0, [r0]
cmp r0, 0
beq _080794B4
@@ -4029,7 +4029,7 @@ _080794C4:
thumb_func_start sub_80794CC
sub_80794CC: @ 80794CC
push {lr}
- ldr r0, =gLinkVSyncDisabled
+ ldr r0, =gSerialIsRFU
ldrb r0, [r0]
cmp r0, 0
beq _08079518
@@ -7507,7 +7507,7 @@ _0807B0F0:
ands r0, r1
cmp r0, 0
bne _0807B116
- ldr r0, =gLinkVSyncDisabled
+ ldr r0, =gSerialIsRFU
ldrb r0, [r0]
cmp r0, 0
beq _0807B110
@@ -13831,7 +13831,7 @@ _0807EDC0:
movs r0, 0x15
bl IncrementGameStat
_0807EDCE:
- ldr r0, =gLinkVSyncDisabled
+ ldr r0, =gSerialIsRFU
ldrb r0, [r0]
cmp r0, 0
beq _0807EDF6
@@ -14044,7 +14044,7 @@ _0807EFA4:
lsrs r0, 24
cmp r0, 0x1
bne _0807F03A
- ldr r0, =gLinkVSyncDisabled
+ ldr r0, =gSerialIsRFU
ldrb r0, [r0]
cmp r0, 0
beq _0807EFD8
@@ -14071,7 +14071,7 @@ _0807EFE4:
b _0807F03A
.pool
_0807EFF0:
- ldr r0, =gLinkVSyncDisabled
+ ldr r0, =gSerialIsRFU
ldrb r0, [r0]
cmp r0, 0
beq _0807F028
@@ -14141,7 +14141,7 @@ c2_080543C4: @ 807F068
ldr r0, [r4]
bl Free
str r5, [r4]
- ldr r0, =gLinkVSyncDisabled
+ ldr r0, =gSerialIsRFU
ldrb r0, [r0]
cmp r0, 0
beq _0807F0B6
diff --git a/asm/trainer_card.s b/asm/trainer_card.s
index bee1f4f7f..4f1183477 100644
--- a/asm/trainer_card.s
+++ b/asm/trainer_card.s
@@ -187,7 +187,7 @@ _080C2830:
bl sub_80C4630
b _080C28D4
_080C2836:
- ldr r0, =gLinkVSyncDisabled
+ ldr r0, =gSerialIsRFU
ldrb r0, [r0]
cmp r0, 0x1
bne _080C2852
diff --git a/include/link.h b/include/link.h
index 9c9793249..8ec0431aa 100644
--- a/include/link.h
+++ b/include/link.h
@@ -29,6 +29,8 @@
#define MASTER_HANDSHAKE 0x8FFF
#define SLAVE_HANDSHAKE 0xB9A0
+#define SIO_MULTI_CNT ((volatile struct SioMultiCnt *)REG_ADDR_SIOCNT)
+
enum
{
LINK_STATE_START0,
@@ -142,7 +144,7 @@ extern u8 gShouldAdvanceLinkState;
extern struct LinkPlayer gLinkPlayers[];
extern u16 word_3002910[];
extern bool8 gReceivedRemoteLinkPlayers;
-extern bool8 gLinkVSyncDisabled;
+extern bool8 gSerialIsRFU;
void Task_DestroySelf(u8);
void OpenLink(void);
@@ -162,7 +164,7 @@ void sub_8007E24(void);
void sub_8007E4C(void);
u8 GetMultiplayerId(void);
u8 bitmask_all_link_players_but_self(void);
-bool8 SendBlock(u8, void *, u16);
+bool8 SendBlock(u8, const void *, u16);
u8 GetBlockReceivedStatus(void);
void ResetBlockReceivedFlags(void);
void ResetBlockReceivedFlag(u8);
@@ -183,7 +185,6 @@ u8 GetLinkPlayerCount(void);
void sub_800E0E8(void);
bool8 sub_800A520(void);
-bool8 sub_8010500(void);
void sub_800DFB4(u8, u8);
void sub_800ADF8(void);
void sub_800B488(void);
@@ -215,7 +216,7 @@ extern u8 gUnknown_030030EC[4];
extern u8 gUnknown_030030F0[4];
extern u16 gUnknown_030030F4;
extern u8 gUnknown_030030F8;
-extern bool8 gLinkVSyncDisabled;
+extern bool8 gSerialIsRFU;
extern bool8 gUnknown_03003100;
extern u16 gUnknown_03003110[8];
extern u8 gUnknown_03003120;
diff --git a/include/link_rfu.h b/include/link_rfu.h
new file mode 100644
index 000000000..ff71c65aa
--- /dev/null
+++ b/include/link_rfu.h
@@ -0,0 +1,24 @@
+#ifndef GUARD_LINK_RFU_H
+#define GUARD_LINK_RFU_H
+
+// Exported type declarations
+
+// Exported RAM declarations
+
+// Exported ROM declarations
+u32 sub_800BEC0(void);
+void sub_800E700(void);
+void sub_800EDD4(void);
+bool32 sub_800F7E4(void);
+void sub_800F804(void);
+void sub_800F850(void);
+void Rfu_set_zero(void);
+u8 sub_80104F4(void);
+u8 rfu_get_multiplayer_id(void);
+bool32 sub_800FE84(const void *src, size_t size);
+bool8 sub_8010100(u8 a0);
+bool8 sub_8010500(void);
+u8 sub_800FCD8(void);
+void sub_800F6FC(u8 who);
+
+#endif //GUARD_LINK_RFU_H
diff --git a/src/battle_2.c b/src/battle_2.c
index 24b43bdbd..a69a16dac 100644
--- a/src/battle_2.c
+++ b/src/battle_2.c
@@ -17,6 +17,7 @@
#include "items.h"
#include "hold_effects.h"
#include "link.h"
+#include "link_rfu.h"
#include "bg.h"
#include "dma3.h"
#include "string_util.h"
@@ -734,7 +735,7 @@ static void CB2_HandleStartBattle(void)
sub_805EF14();
gBattleCommunication[MULTIUSE_STATE] = 1;
}
- if (gLinkVSyncDisabled)
+ if (gSerialIsRFU)
sub_800E0E8();
break;
case 1:
@@ -758,7 +759,7 @@ static void CB2_HandleStartBattle(void)
SendBlock(bitmask_all_link_players_but_self(), &gBattleStruct->field_180, 32);
gBattleCommunication[MULTIUSE_STATE] = 2;
}
- if (gLinkVSyncDisabled)
+ if (gSerialIsRFU)
sub_800DFB4(0, 0);
}
}
@@ -929,7 +930,7 @@ static void CB2_HandleStartMultiPartnerBattle(void)
sub_805EF14();
gBattleCommunication[MULTIUSE_STATE] = 1;
}
- if (gLinkVSyncDisabled)
+ if (gSerialIsRFU)
sub_800E0E8();
// fall through
case 1:
@@ -960,7 +961,7 @@ static void CB2_HandleStartMultiPartnerBattle(void)
gBattleCommunication[MULTIUSE_STATE] = 2;
}
- if (gLinkVSyncDisabled)
+ if (gSerialIsRFU)
sub_800DFB4(0, 0);
}
}
@@ -1237,14 +1238,14 @@ static void CB2_PreInitMultiBattle(void)
if (sub_800A520() && !gPaletteFade.active)
{
gBattleCommunication[MULTIUSE_STATE]++;
- if (gLinkVSyncDisabled)
+ if (gSerialIsRFU)
sub_800ADF8();
else
sub_800AC34();
}
break;
case 3:
- if (gLinkVSyncDisabled)
+ if (gSerialIsRFU)
{
if (sub_8010500())
{
@@ -1329,7 +1330,7 @@ static void CB2_HandleStartMultiBattle(void)
sub_805EF14();
gBattleCommunication[MULTIUSE_STATE] = 1;
}
- if (gLinkVSyncDisabled)
+ if (gSerialIsRFU)
sub_800E0E8();
break;
case 1:
@@ -1347,7 +1348,7 @@ static void CB2_HandleStartMultiBattle(void)
SendBlock(bitmask_all_link_players_but_self(), &gBattleStruct->field_180, 32);
gBattleCommunication[MULTIUSE_STATE]++;
}
- if (gLinkVSyncDisabled)
+ if (gSerialIsRFU)
sub_800DFB4(0, 0);
}
}
@@ -2132,12 +2133,12 @@ static void sub_8038F34(void)
}
break;
case 8:
- if (!gLinkVSyncDisabled)
+ if (!gSerialIsRFU)
sub_800AC34();
gBattleCommunication[MULTIUSE_STATE]++;
break;
case 9:
- if (!gMain.field_439_x4 || gLinkVSyncDisabled || gReceivedRemoteLinkPlayers != 1)
+ if (!gMain.field_439_x4 || gSerialIsRFU || gReceivedRemoteLinkPlayers != 1)
{
gMain.field_439_x4 = 0;
SetMainCallback2(gMain.savedCallback);
@@ -2316,13 +2317,13 @@ static void sub_803939C(void)
case 8:
if (--gBattleCommunication[1] == 0)
{
- if (gMain.field_439_x4 && !gLinkVSyncDisabled)
+ if (gMain.field_439_x4 && !gSerialIsRFU)
sub_800AC34();
gBattleCommunication[MULTIUSE_STATE]++;
}
break;
case 9:
- if (!gMain.field_439_x4 || gLinkVSyncDisabled || gReceivedRemoteLinkPlayers != 1)
+ if (!gMain.field_439_x4 || gSerialIsRFU || gReceivedRemoteLinkPlayers != 1)
{
gMain.field_439_x4 = 0;
if (!gPaletteFade.active)
diff --git a/src/battle_controller_player.c b/src/battle_controller_player.c
index 10d361cb9..2a882de99 100644
--- a/src/battle_controller_player.c
+++ b/src/battle_controller_player.c
@@ -896,7 +896,7 @@ static void HandleMoveSwitchting(void)
static void sub_80586F8(void)
{
- if (gLinkVSyncDisabled == 0)
+ if (gSerialIsRFU == 0)
{
if (gReceivedRemoteLinkPlayers == 0)
{
@@ -932,7 +932,7 @@ void sub_80587B0(void)
{
if (sub_800A520())
{
- if (gLinkVSyncDisabled == 0)
+ if (gSerialIsRFU == 0)
sub_800AC34();
else
sub_800ADF8();
diff --git a/src/battle_controllers.c b/src/battle_controllers.c
index d3653d0b3..d741a8a98 100644
--- a/src/battle_controllers.c
+++ b/src/battle_controllers.c
@@ -59,7 +59,7 @@ void HandleLinkBattleSetup(void)
{
if (gBattleTypeFlags & BATTLE_TYPE_LINK)
{
- if (gLinkVSyncDisabled)
+ if (gSerialIsRFU)
sub_800B488();
if (!gReceivedRemoteLinkPlayers)
sub_8009734();
@@ -780,7 +780,7 @@ static void Task_HandleSendLinkBuffersData(u8 taskId)
gTasks[taskId].data[11]++;
break;
case 2:
- if (gLinkVSyncDisabled)
+ if (gSerialIsRFU)
{
gTasks[taskId].data[11]++;
}
diff --git a/src/evolution_scene.c b/src/evolution_scene.c
index 68731a14a..101feab56 100644
--- a/src/evolution_scene.c
+++ b/src/evolution_scene.c
@@ -405,7 +405,7 @@ static void CB2_TradeEvolutionSceneLoadGraphics(void)
}
break;
case 6:
- if (gLinkVSyncDisabled)
+ if (gSerialIsRFU)
{
sub_800E0E8();
sub_800DFB4(0, 0);
@@ -1188,7 +1188,7 @@ static void Task_TradeEvolutionScene(u8 taskID)
case 5:
if (!gPaletteFade.active)
{
- if (gLinkVSyncDisabled)
+ if (gSerialIsRFU)
sub_800E084();
Free(GetBgTilemapBuffer(3));
diff --git a/src/link.c b/src/link.c
index d9d5a48dd..68868491b 100644
--- a/src/link.c
+++ b/src/link.c
@@ -16,6 +16,7 @@
#include "palette.h"
#include "task.h"
#include "trade.h"
+#include "link_rfu.h"
#include "link.h"
// Static type declarations
@@ -37,13 +38,6 @@ struct LinkTestBGInfo
u32 dummy_C;
};
-struct SIOCnt {
- u32 cnt0_0:4;
- u32 cnt0_2:2;
-};
-
-#define REG_SIOCNT_STRUCT (*(volatile struct SIOCnt *)REG_ADDR_SIOCNT)
-
// Static RAM declarations
IWRAM_DATA struct BlockTransfer gUnknown_03000D10;
@@ -88,7 +82,7 @@ u8 gUnknown_030030EC[MAX_LINK_PLAYERS];
u8 gUnknown_030030F0[MAX_LINK_PLAYERS];
u16 gUnknown_030030F4;
u8 gUnknown_030030F8;
-bool8 gLinkVSyncDisabled;
+bool8 gSerialIsRFU;
bool8 gUnknown_03003100;
u16 gUnknown_03003110[8];
u8 gUnknown_03003120;
@@ -137,16 +131,6 @@ void sub_800B524(struct LinkPlayer *linkPlayer);
void sub_800B53C(void);
void sub_800B594(void);
-// rfu
-u32 sub_800BEC0(void);
-void sub_800E700(void);
-void sub_800EDD4(void);
-bool32 sub_800F7E4(void);
-void sub_800F804(void);
-void sub_800F850(void);
-void Rfu_set_zero(void);
-u8 sub_80104F4(void);
-
// .rodata
ALIGNED(4) const u16 gWirelessLinkDisplayPal[] = INCBIN_U16("graphics/interface/wireless_link_display.gbapal");
@@ -333,7 +317,7 @@ void sub_8009734(void)
{
int i;
- if (!gLinkVSyncDisabled)
+ if (!gSerialIsRFU)
{
sub_800B628();
sub_80096D0();
@@ -365,7 +349,7 @@ void sub_8009734(void)
void sub_80097E8(void)
{
gReceivedRemoteLinkPlayers = FALSE;
- if (gLinkVSyncDisabled)
+ if (gSerialIsRFU)
{
sub_800EDD4();
}
@@ -467,7 +451,7 @@ u16 sub_80099E0(const u16 *src)
gUnknown_03003084 = *src;
if (gUnknown_030030E0 & 0x40)
{
- sub_8009AA0(REG_SIOCNT_STRUCT.cnt0_2);
+ sub_8009AA0(SIO_MULTI_CNT->id);
if (gUnknown_03003140 != NULL)
{
gUnknown_03003140();
@@ -685,7 +669,7 @@ void sub_8009D90(u16 command)
void sub_8009F18(void)
{
- if (gLinkVSyncDisabled)
+ if (gSerialIsRFU)
{
sub_800F804();
}
@@ -694,7 +678,7 @@ void sub_8009F18(void)
bool32 sub_8009F3C(void)
{
- if (gLinkVSyncDisabled)
+ if (gSerialIsRFU)
{
return sub_800F7E4();
}
@@ -715,7 +699,7 @@ static void sub_8009F70(void)
void sub_8009F8C(void)
{
- if (gLinkVSyncDisabled)
+ if (gSerialIsRFU)
{
Rfu_set_zero();
}
@@ -727,7 +711,7 @@ void sub_8009F8C(void)
void sub_8009FAC(void)
{
- if (gLinkVSyncDisabled)
+ if (gSerialIsRFU)
{
Rfu_set_zero();
}
@@ -739,7 +723,7 @@ void sub_8009FAC(void)
u8 GetLinkPlayerCount(void)
{
- if (gLinkVSyncDisabled)
+ if (gSerialIsRFU)
{
return sub_80104F4();
}
@@ -997,7 +981,7 @@ void sub_800A3F8(void)
void sub_800A418(void)
{
gUnknown_020223C0 = 0;
- if (gLinkVSyncDisabled)
+ if (gSerialIsRFU)
{
sub_800F850();
}
@@ -1006,3 +990,84 @@ void sub_800A418(void)
gUnknown_03003140 = sub_800A3F8;
}
}
+
+u32 sub_800A44C(void)
+{
+ return gUnknown_020223C0;
+}
+
+void sub_800A458(void)
+{
+ sub_8009D90(0xaaaa);
+}
+
+u8 GetMultiplayerId(void)
+{
+ if (gSerialIsRFU == TRUE)
+ {
+ return rfu_get_multiplayer_id();
+ }
+ return SIO_MULTI_CNT->id;
+}
+
+u8 bitmask_all_link_players_but_self(void)
+{
+ u8 mpId;
+
+ mpId = GetMultiplayerId();
+ return ((1 << MAX_LINK_PLAYERS) - 1) ^ (1 << mpId);
+}
+
+bool8 SendBlock(u8 unused, const void *src, u16 size)
+{
+ if (gSerialIsRFU == TRUE)
+ {
+ return sub_800FE84(src, size);
+ }
+ return sub_800A2F4(src, size);
+}
+
+bool8 sub_800A4D8(u8 a0)
+{
+ if (gSerialIsRFU == TRUE)
+ {
+ return sub_8010100(a0);
+ }
+ if (gUnknown_03003140 == NULL)
+ {
+ gUnknown_03003150 = a0;
+ sub_8009D90(0xcccc);
+ return TRUE;
+ }
+ return FALSE;
+}
+
+bool8 sub_800A520(void)
+{
+ if (gSerialIsRFU == TRUE)
+ {
+ return sub_8010500();
+ }
+ return gUnknown_03003140 == NULL;
+}
+
+u8 GetBlockReceivedStatus(void)
+{
+ if (gSerialIsRFU == TRUE)
+ {
+ return sub_800FCD8();
+ }
+ return (gUnknown_0300307C[3] << 3) | (gUnknown_0300307C[2] << 2) | (gUnknown_0300307C[1] << 1) | (gUnknown_0300307C[0] << 0);
+}
+
+void sub_800A588(u8 who)
+{
+ if (gSerialIsRFU == TRUE)
+ {
+ sub_800F6FC(who);
+ }
+ else
+ {
+ gUnknown_0300307C[who] = TRUE;
+ }
+}
diff --git a/src/main.c b/src/main.c
index b90dc3837..61f6f60a4 100644
--- a/src/main.c
+++ b/src/main.c
@@ -336,7 +336,7 @@ extern void ProcessDma3Requests(void);
static void VBlankIntr(void)
{
- if (gLinkVSyncDisabled != FALSE)
+ if (gSerialIsRFU != FALSE)
LinkVSync();
else if (gUnknown_03002748 == FALSE)
sub_800B9B8();
diff --git a/src/reshow_battle_screen.c b/src/reshow_battle_screen.c
index 002f4f069..87ad20ed7 100644
--- a/src/reshow_battle_screen.c
+++ b/src/reshow_battle_screen.c
@@ -177,7 +177,7 @@ static void CB2_ReshowBattleScreenAfterMenu(void)
ActionSelectionCreateCursorAt(gActionSelectionCursor[gBankInMenu], 0);
- if (gLinkVSyncDisabled != 0 && gReceivedRemoteLinkPlayers != 0)
+ if (gSerialIsRFU != 0 && gReceivedRemoteLinkPlayers != 0)
{
sub_800E0E8();
sub_800DFB4(0, 0);
diff --git a/sym_common.txt b/sym_common.txt
index 7a35ae5bd..e228ed613 100644
--- a/sym_common.txt
+++ b/sym_common.txt
@@ -60,7 +60,7 @@ gUnknown_030030F4: @ 30030F4
gUnknown_030030F8: @ 30030F8
.space 0x4
-gLinkVSyncDisabled: @ 30030FC
+gSerialIsRFU: @ 30030FC
.space 0x4
gUnknown_03003100: @ 3003100