sub_8115A68

This commit is contained in:
PikalaxALT 2020-01-20 09:09:02 -05:00
parent 44337a41db
commit cedebf15ee
4 changed files with 343 additions and 888 deletions

View File

@ -5,891 +5,6 @@
.text
thumb_func_start sub_8115A68
sub_8115A68: @ 8115A68
push {r4-r7,lr}
sub sp, 0x8
lsls r0, 24
lsrs r4, r0, 24
ldr r0, _08115A88 @ =gUnknown_203B05C
ldr r5, [r0]
ldrb r0, [r5, 0xC]
cmp r0, 0x1E
bls _08115A7C
b _081161D8
_08115A7C:
lsls r0, 2
ldr r1, _08115A8C @ =_08115A90
adds r0, r1
ldr r0, [r0]
mov pc, r0
.align 2, 0
_08115A88: .4byte gUnknown_203B05C
_08115A8C: .4byte _08115A90
.align 2, 0
_08115A90:
.4byte _08115B0C
.4byte _081161D8
.4byte _081161D8
.4byte _08115B5C
.4byte _08115C60
.4byte _08115CE8
.4byte _08115D04
.4byte _08115E24
.4byte _081161D8
.4byte _08115D94
.4byte _08115DAC
.4byte _08115E40
.4byte _08115EF4
.4byte _0811600A
.4byte _08116028
.4byte _0811603A
.4byte _08116058
.4byte _08116112
.4byte _08116128
.4byte _081160A2
.4byte _081160C0
.4byte _08116168
.4byte _08116194
.4byte _08116168
.4byte _0811617E
.4byte _081161D8
.4byte _081161AC
.4byte _081161D8
.4byte _081161D8
.4byte _08115DEC
.4byte _0811614C
_08115B0C:
ldr r3, _08115B4C @ =gUnknown_203B058
ldr r2, _08115B50 @ =gUnknown_8456CD8
ldr r1, _08115B54 @ =gSpecialVar_0x8004
ldrh r0, [r1]
lsls r0, 2
adds r0, r2
ldr r0, [r0]
strb r0, [r3]
ldr r4, _08115B58 @ =gUnknown_203B059
ldrh r0, [r1]
lsls r0, 2
adds r0, r2
ldr r0, [r0]
lsrs r0, 8
strb r0, [r4]
ldrb r0, [r3]
movs r1, 0
movs r2, 0
bl sub_80FAF58
bl sub_800B1F4
bl OpenLink
ldrb r1, [r4]
movs r0, 0xF
ands r0, r1
bl sub_80FBB8C
movs r0, 0x3
strb r0, [r5, 0xC]
b _081161D8
.align 2, 0
_08115B4C: .4byte gUnknown_203B058
_08115B50: .4byte gUnknown_8456CD8
_08115B54: .4byte gSpecialVar_0x8004
_08115B58: .4byte gUnknown_203B059
_08115B5C:
movs r0, 0x70
bl AllocZeroed
str r0, [r5, 0x4]
movs r0, 0xA0
bl AllocZeroed
str r0, [r5]
movs r0, 0xA0
bl AllocZeroed
str r0, [r5, 0x8]
ldr r0, [r5, 0x4]
movs r1, 0x4
bl sub_811A650
ldr r0, [r5]
movs r1, 0x5
bl sub_811A5E4
ldr r0, [r5]
adds r1, r0, 0
adds r1, 0x10
bl sub_80FCD50
ldr r1, [r5]
movs r3, 0
movs r0, 0
strh r0, [r1, 0x18]
ldr r2, [r5]
ldrb r1, [r2, 0x1A]
subs r0, 0x4
ands r0, r1
movs r1, 0x1
orrs r0, r1
strb r0, [r2, 0x1A]
ldr r2, [r5]
ldrb r1, [r2, 0x1A]
movs r0, 0x5
negs r0, r0
ands r0, r1
strb r0, [r2, 0x1A]
ldr r0, [r5]
strb r3, [r0, 0x1B]
ldr r0, [r5, 0x4]
movs r1, 0xFF
bl sub_811A054
strb r0, [r5, 0x17]
ldr r0, _08115C48 @ =gUnknown_8456CD0
bl AddWindow
strb r0, [r5, 0x10]
ldr r0, _08115C4C @ =gUnknown_8456CFC
bl AddWindow
strb r0, [r5, 0xF]
ldr r0, _08115C50 @ =gUnknown_8456D04
bl AddWindow
strb r0, [r5, 0x11]
ldrb r0, [r5, 0x10]
movs r1, 0x22
bl FillWindowPixelBuffer
ldrb r0, [r5, 0x10]
ldr r2, _08115C54 @ =gUnknown_845747C
movs r1, 0x2
str r1, [sp]
movs r4, 0x4
str r4, [sp, 0x4]
movs r1, 0
movs r3, 0x8
bl sub_811A444
ldrb r0, [r5, 0x10]
bl PutWindowTilemap
ldrb r0, [r5, 0x10]
movs r1, 0x2
bl CopyWindowToVram
ldrb r0, [r5, 0xF]
movs r1, 0
bl DrawStdWindowFrame
ldr r0, _08115C58 @ =gMultiuseListMenuTemplate
adds r2, r0, 0
ldr r1, _08115C5C @ =gUnknown_8456D34
ldm r1!, {r3,r6,r7}
stm r2!, {r3,r6,r7}
ldm r1!, {r3,r6,r7}
stm r2!, {r3,r6,r7}
ldrb r1, [r5, 0xF]
strb r1, [r0, 0x10]
movs r1, 0
movs r2, 0
bl ListMenuInit
strb r0, [r5, 0x12]
ldrb r0, [r5, 0x11]
movs r1, 0
bl DrawStdWindowFrame
ldrb r0, [r5, 0x11]
bl PutWindowTilemap
ldrb r0, [r5, 0x11]
movs r1, 0x2
bl CopyWindowToVram
movs r0, 0
bl CopyBgTilemapBufferToVram
movs r0, 0x1
strb r0, [r5, 0x13]
strb r4, [r5, 0xC]
b _081161D8
.align 2, 0
_08115C48: .4byte gUnknown_8456CD0
_08115C4C: .4byte gUnknown_8456CFC
_08115C50: .4byte gUnknown_8456D04
_08115C54: .4byte gUnknown_845747C
_08115C58: .4byte gMultiuseListMenuTemplate
_08115C5C: .4byte gUnknown_8456D34
_08115C60:
ldr r0, _08115C98 @ =gStringVar1
ldr r2, _08115C9C @ =gUnknown_8456C74
ldr r4, _08115CA0 @ =gUnknown_203B058
ldrb r1, [r4]
lsls r1, 2
adds r1, r2
ldr r1, [r1]
bl StringCopy
ldr r0, _08115CA4 @ =gUnknown_203B059
ldrb r2, [r0]
lsrs r0, r2, 4
cmp r0, 0
beq _08115CC4
ldrb r1, [r5, 0x13]
subs r0, 0x1
cmp r1, r0
ble _08115CB0
movs r0, 0xF
ands r0, r2
cmp r0, 0
beq _08115CB0
ldr r0, _08115CA8 @ =gStringVar4
ldr r1, _08115CAC @ =gUnknown_8457264
bl StringExpandPlaceholders
b _08115CCC
.align 2, 0
_08115C98: .4byte gStringVar1
_08115C9C: .4byte gUnknown_8456C74
_08115CA0: .4byte gUnknown_203B058
_08115CA4: .4byte gUnknown_203B059
_08115CA8: .4byte gStringVar4
_08115CAC: .4byte gUnknown_8457264
_08115CB0:
ldr r0, _08115CBC @ =gStringVar4
ldr r1, _08115CC0 @ =gUnknown_8457234
bl StringExpandPlaceholders
b _08115CCC
.align 2, 0
_08115CBC: .4byte gStringVar4
_08115CC0: .4byte gUnknown_8457234
_08115CC4:
ldr r0, _08115CE0 @ =gStringVar4
ldrb r1, [r4]
bl sub_811599C
_08115CCC:
ldrb r0, [r5, 0x11]
ldr r1, _08115CE4 @ =gUnknown_203B059
ldrb r1, [r1]
ldrb r2, [r5, 0x13]
bl sub_811586C
movs r0, 0x5
strb r0, [r5, 0xC]
b _081161D8
.align 2, 0
_08115CE0: .4byte gStringVar4
_08115CE4: .4byte gUnknown_203B059
_08115CE8:
adds r0, r5, 0
adds r0, 0xD
ldr r1, _08115D00 @ =gStringVar4
bl sub_811A0F8
lsls r0, 24
cmp r0, 0
bne _08115CFA
b _081161D8
_08115CFA:
movs r0, 0x6
strb r0, [r5, 0xC]
b _081161D8
.align 2, 0
_08115D00: .4byte gStringVar4
_08115D04:
adds r0, r5, 0
movs r1, 0x7
movs r2, 0xA
bl sub_8116444
ldr r0, _08115D24 @ =gMain
ldrh r1, [r0, 0x2E]
movs r0, 0x2
ands r0, r1
cmp r0, 0
beq _08115D40
ldrb r0, [r5, 0x13]
cmp r0, 0x1
bne _08115D28
movs r0, 0x17
b _08115D3E
.align 2, 0
_08115D24: .4byte gMain
_08115D28:
ldr r0, _08115D38 @ =gUnknown_203B059
ldrb r1, [r0]
movs r0, 0xF0
ands r0, r1
cmp r0, 0
beq _08115D3C
movs r0, 0x1E
b _08115D3E
.align 2, 0
_08115D38: .4byte gUnknown_203B059
_08115D3C:
movs r0, 0x13
_08115D3E:
strb r0, [r5, 0xC]
_08115D40:
ldr r0, _08115D8C @ =gUnknown_203B059
ldrb r2, [r0]
lsrs r0, r2, 4
cmp r0, 0
beq _08115D76
ldrb r1, [r5, 0x13]
subs r0, 0x1
cmp r1, r0
ble _08115D76
movs r4, 0xF
adds r0, r4, 0
ands r0, r2
cmp r0, 0
beq _08115D76
bl sub_80FC1CC
cmp r0, 0
beq _08115D76
ldr r0, _08115D90 @ =gMain
ldrh r1, [r0, 0x2E]
movs r0, 0x8
ands r0, r1
cmp r0, 0
beq _08115D76
strb r4, [r5, 0xC]
bl sub_80F8F5C
_08115D76:
ldrb r0, [r5, 0xC]
cmp r0, 0x6
beq _08115D7E
b _081161D8
_08115D7E:
bl sub_80FA5D4
cmp r0, 0
bne _08115D88
b _081161D8
_08115D88:
b _08115EEE
.align 2, 0
_08115D8C: .4byte gUnknown_203B059
_08115D90: .4byte gMain
_08115D94:
bl sub_80FA5D4
cmp r0, 0
beq _08115D9E
b _081161D8
_08115D9E:
movs r0, 0x6
strb r0, [r5, 0xC]
ldr r0, [r5]
bl sub_81165E8
strb r0, [r5, 0x13]
b _081161D8
_08115DAC:
movs r3, 0
ldr r0, _08115DE4 @ =gUnknown_203B058
ldrb r1, [r0]
movs r0, 0xF
ands r0, r1
cmp r0, 0x2
bne _08115DBC
movs r3, 0x1
_08115DBC:
adds r0, r5, 0
adds r0, 0xD
ldr r2, _08115DE8 @ =gUnknown_845767C
lsls r1, r3, 2
adds r1, r2
ldr r1, [r1]
bl sub_811A0F8
lsls r0, 24
cmp r0, 0
bne _08115DD4
b _081161D8
_08115DD4:
ldr r0, [r5]
bl sub_81165E8
strb r0, [r5, 0x13]
ldrb r0, [r5, 0x12]
bl RedrawListMenu
b _0811610C
.align 2, 0
_08115DE4: .4byte gUnknown_203B058
_08115DE8: .4byte gUnknown_845767C
_08115DEC:
ldr r0, _08115E1C @ =gUnknown_203B059
ldrb r0, [r0]
movs r1, 0xF
ands r1, r0
movs r0, 0x2
eors r1, r0
negs r0, r1
orrs r0, r1
lsrs r3, r0, 31
adds r0, r5, 0
adds r0, 0xD
ldr r2, _08115E20 @ =gUnknown_845767C
lsls r1, r3, 2
adds r1, r2
ldr r1, [r1]
bl sub_811A0F8
lsls r0, 24
cmp r0, 0
bne _08115E16
b _081161D8
_08115E16:
movs r0, 0x15
strb r0, [r5, 0xC]
b _081161D8
.align 2, 0
_08115E1C: .4byte gUnknown_203B059
_08115E20: .4byte gUnknown_845767C
_08115E24:
adds r0, r5, 0
adds r0, 0xD
ldr r1, _08115E3C @ =gStringVar4
bl sub_811A0F8
lsls r0, 24
cmp r0, 0
bne _08115E36
b _081161D8
_08115E36:
movs r0, 0xB
strb r0, [r5, 0xC]
b _081161D8
.align 2, 0
_08115E3C: .4byte gStringVar4
_08115E40:
adds r4, r5, 0
adds r4, 0xD
ldrb r1, [r5, 0x13]
lsls r1, 5
ldr r0, [r5]
adds r0, r1
adds r0, 0x2
bl sub_8118658
lsls r0, 16
lsrs r0, 16
ldrb r2, [r5, 0x13]
lsls r2, 5
ldr r1, [r5]
adds r1, r2
adds r1, 0x10
bl sub_80FA634
adds r1, r0, 0
adds r0, r4, 0
bl sub_811A14C
lsls r0, 24
asrs r1, r0, 24
movs r0, 0x1
negs r0, r0
cmp r1, r0
beq _08115EC0
cmp r1, r0
bgt _08115E84
subs r0, 0x2
cmp r1, r0
beq _08115EEE
b _081161D8
_08115E84:
cmp r1, 0
beq _08115E8E
cmp r1, 0x1
beq _08115EC0
b _081161D8
_08115E8E:
bl LoadWirelessStatusIndicatorSpriteGfx
movs r0, 0
movs r1, 0
bl CreateWirelessStatusIndicatorSprite
movs r0, 0x5
strb r0, [r5, 0x19]
ldrb r1, [r5, 0x13]
lsls r1, 5
ldr r0, [r5]
adds r0, r1
adds r0, 0x2
bl sub_8118658
adds r1, r0, 0
lsls r1, 16
lsrs r1, 16
ldrb r0, [r5, 0x13]
lsls r0, 5
ldr r2, [r5]
adds r2, r0
adds r2, 0x10
movs r0, 0x5
b _08115EE4
_08115EC0:
movs r0, 0x6
strb r0, [r5, 0x19]
ldrb r1, [r5, 0x13]
lsls r1, 5
ldr r0, [r5]
adds r0, r1
adds r0, 0x2
bl sub_8118658
adds r1, r0, 0
lsls r1, 16
lsrs r1, 16
ldrb r0, [r5, 0x13]
lsls r0, 5
ldr r2, [r5]
adds r2, r0
adds r2, 0x10
movs r0, 0x6
_08115EE4:
bl sub_80FA670
movs r0, 0xC
strb r0, [r5, 0xC]
b _081161D8
_08115EEE:
movs r0, 0x9
strb r0, [r5, 0xC]
b _081161D8
_08115EF4:
ldrb r1, [r5, 0x13]
lsls r1, 5
ldr r0, [r5]
adds r0, r1
adds r0, 0x2
bl sub_8118658
lsls r0, 16
lsrs r0, 16
ldrb r2, [r5, 0x13]
lsls r2, 5
ldr r1, [r5]
adds r1, r2
adds r1, 0x10
bl sub_80FA6FC
cmp r0, 0x1
bne _08115FFA
ldrb r0, [r5, 0x19]
cmp r0, 0x5
bne _08115FB4
ldr r1, [r5]
ldrb r0, [r5, 0x13]
lsls r0, 5
adds r1, r0
movs r0, 0
strb r0, [r1, 0x1B]
ldrb r0, [r5, 0x12]
bl RedrawListMenu
ldrb r0, [r5, 0x13]
adds r0, 0x1
strb r0, [r5, 0x13]
ldr r1, _08115F58 @ =gUnknown_203B059
ldrb r1, [r1]
movs r3, 0xF
lsls r0, 24
lsrs r2, r0, 24
adds r0, r3, 0
ands r0, r1
cmp r2, r0
bne _08115FF0
movs r0, 0xF0
ands r0, r1
cmp r0, 0
bne _08115F54
cmp r2, 0x4
bne _08115F5C
_08115F54:
strb r3, [r5, 0xC]
b _08115F90
.align 2, 0
_08115F58: .4byte gUnknown_203B059
_08115F5C:
ldr r4, _08115FA4 @ =gStringVar1
ldrb r1, [r5, 0x13]
lsls r1, 5
ldr r0, [r5]
adds r1, r0
subs r1, 0x10
adds r0, r4, 0
bl StringCopy7
ldr r1, [r5]
ldrb r0, [r5, 0x13]
subs r0, 0x1
lsls r0, 5
adds r1, r0
ldrb r1, [r1]
lsls r1, 28
lsrs r1, 28
adds r0, r4, 0
bl ConvertInternationalString
ldr r0, _08115FA8 @ =gStringVar4
ldr r1, _08115FAC @ =gUnknown_8457554
bl StringExpandPlaceholders
movs r0, 0xD
strb r0, [r5, 0xC]
_08115F90:
bl sub_80F8F5C
ldrb r0, [r5, 0x11]
ldr r1, _08115FB0 @ =gUnknown_203B059
ldrb r1, [r1]
ldrb r2, [r5, 0x13]
bl sub_811586C
b _08115FF4
.align 2, 0
_08115FA4: .4byte gStringVar1
_08115FA8: .4byte gStringVar4
_08115FAC: .4byte gUnknown_8457554
_08115FB0: .4byte gUnknown_203B059
_08115FB4:
ldrb r1, [r5, 0x13]
lsls r1, 5
ldr r0, [r5]
adds r0, r1
adds r4, r0, 0
adds r4, 0x10
adds r0, 0x2
bl sub_8118658
adds r1, r0, 0
lsls r1, 16
lsrs r1, 16
adds r0, r4, 0
bl sub_80FBD4C
ldr r1, [r5]
ldrb r0, [r5, 0x13]
lsls r0, 5
adds r1, r0
ldrb r2, [r1, 0x1A]
movs r0, 0x4
negs r0, r0
ands r0, r2
strb r0, [r1, 0x1A]
ldr r0, [r5]
bl sub_81165E8
ldrb r0, [r5, 0x12]
bl RedrawListMenu
_08115FF0:
movs r0, 0x4
strb r0, [r5, 0xC]
_08115FF4:
movs r0, 0
strb r0, [r5, 0x19]
b _081161D8
_08115FFA:
cmp r0, 0x2
beq _08116000
b _081161D8
_08116000:
movs r0, 0
movs r1, 0
bl sub_80FB9E4
b _0811610C
_0811600A:
adds r0, r5, 0
adds r0, 0xD
ldr r1, _08116024 @ =gStringVar4
bl sub_811A0F8
lsls r0, 24
cmp r0, 0
bne _0811601C
b _081161D8
_0811601C:
movs r0, 0xE
strb r0, [r5, 0xC]
b _081161D8
.align 2, 0
_08116024: .4byte gStringVar4
_08116028:
ldrb r0, [r5, 0xE]
adds r0, 0x1
strb r0, [r5, 0xE]
lsls r0, 24
lsrs r0, 24
cmp r0, 0x78
bhi _08116038
b _081161D8
_08116038:
b _0811607E
_0811603A:
adds r0, r5, 0
adds r0, 0xD
ldr r1, _08116054 @ =gUnknown_8457514
bl sub_811A0F8
lsls r0, 24
cmp r0, 0
bne _0811604C
b _081161D8
_0811604C:
movs r0, 0x10
strb r0, [r5, 0xC]
b _081161D8
.align 2, 0
_08116054: .4byte gUnknown_8457514
_08116058:
adds r0, r5, 0
adds r0, 0xD
movs r1, 0
bl sub_811A14C
lsls r0, 24
asrs r1, r0, 24
cmp r1, 0
beq _0811607E
cmp r1, 0
bgt _08116078
movs r0, 0x1
negs r0, r0
cmp r1, r0
beq _08116084
b _081161D8
_08116078:
cmp r1, 0x1
beq _08116084
b _081161D8
_0811607E:
movs r0, 0x11
strb r0, [r5, 0xC]
b _081161D8
_08116084:
ldr r0, _08116098 @ =gUnknown_203B059
ldrb r1, [r0]
movs r0, 0xF0
ands r0, r1
cmp r0, 0
beq _0811609C
movs r0, 0x1E
strb r0, [r5, 0xC]
b _081161D8
.align 2, 0
_08116098: .4byte gUnknown_203B059
_0811609C:
movs r0, 0x13
strb r0, [r5, 0xC]
b _081161D8
_081160A2:
adds r0, r5, 0
adds r0, 0xD
ldr r1, _081160BC @ =gUnknown_8457530
bl sub_811A0F8
lsls r0, 24
cmp r0, 0
bne _081160B4
b _081161D8
_081160B4:
movs r0, 0x14
strb r0, [r5, 0xC]
b _081161D8
.align 2, 0
_081160BC: .4byte gUnknown_8457530
_081160C0:
adds r0, r5, 0
adds r0, 0xD
movs r1, 0
bl sub_811A14C
lsls r0, 24
asrs r1, r0, 24
cmp r1, 0
beq _0811615C
cmp r1, 0
bgt _081160E0
movs r0, 0x1
negs r0, r0
cmp r1, r0
beq _081160E4
b _081161D8
_081160E0:
cmp r1, 0x1
bne _081161D8
_081160E4:
ldr r0, _081160F8 @ =gUnknown_203B059
ldrb r2, [r0]
movs r0, 0xF0
ands r0, r2
cmp r0, 0
beq _081160FC
movs r0, 0xF
strb r0, [r5, 0xC]
b _081161D8
.align 2, 0
_081160F8: .4byte gUnknown_203B059
_081160FC:
movs r3, 0xF
ldrb r1, [r5, 0x13]
adds r0, r3, 0
ands r0, r2
cmp r1, r0
bne _0811610C
strb r3, [r5, 0xC]
b _081161D8
_0811610C:
movs r0, 0x4
strb r0, [r5, 0xC]
b _081161D8
_08116112:
adds r0, r5, 0
movs r1, 0x7
movs r2, 0x17
bl sub_8116444
lsls r0, 24
cmp r0, 0
bne _081161D8
movs r0, 0x12
strb r0, [r5, 0xC]
b _081161D8
_08116128:
bl sub_80F8F40
lsls r0, 24
lsrs r1, r0, 24
cmp r1, 0
beq _08116144
movs r0, 0
bl sub_80F8F7C
cmp r0, 0
beq _081161D8
movs r0, 0x1A
strb r0, [r5, 0xC]
b _081161D8
_08116144:
movs r0, 0x1D
strb r0, [r5, 0xC]
strb r1, [r5, 0xD]
b _081161D8
_0811614C:
adds r0, r5, 0
adds r0, 0xD
ldr r1, _08116164 @ =gUnknown_8457610
bl sub_811A0F8
lsls r0, 24
cmp r0, 0
beq _081161D8
_0811615C:
movs r0, 0x17
strb r0, [r5, 0xC]
b _081161D8
.align 2, 0
_08116164: .4byte gUnknown_8457610
_08116168:
bl DestroyWirelessStatusIndicatorSprite
bl sub_80F8DC0
adds r0, r5, 0
bl sub_81161E4
ldrb r0, [r5, 0xC]
adds r0, 0x1
strb r0, [r5, 0xC]
b _081161D8
_0811617E:
bl EnableBothScriptContexts
adds r0, r4, 0
bl DestroyTask
ldr r1, _08116190 @ =gSpecialVar_Result
movs r0, 0x5
strh r0, [r1]
b _081161D8
.align 2, 0
_08116190: .4byte gSpecialVar_Result
_08116194:
bl EnableBothScriptContexts
adds r0, r4, 0
bl DestroyTask
ldr r1, _081161A8 @ =gSpecialVar_Result
movs r0, 0x8
strh r0, [r1]
b _081161D8
.align 2, 0
_081161A8: .4byte gSpecialVar_Result
_081161AC:
bl sub_80FBA00
cmp r0, 0
beq _081161BA
movs r0, 0x1D
strb r0, [r5, 0xC]
b _081161D8
_081161BA:
ldr r0, _081161E0 @ =gReceivedRemoteLinkPlayers
ldrb r0, [r0]
cmp r0, 0
beq _081161D8
movs r0, 0x1
bl sub_80FAFE0
bl sub_8117990
adds r0, r5, 0
bl sub_81161E4
adds r0, r4, 0
bl DestroyTask
_081161D8:
add sp, 0x8
pop {r4-r7}
pop {r0}
bx r0
.align 2, 0
_081161E0: .4byte gReceivedRemoteLinkPlayers
thumb_func_end sub_8115A68
thumb_func_start sub_81161E4
sub_81161E4: @ 81161E4
push {r4,lr}
@ -3790,7 +2905,7 @@ _08117AB8:
ldr r0, [r5]
adds r1, r0, 0
adds r1, 0x10
bl sub_80FCD50
bl LinkRfu3_SetGnameUnameFromStaticBuffers
ldr r1, [r5]
movs r3, 0
movs r0, 0

View File

@ -295,6 +295,18 @@ void sub_80FEB3C(void);
void sub_80FAFE0(u8 a0);
bool32 sub_80FA44C(u32 a0);
bool8 sub_80FC1B0(void);
bool8 sub_80F8F40(void);
void sub_80F8F5C(void);
bool32 sub_80FA5D4(void);
bool32 sub_80FC1CC(void);
bool32 sub_80F8F7C(bool32 a0);
bool32 sub_80FA634(u16 a0, const u8 *a1);
void sub_80FA670(u8 a0, u16 a1, const u8 *a2);
u32 sub_80FA6FC(u16 a0, const u8 *a1);
void sub_80FAF58(u8 a0, u32 a1, u32 a2);
void sub_80FBB8C(u32 a0);
void sub_80FBD4C(const u8 *ptr, u16 a1);
void LinkRfu3_SetGnameUnameFromStaticBuffers(struct GFtgtGname *gname, u8 *uname);
#include "mevent_server.h"
extern const struct mevent_server_cmd gMEventSrvScript_OtherTrainerCanceled[];

View File

@ -681,7 +681,7 @@ bool8 sub_80FCCF4(struct GFtgtGname *gname, u8 *uname, u8 idx)
return retVal;
}
void sub_80FCD50(struct GFtgtGname *gname, u8 *uname)
void LinkRfu3_SetGnameUnameFromStaticBuffers(struct GFtgtGname *gname, u8 *uname)
{
memcpy(gname, &gHostRFUtgtGnameBuffer, RFU_GAME_NAME_LENGTH);
memcpy(uname, gHostRFUtgtUnameBuffer, RFU_USER_NAME_LENGTH);

View File

@ -1,21 +1,49 @@
#include "global.h"
#include "gflib.h"
#include "event_data.h"
#include "link.h"
#include "link_rfu.h"
#include "list_menu.h"
#include "new_menu_helpers.h"
#include "script.h"
#include "task.h"
#include "union_room.h"
EWRAM_DATA union UnkUnion_Main gUnknown_203B05C = {};
EWRAM_DATA u8 gUnknown_203B058 = 0;
EWRAM_DATA u8 gUnknown_203B059 = 0;
IWRAM_DATA struct UnkStruct_Leader *gUnknown_3002024;
void sub_8115A68(u8 taskId);
void sub_81161E4(struct UnkStruct_Leader * leader);
bool8 sub_8116444(struct UnkStruct_Leader * leader, u32 a1, u32 a2);
u8 sub_81165E8(struct UnkStruct_Main0 * a0);
void sub_8117990(void);
u16 sub_8118658(const u8 *data);
u8 sub_811A054(struct UnkStruct_Main4 *arg0, u32 arg1);
bool8 sub_811A0F8(u8 *textState, const u8 *str);
s8 sub_811A14C(u8 *dest, bool32 arg1);
void sub_811A444(u8 windowId, u8 fontId, const u8 *str, u8 x, u8 y, u8 colorIdx);
void sub_811A5E4(struct UnkStruct_x20 *arg0, u8 count);
void sub_811A650(struct UnkStruct_Main4 *arg0, u8 count);
extern const u8 *const gUnknown_845742C[][5];
extern const u8 *const gUnknown_8456C74[];
extern const struct WindowTemplate gUnknown_8456CD0;
extern const u32 gUnknown_8456CD8[];
extern const struct WindowTemplate gUnknown_8456CFC;
extern const struct WindowTemplate gUnknown_8456D04;
extern const struct ListMenuTemplate gUnknown_8456D34;
extern const u8 gUnknown_84571B4[];
extern const u8 gUnknown_8457234[];
extern const u8 gUnknown_8457264[];
extern const u8 gUnknown_845747C[];
extern const u8 gUnknown_8457514[];
extern const u8 gUnknown_8457530[];
extern const u8 gUnknown_8457554[];
extern const u8 gUnknown_8457610[];
extern const u8 *const gUnknown_845767C[];
extern const u8 *const gUnknown_845742C[][5];
void sub_811586C(u8 windowId, u8 arg1, u8 stringId)
{
@ -77,3 +105,303 @@ void TryBecomeLinkLeader(void)
dataPtr->textState = 0;
gSpecialVar_Result = 0;
}
void sub_8115A68(u8 taskId)
{
u32 id, val;
struct UnkStruct_Leader *data = gUnknown_203B05C.leader;
switch (data->state)
{
case 0:
gUnknown_203B058 = gUnknown_8456CD8[gSpecialVar_0x8004];
gUnknown_203B059 = gUnknown_8456CD8[gSpecialVar_0x8004] >> 8;
sub_80FAF58(gUnknown_203B058, 0, 0);
sub_800B1F4();
OpenLink();
sub_80FBB8C(gUnknown_203B059 & 0xF);
data->state = 3;
break;
case 3:
data->field_4 = AllocZeroed(0x70);
data->field_0 = AllocZeroed(0xA0);
data->field_8 = AllocZeroed(0xA0);
sub_811A650(data->field_4, 4);
sub_811A5E4(data->field_0->arr, 5);
LinkRfu3_SetGnameUnameFromStaticBuffers(&data->field_0->arr[0].unk.field_0, data->field_0->arr[0].unk.playerName);
data->field_0->arr[0].field_18 = 0;
data->field_0->arr[0].field_1A_0 = 1;
data->field_0->arr[0].field_1A_1 = 0;
data->field_0->arr[0].field_1B = 0;
data->field_17 = sub_811A054(data->field_4, 0xFF);
data->field_10 = AddWindow(&gUnknown_8456CD0);
data->listWindowId = AddWindow(&gUnknown_8456CFC);
data->field_11 = AddWindow(&gUnknown_8456D04);
FillWindowPixelBuffer(data->field_10, PIXEL_FILL(2));
sub_811A444(data->field_10, 0, gUnknown_845747C, 8, 2, 4);
PutWindowTilemap(data->field_10);
CopyWindowToVram(data->field_10, 2);
DrawStdWindowFrame(data->listWindowId, FALSE);
gMultiuseListMenuTemplate = gUnknown_8456D34;
gMultiuseListMenuTemplate.windowId = data->listWindowId;
data->listTaskId = ListMenuInit(&gMultiuseListMenuTemplate, 0, 0);
DrawStdWindowFrame(data->field_11, FALSE);
PutWindowTilemap(data->field_11);
CopyWindowToVram(data->field_11, 2);
CopyBgTilemapBufferToVram(0);
data->field_13 = 1;
data->state = 4;
break;
case 4:
StringCopy(gStringVar1, gUnknown_8456C74[gUnknown_203B058]);
if ((gUnknown_203B059 >> 4) != 0)
{
if (data->field_13 > (gUnknown_203B059 >> 4) - 1 && (gUnknown_203B059 & 0xF) != 0)
StringExpandPlaceholders(gStringVar4, gUnknown_8457264);
else
StringExpandPlaceholders(gStringVar4, gUnknown_8457234);
}
else
{
sub_811599C(gStringVar4, gUnknown_203B058);
}
sub_811586C(data->field_11, gUnknown_203B059, data->field_13);
data->state = 5;
break;
case 5:
if (sub_811A0F8(&data->textState, gStringVar4))
data->state = 6;
break;
case 6:
sub_8116444(data, 7, 10);
if (gMain.newKeys & B_BUTTON)
{
if (data->field_13 == 1)
data->state = 23;
else if ((gUnknown_203B059 & 0xF0) != 0)
data->state = 30;
else
data->state = 19;
}
if ((gUnknown_203B059 >> 4) != 0
&& data->field_13 > (gUnknown_203B059 >> 4) - 1
&& (gUnknown_203B059 & 0xF) != 0
&& sub_80FC1CC()
&& gMain.newKeys & START_BUTTON)
{
data->state = 15;
sub_80F8F5C();
}
if (data->state == 6 && sub_80FA5D4())
{
data->state = 9;
}
break;
case 9:
if (!sub_80FA5D4())
{
data->state = 6;
data->field_13 = sub_81165E8(data->field_0);
}
break;
case 10:
id = ((gUnknown_203B058 & 0xF) == 2) ? 1 : 0;
if (sub_811A0F8(&data->textState, gUnknown_845767C[id]))
{
data->field_13 = sub_81165E8(data->field_0);
RedrawListMenu(data->listTaskId);
data->state = 4;
}
break;
case 29:
id = ((gUnknown_203B059 & 0xF) == 2) ? 0 : 1;
if (sub_811A0F8(&data->textState, gUnknown_845767C[id]))
{
data->state = 21;
}
break;
case 7:
if (sub_811A0F8(&data->textState, gStringVar4))
{
data->state = 11;
}
break;
case 11:
switch (sub_811A14C(&data->textState, sub_80FA634(sub_8118658(data->field_0->arr[data->field_13].unk.field_0.unk_00.playerTrainerId), data->field_0->arr[data->field_13].unk.playerName)))
{
case 0:
LoadWirelessStatusIndicatorSpriteGfx();
CreateWirelessStatusIndicatorSprite(0, 0);
data->field_19 = 5;
sub_80FA670(5, sub_8118658(data->field_0->arr[data->field_13].unk.field_0.unk_00.playerTrainerId), data->field_0->arr[data->field_13].unk.playerName);
data->state = 12;
break;
case 1:
case -1:
data->field_19 = 6;
sub_80FA670(6, sub_8118658(data->field_0->arr[data->field_13].unk.field_0.unk_00.playerTrainerId), data->field_0->arr[data->field_13].unk.playerName);
data->state = 12;
break;
case -3:
data->state = 9;
break;
}
break;
case 12:
val = sub_80FA6FC(sub_8118658(data->field_0->arr[data->field_13].unk.field_0.unk_00.playerTrainerId), data->field_0->arr[data->field_13].unk.playerName);
if (val == 1)
{
if (data->field_19 == 5)
{
data->field_0->arr[data->field_13].field_1B = 0;
RedrawListMenu(data->listTaskId);
data->field_13++;
if (data->field_13 == (gUnknown_203B059 & 0xF))
{
if ((gUnknown_203B059 & 0xF0) != 0 || data->field_13 == 4)
{
data->state = 15;
}
else
{
StringCopy7(gStringVar1, data->field_0->arr[data->field_13 - 1].unk.playerName);
ConvertInternationalString(gStringVar1, data->field_0->arr[data->field_13 - 1].unk.field_0.unk_00.unk_00_0);
StringExpandPlaceholders(gStringVar4, gUnknown_8457554);
data->state = 13;
}
sub_80F8F5C();
sub_811586C(data->field_11, gUnknown_203B059, data->field_13);
}
else
{
data->state = 4;
}
}
else
{
sub_80FBD4C(data->field_0->arr[data->field_13].unk.playerName, sub_8118658(data->field_0->arr[data->field_13].unk.field_0.unk_00.playerTrainerId));
data->field_0->arr[data->field_13].field_1A_0 = 0;
sub_81165E8(data->field_0);
RedrawListMenu(data->listTaskId);
data->state = 4;
}
data->field_19 = 0;
}
else if (val == 2)
{
sub_80FB9E4(0, 0);
data->state = 4;
}
break;
case 13:
if (sub_811A0F8(&data->textState, gStringVar4))
data->state = 14;
break;
case 14:
if (++data->field_E > 120)
data->state = 17;
break;
case 15:
if (sub_811A0F8(&data->textState, gUnknown_8457514))
data->state = 16;
break;
case 16:
switch (sub_811A14C(&data->textState, FALSE))
{
case 0:
data->state = 17;
break;
case 1:
case -1:
if ((gUnknown_203B059 & 0xF0) != 0)
data->state = 30;
else
data->state = 19;
break;
}
break;
case 19:
if (sub_811A0F8(&data->textState, gUnknown_8457530))
data->state = 20;
break;
case 20:
switch (sub_811A14C(&data->textState, FALSE))
{
case 0:
data->state = 23;
break;
case 1:
case -1:
if ((gUnknown_203B059 & 0xF0) != 0)
data->state = 15;
else if (data->field_13 == (gUnknown_203B059 & 0xF))
data->state = 15;
else
data->state = 4;
break;
}
break;
case 17:
if (!sub_8116444(data, 7, 23))
data->state = 18;
break;
case 18:
if (sub_80F8F40())
{
if (sub_80F8F7C(FALSE))
{
data->state = 26;
}
}
else
{
data->state = 29;
data->textState = 0;
}
break;
case 30:
if (sub_811A0F8(&data->textState, gUnknown_8457610))
data->state = 23;
break;
case 21:
case 23:
DestroyWirelessStatusIndicatorSprite();
sub_80F8DC0();
sub_81161E4(data);
data->state++;
break;
case 24:
EnableBothScriptContexts();
DestroyTask(taskId);
gSpecialVar_Result = 5;
break;
case 22:
EnableBothScriptContexts();
DestroyTask(taskId);
gSpecialVar_Result = 8;
break;
case 26:
if (sub_80FBA00())
{
data->state = 29;
}
else
{
if (gReceivedRemoteLinkPlayers != 0)
{
sub_80FAFE0(1);
sub_8117990();
sub_81161E4(data);
DestroyTask(taskId);
}
}
break;
}
}