mirror of
https://github.com/SAT-R/sa2.git
synced 2026-10-28 09:43:38 +00:00
continue some more matching of multiplayer
This commit is contained in:
1 parent
db5847517d
commit
6680996261
7 files changed
+1120
-1115
No files matched your search
@@ -4,865 +4,6 @@
|
||||
.syntax unified
|
||||
.arm
|
||||
|
||||
thumb_func_start sub_805ADAC
|
||||
sub_805ADAC: @ 0x0805ADAC
|
||||
push {r4, r5, r6, r7, lr}
|
||||
mov r7, sl
|
||||
mov r6, sb
|
||||
mov r5, r8
|
||||
push {r5, r6, r7}
|
||||
sub sp, #0x34
|
||||
movs r0, #0
|
||||
str r0, [sp]
|
||||
movs r1, #0
|
||||
str r1, [sp, #4]
|
||||
movs r2, #0
|
||||
str r2, [sp, #8]
|
||||
movs r4, #0
|
||||
str r0, [sp, #0xc]
|
||||
str r1, [sp, #0x10]
|
||||
movs r2, #1
|
||||
str r2, [sp, #0x14]
|
||||
ldr r0, _0805AE30 @ =gCurTask
|
||||
ldr r0, [r0]
|
||||
ldrh r1, [r0, #6]
|
||||
movs r0, #0xc0
|
||||
lsls r0, r0, #0x12
|
||||
adds r6, r1, r0
|
||||
adds r0, r6, #0
|
||||
bl sub_802D4CC
|
||||
ldr r0, _0805AE34 @ =gMultiSioStatusFlags
|
||||
ldr r2, [r0]
|
||||
movs r0, #0x81
|
||||
ands r0, r2
|
||||
cmp r0, #0
|
||||
beq _0805AE60
|
||||
ldr r3, _0805AE38 @ =0x04000128
|
||||
ldr r1, [r3]
|
||||
lsls r1, r1, #0x1a
|
||||
lsrs r1, r1, #0x1e
|
||||
ldr r0, [sp, #0x14]
|
||||
lsls r0, r1
|
||||
ands r2, r0
|
||||
cmp r2, #0
|
||||
bne _0805AE50
|
||||
ldr r1, _0805AE3C @ =gUnknown_030054D4
|
||||
ldr r0, [r3]
|
||||
lsls r0, r0, #0x1a
|
||||
lsrs r0, r0, #0x1e
|
||||
adds r0, r0, r1
|
||||
ldrb r1, [r0]
|
||||
adds r2, r1, #1
|
||||
strb r2, [r0]
|
||||
lsls r1, r1, #0x18
|
||||
lsrs r1, r1, #0x18
|
||||
cmp r1, #0xb4
|
||||
bls _0805AE60
|
||||
ldr r1, _0805AE40 @ =0x0000FFFF
|
||||
movs r0, #0
|
||||
bl TasksDestroyInPriorityRange
|
||||
ldr r1, _0805AE44 @ =gUnknown_03002AE4
|
||||
ldr r0, _0805AE48 @ =gUnknown_0300287C
|
||||
ldrb r0, [r0]
|
||||
strb r0, [r1]
|
||||
ldr r0, _0805AE4C @ =gUnknown_03005390
|
||||
mov r1, sp
|
||||
ldrb r1, [r1, #8]
|
||||
strb r1, [r0]
|
||||
b _0805B1F6
|
||||
.align 2, 0
|
||||
_0805AE30: .4byte gCurTask
|
||||
_0805AE34: .4byte gMultiSioStatusFlags
|
||||
_0805AE38: .4byte 0x04000128
|
||||
_0805AE3C: .4byte gUnknown_030054D4
|
||||
_0805AE40: .4byte 0x0000FFFF
|
||||
_0805AE44: .4byte gUnknown_03002AE4
|
||||
_0805AE48: .4byte gUnknown_0300287C
|
||||
_0805AE4C: .4byte gUnknown_03005390
|
||||
_0805AE50:
|
||||
ldr r1, _0805AEBC @ =gUnknown_030054D4
|
||||
ldr r0, [r3]
|
||||
lsls r0, r0, #0x1a
|
||||
lsrs r0, r0, #0x1e
|
||||
adds r0, r0, r1
|
||||
mov r2, sp
|
||||
ldrb r2, [r2, #8]
|
||||
strb r2, [r0]
|
||||
_0805AE60:
|
||||
ldr r1, _0805AEC0 @ =gMultiSioStatusFlags
|
||||
ldr r2, [r1]
|
||||
movs r0, #0x80
|
||||
lsls r0, r0, #1
|
||||
ands r0, r2
|
||||
cmp r0, #0
|
||||
beq _0805AE70
|
||||
movs r4, #1
|
||||
_0805AE70:
|
||||
ldr r0, _0805AEC4 @ =gMultiSioRecv
|
||||
mov r8, r0
|
||||
movs r0, #0x80
|
||||
lsls r0, r0, #5
|
||||
ands r0, r2
|
||||
cmp r0, #0
|
||||
bne _0805AE92
|
||||
cmp r4, #0
|
||||
beq _0805AED8
|
||||
movs r0, #1
|
||||
ands r2, r0
|
||||
cmp r2, #0
|
||||
bne _0805AED8
|
||||
ldr r1, _0805AEC4 @ =gMultiSioRecv
|
||||
ldrh r0, [r1]
|
||||
cmp r0, #0
|
||||
beq _0805AED8
|
||||
_0805AE92:
|
||||
adds r1, r6, #0
|
||||
adds r1, #0xfd
|
||||
ldrb r0, [r1]
|
||||
adds r0, #1
|
||||
strb r0, [r1]
|
||||
lsls r0, r0, #0x18
|
||||
lsrs r0, r0, #0x18
|
||||
cmp r0, #8
|
||||
bls _0805AEE0
|
||||
ldr r1, _0805AEC8 @ =0x0000FFFF
|
||||
movs r0, #0
|
||||
bl TasksDestroyInPriorityRange
|
||||
ldr r1, _0805AECC @ =gUnknown_03002AE4
|
||||
ldr r0, _0805AED0 @ =gUnknown_0300287C
|
||||
ldrb r0, [r0]
|
||||
strb r0, [r1]
|
||||
ldr r1, _0805AED4 @ =gUnknown_03005390
|
||||
movs r0, #0
|
||||
b _0805B1F4
|
||||
.align 2, 0
|
||||
_0805AEBC: .4byte gUnknown_030054D4
|
||||
_0805AEC0: .4byte gMultiSioStatusFlags
|
||||
_0805AEC4: .4byte gMultiSioRecv
|
||||
_0805AEC8: .4byte 0x0000FFFF
|
||||
_0805AECC: .4byte gUnknown_03002AE4
|
||||
_0805AED0: .4byte gUnknown_0300287C
|
||||
_0805AED4: .4byte gUnknown_03005390
|
||||
_0805AED8:
|
||||
adds r1, r6, #0
|
||||
adds r1, #0xfd
|
||||
movs r0, #0
|
||||
strb r0, [r1]
|
||||
_0805AEE0:
|
||||
movs r5, #0
|
||||
adds r2, r6, #0
|
||||
adds r2, #0xfa
|
||||
str r2, [sp, #0x20]
|
||||
movs r7, #1
|
||||
adds r4, r6, #0
|
||||
adds r4, #0xee
|
||||
movs r0, #0xf2
|
||||
adds r0, r0, r6
|
||||
mov ip, r0
|
||||
movs r1, #0
|
||||
str r1, [sp, #0x28]
|
||||
movs r2, #0
|
||||
str r2, [sp, #0x2c]
|
||||
mov sl, r2
|
||||
ldr r0, _0805AF98 @ =gUnknown_03005460
|
||||
mov sb, r0
|
||||
_0805AF02:
|
||||
lsls r1, r5, #2
|
||||
str r1, [sp, #0x30]
|
||||
ldr r3, _0805AF9C @ =gMultiSioRecv
|
||||
add r3, sl
|
||||
ldrb r0, [r4]
|
||||
lsls r0, r0, #1
|
||||
strb r0, [r4]
|
||||
mov r2, ip
|
||||
ldrb r0, [r2]
|
||||
lsls r0, r0, #1
|
||||
strb r0, [r2]
|
||||
ldr r0, _0805AFA0 @ =0x04000128
|
||||
ldr r0, [r0]
|
||||
lsls r0, r0, #0x1a
|
||||
lsrs r0, r0, #0x1e
|
||||
cmp r5, r0
|
||||
beq _0805AF3A
|
||||
adds r1, r7, #0
|
||||
lsls r1, r5
|
||||
ldr r2, _0805AFA4 @ =gMultiSioStatusFlags
|
||||
ldr r0, [r2]
|
||||
ands r0, r1
|
||||
cmp r0, #0
|
||||
beq _0805AFB8
|
||||
ldrh r0, [r3]
|
||||
ldr r1, _0805AFA8 @ =0x0000400F
|
||||
cmp r0, r1
|
||||
bls _0805AFB8
|
||||
_0805AF3A:
|
||||
ldrb r1, [r4]
|
||||
adds r0, r7, #0
|
||||
orrs r0, r1
|
||||
strb r0, [r4]
|
||||
ldr r2, [sp]
|
||||
adds r2, #1
|
||||
str r2, [sp]
|
||||
adds r0, r7, #0
|
||||
lsls r0, r5
|
||||
ldr r1, [sp, #8]
|
||||
orrs r1, r0
|
||||
lsls r0, r1, #0x18
|
||||
lsrs r0, r0, #0x18
|
||||
str r0, [sp, #8]
|
||||
ldr r2, [sp, #0xc]
|
||||
cmp r2, #0
|
||||
beq _0805AF60
|
||||
movs r0, #1
|
||||
str r0, [sp, #0x10]
|
||||
_0805AF60:
|
||||
ldr r0, _0805AFAC @ =gUnknown_03005410
|
||||
ldr r1, [sp, #0x30]
|
||||
adds r0, r1, r0
|
||||
ldr r1, [r3, #4]
|
||||
str r1, [r0]
|
||||
ldrh r0, [r3, #8]
|
||||
mov r2, sb
|
||||
strh r0, [r2]
|
||||
ldr r0, _0805AF98 @ =gUnknown_03005460
|
||||
adds r0, #2
|
||||
ldr r1, [sp, #0x2c]
|
||||
adds r0, r1, r0
|
||||
ldrh r1, [r3, #0xa]
|
||||
strh r1, [r0]
|
||||
ldrh r0, [r3, #0xc]
|
||||
strh r0, [r2, #4]
|
||||
ldr r2, _0805AFB0 @ =gUnknown_03005594
|
||||
ldrb r0, [r2]
|
||||
ldrb r1, [r3, #0xe]
|
||||
orrs r0, r1
|
||||
strb r0, [r2]
|
||||
ldr r2, _0805AFB4 @ =gUnknown_030054D8
|
||||
ldrb r1, [r3, #0xf]
|
||||
ldrb r0, [r2]
|
||||
cmp r0, r1
|
||||
bhs _0805B01E
|
||||
strb r1, [r2]
|
||||
b _0805B01E
|
||||
.align 2, 0
|
||||
_0805AF98: .4byte gUnknown_03005460
|
||||
_0805AF9C: .4byte gMultiSioRecv
|
||||
_0805AFA0: .4byte 0x04000128
|
||||
_0805AFA4: .4byte gMultiSioStatusFlags
|
||||
_0805AFA8: .4byte 0x0000400F
|
||||
_0805AFAC: .4byte gUnknown_03005410
|
||||
_0805AFB0: .4byte gUnknown_03005594
|
||||
_0805AFB4: .4byte gUnknown_030054D8
|
||||
_0805AFB8:
|
||||
ldr r2, [sp, #0x28]
|
||||
ldr r1, _0805AFF0 @ =0x04000120
|
||||
adds r0, r2, r1
|
||||
ldrh r0, [r0]
|
||||
str r0, [sp, #0x30]
|
||||
movs r2, #1
|
||||
str r2, [sp, #0xc]
|
||||
adds r1, r2, #0
|
||||
lsls r1, r5
|
||||
ldr r2, _0805AFF4 @ =gMultiSioStatusFlags
|
||||
ldr r0, [r2]
|
||||
ands r0, r1
|
||||
cmp r0, #0
|
||||
bne _0805AFF8
|
||||
ldr r0, [sp, #0x30]
|
||||
cmp r0, #0
|
||||
bne _0805AFF8
|
||||
movs r1, #1
|
||||
str r1, [sp, #0x10]
|
||||
mov r2, ip
|
||||
ldrb r0, [r2]
|
||||
adds r1, r7, #0
|
||||
orrs r1, r0
|
||||
strb r1, [r2]
|
||||
ldrb r0, [r4]
|
||||
cmp r0, #0
|
||||
bne _0805B024
|
||||
b _0805B01A
|
||||
.align 2, 0
|
||||
_0805AFF0: .4byte 0x04000120
|
||||
_0805AFF4: .4byte gMultiSioStatusFlags
|
||||
_0805AFF8:
|
||||
mov r1, ip
|
||||
ldrb r0, [r1]
|
||||
cmp r0, #0
|
||||
bne _0805B016
|
||||
adds r1, r7, #0
|
||||
lsls r1, r5
|
||||
ldr r2, _0805B08C @ =gMultiSioStatusFlags
|
||||
ldr r0, [r2]
|
||||
ands r0, r1
|
||||
cmp r0, #0
|
||||
beq _0805B01E
|
||||
ldrh r0, [r3]
|
||||
ldr r1, _0805B090 @ =0x0000400F
|
||||
cmp r0, r1
|
||||
bhi _0805B01E
|
||||
_0805B016:
|
||||
movs r2, #1
|
||||
str r2, [sp, #0x10]
|
||||
_0805B01A:
|
||||
movs r0, #0
|
||||
str r0, [sp, #0x14]
|
||||
_0805B01E:
|
||||
ldrb r0, [r4]
|
||||
cmp r0, #0
|
||||
beq _0805B02A
|
||||
_0805B024:
|
||||
ldr r1, [sp, #4]
|
||||
adds r1, #1
|
||||
str r1, [sp, #4]
|
||||
_0805B02A:
|
||||
adds r4, #1
|
||||
movs r2, #1
|
||||
add ip, r2
|
||||
ldr r0, [sp, #0x28]
|
||||
adds r0, #2
|
||||
str r0, [sp, #0x28]
|
||||
movs r1, #0xc
|
||||
add sb, r1
|
||||
ldr r2, [sp, #0x2c]
|
||||
adds r2, #0xc
|
||||
str r2, [sp, #0x2c]
|
||||
movs r0, #0x14
|
||||
add sl, r0
|
||||
adds r5, #1
|
||||
cmp r5, #3
|
||||
bgt _0805B04C
|
||||
b _0805AF02
|
||||
_0805B04C:
|
||||
ldr r1, [sp, #4]
|
||||
cmp r1, #0
|
||||
bne _0805B056
|
||||
movs r2, #1
|
||||
str r2, [sp, #4]
|
||||
_0805B056:
|
||||
ldr r0, [sp, #0x20]
|
||||
ldrb r4, [r0]
|
||||
cmp r4, #0
|
||||
bne _0805B0AE
|
||||
ldr r1, _0805B08C @ =gMultiSioStatusFlags
|
||||
ldr r0, [r1]
|
||||
movs r1, #0x81
|
||||
ands r0, r1
|
||||
cmp r0, #1
|
||||
bne _0805B0A8
|
||||
mov r2, r8
|
||||
ldrh r1, [r2]
|
||||
ldr r0, _0805B094 @ =0x00004010
|
||||
cmp r1, r0
|
||||
bls _0805B0A8
|
||||
ldr r1, _0805B098 @ =0x0000FFFF
|
||||
movs r0, #0
|
||||
bl TasksDestroyInPriorityRange
|
||||
ldr r1, _0805B09C @ =gUnknown_03002AE4
|
||||
ldr r0, _0805B0A0 @ =gUnknown_0300287C
|
||||
ldrb r0, [r0]
|
||||
strb r0, [r1]
|
||||
ldr r0, _0805B0A4 @ =gUnknown_03005390
|
||||
strb r4, [r0]
|
||||
b _0805B1F6
|
||||
.align 2, 0
|
||||
_0805B08C: .4byte gMultiSioStatusFlags
|
||||
_0805B090: .4byte 0x0000400F
|
||||
_0805B094: .4byte 0x00004010
|
||||
_0805B098: .4byte 0x0000FFFF
|
||||
_0805B09C: .4byte gUnknown_03002AE4
|
||||
_0805B0A0: .4byte gUnknown_0300287C
|
||||
_0805B0A4: .4byte gUnknown_03005390
|
||||
_0805B0A8:
|
||||
movs r0, #1
|
||||
ldr r1, [sp, #0x20]
|
||||
strb r0, [r1]
|
||||
_0805B0AE:
|
||||
mov r2, r8
|
||||
ldrh r1, [r2]
|
||||
ldr r0, [sp, #0x10]
|
||||
cmp r0, #0
|
||||
beq _0805B0BA
|
||||
b _0805B1D8
|
||||
_0805B0BA:
|
||||
ldr r0, _0805B130 @ =0x00004011
|
||||
cmp r1, r0
|
||||
beq _0805B0C2
|
||||
b _0805B1D8
|
||||
_0805B0C2:
|
||||
ldr r2, [sp, #0x20]
|
||||
ldrb r0, [r2]
|
||||
cmp r0, #0
|
||||
bne _0805B0CC
|
||||
b _0805B1D8
|
||||
_0805B0CC:
|
||||
ldr r1, _0805B134 @ =gUnknown_03005434
|
||||
mov r2, r8
|
||||
ldr r0, [r2, #0x10]
|
||||
str r0, [r1]
|
||||
ldr r1, _0805B138 @ =gUnknown_030055B8
|
||||
ldrb r0, [r2, #2]
|
||||
strb r0, [r1]
|
||||
movs r5, #0
|
||||
adds r0, r6, #0
|
||||
adds r0, #0xe8
|
||||
str r0, [sp, #0x18]
|
||||
adds r1, r6, #0
|
||||
adds r1, #0xf6
|
||||
str r1, [sp, #0x1c]
|
||||
adds r6, #0xfb
|
||||
str r6, [sp, #0x24]
|
||||
ldr r6, _0805B13C @ =gUnknown_03005460
|
||||
ldr r7, _0805B140 @ =gUnknown_03005594
|
||||
adds r4, r6, #0
|
||||
mov sl, r5
|
||||
ldr r2, _0805B144 @ =gUnknown_03005410
|
||||
mov ip, r2
|
||||
mov sb, r5
|
||||
_0805B0FA:
|
||||
ldr r1, _0805B138 @ =gUnknown_030055B8
|
||||
ldrb r0, [r1]
|
||||
asrs r0, r5
|
||||
movs r1, #1
|
||||
ands r0, r1
|
||||
cmp r0, #0
|
||||
beq _0805B182
|
||||
cmp r5, #0
|
||||
bne _0805B14C
|
||||
mov r2, r8
|
||||
ldr r0, [r2, #4]
|
||||
ldr r1, _0805B144 @ =gUnknown_03005410
|
||||
str r0, [r1]
|
||||
ldrh r0, [r2, #8]
|
||||
strh r0, [r6]
|
||||
ldrh r0, [r2, #0xa]
|
||||
strh r0, [r6, #2]
|
||||
ldrh r0, [r2, #0xc]
|
||||
strh r0, [r6, #4]
|
||||
ldrb r0, [r7]
|
||||
ldrb r1, [r2, #0xe]
|
||||
orrs r0, r1
|
||||
strb r0, [r7]
|
||||
ldr r2, _0805B148 @ =gUnknown_030054D8
|
||||
mov r0, r8
|
||||
ldrb r1, [r0, #0xf]
|
||||
b _0805B17A
|
||||
.align 2, 0
|
||||
_0805B130: .4byte 0x00004011
|
||||
_0805B134: .4byte gUnknown_03005434
|
||||
_0805B138: .4byte gUnknown_030055B8
|
||||
_0805B13C: .4byte gUnknown_03005460
|
||||
_0805B140: .4byte gUnknown_03005594
|
||||
_0805B144: .4byte gUnknown_03005410
|
||||
_0805B148: .4byte gUnknown_030054D8
|
||||
_0805B14C:
|
||||
ldr r3, _0805B1C0 @ =gMultiSioRecv
|
||||
add r3, sb
|
||||
ldrh r0, [r3]
|
||||
ldr r1, _0805B1C4 @ =0x00004010
|
||||
cmp r0, r1
|
||||
bne _0805B182
|
||||
ldr r0, [r3, #4]
|
||||
mov r2, ip
|
||||
str r0, [r2]
|
||||
ldrh r0, [r3, #8]
|
||||
strh r0, [r4]
|
||||
adds r0, r6, #2
|
||||
add r0, sl
|
||||
ldrh r1, [r3, #0xa]
|
||||
strh r1, [r0]
|
||||
ldrh r0, [r3, #0xc]
|
||||
strh r0, [r4, #4]
|
||||
ldrb r0, [r7]
|
||||
ldrb r1, [r3, #0xe]
|
||||
orrs r0, r1
|
||||
strb r0, [r7]
|
||||
ldr r2, _0805B1C8 @ =gUnknown_030054D8
|
||||
ldrb r1, [r3, #0xf]
|
||||
_0805B17A:
|
||||
ldrb r0, [r2]
|
||||
cmp r0, r1
|
||||
bhs _0805B182
|
||||
strb r1, [r2]
|
||||
_0805B182:
|
||||
adds r4, #0xc
|
||||
movs r0, #0xc
|
||||
add sl, r0
|
||||
movs r1, #4
|
||||
add ip, r1
|
||||
movs r2, #0x14
|
||||
add sb, r2
|
||||
adds r5, #1
|
||||
cmp r5, #3
|
||||
ble _0805B0FA
|
||||
movs r0, #0
|
||||
movs r1, #0
|
||||
ldr r2, [sp, #0x18]
|
||||
strh r0, [r2]
|
||||
ldr r0, [sp, #0x1c]
|
||||
strb r1, [r0]
|
||||
ldr r2, _0805B1CC @ =gUnknown_030054D4
|
||||
strb r1, [r2, #3]
|
||||
strb r1, [r2, #2]
|
||||
strb r1, [r2, #1]
|
||||
strb r1, [r2]
|
||||
ldr r0, [sp, #0x24]
|
||||
strb r1, [r0]
|
||||
ldr r1, _0805B1D0 @ =gCurTask
|
||||
ldr r0, [r1]
|
||||
ldr r2, _0805B1D4 @ =sub_805B4C0
|
||||
str r2, [r0, #8]
|
||||
bl _call_via_r2
|
||||
b _0805B42A
|
||||
.align 2, 0
|
||||
_0805B1C0: .4byte gMultiSioRecv
|
||||
_0805B1C4: .4byte 0x00004010
|
||||
_0805B1C8: .4byte gUnknown_030054D8
|
||||
_0805B1CC: .4byte gUnknown_030054D4
|
||||
_0805B1D0: .4byte gCurTask
|
||||
_0805B1D4: .4byte sub_805B4C0
|
||||
_0805B1D8:
|
||||
lsls r1, r1, #0x10
|
||||
ldr r0, _0805B204 @ =0x40120000
|
||||
cmp r1, r0
|
||||
bls _0805B220
|
||||
ldr r1, _0805B208 @ =0x0000FFFF
|
||||
movs r0, #0
|
||||
bl TasksDestroyInPriorityRange
|
||||
ldr r1, _0805B20C @ =gUnknown_03002AE4
|
||||
ldr r0, _0805B210 @ =gUnknown_0300287C
|
||||
ldrb r0, [r0]
|
||||
strb r0, [r1]
|
||||
ldr r1, _0805B214 @ =gUnknown_03005390
|
||||
movs r0, #0
|
||||
_0805B1F4:
|
||||
strb r0, [r1]
|
||||
_0805B1F6:
|
||||
ldr r1, _0805B218 @ =gUnknown_03004D5C
|
||||
ldr r0, _0805B21C @ =gUnknown_03002A84
|
||||
ldrb r0, [r0]
|
||||
strb r0, [r1]
|
||||
bl sub_805B9A4
|
||||
b _0805B42A
|
||||
.align 2, 0
|
||||
_0805B204: .4byte 0x40120000
|
||||
_0805B208: .4byte 0x0000FFFF
|
||||
_0805B20C: .4byte gUnknown_03002AE4
|
||||
_0805B210: .4byte gUnknown_0300287C
|
||||
_0805B214: .4byte gUnknown_03005390
|
||||
_0805B218: .4byte gUnknown_03004D5C
|
||||
_0805B21C: .4byte gUnknown_03002A84
|
||||
_0805B220:
|
||||
ldr r0, _0805B254 @ =gPressedKeys
|
||||
ldrh r1, [r0]
|
||||
movs r0, #2
|
||||
ands r0, r1
|
||||
cmp r0, #0
|
||||
beq _0805B2B0
|
||||
movs r0, #0x6b
|
||||
bl m4aSongNumStart
|
||||
ldr r0, _0805B258 @ =gMultiSioStatusFlags
|
||||
ldr r4, [r0]
|
||||
movs r0, #0x80
|
||||
ands r4, r0
|
||||
cmp r4, #0
|
||||
beq _0805B268
|
||||
ldr r7, _0805B25C @ =gMultiSioSend
|
||||
movs r1, #0
|
||||
strh r1, [r7]
|
||||
adds r0, r6, #0
|
||||
adds r0, #0xe8
|
||||
strh r1, [r0]
|
||||
ldr r0, _0805B260 @ =gCurTask
|
||||
ldr r1, [r0]
|
||||
ldr r0, _0805B264 @ =sub_805B454
|
||||
str r0, [r1, #8]
|
||||
b _0805B42A
|
||||
.align 2, 0
|
||||
_0805B254: .4byte gPressedKeys
|
||||
_0805B258: .4byte gMultiSioStatusFlags
|
||||
_0805B25C: .4byte gMultiSioSend
|
||||
_0805B260: .4byte gCurTask
|
||||
_0805B264: .4byte sub_805B454
|
||||
_0805B268:
|
||||
ldr r0, _0805B29C @ =gMultiSioEnabled
|
||||
strb r4, [r0]
|
||||
bl MultiSioStop
|
||||
movs r0, #0
|
||||
bl MultiSioInit
|
||||
ldr r7, _0805B2A0 @ =gMultiSioSend
|
||||
movs r2, #0
|
||||
strh r4, [r7]
|
||||
ldr r0, _0805B2A4 @ =gUnknown_03004D80
|
||||
strb r2, [r0]
|
||||
ldr r1, _0805B2A8 @ =gUnknown_03002280
|
||||
strb r2, [r1]
|
||||
strb r2, [r1, #1]
|
||||
movs r0, #0xff
|
||||
strb r0, [r1, #2]
|
||||
movs r0, #0x20
|
||||
strb r0, [r1, #3]
|
||||
bl CreateMultiplayerModeSelectScreen
|
||||
ldr r0, _0805B2AC @ =gCurTask
|
||||
ldr r0, [r0]
|
||||
bl TaskDestroy
|
||||
b _0805B42A
|
||||
.align 2, 0
|
||||
_0805B29C: .4byte gMultiSioEnabled
|
||||
_0805B2A0: .4byte gMultiSioSend
|
||||
_0805B2A4: .4byte gUnknown_03004D80
|
||||
_0805B2A8: .4byte gUnknown_03002280
|
||||
_0805B2AC: .4byte gCurTask
|
||||
_0805B2B0:
|
||||
ldr r1, _0805B3AC @ =gMultiSioStatusFlags
|
||||
ldr r0, [r1]
|
||||
movs r1, #0x80
|
||||
ands r0, r1
|
||||
cmp r0, #0
|
||||
beq _0805B2D8
|
||||
ldr r2, [sp, #4]
|
||||
cmp r2, #1
|
||||
ble _0805B302
|
||||
ldr r0, [sp, #0x14]
|
||||
cmp r0, #0
|
||||
beq _0805B2D8
|
||||
adds r4, r6, #0
|
||||
adds r4, #0x3c
|
||||
adds r0, r4, #0
|
||||
bl sub_8004558
|
||||
adds r0, r4, #0
|
||||
bl sub_80051E8
|
||||
_0805B2D8:
|
||||
ldr r1, [sp, #4]
|
||||
cmp r1, #1
|
||||
ble _0805B302
|
||||
adds r4, r6, #0
|
||||
adds r4, #0x6c
|
||||
ldr r0, _0805B3B0 @ =0x00000432
|
||||
strh r0, [r4, #0xa]
|
||||
adds r1, #6
|
||||
adds r0, r6, #0
|
||||
adds r0, #0x8c
|
||||
strb r1, [r0]
|
||||
adds r1, r6, #0
|
||||
adds r1, #0x8d
|
||||
movs r0, #0xff
|
||||
strb r0, [r1]
|
||||
adds r0, r4, #0
|
||||
bl sub_8004558
|
||||
adds r0, r4, #0
|
||||
bl sub_80051E8
|
||||
_0805B302:
|
||||
adds r4, r6, #0
|
||||
adds r4, #0xc
|
||||
adds r0, r4, #0
|
||||
bl sub_80051E8
|
||||
ldr r0, _0805B3AC @ =gMultiSioStatusFlags
|
||||
ldr r0, [r0]
|
||||
movs r1, #0x80
|
||||
ands r0, r1
|
||||
adds r2, r6, #0
|
||||
adds r2, #0xf6
|
||||
str r2, [sp, #0x1c]
|
||||
cmp r0, #0
|
||||
beq _0805B3CC
|
||||
ldr r0, [sp, #0x10]
|
||||
cmp r0, #0
|
||||
bne _0805B336
|
||||
ldr r1, [sp]
|
||||
cmp r1, #1
|
||||
ble _0805B336
|
||||
ldr r0, _0805B3B4 @ =gPressedKeys
|
||||
ldrh r1, [r0]
|
||||
movs r0, #8
|
||||
ands r0, r1
|
||||
cmp r0, #0
|
||||
bne _0805B34E
|
||||
_0805B336:
|
||||
adds r1, r6, #0
|
||||
adds r1, #0xf6
|
||||
ldrb r0, [r1]
|
||||
str r1, [sp, #0x1c]
|
||||
cmp r0, #0
|
||||
beq _0805B3EC
|
||||
ldr r2, [sp, #0x10]
|
||||
cmp r2, #0
|
||||
bne _0805B3CC
|
||||
ldr r0, [sp]
|
||||
cmp r0, #1
|
||||
ble _0805B3CC
|
||||
_0805B34E:
|
||||
ldr r7, _0805B3B8 @ =gMultiSioSend
|
||||
ldr r0, _0805B3BC @ =0x00004011
|
||||
strh r0, [r7]
|
||||
mov r1, sp
|
||||
ldrb r1, [r1, #8]
|
||||
strb r1, [r7, #2]
|
||||
ldr r1, _0805B3C0 @ =gLoadedSaveGame
|
||||
ldr r0, [r1]
|
||||
ldr r0, [r0]
|
||||
str r0, [r7, #4]
|
||||
adds r0, r6, #0
|
||||
adds r0, #0xdc
|
||||
ldr r0, [r0]
|
||||
str r0, [r7, #0x10]
|
||||
movs r2, #0
|
||||
ldr r0, _0805B3C4 @ =gUnknown_03005594
|
||||
mov r8, r0
|
||||
ldr r0, _0805B3C8 @ =gUnknown_030054D8
|
||||
mov sb, r0
|
||||
adds r4, r6, #0
|
||||
adds r4, #0xfc
|
||||
adds r5, r1, #0
|
||||
adds r3, r7, #0
|
||||
adds r3, #8
|
||||
_0805B37E:
|
||||
lsls r0, r2, #1
|
||||
ldr r1, [r5]
|
||||
adds r1, #0x20
|
||||
adds r1, r1, r0
|
||||
ldrh r0, [r1]
|
||||
strh r0, [r3]
|
||||
adds r3, #2
|
||||
adds r2, #1
|
||||
cmp r2, #2
|
||||
ble _0805B37E
|
||||
mov r1, r8
|
||||
ldrb r0, [r1]
|
||||
movs r1, #0
|
||||
strb r0, [r7, #0xe]
|
||||
mov r2, sb
|
||||
ldrb r0, [r2]
|
||||
strb r0, [r7, #0xf]
|
||||
movs r0, #1
|
||||
ldr r2, [sp, #0x1c]
|
||||
strb r0, [r2]
|
||||
strb r1, [r4]
|
||||
b _0805B42A
|
||||
.align 2, 0
|
||||
_0805B3AC: .4byte gMultiSioStatusFlags
|
||||
_0805B3B0: .4byte 0x00000432
|
||||
_0805B3B4: .4byte gPressedKeys
|
||||
_0805B3B8: .4byte gMultiSioSend
|
||||
_0805B3BC: .4byte 0x00004011
|
||||
_0805B3C0: .4byte gLoadedSaveGame
|
||||
_0805B3C4: .4byte gUnknown_03005594
|
||||
_0805B3C8: .4byte gUnknown_030054D8
|
||||
_0805B3CC:
|
||||
ldr r1, [sp, #0x1c]
|
||||
ldrb r0, [r1]
|
||||
cmp r0, #0
|
||||
beq _0805B3EC
|
||||
movs r0, #0
|
||||
strb r0, [r1]
|
||||
ldr r0, _0805B43C @ =gMultiSioStatusFlags
|
||||
ldr r0, [r0]
|
||||
movs r1, #0x80
|
||||
ands r0, r1
|
||||
cmp r0, #0
|
||||
beq _0805B3EC
|
||||
adds r1, r6, #0
|
||||
adds r1, #0xfc
|
||||
movs r0, #1
|
||||
strb r0, [r1]
|
||||
_0805B3EC:
|
||||
ldr r7, _0805B440 @ =gMultiSioSend
|
||||
ldr r0, _0805B444 @ =0x00004010
|
||||
strh r0, [r7]
|
||||
ldr r1, _0805B448 @ =gLoadedSaveGame
|
||||
ldr r0, [r1]
|
||||
ldr r0, [r0]
|
||||
str r0, [r7, #4]
|
||||
movs r2, #0
|
||||
ldr r0, _0805B44C @ =gUnknown_03005594
|
||||
mov r8, r0
|
||||
ldr r0, _0805B450 @ =gUnknown_030054D8
|
||||
mov sb, r0
|
||||
adds r4, r1, #0
|
||||
adds r3, r7, #0
|
||||
adds r3, #8
|
||||
_0805B40A:
|
||||
lsls r0, r2, #1
|
||||
ldr r1, [r4]
|
||||
adds r1, #0x20
|
||||
adds r1, r1, r0
|
||||
ldrh r0, [r1]
|
||||
strh r0, [r3]
|
||||
adds r3, #2
|
||||
adds r2, #1
|
||||
cmp r2, #2
|
||||
ble _0805B40A
|
||||
mov r1, r8
|
||||
ldrb r0, [r1]
|
||||
strb r0, [r7, #0xe]
|
||||
mov r2, sb
|
||||
ldrb r0, [r2]
|
||||
strb r0, [r7, #0xf]
|
||||
_0805B42A:
|
||||
add sp, #0x34
|
||||
pop {r3, r4, r5}
|
||||
mov r8, r3
|
||||
mov sb, r4
|
||||
mov sl, r5
|
||||
pop {r4, r5, r6, r7}
|
||||
pop {r0}
|
||||
bx r0
|
||||
.align 2, 0
|
||||
_0805B43C: .4byte gMultiSioStatusFlags
|
||||
_0805B440: .4byte gMultiSioSend
|
||||
_0805B444: .4byte 0x00004010
|
||||
_0805B448: .4byte gLoadedSaveGame
|
||||
_0805B44C: .4byte gUnknown_03005594
|
||||
_0805B450: .4byte gUnknown_030054D8
|
||||
|
||||
thumb_func_start sub_805B454
|
||||
sub_805B454: @ 0x0805B454
|
||||
push {r4, r5, lr}
|
||||
ldr r5, _0805B4A8 @ =gCurTask
|
||||
ldr r0, [r5]
|
||||
ldrh r1, [r0, #6]
|
||||
ldr r2, _0805B4AC @ =gMultiSioSend
|
||||
movs r4, #0
|
||||
movs r0, #0
|
||||
strh r0, [r2]
|
||||
ldr r0, _0805B4B0 @ =IWRAM_START + 0xE8
|
||||
adds r1, r1, r0
|
||||
ldrh r0, [r1]
|
||||
adds r0, #1
|
||||
strh r0, [r1]
|
||||
lsls r0, r0, #0x10
|
||||
lsrs r0, r0, #0x10
|
||||
cmp r0, #4
|
||||
bls _0805B4A0
|
||||
ldr r0, _0805B4B4 @ =gMultiSioEnabled
|
||||
strb r4, [r0]
|
||||
bl MultiSioStop
|
||||
movs r0, #0
|
||||
bl MultiSioInit
|
||||
ldr r0, _0805B4B8 @ =gUnknown_03004D80
|
||||
strb r4, [r0]
|
||||
ldr r1, _0805B4BC @ =gUnknown_03002280
|
||||
strb r4, [r1]
|
||||
strb r4, [r1, #1]
|
||||
movs r0, #0xff
|
||||
strb r0, [r1, #2]
|
||||
movs r0, #0x20
|
||||
strb r0, [r1, #3]
|
||||
bl CreateMultiplayerModeSelectScreen
|
||||
ldr r0, [r5]
|
||||
bl TaskDestroy
|
||||
_0805B4A0:
|
||||
pop {r4, r5}
|
||||
pop {r0}
|
||||
bx r0
|
||||
.align 2, 0
|
||||
_0805B4A8: .4byte gCurTask
|
||||
_0805B4AC: .4byte gMultiSioSend
|
||||
_0805B4B0: .4byte IWRAM_START + 0xE8
|
||||
_0805B4B4: .4byte gMultiSioEnabled
|
||||
_0805B4B8: .4byte gUnknown_03004D80
|
||||
_0805B4BC: .4byte gUnknown_03002280
|
||||
|
||||
thumb_func_start sub_805B4C0
|
||||
sub_805B4C0: @ 0x0805B4C0
|
||||
push {r4, r5, r6, r7, lr}
|
||||
|
||||
@@ -0,0 +1,816 @@
|
||||
.include "asm/macros.inc"
|
||||
.include "constants/constants.inc"
|
||||
|
||||
.syntax unified
|
||||
.text
|
||||
push {r4, r5, r6, r7, lr}
|
||||
mov r7, sl
|
||||
mov r6, sb
|
||||
mov r5, r8
|
||||
push {r5, r6, r7}
|
||||
sub sp, #0x34
|
||||
movs r0, #0
|
||||
str r0, [sp]
|
||||
movs r1, #0
|
||||
str r1, [sp, #4]
|
||||
movs r2, #0
|
||||
str r2, [sp, #8]
|
||||
movs r4, #0
|
||||
str r0, [sp, #0xc]
|
||||
str r1, [sp, #0x10]
|
||||
movs r2, #1
|
||||
str r2, [sp, #0x14]
|
||||
ldr r0, _0805AE30 @ =gCurTask
|
||||
ldr r0, [r0]
|
||||
ldrh r1, [r0, #6]
|
||||
movs r0, #0xc0
|
||||
lsls r0, r0, #0x12
|
||||
adds r6, r1, r0
|
||||
adds r0, r6, #0
|
||||
bl sub_802D4CC
|
||||
ldr r0, _0805AE34 @ =gMultiSioStatusFlags
|
||||
ldr r2, [r0]
|
||||
movs r0, #0x81
|
||||
ands r0, r2
|
||||
cmp r0, #0
|
||||
beq _0805AE60
|
||||
ldr r3, _0805AE38 @ =0x04000128
|
||||
ldr r1, [r3]
|
||||
lsls r1, r1, #0x1a
|
||||
lsrs r1, r1, #0x1e
|
||||
ldr r0, [sp, #0x14]
|
||||
lsls r0, r1
|
||||
ands r2, r0
|
||||
cmp r2, #0
|
||||
bne _0805AE50
|
||||
ldr r1, _0805AE3C @ =gUnknown_030054D4
|
||||
ldr r0, [r3]
|
||||
lsls r0, r0, #0x1a
|
||||
lsrs r0, r0, #0x1e
|
||||
adds r0, r0, r1
|
||||
ldrb r1, [r0]
|
||||
adds r2, r1, #1
|
||||
strb r2, [r0]
|
||||
lsls r1, r1, #0x18
|
||||
lsrs r1, r1, #0x18
|
||||
cmp r1, #0xb4
|
||||
bls _0805AE60
|
||||
ldr r1, _0805AE40 @ =0x0000FFFF
|
||||
movs r0, #0
|
||||
bl TasksDestroyInPriorityRange
|
||||
ldr r1, _0805AE44 @ =gUnknown_03002AE4
|
||||
ldr r0, _0805AE48 @ =gUnknown_0300287C
|
||||
ldrb r0, [r0]
|
||||
strb r0, [r1]
|
||||
ldr r0, _0805AE4C @ =gUnknown_03005390
|
||||
mov r1, sp
|
||||
ldrb r1, [r1, #8]
|
||||
strb r1, [r0]
|
||||
b _0805B1F6
|
||||
.align 2, 0
|
||||
_0805AE30: .4byte gCurTask
|
||||
_0805AE34: .4byte gMultiSioStatusFlags
|
||||
_0805AE38: .4byte 0x04000128
|
||||
_0805AE3C: .4byte gUnknown_030054D4
|
||||
_0805AE40: .4byte 0x0000FFFF
|
||||
_0805AE44: .4byte gUnknown_03002AE4
|
||||
_0805AE48: .4byte gUnknown_0300287C
|
||||
_0805AE4C: .4byte gUnknown_03005390
|
||||
_0805AE50:
|
||||
ldr r1, _0805AEBC @ =gUnknown_030054D4
|
||||
ldr r0, [r3]
|
||||
lsls r0, r0, #0x1a
|
||||
lsrs r0, r0, #0x1e
|
||||
adds r0, r0, r1
|
||||
mov r2, sp
|
||||
ldrb r2, [r2, #8]
|
||||
strb r2, [r0]
|
||||
_0805AE60:
|
||||
ldr r1, _0805AEC0 @ =gMultiSioStatusFlags
|
||||
ldr r2, [r1]
|
||||
movs r0, #0x80
|
||||
lsls r0, r0, #1
|
||||
ands r0, r2
|
||||
cmp r0, #0
|
||||
beq _0805AE70
|
||||
movs r4, #1
|
||||
_0805AE70:
|
||||
ldr r0, _0805AEC4 @ =gMultiSioRecv
|
||||
mov r8, r0
|
||||
movs r0, #0x80
|
||||
lsls r0, r0, #5
|
||||
ands r0, r2
|
||||
cmp r0, #0
|
||||
bne _0805AE92
|
||||
cmp r4, #0
|
||||
beq _0805AED8
|
||||
movs r0, #1
|
||||
ands r2, r0
|
||||
cmp r2, #0
|
||||
bne _0805AED8
|
||||
ldr r1, _0805AEC4 @ =gMultiSioRecv
|
||||
ldrh r0, [r1]
|
||||
cmp r0, #0
|
||||
beq _0805AED8
|
||||
_0805AE92:
|
||||
adds r1, r6, #0
|
||||
adds r1, #0xfd
|
||||
ldrb r0, [r1]
|
||||
adds r0, #1
|
||||
strb r0, [r1]
|
||||
lsls r0, r0, #0x18
|
||||
lsrs r0, r0, #0x18
|
||||
cmp r0, #8
|
||||
bls _0805AEE0
|
||||
ldr r1, _0805AEC8 @ =0x0000FFFF
|
||||
movs r0, #0
|
||||
bl TasksDestroyInPriorityRange
|
||||
ldr r1, _0805AECC @ =gUnknown_03002AE4
|
||||
ldr r0, _0805AED0 @ =gUnknown_0300287C
|
||||
ldrb r0, [r0]
|
||||
strb r0, [r1]
|
||||
ldr r1, _0805AED4 @ =gUnknown_03005390
|
||||
movs r0, #0
|
||||
b _0805B1F4
|
||||
.align 2, 0
|
||||
_0805AEBC: .4byte gUnknown_030054D4
|
||||
_0805AEC0: .4byte gMultiSioStatusFlags
|
||||
_0805AEC4: .4byte gMultiSioRecv
|
||||
_0805AEC8: .4byte 0x0000FFFF
|
||||
_0805AECC: .4byte gUnknown_03002AE4
|
||||
_0805AED0: .4byte gUnknown_0300287C
|
||||
_0805AED4: .4byte gUnknown_03005390
|
||||
_0805AED8:
|
||||
adds r1, r6, #0
|
||||
adds r1, #0xfd
|
||||
movs r0, #0
|
||||
strb r0, [r1]
|
||||
_0805AEE0:
|
||||
movs r5, #0
|
||||
adds r2, r6, #0
|
||||
adds r2, #0xfa
|
||||
str r2, [sp, #0x20]
|
||||
movs r7, #1
|
||||
adds r4, r6, #0
|
||||
adds r4, #0xee
|
||||
movs r0, #0xf2
|
||||
adds r0, r0, r6
|
||||
mov ip, r0
|
||||
movs r1, #0
|
||||
str r1, [sp, #0x28]
|
||||
movs r2, #0
|
||||
str r2, [sp, #0x2c]
|
||||
mov sl, r2
|
||||
ldr r0, _0805AF98 @ =gUnknown_03005460
|
||||
mov sb, r0
|
||||
_0805AF02:
|
||||
lsls r1, r5, #2
|
||||
str r1, [sp, #0x30]
|
||||
ldr r3, _0805AF9C @ =gMultiSioRecv
|
||||
add r3, sl
|
||||
ldrb r0, [r4]
|
||||
lsls r0, r0, #1
|
||||
strb r0, [r4]
|
||||
mov r2, ip
|
||||
ldrb r0, [r2]
|
||||
lsls r0, r0, #1
|
||||
strb r0, [r2]
|
||||
ldr r0, _0805AFA0 @ =0x04000128
|
||||
ldr r0, [r0]
|
||||
lsls r0, r0, #0x1a
|
||||
lsrs r0, r0, #0x1e
|
||||
cmp r5, r0
|
||||
beq _0805AF3A
|
||||
adds r1, r7, #0
|
||||
lsls r1, r5
|
||||
ldr r2, _0805AFA4 @ =gMultiSioStatusFlags
|
||||
ldr r0, [r2]
|
||||
ands r0, r1
|
||||
cmp r0, #0
|
||||
beq _0805AFB8
|
||||
ldrh r0, [r3]
|
||||
ldr r1, _0805AFA8 @ =0x0000400F
|
||||
cmp r0, r1
|
||||
bls _0805AFB8
|
||||
_0805AF3A:
|
||||
ldrb r1, [r4]
|
||||
adds r0, r7, #0
|
||||
orrs r0, r1
|
||||
strb r0, [r4]
|
||||
ldr r2, [sp]
|
||||
adds r2, #1
|
||||
str r2, [sp]
|
||||
adds r0, r7, #0
|
||||
lsls r0, r5
|
||||
ldr r1, [sp, #8]
|
||||
orrs r1, r0
|
||||
lsls r0, r1, #0x18
|
||||
lsrs r0, r0, #0x18
|
||||
str r0, [sp, #8]
|
||||
ldr r2, [sp, #0xc]
|
||||
cmp r2, #0
|
||||
beq _0805AF60
|
||||
movs r0, #1
|
||||
str r0, [sp, #0x10]
|
||||
_0805AF60:
|
||||
ldr r0, _0805AFAC @ =gUnknown_03005410
|
||||
ldr r1, [sp, #0x30]
|
||||
adds r0, r1, r0
|
||||
ldr r1, [r3, #4]
|
||||
str r1, [r0]
|
||||
ldrh r0, [r3, #8]
|
||||
mov r2, sb
|
||||
strh r0, [r2]
|
||||
ldr r0, _0805AF98 @ =gUnknown_03005460
|
||||
adds r0, #2
|
||||
ldr r1, [sp, #0x2c]
|
||||
adds r0, r1, r0
|
||||
ldrh r1, [r3, #0xa]
|
||||
strh r1, [r0]
|
||||
ldrh r0, [r3, #0xc]
|
||||
strh r0, [r2, #4]
|
||||
ldr r2, _0805AFB0 @ =gUnknown_03005594
|
||||
ldrb r0, [r2]
|
||||
ldrb r1, [r3, #0xe]
|
||||
orrs r0, r1
|
||||
strb r0, [r2]
|
||||
ldr r2, _0805AFB4 @ =gUnknown_030054D8
|
||||
ldrb r1, [r3, #0xf]
|
||||
ldrb r0, [r2]
|
||||
cmp r0, r1
|
||||
bhs _0805B01E
|
||||
strb r1, [r2]
|
||||
b _0805B01E
|
||||
.align 2, 0
|
||||
_0805AF98: .4byte gUnknown_03005460
|
||||
_0805AF9C: .4byte gMultiSioRecv
|
||||
_0805AFA0: .4byte 0x04000128
|
||||
_0805AFA4: .4byte gMultiSioStatusFlags
|
||||
_0805AFA8: .4byte 0x0000400F
|
||||
_0805AFAC: .4byte gUnknown_03005410
|
||||
_0805AFB0: .4byte gUnknown_03005594
|
||||
_0805AFB4: .4byte gUnknown_030054D8
|
||||
_0805AFB8:
|
||||
ldr r2, [sp, #0x28]
|
||||
ldr r1, _0805AFF0 @ =0x04000120
|
||||
adds r0, r2, r1
|
||||
ldrh r0, [r0]
|
||||
str r0, [sp, #0x30]
|
||||
movs r2, #1
|
||||
str r2, [sp, #0xc]
|
||||
adds r1, r2, #0
|
||||
lsls r1, r5
|
||||
ldr r2, _0805AFF4 @ =gMultiSioStatusFlags
|
||||
ldr r0, [r2]
|
||||
ands r0, r1
|
||||
cmp r0, #0
|
||||
bne _0805AFF8
|
||||
ldr r0, [sp, #0x30]
|
||||
cmp r0, #0
|
||||
bne _0805AFF8
|
||||
movs r1, #1
|
||||
str r1, [sp, #0x10]
|
||||
mov r2, ip
|
||||
ldrb r0, [r2]
|
||||
adds r1, r7, #0
|
||||
orrs r1, r0
|
||||
strb r1, [r2]
|
||||
ldrb r0, [r4]
|
||||
cmp r0, #0
|
||||
bne _0805B024
|
||||
b _0805B01A
|
||||
.align 2, 0
|
||||
_0805AFF0: .4byte 0x04000120
|
||||
_0805AFF4: .4byte gMultiSioStatusFlags
|
||||
_0805AFF8:
|
||||
mov r1, ip
|
||||
ldrb r0, [r1]
|
||||
cmp r0, #0
|
||||
bne _0805B016
|
||||
adds r1, r7, #0
|
||||
lsls r1, r5
|
||||
ldr r2, _0805B08C @ =gMultiSioStatusFlags
|
||||
ldr r0, [r2]
|
||||
ands r0, r1
|
||||
cmp r0, #0
|
||||
beq _0805B01E
|
||||
ldrh r0, [r3]
|
||||
ldr r1, _0805B090 @ =0x0000400F
|
||||
cmp r0, r1
|
||||
bhi _0805B01E
|
||||
_0805B016:
|
||||
movs r2, #1
|
||||
str r2, [sp, #0x10]
|
||||
_0805B01A:
|
||||
movs r0, #0
|
||||
str r0, [sp, #0x14]
|
||||
_0805B01E:
|
||||
ldrb r0, [r4]
|
||||
cmp r0, #0
|
||||
beq _0805B02A
|
||||
_0805B024:
|
||||
ldr r1, [sp, #4]
|
||||
adds r1, #1
|
||||
str r1, [sp, #4]
|
||||
_0805B02A:
|
||||
adds r4, #1
|
||||
movs r2, #1
|
||||
add ip, r2
|
||||
ldr r0, [sp, #0x28]
|
||||
adds r0, #2
|
||||
str r0, [sp, #0x28]
|
||||
movs r1, #0xc
|
||||
add sb, r1
|
||||
ldr r2, [sp, #0x2c]
|
||||
adds r2, #0xc
|
||||
str r2, [sp, #0x2c]
|
||||
movs r0, #0x14
|
||||
add sl, r0
|
||||
adds r5, #1
|
||||
cmp r5, #3
|
||||
bgt _0805B04C
|
||||
b _0805AF02
|
||||
_0805B04C:
|
||||
ldr r1, [sp, #4]
|
||||
cmp r1, #0
|
||||
bne _0805B056
|
||||
movs r2, #1
|
||||
str r2, [sp, #4]
|
||||
_0805B056:
|
||||
ldr r0, [sp, #0x20]
|
||||
ldrb r4, [r0]
|
||||
cmp r4, #0
|
||||
bne _0805B0AE
|
||||
ldr r1, _0805B08C @ =gMultiSioStatusFlags
|
||||
ldr r0, [r1]
|
||||
movs r1, #0x81
|
||||
ands r0, r1
|
||||
cmp r0, #1
|
||||
bne _0805B0A8
|
||||
mov r2, r8
|
||||
ldrh r1, [r2]
|
||||
ldr r0, _0805B094 @ =0x00004010
|
||||
cmp r1, r0
|
||||
bls _0805B0A8
|
||||
ldr r1, _0805B098 @ =0x0000FFFF
|
||||
movs r0, #0
|
||||
bl TasksDestroyInPriorityRange
|
||||
ldr r1, _0805B09C @ =gUnknown_03002AE4
|
||||
ldr r0, _0805B0A0 @ =gUnknown_0300287C
|
||||
ldrb r0, [r0]
|
||||
strb r0, [r1]
|
||||
ldr r0, _0805B0A4 @ =gUnknown_03005390
|
||||
strb r4, [r0]
|
||||
b _0805B1F6
|
||||
.align 2, 0
|
||||
_0805B08C: .4byte gMultiSioStatusFlags
|
||||
_0805B090: .4byte 0x0000400F
|
||||
_0805B094: .4byte 0x00004010
|
||||
_0805B098: .4byte 0x0000FFFF
|
||||
_0805B09C: .4byte gUnknown_03002AE4
|
||||
_0805B0A0: .4byte gUnknown_0300287C
|
||||
_0805B0A4: .4byte gUnknown_03005390
|
||||
_0805B0A8:
|
||||
movs r0, #1
|
||||
ldr r1, [sp, #0x20]
|
||||
strb r0, [r1]
|
||||
_0805B0AE:
|
||||
mov r2, r8
|
||||
ldrh r1, [r2]
|
||||
ldr r0, [sp, #0x10]
|
||||
cmp r0, #0
|
||||
beq _0805B0BA
|
||||
b _0805B1D8
|
||||
_0805B0BA:
|
||||
ldr r0, _0805B130 @ =0x00004011
|
||||
cmp r1, r0
|
||||
beq _0805B0C2
|
||||
b _0805B1D8
|
||||
_0805B0C2:
|
||||
ldr r2, [sp, #0x20]
|
||||
ldrb r0, [r2]
|
||||
cmp r0, #0
|
||||
bne _0805B0CC
|
||||
b _0805B1D8
|
||||
_0805B0CC:
|
||||
ldr r1, _0805B134 @ =gUnknown_03005434
|
||||
mov r2, r8
|
||||
ldr r0, [r2, #0x10]
|
||||
str r0, [r1]
|
||||
ldr r1, _0805B138 @ =gUnknown_030055B8
|
||||
ldrb r0, [r2, #2]
|
||||
strb r0, [r1]
|
||||
movs r5, #0
|
||||
adds r0, r6, #0
|
||||
adds r0, #0xe8
|
||||
str r0, [sp, #0x18]
|
||||
adds r1, r6, #0
|
||||
adds r1, #0xf6
|
||||
str r1, [sp, #0x1c]
|
||||
adds r6, #0xfb
|
||||
str r6, [sp, #0x24]
|
||||
ldr r6, _0805B13C @ =gUnknown_03005460
|
||||
ldr r7, _0805B140 @ =gUnknown_03005594
|
||||
adds r4, r6, #0
|
||||
mov sl, r5
|
||||
ldr r2, _0805B144 @ =gUnknown_03005410
|
||||
mov ip, r2
|
||||
mov sb, r5
|
||||
_0805B0FA:
|
||||
ldr r1, _0805B138 @ =gUnknown_030055B8
|
||||
ldrb r0, [r1]
|
||||
asrs r0, r5
|
||||
movs r1, #1
|
||||
ands r0, r1
|
||||
cmp r0, #0
|
||||
beq _0805B182
|
||||
cmp r5, #0
|
||||
bne _0805B14C
|
||||
mov r2, r8
|
||||
ldr r0, [r2, #4]
|
||||
ldr r1, _0805B144 @ =gUnknown_03005410
|
||||
str r0, [r1]
|
||||
ldrh r0, [r2, #8]
|
||||
strh r0, [r6]
|
||||
ldrh r0, [r2, #0xa]
|
||||
strh r0, [r6, #2]
|
||||
ldrh r0, [r2, #0xc]
|
||||
strh r0, [r6, #4]
|
||||
ldrb r0, [r7]
|
||||
ldrb r1, [r2, #0xe]
|
||||
orrs r0, r1
|
||||
strb r0, [r7]
|
||||
ldr r2, _0805B148 @ =gUnknown_030054D8
|
||||
mov r0, r8
|
||||
ldrb r1, [r0, #0xf]
|
||||
b _0805B17A
|
||||
.align 2, 0
|
||||
_0805B130: .4byte 0x00004011
|
||||
_0805B134: .4byte gUnknown_03005434
|
||||
_0805B138: .4byte gUnknown_030055B8
|
||||
_0805B13C: .4byte gUnknown_03005460
|
||||
_0805B140: .4byte gUnknown_03005594
|
||||
_0805B144: .4byte gUnknown_03005410
|
||||
_0805B148: .4byte gUnknown_030054D8
|
||||
_0805B14C:
|
||||
ldr r3, _0805B1C0 @ =gMultiSioRecv
|
||||
add r3, sb
|
||||
ldrh r0, [r3]
|
||||
ldr r1, _0805B1C4 @ =0x00004010
|
||||
cmp r0, r1
|
||||
bne _0805B182
|
||||
ldr r0, [r3, #4]
|
||||
mov r2, ip
|
||||
str r0, [r2]
|
||||
ldrh r0, [r3, #8]
|
||||
strh r0, [r4]
|
||||
adds r0, r6, #2
|
||||
add r0, sl
|
||||
ldrh r1, [r3, #0xa]
|
||||
strh r1, [r0]
|
||||
ldrh r0, [r3, #0xc]
|
||||
strh r0, [r4, #4]
|
||||
ldrb r0, [r7]
|
||||
ldrb r1, [r3, #0xe]
|
||||
orrs r0, r1
|
||||
strb r0, [r7]
|
||||
ldr r2, _0805B1C8 @ =gUnknown_030054D8
|
||||
ldrb r1, [r3, #0xf]
|
||||
_0805B17A:
|
||||
ldrb r0, [r2]
|
||||
cmp r0, r1
|
||||
bhs _0805B182
|
||||
strb r1, [r2]
|
||||
_0805B182:
|
||||
adds r4, #0xc
|
||||
movs r0, #0xc
|
||||
add sl, r0
|
||||
movs r1, #4
|
||||
add ip, r1
|
||||
movs r2, #0x14
|
||||
add sb, r2
|
||||
adds r5, #1
|
||||
cmp r5, #3
|
||||
ble _0805B0FA
|
||||
movs r0, #0
|
||||
movs r1, #0
|
||||
ldr r2, [sp, #0x18]
|
||||
strh r0, [r2]
|
||||
ldr r0, [sp, #0x1c]
|
||||
strb r1, [r0]
|
||||
ldr r2, _0805B1CC @ =gUnknown_030054D4
|
||||
strb r1, [r2, #3]
|
||||
strb r1, [r2, #2]
|
||||
strb r1, [r2, #1]
|
||||
strb r1, [r2]
|
||||
ldr r0, [sp, #0x24]
|
||||
strb r1, [r0]
|
||||
ldr r1, _0805B1D0 @ =gCurTask
|
||||
ldr r0, [r1]
|
||||
ldr r2, _0805B1D4 @ =sub_805B4C0
|
||||
str r2, [r0, #8]
|
||||
bl _call_via_r2
|
||||
b _0805B42A
|
||||
.align 2, 0
|
||||
_0805B1C0: .4byte gMultiSioRecv
|
||||
_0805B1C4: .4byte 0x00004010
|
||||
_0805B1C8: .4byte gUnknown_030054D8
|
||||
_0805B1CC: .4byte gUnknown_030054D4
|
||||
_0805B1D0: .4byte gCurTask
|
||||
_0805B1D4: .4byte sub_805B4C0
|
||||
_0805B1D8:
|
||||
lsls r1, r1, #0x10
|
||||
ldr r0, _0805B204 @ =0x40120000
|
||||
cmp r1, r0
|
||||
bls _0805B220
|
||||
ldr r1, _0805B208 @ =0x0000FFFF
|
||||
movs r0, #0
|
||||
bl TasksDestroyInPriorityRange
|
||||
ldr r1, _0805B20C @ =gUnknown_03002AE4
|
||||
ldr r0, _0805B210 @ =gUnknown_0300287C
|
||||
ldrb r0, [r0]
|
||||
strb r0, [r1]
|
||||
ldr r1, _0805B214 @ =gUnknown_03005390
|
||||
movs r0, #0
|
||||
_0805B1F4:
|
||||
strb r0, [r1]
|
||||
_0805B1F6:
|
||||
ldr r1, _0805B218 @ =gUnknown_03004D5C
|
||||
ldr r0, _0805B21C @ =gUnknown_03002A84
|
||||
ldrb r0, [r0]
|
||||
strb r0, [r1]
|
||||
bl sub_805B9A4
|
||||
b _0805B42A
|
||||
.align 2, 0
|
||||
_0805B204: .4byte 0x40120000
|
||||
_0805B208: .4byte 0x0000FFFF
|
||||
_0805B20C: .4byte gUnknown_03002AE4
|
||||
_0805B210: .4byte gUnknown_0300287C
|
||||
_0805B214: .4byte gUnknown_03005390
|
||||
_0805B218: .4byte gUnknown_03004D5C
|
||||
_0805B21C: .4byte gUnknown_03002A84
|
||||
_0805B220:
|
||||
ldr r0, _0805B254 @ =gPressedKeys
|
||||
ldrh r1, [r0]
|
||||
movs r0, #2
|
||||
ands r0, r1
|
||||
cmp r0, #0
|
||||
beq _0805B2B0
|
||||
movs r0, #0x6b
|
||||
bl m4aSongNumStart
|
||||
ldr r0, _0805B258 @ =gMultiSioStatusFlags
|
||||
ldr r4, [r0]
|
||||
movs r0, #0x80
|
||||
ands r4, r0
|
||||
cmp r4, #0
|
||||
beq _0805B268
|
||||
ldr r7, _0805B25C @ =gMultiSioSend
|
||||
movs r1, #0
|
||||
strh r1, [r7]
|
||||
adds r0, r6, #0
|
||||
adds r0, #0xe8
|
||||
strh r1, [r0]
|
||||
ldr r0, _0805B260 @ =gCurTask
|
||||
ldr r1, [r0]
|
||||
ldr r0, _0805B264 @ =sub_805B454
|
||||
str r0, [r1, #8]
|
||||
b _0805B42A
|
||||
.align 2, 0
|
||||
_0805B254: .4byte gPressedKeys
|
||||
_0805B258: .4byte gMultiSioStatusFlags
|
||||
_0805B25C: .4byte gMultiSioSend
|
||||
_0805B260: .4byte gCurTask
|
||||
_0805B264: .4byte sub_805B454
|
||||
_0805B268:
|
||||
ldr r0, _0805B29C @ =gMultiSioEnabled
|
||||
strb r4, [r0]
|
||||
bl MultiSioStop
|
||||
movs r0, #0
|
||||
bl MultiSioInit
|
||||
ldr r7, _0805B2A0 @ =gMultiSioSend
|
||||
movs r2, #0
|
||||
strh r4, [r7]
|
||||
ldr r0, _0805B2A4 @ =gUnknown_03004D80
|
||||
strb r2, [r0]
|
||||
ldr r1, _0805B2A8 @ =gUnknown_03002280
|
||||
strb r2, [r1]
|
||||
strb r2, [r1, #1]
|
||||
movs r0, #0xff
|
||||
strb r0, [r1, #2]
|
||||
movs r0, #0x20
|
||||
strb r0, [r1, #3]
|
||||
bl CreateMultiplayerModeSelectScreen
|
||||
ldr r0, _0805B2AC @ =gCurTask
|
||||
ldr r0, [r0]
|
||||
bl TaskDestroy
|
||||
b _0805B42A
|
||||
.align 2, 0
|
||||
_0805B29C: .4byte gMultiSioEnabled
|
||||
_0805B2A0: .4byte gMultiSioSend
|
||||
_0805B2A4: .4byte gUnknown_03004D80
|
||||
_0805B2A8: .4byte gUnknown_03002280
|
||||
_0805B2AC: .4byte gCurTask
|
||||
_0805B2B0:
|
||||
ldr r1, _0805B3AC @ =gMultiSioStatusFlags
|
||||
ldr r0, [r1]
|
||||
movs r1, #0x80
|
||||
ands r0, r1
|
||||
cmp r0, #0
|
||||
beq _0805B2D8
|
||||
ldr r2, [sp, #4]
|
||||
cmp r2, #1
|
||||
ble _0805B302
|
||||
ldr r0, [sp, #0x14]
|
||||
cmp r0, #0
|
||||
beq _0805B2D8
|
||||
adds r4, r6, #0
|
||||
adds r4, #0x3c
|
||||
adds r0, r4, #0
|
||||
bl sub_8004558
|
||||
adds r0, r4, #0
|
||||
bl sub_80051E8
|
||||
_0805B2D8:
|
||||
ldr r1, [sp, #4]
|
||||
cmp r1, #1
|
||||
ble _0805B302
|
||||
adds r4, r6, #0
|
||||
adds r4, #0x6c
|
||||
ldr r0, _0805B3B0 @ =0x00000432
|
||||
strh r0, [r4, #0xa]
|
||||
adds r1, #6
|
||||
adds r0, r6, #0
|
||||
adds r0, #0x8c
|
||||
strb r1, [r0]
|
||||
adds r1, r6, #0
|
||||
adds r1, #0x8d
|
||||
movs r0, #0xff
|
||||
strb r0, [r1]
|
||||
adds r0, r4, #0
|
||||
bl sub_8004558
|
||||
adds r0, r4, #0
|
||||
bl sub_80051E8
|
||||
_0805B302:
|
||||
adds r4, r6, #0
|
||||
adds r4, #0xc
|
||||
adds r0, r4, #0
|
||||
bl sub_80051E8
|
||||
ldr r0, _0805B3AC @ =gMultiSioStatusFlags
|
||||
ldr r0, [r0]
|
||||
movs r1, #0x80
|
||||
ands r0, r1
|
||||
adds r2, r6, #0
|
||||
adds r2, #0xf6
|
||||
str r2, [sp, #0x1c]
|
||||
cmp r0, #0
|
||||
beq _0805B3CC
|
||||
ldr r0, [sp, #0x10]
|
||||
cmp r0, #0
|
||||
bne _0805B336
|
||||
ldr r1, [sp]
|
||||
cmp r1, #1
|
||||
ble _0805B336
|
||||
ldr r0, _0805B3B4 @ =gPressedKeys
|
||||
ldrh r1, [r0]
|
||||
movs r0, #8
|
||||
ands r0, r1
|
||||
cmp r0, #0
|
||||
bne _0805B34E
|
||||
_0805B336:
|
||||
adds r1, r6, #0
|
||||
adds r1, #0xf6
|
||||
ldrb r0, [r1]
|
||||
str r1, [sp, #0x1c]
|
||||
cmp r0, #0
|
||||
beq _0805B3EC
|
||||
ldr r2, [sp, #0x10]
|
||||
cmp r2, #0
|
||||
bne _0805B3CC
|
||||
ldr r0, [sp]
|
||||
cmp r0, #1
|
||||
ble _0805B3CC
|
||||
_0805B34E:
|
||||
ldr r7, _0805B3B8 @ =gMultiSioSend
|
||||
ldr r0, _0805B3BC @ =0x00004011
|
||||
strh r0, [r7]
|
||||
mov r1, sp
|
||||
ldrb r1, [r1, #8]
|
||||
strb r1, [r7, #2]
|
||||
ldr r1, _0805B3C0 @ =gLoadedSaveGame
|
||||
ldr r0, [r1]
|
||||
ldr r0, [r0]
|
||||
str r0, [r7, #4]
|
||||
adds r0, r6, #0
|
||||
adds r0, #0xdc
|
||||
ldr r0, [r0]
|
||||
str r0, [r7, #0x10]
|
||||
movs r2, #0
|
||||
ldr r0, _0805B3C4 @ =gUnknown_03005594
|
||||
mov r8, r0
|
||||
ldr r0, _0805B3C8 @ =gUnknown_030054D8
|
||||
mov sb, r0
|
||||
adds r4, r6, #0
|
||||
adds r4, #0xfc
|
||||
adds r5, r1, #0
|
||||
adds r3, r7, #0
|
||||
adds r3, #8
|
||||
_0805B37E:
|
||||
lsls r0, r2, #1
|
||||
ldr r1, [r5]
|
||||
adds r1, #0x20
|
||||
adds r1, r1, r0
|
||||
ldrh r0, [r1]
|
||||
strh r0, [r3]
|
||||
adds r3, #2
|
||||
adds r2, #1
|
||||
cmp r2, #2
|
||||
ble _0805B37E
|
||||
mov r1, r8
|
||||
ldrb r0, [r1]
|
||||
movs r1, #0
|
||||
strb r0, [r7, #0xe]
|
||||
mov r2, sb
|
||||
ldrb r0, [r2]
|
||||
strb r0, [r7, #0xf]
|
||||
movs r0, #1
|
||||
ldr r2, [sp, #0x1c]
|
||||
strb r0, [r2]
|
||||
strb r1, [r4]
|
||||
b _0805B42A
|
||||
.align 2, 0
|
||||
_0805B3AC: .4byte gMultiSioStatusFlags
|
||||
_0805B3B0: .4byte 0x00000432
|
||||
_0805B3B4: .4byte gPressedKeys
|
||||
_0805B3B8: .4byte gMultiSioSend
|
||||
_0805B3BC: .4byte 0x00004011
|
||||
_0805B3C0: .4byte gLoadedSaveGame
|
||||
_0805B3C4: .4byte gUnknown_03005594
|
||||
_0805B3C8: .4byte gUnknown_030054D8
|
||||
_0805B3CC:
|
||||
ldr r1, [sp, #0x1c]
|
||||
ldrb r0, [r1]
|
||||
cmp r0, #0
|
||||
beq _0805B3EC
|
||||
movs r0, #0
|
||||
strb r0, [r1]
|
||||
ldr r0, _0805B43C @ =gMultiSioStatusFlags
|
||||
ldr r0, [r0]
|
||||
movs r1, #0x80
|
||||
ands r0, r1
|
||||
cmp r0, #0
|
||||
beq _0805B3EC
|
||||
adds r1, r6, #0
|
||||
adds r1, #0xfc
|
||||
movs r0, #1
|
||||
strb r0, [r1]
|
||||
_0805B3EC:
|
||||
ldr r7, _0805B440 @ =gMultiSioSend
|
||||
ldr r0, _0805B444 @ =0x00004010
|
||||
strh r0, [r7]
|
||||
ldr r1, _0805B448 @ =gLoadedSaveGame
|
||||
ldr r0, [r1]
|
||||
ldr r0, [r0]
|
||||
str r0, [r7, #4]
|
||||
movs r2, #0
|
||||
ldr r0, _0805B44C @ =gUnknown_03005594
|
||||
mov r8, r0
|
||||
ldr r0, _0805B450 @ =gUnknown_030054D8
|
||||
mov sb, r0
|
||||
adds r4, r1, #0
|
||||
adds r3, r7, #0
|
||||
adds r3, #8
|
||||
_0805B40A:
|
||||
lsls r0, r2, #1
|
||||
ldr r1, [r4]
|
||||
adds r1, #0x20
|
||||
adds r1, r1, r0
|
||||
ldrh r0, [r1]
|
||||
strh r0, [r3]
|
||||
adds r3, #2
|
||||
adds r2, #1
|
||||
cmp r2, #2
|
||||
ble _0805B40A
|
||||
mov r1, r8
|
||||
ldrb r0, [r1]
|
||||
strb r0, [r7, #0xe]
|
||||
mov r2, sb
|
||||
ldrb r0, [r2]
|
||||
strb r0, [r7, #0xf]
|
||||
_0805B42A:
|
||||
add sp, #0x34
|
||||
pop {r3, r4, r5}
|
||||
mov r8, r3
|
||||
mov sb, r4
|
||||
mov sl, r5
|
||||
pop {r4, r5, r6, r7}
|
||||
pop {r0}
|
||||
bx r0
|
||||
.align 2, 0
|
||||
_0805B43C: .4byte gMultiSioStatusFlags
|
||||
_0805B440: .4byte gMultiSioSend
|
||||
_0805B444: .4byte 0x00004010
|
||||
_0805B448: .4byte gLoadedSaveGame
|
||||
_0805B44C: .4byte gUnknown_03005594
|
||||
_0805B450: .4byte gUnknown_030054D8
|
||||
|
||||
|
||||
.syntax divided
|
||||
@@ -21,6 +21,17 @@
|
||||
}
|
||||
#endif
|
||||
|
||||
#if NON_MATCHING
|
||||
#define NONMATCH(path, decl) decl
|
||||
#define END_NONMATCH
|
||||
#else
|
||||
#define NONMATCH(path, decl) \
|
||||
NAKED decl { \
|
||||
asm(".include " #path); \
|
||||
if (0)
|
||||
#define END_NONMATCH }
|
||||
#endif
|
||||
|
||||
/// IDE support
|
||||
#if defined(__APPLE__) || defined(__CYGWIN__) || defined(__INTELLISENSE__)
|
||||
// We define these when using certain IDEs to fool preproc
|
||||
|
||||
@@ -18,4 +18,8 @@
|
||||
|
||||
#define TO_LEVEL_INDEX(zone, act) ((zone) * (ACTS_PER_ZONE + 1)) + (act)
|
||||
|
||||
// likely static data, needs to be extracted
|
||||
extern union Unk_03002E60 gMapHeaders[];
|
||||
extern u32 gUnknown_080F40D4;
|
||||
|
||||
#endif // GUARD_ZONES_H
|
||||
@@ -0,0 +1,27 @@
|
||||
import sys
|
||||
asm_file = sys.argv[1]
|
||||
|
||||
asm_content = "".join(open(asm_file).readlines())
|
||||
func_lines = asm_content.split("thumb_func_start")[1].split('\n')
|
||||
func_name = func_lines[0].strip()
|
||||
func_body = "\n".join(func_lines[2:])
|
||||
|
||||
new_asm_content = asm_content.replace("thumb_func_start" + asm_content.split("thumb_func_start")[1], "")
|
||||
|
||||
content = f"""\
|
||||
.include "asm/macros.inc"
|
||||
.include "constants/constants.inc"
|
||||
|
||||
.syntax unified
|
||||
.text
|
||||
{func_body}
|
||||
.syntax divided
|
||||
"""
|
||||
|
||||
open(f"asm/non_matching/{func_name}.inc", 'w').write(content)
|
||||
open(asm_file, "w").write(new_asm_content)
|
||||
print(f"""NONMATCH("asm/non_matching/{func_name}.inc", void {func_name}()) {{
|
||||
|
||||
}}
|
||||
END_NONMATCH
|
||||
""")
|
||||
+1
-4
@@ -8,10 +8,7 @@
|
||||
#include "player.h"
|
||||
#include "title_screen.h"
|
||||
#include "profile.h"
|
||||
|
||||
// likely static data, needs to be extracted
|
||||
extern union Unk_03002E60 gMapHeaders[];
|
||||
extern u32 gUnknown_080F40D4;
|
||||
#include "zones.h"
|
||||
|
||||
// Some sort of unused task variable
|
||||
struct Task *gUnknown_03005844;
|
||||
|
||||
+261
-252
@@ -10,6 +10,9 @@
|
||||
#include "input.h"
|
||||
#include "m4a.h"
|
||||
#include "constants/songs.h"
|
||||
#include "game.h"
|
||||
#include "flags.h"
|
||||
#include "zones.h"
|
||||
|
||||
struct MultiplayerConnectScreen {
|
||||
struct UNK_802D4CC_UNK270 unk0;
|
||||
@@ -177,276 +180,282 @@ void sub_805AAD8(void) {
|
||||
|
||||
void sub_805B9A4(void);
|
||||
u32 gUnknown_03005410[4];
|
||||
|
||||
// multiplayerNames
|
||||
u16 gUnknown_03005460[4][6];
|
||||
|
||||
u32 gUnknown_03005434;
|
||||
u8 gUnknown_030055B8;
|
||||
void sub_805B4C0(void);
|
||||
void sub_805B454(void);
|
||||
|
||||
#define SIO_MULTI_CNT ((volatile struct SioMultiCnt *)REG_ADDR_SIOCNT)
|
||||
|
||||
// https://decomp.me/scratch/EfwxS
|
||||
// void sub_805ADAC(void) {
|
||||
// u8 i;
|
||||
// u32 var1 = 0;
|
||||
// u32 var2 = 0;
|
||||
// u8 var3 = 0;
|
||||
// u8 bool1 = FALSE;
|
||||
// u8 bool2 = FALSE;
|
||||
// u8 bool3 = FALSE;
|
||||
// struct MultiplayerConnectScreen* connectScreen = TaskGetStructPtr(gCurTask, connectScreen);
|
||||
// sub_802D4CC(&connectScreen->unk0);
|
||||
NONMATCH("asm/non_matching/sub_805ADAC.inc", void sub_805ADAC()) {
|
||||
s32 i;
|
||||
s32 x;
|
||||
s32 var1 = 0;
|
||||
s32 var2 = 0;
|
||||
u8 var3 = 0;
|
||||
bool8 r4 = FALSE;
|
||||
bool8 bool1 = FALSE;
|
||||
bool8 bool2 = FALSE;
|
||||
bool8 bool3 = TRUE;
|
||||
struct MultiplayerConnectScreen *connectScreen = TaskGetStructPtr(gCurTask, connectScreen);
|
||||
struct MultiSioData_0_0 *send, *recv;
|
||||
struct MultiSioData_0_0 *data;
|
||||
struct UNK_0808B3FC_UNK240 *r4p;
|
||||
|
||||
// if (gMultiSioStatusFlags & (MULTI_SIO_PARENT | MULTI_SIO_RECV_ID0)) {
|
||||
// if (gMultiSioStatusFlags & MULTI_SIO_RECV_ID(REG_SIOCNT >> 4)) {
|
||||
// if (gUnknown_030054D4[REG_SIOCNT >> 4]++ > 180) {
|
||||
// TasksDestroyAll();
|
||||
// gUnknown_03002AE4 = gUnknown_0300287C;
|
||||
// gUnknown_03005390 = 0;
|
||||
// gUnknown_03004D5C = gUnknown_03002A84;
|
||||
// gUnknown_0300287C = gUnknown_03002AE4;
|
||||
// sub_805B9A4();
|
||||
// return;
|
||||
// }
|
||||
// } else {
|
||||
// gUnknown_030054D4[REG_SIOCNT >> 4] = 0;
|
||||
// }
|
||||
// }
|
||||
sub_802D4CC(&connectScreen->unk0);
|
||||
|
||||
// if (gMultiSioStatusFlags & MULTI_SIO_HARD_ERROR ||
|
||||
// (gMultiSioStatusFlags & MULTI_SIO_CONNECTED_ID0 &&
|
||||
// !(gMultiSioStatusFlags & MULTI_SIO_RECV_ID0) && gMultiSioRecv[0].pat0.unk0 != 0)) {
|
||||
// if (++connectScreen->unkFD >= 9) {
|
||||
// TasksDestroyAll();
|
||||
// gUnknown_03002AE4 = gUnknown_0300287C;
|
||||
// gUnknown_03005390 = 0;
|
||||
// gUnknown_03004D5C = gUnknown_03002A84;
|
||||
// gUnknown_0300287C = gUnknown_03002AE4;
|
||||
// sub_805B9A4();
|
||||
// return;
|
||||
// }
|
||||
// } else {
|
||||
// connectScreen->unkFD = 0;
|
||||
// }
|
||||
if (gMultiSioStatusFlags & (MULTI_SIO_PARENT | MULTI_SIO_RECV_ID0)) {
|
||||
if (!(gMultiSioStatusFlags & MULTI_SIO_RECV_ID(SIO_MULTI_CNT->id))) {
|
||||
if (gUnknown_030054D4[SIO_MULTI_CNT->id]++ > 180) {
|
||||
TasksDestroyAll();
|
||||
gUnknown_03002AE4 = gUnknown_0300287C;
|
||||
gUnknown_03005390 = 0;
|
||||
gUnknown_03004D5C = gUnknown_03002A84;
|
||||
sub_805B9A4();
|
||||
return;
|
||||
}
|
||||
} else {
|
||||
gUnknown_030054D4[SIO_MULTI_CNT->id] = 0;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
// for (i = 0; i < 4; i++) {
|
||||
// connectScreen->unkEE[i] <<= 1;
|
||||
// connectScreen->unkF2[i] <<= 1;
|
||||
// if (i == REG_SIOCNT >> 4 ||
|
||||
// (gMultiSioStatusFlags & MULTI_SIO_RECV_ID(i) &&
|
||||
// gMultiSioRecv[i].pat0.unk0 < 0x400)) {
|
||||
// connectScreen->unkEE[i] |= 1;
|
||||
// var1++;
|
||||
// var3 |= MULTI_SIO_RECV_ID(i);
|
||||
// if (bool1) {
|
||||
// bool2 = TRUE;
|
||||
// }
|
||||
// gUnknown_03005410[i] = gMultiSioRecv[i].pat0.unk4;
|
||||
// memcpy(&gUnknown_03005460[i], &gMultiSioRecv[i].pat0.unk8, sizeof(gMultiSioRecv[i].pat0.unk8));
|
||||
// gUnknown_03005594 |= gMultiSioRecv[i].pat0.unkE;
|
||||
|
||||
// if (gMultiSioRecv[i].pat0.unkF > gUnknown_030054D8) {
|
||||
// gUnknown_030054D8 = gMultiSioRecv[i].pat0.unkF;
|
||||
// }
|
||||
|
||||
// if (connectScreen->unkEE[i] != 0) {
|
||||
// var2++;
|
||||
// }
|
||||
// } else {
|
||||
// bool1 = TRUE;
|
||||
// if (gMultiSioStatusFlags & MULTI_SIO_CONNECTED_ID(i) || *(vu16 *)(REG_ADDR_SIOMULTI0 + i * 2) != 0) {
|
||||
// if (connectScreen->unkF2[i] != 0 || (gMultiSioStatusFlags & MULTI_SIO_CONNECTED_ID(i) && gMultiSioRecv[i].pat0.unk0 < 0x4010)) {
|
||||
// bool2 = TRUE;
|
||||
// bool3 = FALSE;
|
||||
// }
|
||||
// if (connectScreen->unkEE[i] != 0) {
|
||||
// var2++;
|
||||
// }
|
||||
// } else {
|
||||
// bool2 = TRUE;
|
||||
// connectScreen->unkF2[i] |= 1;
|
||||
|
||||
// if (connectScreen->unkEE[i] == 0) {
|
||||
// bool2 = TRUE;
|
||||
// bool3 = FALSE;
|
||||
// if (connectScreen->unkEE[i] != 0) {
|
||||
// var2++;
|
||||
// }
|
||||
// } else {
|
||||
// var2++;
|
||||
// }
|
||||
// }
|
||||
// }
|
||||
// }
|
||||
|
||||
// if (var2 == 0) {
|
||||
// var2 = 1;
|
||||
// }
|
||||
|
||||
// if (connectScreen->unkFA == 0) {
|
||||
// if (gMultiSioStatusFlags & (MULTI_SIO_PARENT | MULTI_SIO_RECV_ID0) && gMultiSioRecv[i].pat0.unk0 > 0x4010) {
|
||||
// TasksDestroyAll();
|
||||
// gUnknown_03002AE4 = gUnknown_0300287C;
|
||||
// gUnknown_03005390 = 0;
|
||||
// gUnknown_03004D5C = gUnknown_03002A84;
|
||||
// gUnknown_0300287C = gUnknown_03002AE4;
|
||||
// return;
|
||||
// }
|
||||
// connectScreen->unkFA = 1;
|
||||
// }
|
||||
if (gMultiSioStatusFlags & MULTI_SIO_CONNECTED_ID0) {
|
||||
r4 = TRUE;
|
||||
}
|
||||
|
||||
recv = &gMultiSioRecv[0].pat0;
|
||||
if (gMultiSioStatusFlags & MULTI_SIO_HARD_ERROR
|
||||
|| (r4 && !(gMultiSioStatusFlags & MULTI_SIO_RECV_ID0) && recv->unk0 != 0)) {
|
||||
if (++connectScreen->unkFD >= 9) {
|
||||
TasksDestroyAll();
|
||||
gUnknown_03002AE4 = gUnknown_0300287C;
|
||||
gUnknown_03005390 = 0;
|
||||
gUnknown_03004D5C = gUnknown_03002A84;
|
||||
sub_805B9A4();
|
||||
return;
|
||||
}
|
||||
} else {
|
||||
connectScreen->unkFD = 0;
|
||||
}
|
||||
|
||||
for (i = 0; i < 4; i++) {
|
||||
data = &gMultiSioRecv[i].pat0;
|
||||
connectScreen->unkEE[i] <<= 1;
|
||||
connectScreen->unkF2[i] <<= 1;
|
||||
if (i == SIO_MULTI_CNT->id ||
|
||||
(gMultiSioStatusFlags & MULTI_SIO_RECV_ID(i) &&
|
||||
data->unk0 > 0x400F)) {
|
||||
connectScreen->unkEE[i] |= 1;
|
||||
var1++;
|
||||
var3 |= MULTI_SIO_RECV_ID(i);
|
||||
if (bool1) {
|
||||
bool2 = TRUE;
|
||||
}
|
||||
gUnknown_03005410[i] = data->unk4;
|
||||
gUnknown_03005460[i][0] = data->unk8[0];
|
||||
gUnknown_03005460[i][1] = data->unk8[1];
|
||||
gUnknown_03005460[i][2] = data->unk8[2];
|
||||
gUnknown_03005594 |= data->unkE;
|
||||
|
||||
// if (!bool2 && gMultiSioRecv[0].pat0.unk0 == 0x4011 && connectScreen->unkFA != 0) {
|
||||
// u8 j;
|
||||
// gUnknown_03005434 = gMultiSioRecv[0].pat0.unk10;
|
||||
// gUnknown_030055B8 = gMultiSioRecv[0].pat0.unk2;
|
||||
// for (j = 0; j < 4; j++) {
|
||||
// if ((gUnknown_030055B8 >> j) & 1) {
|
||||
// if (j == 0) {
|
||||
// gUnknown_03005410[0] = gMultiSioRecv[j].pat0.unk4;
|
||||
// memcpy(&gUnknown_03005460[0], &gMultiSioRecv[j].pat0.unk8, sizeof(gMultiSioRecv[j].pat0.unk8));
|
||||
// gUnknown_03005594 |= gMultiSioRecv[j].pat0.unkE;
|
||||
// if (gMultiSioRecv[j].pat0.unkF > gUnknown_030054D8) {
|
||||
// gUnknown_030054D8 = gMultiSioRecv[j].pat0.unkF;
|
||||
// }
|
||||
// } else {
|
||||
// if (gMultiSioRecv[j].pat0.unk0 != 0x4010) {
|
||||
// continue;
|
||||
// }
|
||||
// gUnknown_03005410[j] = gMultiSioRecv[j].pat0.unk4;
|
||||
// memcpy(&gUnknown_03005460[j], &gMultiSioRecv[j].pat0.unk8, sizeof(gMultiSioRecv[j].pat0.unk8));
|
||||
// gUnknown_03005594 |= gMultiSioRecv[j].pat0.unkE;
|
||||
// if (gMultiSioRecv[0].pat0.unkF > gUnknown_030054D8) {
|
||||
// gUnknown_030054D8 = gMultiSioRecv[0].pat0.unkF;
|
||||
// }
|
||||
// }
|
||||
// }
|
||||
// }
|
||||
// connectScreen->unkE8 = 0;
|
||||
// connectScreen->unkF6 = 0;
|
||||
// gUnknown_030054D4[3] = 0;
|
||||
// gUnknown_030054D4[2] = 0;
|
||||
// gUnknown_030054D4[1] = 0;
|
||||
// gUnknown_030054D4[0] = 0;
|
||||
// connectScreen->unkFB = 0;
|
||||
// gCurTask->main = sub_805B4C0;
|
||||
// sub_805B4C0();
|
||||
// return;
|
||||
// }
|
||||
if (gUnknown_030054D8 < data->unkF) {
|
||||
gUnknown_030054D8 = data->unkF;
|
||||
}
|
||||
|
||||
// if (gMultiSioRecv[0].pat0.unk0 < 0x4013) {
|
||||
// if (gPressedKeys & B_BUTTON) {
|
||||
// m4aSongNumStart(SE_RETURN);
|
||||
// if (gMultiSioStatusFlags & MULTI_SIO_PARENT) {
|
||||
// gMultiSioSend.pat0.unk0 = 0;
|
||||
// connectScreen->unkE8 = 0;
|
||||
// gCurTask->main = sub_805B454;
|
||||
// return;
|
||||
// }
|
||||
|
||||
} else {
|
||||
u16 a = ((vu16 *)(REG_ADDR_SIOMULTI0))[i];
|
||||
bool1 = TRUE;
|
||||
if (!(gMultiSioStatusFlags & MULTI_SIO_RECV_ID(i)) && a == 0) {
|
||||
bool2 = TRUE;
|
||||
connectScreen->unkF2[i] |= 1;
|
||||
|
||||
// gMultiSioEnabled = FALSE;
|
||||
// MultiSioStop();
|
||||
// MultiSioInit(0);
|
||||
// gMultiSioSend.pat0.unk0 = 0;
|
||||
// gUnknown_03004D80[0] = 0;
|
||||
if (connectScreen->unkEE[i] == 0) {
|
||||
bool2 = TRUE;
|
||||
bool3 = FALSE;
|
||||
}
|
||||
} else {
|
||||
if (connectScreen->unkF2[i] != 0
|
||||
|| (gMultiSioStatusFlags & MULTI_SIO_RECV_ID(i) && data->unk0 < 0x4010)) {
|
||||
bool2 = TRUE;
|
||||
bool3 = FALSE;
|
||||
}
|
||||
}
|
||||
}
|
||||
if (connectScreen->unkEE[i] != 0) {
|
||||
var2++;
|
||||
}
|
||||
}
|
||||
|
||||
// gUnknown_03002280[0] = 0;
|
||||
// gUnknown_03002280[1] = 0;
|
||||
// gUnknown_03002280[2] = 0xff;
|
||||
// gUnknown_03002280[3] = 32;
|
||||
// sub_805A1CC();
|
||||
// TaskDestroy(gCurTask);
|
||||
// return;
|
||||
// }
|
||||
if (var2 == 0) {
|
||||
var2 = 1;
|
||||
}
|
||||
|
||||
// if (!(gMultiSioStatusFlags & MULTI_SIO_PARENT)) {
|
||||
// if (var2 > 1) {
|
||||
// struct UNK_0808B3FC_UNK240* unk6C = &connectScreen->unk6C;
|
||||
// unk6C->unkA = 0x432;
|
||||
// unk6C->unk20 = 6;
|
||||
// unk6C->unk21 = 0xFF;
|
||||
// sub_8004558(unk6C);
|
||||
// sub_80051E8(unk6C);
|
||||
// }
|
||||
// } else if (var2 > 1) {
|
||||
// if (bool3) {
|
||||
// struct UNK_0808B3FC_UNK240* unk3C = &connectScreen->unk3C;
|
||||
// sub_8004558(unk3C);
|
||||
// sub_80051E8(unk3C);
|
||||
// }
|
||||
// if (var2 > 1) {
|
||||
// struct UNK_0808B3FC_UNK240* unk6C = &connectScreen->unk6C;
|
||||
// unk6C->unkA = 0x432;
|
||||
// unk6C->unk20 = 6;
|
||||
// unk6C->unk21 = 0xFF;
|
||||
// sub_8004558(unk6C);
|
||||
// sub_80051E8(unk6C);
|
||||
// }
|
||||
// }
|
||||
// sub_80051E8(&connectScreen->unkC);
|
||||
if (connectScreen->unkFA == 0) {
|
||||
if (!(gMultiSioStatusFlags & MULTI_SIO_PARENT) && gMultiSioStatusFlags & MULTI_SIO_RECV_ID0 && recv->unk0 > 0x4010) {
|
||||
TasksDestroyAll();
|
||||
gUnknown_03002AE4 = gUnknown_0300287C;
|
||||
gUnknown_03005390 = 0;
|
||||
gUnknown_03004D5C = gUnknown_03002A84;
|
||||
sub_805B9A4();
|
||||
return;
|
||||
}
|
||||
connectScreen->unkFA = 1;
|
||||
}
|
||||
|
||||
// if (gMultiSioStatusFlags & MULTI_SIO_PARENT) {
|
||||
// if (!bool1 && var1 > 1 && gPressedKeys & START_BUTTON) {
|
||||
// u8 x;
|
||||
// u8* unkF6 = &connectScreen->unkF6;
|
||||
// gMultiSioSend.pat0.unk0 = 0x4011;
|
||||
// gMultiSioSend.pat0.unk2 = var3;
|
||||
// gMultiSioSend.pat0.unk4 = gLoadedSaveGame->unk0;
|
||||
// gMultiSioSend.pat0.unk10 = connectScreen->unkDC;
|
||||
if (!bool2 && recv->unk0 == 0x4011 && connectScreen->unkFA != 0) {
|
||||
gUnknown_03005434 = recv->unk10;
|
||||
gUnknown_030055B8 = recv->unk2;
|
||||
for (i = 0; i < 4; i++) {
|
||||
|
||||
if ((gUnknown_030055B8 >> i) & 1) {
|
||||
if (i == 0) {
|
||||
gUnknown_03005410[0] = recv->unk4;
|
||||
// Reg swap on this, should be r4, but is r6
|
||||
gUnknown_03005460[0][0] = recv->unk8[0];
|
||||
gUnknown_03005460[0][1] = recv->unk8[1];
|
||||
gUnknown_03005460[0][2] = recv->unk8[2];
|
||||
gUnknown_03005594 |= recv->unkE;
|
||||
if (gUnknown_030054D8 < recv->unkF) {
|
||||
gUnknown_030054D8 = recv->unkF;
|
||||
}
|
||||
continue;
|
||||
}
|
||||
data = &gMultiSioRecv[i].pat0;
|
||||
#ifndef NONMATCHING
|
||||
asm("":::"r2");
|
||||
#endif
|
||||
if (data->unk0 != 0x4010) {
|
||||
continue;
|
||||
}
|
||||
|
||||
gUnknown_03005410[i] = data->unk4;
|
||||
gUnknown_03005460[i][0] = data->unk8[0];
|
||||
gUnknown_03005460[i][1] = data->unk8[1];
|
||||
gUnknown_03005460[i][2] = data->unk8[2];
|
||||
gUnknown_03005594 |= data->unkE;
|
||||
if (gUnknown_030054D8 < data->unkF) {
|
||||
gUnknown_030054D8 = data->unkF;
|
||||
}
|
||||
}
|
||||
}
|
||||
connectScreen->unkE8 = 0;
|
||||
connectScreen->unkF6 = 0;
|
||||
gUnknown_030054D4[3] = 0;
|
||||
gUnknown_030054D4[2] = 0;
|
||||
gUnknown_030054D4[1] = 0;
|
||||
gUnknown_030054D4[0] = 0;
|
||||
connectScreen->unkFB = 0;
|
||||
gCurTask->main = sub_805B4C0;
|
||||
sub_805B4C0();
|
||||
return;
|
||||
}
|
||||
|
||||
// for (x = 0; x < 3; x++) {
|
||||
// gMultiSioSend.pat0.unk8[x] = gLoadedSaveGame->unk20[i];
|
||||
// }
|
||||
// gMultiSioSend.pat0.unkE = gUnknown_03005594;
|
||||
// gMultiSioSend.pat0.unkF = gUnknown_030054D8;
|
||||
// *unkF6 = 1;
|
||||
// connectScreen->unkFC = 0;
|
||||
// return;
|
||||
// }
|
||||
if (recv->unk0 >= 0x4013) {
|
||||
TasksDestroyAll();
|
||||
gUnknown_03002AE4 = gUnknown_0300287C;
|
||||
gUnknown_03005390 = 0;
|
||||
gUnknown_03004D5C = gUnknown_03002A84;
|
||||
sub_805B9A4();
|
||||
return;
|
||||
}
|
||||
|
||||
if (gPressedKeys & B_BUTTON) {
|
||||
m4aSongNumStart(SE_RETURN);
|
||||
if (gMultiSioStatusFlags & MULTI_SIO_PARENT) {
|
||||
send = &gMultiSioSend.pat0;
|
||||
send->unk0 = 0;
|
||||
connectScreen->unkE8 = 0;
|
||||
gCurTask->main = sub_805B454;
|
||||
return;
|
||||
}
|
||||
|
||||
// if (connectScreen->unkF6 != 0) {
|
||||
// if (!bool2 && var1 > 1) {
|
||||
// u8 x;
|
||||
// u8* unkF6 = &connectScreen->unkF6;
|
||||
// gMultiSioSend.pat0.unk0 = 0x4011;
|
||||
// gMultiSioSend.pat0.unk2 = var3;
|
||||
// gMultiSioSend.pat0.unk4 = gLoadedSaveGame->unk0;
|
||||
// gMultiSioSend.pat0.unk10 = connectScreen->unkDC;
|
||||
gMultiSioEnabled = FALSE;
|
||||
MultiSioStop();
|
||||
MultiSioInit(0);
|
||||
send = &gMultiSioSend.pat0;
|
||||
send->unk0 = 0;
|
||||
gUnknown_03004D80[0] = 0;
|
||||
|
||||
// for (x = 0; x < 3; x++) {
|
||||
// gMultiSioSend.pat0.unk8[x] = gLoadedSaveGame->unk20[i];
|
||||
// }
|
||||
// gMultiSioSend.pat0.unkE = gUnknown_03005594;
|
||||
// gMultiSioSend.pat0.unkF = gUnknown_030054D8;
|
||||
// *unkF6 = 1;
|
||||
// connectScreen->unkFC = 0;
|
||||
// return;
|
||||
// }
|
||||
// }
|
||||
// } else {
|
||||
// if (connectScreen->unkF6 != 0) {
|
||||
// connectScreen->unkF6 = 0;
|
||||
// if (gMultiSioStatusFlags & MULTI_SIO_PARENT) {
|
||||
// connectScreen->unkFC = 1;
|
||||
// }
|
||||
// }
|
||||
// }
|
||||
|
||||
gUnknown_03002280[0] = 0;
|
||||
gUnknown_03002280[1] = 0;
|
||||
gUnknown_03002280[2] = 0xff;
|
||||
gUnknown_03002280[3] = 32;
|
||||
CreateMultiplayerModeSelectScreen();
|
||||
TaskDestroy(gCurTask);
|
||||
return;
|
||||
}
|
||||
|
||||
// {
|
||||
// u8 x;
|
||||
// gMultiSioSend.pat0.unk0 = 0x4010;
|
||||
// gMultiSioSend.pat0.unk4 = gLoadedSaveGame->unk0;
|
||||
// for (x = 0; x < 3; x++) {
|
||||
// gMultiSioSend.pat0.unk8[x] = gLoadedSaveGame->unk20[x];
|
||||
// }
|
||||
// gMultiSioSend.pat0.unkE = gUnknown_03005594;
|
||||
// gMultiSioSend.pat0.unkF = gUnknown_030054D8;
|
||||
// return;
|
||||
// }
|
||||
// }
|
||||
// TasksDestroyAll();
|
||||
// gUnknown_03005390 = 0;
|
||||
// gUnknown_03002AE4 = gUnknown_0300287C;
|
||||
// gUnknown_03004D5C = gUnknown_03002A84;
|
||||
// gUnknown_0300287C = gUnknown_03002AE4;
|
||||
// sub_805B9A4();
|
||||
// }
|
||||
if ((gMultiSioStatusFlags & MULTI_SIO_PARENT) && var2 > 1 && bool3) {
|
||||
r4p = &connectScreen->unk3C;
|
||||
sub_8004558(r4p);
|
||||
sub_80051E8(r4p);
|
||||
}
|
||||
|
||||
if (var2 > 1) {
|
||||
r4p = &connectScreen->unk6C;
|
||||
r4p->unkA = 0x432;
|
||||
r4p->unk20 = var2 + 6;
|
||||
r4p->unk21 = 0xFF;
|
||||
sub_8004558(r4p);
|
||||
sub_80051E8(r4p);
|
||||
}
|
||||
r4p = &connectScreen->unkC;
|
||||
sub_80051E8(r4p);
|
||||
|
||||
if (gMultiSioStatusFlags & MULTI_SIO_PARENT) {
|
||||
if ((!bool2 && var1 > 1 && gPressedKeys & START_BUTTON) || (connectScreen->unkF6 != 0 && !bool2 && var1 > 1)) {
|
||||
send = &gMultiSioSend.pat0;
|
||||
send->unk0 = 0x4011;
|
||||
send->unk2 = var3;
|
||||
send->unk4 = gLoadedSaveGame->unk0;
|
||||
send->unk10 = connectScreen->unkDC;
|
||||
for (x = 0; x < 3; x++) {
|
||||
send->unk8[x] = gLoadedSaveGame->unk20[x];
|
||||
}
|
||||
send->unkE = gUnknown_03005594;
|
||||
send->unkF = gUnknown_030054D8;
|
||||
connectScreen->unkF6 = 1;
|
||||
connectScreen->unkFC = 0;
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
if (connectScreen->unkF6 != 0) {
|
||||
connectScreen->unkF6 = 0;
|
||||
if (gMultiSioStatusFlags & MULTI_SIO_PARENT) {
|
||||
connectScreen->unkFC = 1;
|
||||
}
|
||||
}
|
||||
send = &gMultiSioSend.pat0;
|
||||
send->unk0 = 0x4010;
|
||||
send->unk4 = gLoadedSaveGame->unk0;
|
||||
for (x = 0; x < 3; x++) {
|
||||
send->unk8[x] = gLoadedSaveGame->unk20[x];
|
||||
}
|
||||
send->unkE = gUnknown_03005594;
|
||||
send->unkF = gUnknown_030054D8;
|
||||
}
|
||||
END_NONMATCH
|
||||
|
||||
void sub_805B454(void) {
|
||||
struct MultiplayerConnectScreen* connectScreen = TaskGetStructPtr(gCurTask, connectScreen);
|
||||
gMultiSioSend.pat0.unk0 = 0;
|
||||
if (++connectScreen->unkE8 > 4) {
|
||||
gMultiSioEnabled = FALSE;
|
||||
MultiSioStop();
|
||||
MultiSioInit(0);
|
||||
gUnknown_03004D80[0] = 0;
|
||||
gUnknown_03002280[0] = 0;
|
||||
gUnknown_03002280[1] = 0;
|
||||
gUnknown_03002280[2] = 0xFF;
|
||||
gUnknown_03002280[3] = 32;
|
||||
CreateMultiplayerModeSelectScreen();
|
||||
TaskDestroy(gCurTask);
|
||||
}
|
||||
}
|
||||
Reference in new issue
Block a user