through sub_80156C8
This commit is contained in:
@@ -4,844 +4,9 @@
|
||||
.syntax unified
|
||||
|
||||
.text
|
||||
|
||||
|
||||
|
||||
|
||||
thumb_func_start sub_8014F48
|
||||
sub_8014F48: @ 8014F48
|
||||
push {r4-r7,lr}
|
||||
sub sp, 0x10
|
||||
lsls r0, 24
|
||||
lsrs r6, r0, 24
|
||||
ldr r0, =gUnknown_02022C30
|
||||
ldr r7, [r0]
|
||||
ldrb r0, [r7, 0x8]
|
||||
cmp r0, 0xC
|
||||
bls _08014F5C
|
||||
b _080152A0
|
||||
_08014F5C:
|
||||
lsls r0, 2
|
||||
ldr r1, =_08014F70
|
||||
adds r0, r1
|
||||
ldr r0, [r0]
|
||||
mov pc, r0
|
||||
.pool
|
||||
.align 2, 0
|
||||
_08014F70:
|
||||
.4byte _08014FA4
|
||||
.4byte _08014FD8
|
||||
.4byte _08014FE8
|
||||
.4byte _080150B8
|
||||
.4byte _08015180
|
||||
.4byte _080151A4
|
||||
.4byte _08015204
|
||||
.4byte _08015260
|
||||
.4byte _08015204
|
||||
.4byte _0801523A
|
||||
.4byte _08015204
|
||||
.4byte _08015284
|
||||
.4byte _08015290
|
||||
_08014FA4:
|
||||
ldrb r0, [r7, 0x12]
|
||||
adds r0, 0x15
|
||||
lsls r0, 24
|
||||
lsrs r0, 24
|
||||
movs r1, 0
|
||||
movs r2, 0
|
||||
bl sub_8010F84
|
||||
bl sub_800B488
|
||||
bl OpenLink
|
||||
bl sub_8011C5C
|
||||
movs r0, 0x70
|
||||
bl AllocZeroed
|
||||
str r0, [r7, 0x4]
|
||||
movs r0, 0x80
|
||||
lsls r0, 2
|
||||
bl AllocZeroed
|
||||
str r0, [r7]
|
||||
movs r0, 0x1
|
||||
strb r0, [r7, 0x8]
|
||||
b _080152A0
|
||||
_08014FD8:
|
||||
ldr r0, =gUnknown_082EF7F8
|
||||
bl sub_8018884
|
||||
movs r0, 0x2
|
||||
strb r0, [r7, 0x8]
|
||||
b _080152A0
|
||||
.pool
|
||||
_08014FE8:
|
||||
ldr r0, [r7, 0x4]
|
||||
movs r1, 0x4
|
||||
bl sub_80175EC
|
||||
ldr r0, [r7]
|
||||
movs r1, 0x10
|
||||
bl sub_8017580
|
||||
ldr r0, [r7, 0x4]
|
||||
ldrb r1, [r7, 0x12]
|
||||
adds r1, 0x7
|
||||
bl sub_8016FC0
|
||||
movs r6, 0
|
||||
strb r0, [r7, 0x11]
|
||||
ldr r0, =gUnknown_082F0174
|
||||
ldr r1, [r0, 0x4]
|
||||
ldr r0, [r0]
|
||||
str r0, [sp]
|
||||
str r1, [sp, 0x4]
|
||||
bl sub_8019930
|
||||
lsls r0, 16
|
||||
ldr r2, =0x0000ffff
|
||||
ldr r1, [sp, 0x4]
|
||||
ands r1, r2
|
||||
orrs r1, r0
|
||||
ldr r5, =0xffff00ff
|
||||
ands r1, r5
|
||||
movs r4, 0xC0
|
||||
lsls r4, 4
|
||||
orrs r1, r4
|
||||
str r1, [sp, 0x4]
|
||||
mov r0, sp
|
||||
bl AddWindow
|
||||
strb r0, [r7, 0xB]
|
||||
ldr r0, =gUnknown_082F017C
|
||||
ldr r1, [r0, 0x4]
|
||||
ldr r0, [r0]
|
||||
str r0, [sp, 0x8]
|
||||
str r1, [sp, 0xC]
|
||||
add r0, sp, 0x8
|
||||
ldr r1, [r0, 0x4]
|
||||
ands r1, r5
|
||||
orrs r1, r4
|
||||
str r1, [r0, 0x4]
|
||||
bl AddWindow
|
||||
strb r0, [r7, 0xD]
|
||||
ldrb r0, [r7, 0xB]
|
||||
bl sub_8018784
|
||||
ldr r0, =gMultiuseListMenuTemplate
|
||||
adds r2, r0, 0
|
||||
ldr r1, =gUnknown_082F0204
|
||||
ldm r1!, {r3-r5}
|
||||
stm r2!, {r3-r5}
|
||||
ldm r1!, {r3-r5}
|
||||
stm r2!, {r3-r5}
|
||||
ldrb r1, [r7, 0xB]
|
||||
strb r1, [r0, 0x10]
|
||||
movs r1, 0
|
||||
movs r2, 0
|
||||
bl ListMenuInit
|
||||
strb r0, [r7, 0xE]
|
||||
ldrb r0, [r7, 0xD]
|
||||
bl sub_8018784
|
||||
ldrb r0, [r7, 0xD]
|
||||
movs r1, 0x11
|
||||
bl FillWindowPixelBuffer
|
||||
ldrb r0, [r7, 0xD]
|
||||
bl PutWindowTilemap
|
||||
ldrb r0, [r7, 0xD]
|
||||
bl sub_80125BC
|
||||
ldrb r0, [r7, 0xD]
|
||||
movs r1, 0x2
|
||||
bl CopyWindowToVram
|
||||
movs r0, 0
|
||||
bl CopyBgTilemapBufferToVram
|
||||
strb r6, [r7, 0xF]
|
||||
movs r0, 0x3
|
||||
strb r0, [r7, 0x8]
|
||||
b _080152A0
|
||||
.pool
|
||||
_080150B8:
|
||||
bl sub_8013E44
|
||||
lsls r0, 24
|
||||
lsrs r2, r0, 24
|
||||
cmp r2, 0
|
||||
beq _080150D6
|
||||
cmp r2, 0x1
|
||||
bne _080150CE
|
||||
movs r0, 0x2
|
||||
bl PlaySE
|
||||
_080150CE:
|
||||
ldrb r0, [r7, 0xE]
|
||||
bl sub_81AE70C
|
||||
b _080152A0
|
||||
_080150D6:
|
||||
ldrb r0, [r7, 0xE]
|
||||
bl ListMenuHandleInputGetItemId
|
||||
adds r2, r0, 0
|
||||
ldr r0, =gMain
|
||||
ldrh r1, [r0, 0x2E]
|
||||
movs r0, 0x1
|
||||
ands r0, r1
|
||||
cmp r0, 0
|
||||
beq _08015168
|
||||
movs r0, 0x1
|
||||
negs r0, r0
|
||||
cmp r2, r0
|
||||
beq _08015168
|
||||
ldr r0, [r7]
|
||||
lsls r1, r2, 5
|
||||
adds r0, r1
|
||||
ldrb r1, [r0, 0xA]
|
||||
ldrb r0, [r0, 0x1A]
|
||||
lsls r0, 30
|
||||
lsrs r0, 30
|
||||
cmp r0, 0x1
|
||||
bne _08015160
|
||||
lsrs r0, r1, 7
|
||||
cmp r0, 0
|
||||
bne _08015160
|
||||
strb r2, [r7, 0xF]
|
||||
bl sub_800E0E8
|
||||
movs r0, 0
|
||||
movs r1, 0
|
||||
bl CreateWirelessStatusIndicatorSprite
|
||||
ldrb r0, [r7, 0xE]
|
||||
bl sub_81AE70C
|
||||
ldr r0, =gStringVar1
|
||||
ldrb r2, [r7, 0xF]
|
||||
lsls r2, 5
|
||||
ldr r1, [r7]
|
||||
adds r1, r2
|
||||
bl sub_8018404
|
||||
ldrb r1, [r7, 0xF]
|
||||
lsls r1, 5
|
||||
ldr r0, [r7]
|
||||
adds r0, r1
|
||||
adds r4, r0, 0
|
||||
adds r4, 0x10
|
||||
adds r0, 0x2
|
||||
bl ReadAsU16
|
||||
adds r1, r0, 0
|
||||
lsls r1, 16
|
||||
lsrs r1, 16
|
||||
adds r0, r4, 0
|
||||
bl sub_8011FC8
|
||||
movs r0, 0x6E
|
||||
bl PlaySE
|
||||
movs r0, 0x4
|
||||
strb r0, [r7, 0x8]
|
||||
b _080152A0
|
||||
.pool
|
||||
_08015160:
|
||||
movs r0, 0x7
|
||||
bl PlaySE
|
||||
b _080152A0
|
||||
_08015168:
|
||||
ldr r0, =gMain
|
||||
ldrh r1, [r0, 0x2E]
|
||||
movs r0, 0x2
|
||||
ands r0, r1
|
||||
cmp r0, 0
|
||||
bne _08015176
|
||||
b _080152A0
|
||||
_08015176:
|
||||
movs r0, 0x6
|
||||
strb r0, [r7, 0x8]
|
||||
b _080152A0
|
||||
.pool
|
||||
_08015180:
|
||||
ldr r0, =gUnknown_082EFC3C
|
||||
bl sub_8018884
|
||||
ldr r0, =gStringVar1
|
||||
ldrb r2, [r7, 0xF]
|
||||
lsls r2, 5
|
||||
ldr r1, [r7]
|
||||
adds r1, r2
|
||||
bl sub_8018404
|
||||
movs r0, 0x5
|
||||
strb r0, [r7, 0x8]
|
||||
b _080152A0
|
||||
.pool
|
||||
_080151A4:
|
||||
ldr r0, =gReceivedRemoteLinkPlayers
|
||||
ldrb r0, [r0]
|
||||
cmp r0, 0
|
||||
beq _080151C2
|
||||
ldr r2, =gUnknown_02022C2C
|
||||
ldr r1, [r7]
|
||||
ldrb r0, [r7, 0xF]
|
||||
lsls r0, 5
|
||||
adds r1, r0
|
||||
ldrb r0, [r1, 0xA]
|
||||
lsls r0, 25
|
||||
lsrs r0, 25
|
||||
strb r0, [r2]
|
||||
movs r0, 0xA
|
||||
strb r0, [r7, 0x8]
|
||||
_080151C2:
|
||||
bl sub_8011A74
|
||||
lsls r0, 24
|
||||
lsrs r0, 24
|
||||
cmp r0, 0x5
|
||||
beq _080151EE
|
||||
cmp r0, 0x5
|
||||
bgt _080151E4
|
||||
cmp r0, 0x2
|
||||
bgt _080152A0
|
||||
cmp r0, 0x1
|
||||
blt _080152A0
|
||||
b _080151E8
|
||||
.pool
|
||||
_080151E4:
|
||||
cmp r0, 0x6
|
||||
bne _080152A0
|
||||
_080151E8:
|
||||
movs r0, 0x8
|
||||
strb r0, [r7, 0x8]
|
||||
b _080152A0
|
||||
_080151EE:
|
||||
ldr r0, =gUnknown_082EDDF4
|
||||
bl sub_8018884
|
||||
movs r0, 0
|
||||
movs r1, 0
|
||||
bl sub_8011A64
|
||||
b _080152A0
|
||||
.pool
|
||||
_08015204:
|
||||
ldrb r0, [r7, 0xE]
|
||||
movs r1, 0
|
||||
movs r2, 0
|
||||
bl DestroyListMenuTask
|
||||
movs r0, 0
|
||||
bl CopyBgTilemapBufferToVram
|
||||
ldrb r0, [r7, 0xD]
|
||||
bl RemoveWindow
|
||||
ldrb r0, [r7, 0xB]
|
||||
bl RemoveWindow
|
||||
ldrb r0, [r7, 0x11]
|
||||
bl DestroyTask
|
||||
ldr r0, [r7]
|
||||
bl Free
|
||||
ldr r0, [r7, 0x4]
|
||||
bl Free
|
||||
ldrb r0, [r7, 0x8]
|
||||
adds r0, 0x1
|
||||
strb r0, [r7, 0x8]
|
||||
b _080152A0
|
||||
_0801523A:
|
||||
adds r5, r7, 0
|
||||
adds r5, 0x9
|
||||
ldr r4, =gUnknown_082EDF80
|
||||
bl sub_8011A74
|
||||
lsls r0, 24
|
||||
lsrs r0, 22
|
||||
adds r0, r4
|
||||
ldr r1, [r0]
|
||||
adds r0, r5, 0
|
||||
bl mevent_0814257C
|
||||
cmp r0, 0
|
||||
beq _080152A0
|
||||
bl sub_800E084
|
||||
b _0801526A
|
||||
.pool
|
||||
_08015260:
|
||||
bl sub_800E084
|
||||
ldr r0, =gText_PleaseStartOver
|
||||
bl sub_8018884
|
||||
_0801526A:
|
||||
adds r0, r6, 0
|
||||
bl DestroyTask
|
||||
bl sub_800EDD4
|
||||
ldr r1, =gSpecialVar_Result
|
||||
movs r0, 0x5
|
||||
strh r0, [r1]
|
||||
b _080152A0
|
||||
.pool
|
||||
_08015284:
|
||||
ldrb r0, [r7, 0x8]
|
||||
adds r0, 0x1
|
||||
strb r0, [r7, 0x8]
|
||||
bl sub_800ADF8
|
||||
b _080152A0
|
||||
_08015290:
|
||||
bl sub_800A520
|
||||
lsls r0, 24
|
||||
cmp r0, 0
|
||||
beq _080152A0
|
||||
adds r0, r6, 0
|
||||
bl DestroyTask
|
||||
_080152A0:
|
||||
add sp, 0x10
|
||||
pop {r4-r7}
|
||||
pop {r0}
|
||||
bx r0
|
||||
thumb_func_end sub_8014F48
|
||||
|
||||
thumb_func_start sub_80152A8
|
||||
sub_80152A8: @ 80152A8
|
||||
push {r4,lr}
|
||||
adds r4, r0, 0
|
||||
ldr r0, =task00_081182DC
|
||||
movs r1, 0
|
||||
bl CreateTask
|
||||
lsls r0, 24
|
||||
lsrs r0, 24
|
||||
ldr r2, =gUnknown_02022C30
|
||||
lsls r1, r0, 2
|
||||
adds r1, r0
|
||||
lsls r1, 3
|
||||
ldr r0, =gTasks + 0x8
|
||||
adds r1, r0
|
||||
str r1, [r2]
|
||||
ldr r0, =gUnknown_03000DA4
|
||||
str r1, [r0]
|
||||
movs r2, 0
|
||||
strb r2, [r1, 0x8]
|
||||
strb r2, [r1, 0x9]
|
||||
subs r4, 0x15
|
||||
strb r4, [r1, 0x12]
|
||||
ldr r0, =gSpecialVar_Result
|
||||
strh r2, [r0]
|
||||
pop {r4}
|
||||
pop {r0}
|
||||
bx r0
|
||||
.pool
|
||||
thumb_func_end sub_80152A8
|
||||
|
||||
thumb_func_start task00_081182DC
|
||||
task00_081182DC: @ 80152F4
|
||||
push {r4-r6,lr}
|
||||
sub sp, 0x8
|
||||
lsls r0, 24
|
||||
lsrs r4, r0, 24
|
||||
ldr r0, =gUnknown_02022C30
|
||||
ldr r5, [r0]
|
||||
ldrb r0, [r5, 0x8]
|
||||
cmp r0, 0xE
|
||||
bls _08015308
|
||||
b _08015604
|
||||
_08015308:
|
||||
lsls r0, 2
|
||||
ldr r1, =_0801531C
|
||||
adds r0, r1
|
||||
ldr r0, [r0]
|
||||
mov pc, r0
|
||||
.pool
|
||||
.align 2, 0
|
||||
_0801531C:
|
||||
.4byte _08015358
|
||||
.4byte _08015386
|
||||
.4byte _08015398
|
||||
.4byte _08015420
|
||||
.4byte _080154E0
|
||||
.4byte _08015504
|
||||
.4byte _08015564
|
||||
.4byte _080155A8
|
||||
.4byte _08015564
|
||||
.4byte _0801559A
|
||||
.4byte _08015564
|
||||
.4byte _080155B4
|
||||
.4byte _08015564
|
||||
.4byte _080155E8
|
||||
.4byte _080155F4
|
||||
_08015358:
|
||||
movs r0, 0
|
||||
movs r1, 0
|
||||
movs r2, 0
|
||||
bl sub_8010F84
|
||||
bl sub_800B488
|
||||
bl OpenLink
|
||||
bl sub_8011C5C
|
||||
movs r0, 0x70
|
||||
bl AllocZeroed
|
||||
str r0, [r5, 0x4]
|
||||
movs r0, 0x80
|
||||
lsls r0, 2
|
||||
bl AllocZeroed
|
||||
str r0, [r5]
|
||||
movs r0, 0x1
|
||||
strb r0, [r5, 0x8]
|
||||
b _08015604
|
||||
_08015386:
|
||||
ldr r0, =gUnknown_082EFBC8
|
||||
bl sub_8018884
|
||||
movs r0, 0x2
|
||||
strb r0, [r5, 0x8]
|
||||
b _08015604
|
||||
.pool
|
||||
_08015398:
|
||||
ldr r0, [r5, 0x4]
|
||||
movs r1, 0x4
|
||||
bl sub_80175EC
|
||||
ldr r0, [r5]
|
||||
movs r1, 0x10
|
||||
bl sub_8017580
|
||||
ldr r0, [r5, 0x4]
|
||||
ldrb r1, [r5, 0x12]
|
||||
adds r1, 0x7
|
||||
bl sub_8016FF0
|
||||
strb r0, [r5, 0x11]
|
||||
ldrb r0, [r5, 0x13]
|
||||
cmp r0, 0
|
||||
beq _08015404
|
||||
ldr r0, =gUnknown_082F0174
|
||||
ldr r1, [r0, 0x4]
|
||||
ldr r0, [r0]
|
||||
str r0, [sp]
|
||||
str r1, [sp, 0x4]
|
||||
bl sub_8019930
|
||||
lsls r0, 16
|
||||
ldr r2, =0x0000ffff
|
||||
ldr r1, [sp, 0x4]
|
||||
ands r1, r2
|
||||
orrs r1, r0
|
||||
str r1, [sp, 0x4]
|
||||
mov r0, sp
|
||||
bl AddWindow
|
||||
strb r0, [r5, 0xB]
|
||||
ldrb r0, [r5, 0xB]
|
||||
bl sub_8018784
|
||||
ldr r0, =gMultiuseListMenuTemplate
|
||||
adds r2, r0, 0
|
||||
ldr r1, =gUnknown_082F0204
|
||||
ldm r1!, {r3,r4,r6}
|
||||
stm r2!, {r3,r4,r6}
|
||||
ldm r1!, {r3,r4,r6}
|
||||
stm r2!, {r3,r4,r6}
|
||||
ldrb r1, [r5, 0xB]
|
||||
strb r1, [r0, 0x10]
|
||||
movs r1, 0
|
||||
movs r2, 0
|
||||
bl ListMenuInit
|
||||
strb r0, [r5, 0xE]
|
||||
movs r0, 0
|
||||
bl CopyBgTilemapBufferToVram
|
||||
_08015404:
|
||||
movs r0, 0
|
||||
strb r0, [r5, 0xF]
|
||||
movs r0, 0x3
|
||||
strb r0, [r5, 0x8]
|
||||
b _08015604
|
||||
.pool
|
||||
_08015420:
|
||||
bl sub_8013E44
|
||||
lsls r0, 24
|
||||
lsrs r0, 24
|
||||
cmp r0, 0
|
||||
beq _08015446
|
||||
cmp r0, 0x1
|
||||
bne _08015436
|
||||
movs r0, 0x2
|
||||
bl PlaySE
|
||||
_08015436:
|
||||
ldrb r0, [r5, 0x13]
|
||||
cmp r0, 0
|
||||
bne _0801543E
|
||||
b _08015604
|
||||
_0801543E:
|
||||
ldrb r0, [r5, 0xE]
|
||||
bl sub_81AE70C
|
||||
b _08015604
|
||||
_08015446:
|
||||
ldrb r0, [r5, 0x13]
|
||||
cmp r0, 0
|
||||
beq _08015452
|
||||
ldrb r0, [r5, 0xE]
|
||||
bl ListMenuHandleInputGetItemId
|
||||
_08015452:
|
||||
ldrb r0, [r5, 0x14]
|
||||
cmp r0, 0x78
|
||||
bls _080154C0
|
||||
ldr r2, [r5]
|
||||
ldrb r1, [r2, 0x1A]
|
||||
movs r0, 0x3
|
||||
ands r0, r1
|
||||
cmp r0, 0x1
|
||||
bne _080154D4
|
||||
ldrb r1, [r2, 0xA]
|
||||
movs r0, 0x80
|
||||
ands r0, r1
|
||||
lsls r0, 24
|
||||
lsrs r4, r0, 24
|
||||
cmp r4, 0
|
||||
bne _080154D4
|
||||
ldrb r1, [r5, 0x12]
|
||||
adds r1, 0x7
|
||||
adds r0, r2, 0
|
||||
bl sub_8016F1C
|
||||
cmp r0, 0
|
||||
beq _080154B4
|
||||
strb r4, [r5, 0xF]
|
||||
strb r4, [r5, 0x14]
|
||||
bl sub_800E0E8
|
||||
movs r0, 0
|
||||
movs r1, 0
|
||||
bl CreateWirelessStatusIndicatorSprite
|
||||
ldr r0, [r5]
|
||||
adds r4, r0, 0
|
||||
adds r4, 0x10
|
||||
adds r0, 0x2
|
||||
bl ReadAsU16
|
||||
adds r1, r0, 0
|
||||
lsls r1, 16
|
||||
lsrs r1, 16
|
||||
adds r0, r4, 0
|
||||
bl sub_8011FC8
|
||||
movs r0, 0x6E
|
||||
bl PlaySE
|
||||
movs r0, 0x4
|
||||
strb r0, [r5, 0x8]
|
||||
b _080154D4
|
||||
_080154B4:
|
||||
movs r0, 0x16
|
||||
bl PlaySE
|
||||
movs r0, 0xA
|
||||
strb r0, [r5, 0x8]
|
||||
b _080154D4
|
||||
_080154C0:
|
||||
ldr r0, =gMain
|
||||
ldrh r1, [r0, 0x2E]
|
||||
movs r0, 0x2
|
||||
ands r0, r1
|
||||
cmp r0, 0
|
||||
beq _080154D4
|
||||
movs r1, 0
|
||||
movs r0, 0x6
|
||||
strb r0, [r5, 0x8]
|
||||
strb r1, [r5, 0x14]
|
||||
_080154D4:
|
||||
ldrb r0, [r5, 0x14]
|
||||
adds r0, 0x1
|
||||
strb r0, [r5, 0x14]
|
||||
b _08015604
|
||||
.pool
|
||||
_080154E0:
|
||||
ldr r0, =gUnknown_082EFC90
|
||||
bl sub_8018884
|
||||
ldr r0, =gStringVar1
|
||||
ldrb r2, [r5, 0xF]
|
||||
lsls r2, 5
|
||||
ldr r1, [r5]
|
||||
adds r1, r2
|
||||
bl sub_8018404
|
||||
movs r0, 0x5
|
||||
strb r0, [r5, 0x8]
|
||||
b _08015604
|
||||
.pool
|
||||
_08015504:
|
||||
ldr r0, =gReceivedRemoteLinkPlayers
|
||||
ldrb r0, [r0]
|
||||
cmp r0, 0
|
||||
beq _08015522
|
||||
ldr r2, =gUnknown_02022C2C
|
||||
ldr r1, [r5]
|
||||
ldrb r0, [r5, 0xF]
|
||||
lsls r0, 5
|
||||
adds r1, r0
|
||||
ldrb r0, [r1, 0xA]
|
||||
lsls r0, 25
|
||||
lsrs r0, 25
|
||||
strb r0, [r2]
|
||||
movs r0, 0xC
|
||||
strb r0, [r5, 0x8]
|
||||
_08015522:
|
||||
bl sub_8011A74
|
||||
lsls r0, 24
|
||||
lsrs r0, 24
|
||||
cmp r0, 0x5
|
||||
beq _0801554E
|
||||
cmp r0, 0x5
|
||||
bgt _08015544
|
||||
cmp r0, 0x2
|
||||
bgt _08015604
|
||||
cmp r0, 0x1
|
||||
blt _08015604
|
||||
b _08015548
|
||||
.pool
|
||||
_08015544:
|
||||
cmp r0, 0x6
|
||||
bne _08015604
|
||||
_08015548:
|
||||
movs r0, 0x8
|
||||
strb r0, [r5, 0x8]
|
||||
b _08015604
|
||||
_0801554E:
|
||||
ldr r0, =gUnknown_082EDEC4
|
||||
bl sub_8018884
|
||||
movs r0, 0
|
||||
movs r1, 0
|
||||
bl sub_8011A64
|
||||
b _08015604
|
||||
.pool
|
||||
_08015564:
|
||||
ldrb r0, [r5, 0x13]
|
||||
cmp r0, 0
|
||||
beq _08015580
|
||||
ldrb r0, [r5, 0xE]
|
||||
movs r1, 0
|
||||
movs r2, 0
|
||||
bl DestroyListMenuTask
|
||||
movs r0, 0
|
||||
bl CopyBgTilemapBufferToVram
|
||||
ldrb r0, [r5, 0xB]
|
||||
bl RemoveWindow
|
||||
_08015580:
|
||||
ldrb r0, [r5, 0x11]
|
||||
bl DestroyTask
|
||||
ldr r0, [r5]
|
||||
bl Free
|
||||
ldr r0, [r5, 0x4]
|
||||
bl Free
|
||||
ldrb r0, [r5, 0x8]
|
||||
adds r0, 0x1
|
||||
strb r0, [r5, 0x8]
|
||||
b _08015604
|
||||
_0801559A:
|
||||
adds r0, r5, 0
|
||||
adds r0, 0x9
|
||||
ldr r1, =gUnknown_082EDF04
|
||||
b _080155C2
|
||||
.pool
|
||||
_080155A8:
|
||||
adds r0, r5, 0
|
||||
adds r0, 0x9
|
||||
ldr r1, =gText_WirelessSearchCanceled
|
||||
b _080155C2
|
||||
.pool
|
||||
_080155B4:
|
||||
adds r0, r5, 0
|
||||
adds r0, 0x9
|
||||
ldr r2, =gUnknown_082EFD58
|
||||
ldrb r1, [r5, 0x12]
|
||||
lsls r1, 2
|
||||
adds r1, r2
|
||||
ldr r1, [r1]
|
||||
_080155C2:
|
||||
bl mevent_0814257C
|
||||
cmp r0, 0
|
||||
beq _08015604
|
||||
bl sub_800E084
|
||||
adds r0, r4, 0
|
||||
bl DestroyTask
|
||||
bl sub_800EDD4
|
||||
ldr r1, =gSpecialVar_Result
|
||||
movs r0, 0x5
|
||||
strh r0, [r1]
|
||||
b _08015604
|
||||
.pool
|
||||
_080155E8:
|
||||
ldrb r0, [r5, 0x8]
|
||||
adds r0, 0x1
|
||||
strb r0, [r5, 0x8]
|
||||
bl sub_800ADF8
|
||||
b _08015604
|
||||
_080155F4:
|
||||
bl sub_800A520
|
||||
lsls r0, 24
|
||||
cmp r0, 0
|
||||
beq _08015604
|
||||
adds r0, r4, 0
|
||||
bl DestroyTask
|
||||
_08015604:
|
||||
add sp, 0x8
|
||||
pop {r4-r6}
|
||||
pop {r0}
|
||||
bx r0
|
||||
thumb_func_end task00_081182DC
|
||||
|
||||
thumb_func_start UnionRoomSpecial
|
||||
UnionRoomSpecial: @ 801560C
|
||||
push {r4,lr}
|
||||
bl sub_8010F60
|
||||
ldr r0, =sub_80156E0
|
||||
movs r1, 0xA
|
||||
bl CreateTask
|
||||
ldr r4, =gUnknown_02022C30
|
||||
movs r0, 0x9B
|
||||
lsls r0, 2
|
||||
bl AllocZeroed
|
||||
str r0, [r4]
|
||||
ldr r1, =gUnknown_03000DA8
|
||||
str r0, [r1]
|
||||
movs r1, 0
|
||||
strb r1, [r0, 0x14]
|
||||
strb r1, [r0, 0x16]
|
||||
strh r1, [r0, 0x10]
|
||||
strh r1, [r0, 0x12]
|
||||
ldr r0, =gSpecialVar_Result
|
||||
strh r1, [r0]
|
||||
movs r0, 0xD0
|
||||
movs r1, 0x1
|
||||
bl sub_819A2BC
|
||||
pop {r4}
|
||||
pop {r0}
|
||||
bx r0
|
||||
.pool
|
||||
thumb_func_end UnionRoomSpecial
|
||||
|
||||
thumb_func_start ReadAsU16
|
||||
ReadAsU16: @ 8015658
|
||||
ldrb r1, [r0, 0x1]
|
||||
lsls r1, 8
|
||||
ldrb r0, [r0]
|
||||
orrs r0, r1
|
||||
bx lr
|
||||
thumb_func_end ReadAsU16
|
||||
|
||||
thumb_func_start sub_8015664
|
||||
sub_8015664: @ 8015664
|
||||
push {lr}
|
||||
adds r3, r1, 0
|
||||
ldr r1, =gUnknown_02022C30
|
||||
ldr r2, [r1]
|
||||
movs r1, 0x8
|
||||
strb r1, [r2, 0x14]
|
||||
strb r0, [r2, 0x15]
|
||||
ldr r0, =gStringVar4
|
||||
cmp r3, r0
|
||||
beq _0801567E
|
||||
adds r1, r3, 0
|
||||
bl StringExpandPlaceholders
|
||||
_0801567E:
|
||||
pop {r0}
|
||||
bx r0
|
||||
.pool
|
||||
thumb_func_end sub_8015664
|
||||
|
||||
thumb_func_start sub_801568C
|
||||
sub_801568C: @ 801568C
|
||||
push {lr}
|
||||
adds r2, r0, 0
|
||||
ldr r0, =gUnknown_02022C30
|
||||
ldr r1, [r0]
|
||||
movs r0, 0x1A
|
||||
strb r0, [r1, 0x14]
|
||||
ldr r0, =gStringVar4
|
||||
cmp r2, r0
|
||||
beq _080156A4
|
||||
adds r1, r2, 0
|
||||
bl StringExpandPlaceholders
|
||||
_080156A4:
|
||||
pop {r0}
|
||||
bx r0
|
||||
.pool
|
||||
thumb_func_end sub_801568C
|
||||
|
||||
thumb_func_start sub_80156B0
|
||||
sub_80156B0: @ 80156B0
|
||||
push {lr}
|
||||
ldr r3, =0x0201ff00
|
||||
ldr r1, [r0]
|
||||
movs r2, 0x80
|
||||
lsls r2, 1
|
||||
adds r0, r3, 0
|
||||
bl memcpy
|
||||
pop {r0}
|
||||
bx r0
|
||||
.pool
|
||||
thumb_func_end sub_80156B0
|
||||
|
||||
thumb_func_start sub_80156C8
|
||||
sub_80156C8: @ 80156C8
|
||||
push {lr}
|
||||
ldr r0, [r0]
|
||||
ldr r1, =0x0201ff00
|
||||
movs r2, 0x80
|
||||
lsls r2, 1
|
||||
bl memcpy
|
||||
pop {r0}
|
||||
bx r0
|
||||
.pool
|
||||
thumb_func_end sub_80156C8
|
||||
|
||||
thumb_func_start sub_80156E0
|
||||
sub_80156E0: @ 80156E0
|
||||
push {r4-r7,lr}
|
||||
|
||||
@@ -26,6 +26,7 @@
|
||||
#include "party_menu.h"
|
||||
#include "field_weather.h"
|
||||
#include "palette.h"
|
||||
#include "decompress.h"
|
||||
|
||||
extern void HealPlayerParty(void);
|
||||
|
||||
@@ -100,7 +101,7 @@ struct UnkStruct_Group
|
||||
u8 state;
|
||||
u8 textState;
|
||||
u8 field_A;
|
||||
u8 field_B;
|
||||
u8 listWindowId;
|
||||
u8 field_C;
|
||||
u8 field_D;
|
||||
u8 listTaskId;
|
||||
@@ -113,10 +114,24 @@ struct UnkStruct_Group
|
||||
u8 field_15;
|
||||
};
|
||||
|
||||
struct UnkStruct_URoom
|
||||
{
|
||||
void *field_0;
|
||||
void *field_4;
|
||||
void *field_8;
|
||||
void *field_C;
|
||||
u16 field_10;
|
||||
u16 field_12;
|
||||
u8 field_14;
|
||||
u8 field_15;
|
||||
u8 field_16;
|
||||
};
|
||||
|
||||
union UnkUnion_Main
|
||||
{
|
||||
struct UnkStruct_Leader *leader;
|
||||
struct UnkStruct_Group *group;
|
||||
struct UnkStruct_URoom *uRoom;
|
||||
};
|
||||
|
||||
struct TradeUnkStruct
|
||||
@@ -146,7 +161,7 @@ extern u8 gUnknown_03005DB4;
|
||||
// IWRAM vars
|
||||
IWRAM_DATA struct UnkStruct_Leader *gUnknown_03000DA0;
|
||||
IWRAM_DATA struct UnkStruct_Group *gUnknown_03000DA4;
|
||||
IWRAM_DATA void *gUnknown_03000DA8;
|
||||
IWRAM_DATA struct UnkStruct_URoom *gUnknown_03000DA8;
|
||||
IWRAM_DATA void *gUnknown_03000DAC;
|
||||
IWRAM_DATA bool32 gUnknown_03000DB0;
|
||||
|
||||
@@ -158,9 +173,12 @@ void sub_80134E8(u8 taskId);
|
||||
void sub_8013C7C(u8 taskId);
|
||||
void sub_8014A40(u8 taskId);
|
||||
void sub_8014F48(u8 taskId);
|
||||
void sub_80152F4(u8 taskId);
|
||||
void sub_80156E0(u8 taskId);
|
||||
void sub_80175EC(struct UnkStruct_Main4 *arg0, u8 count);
|
||||
void sub_8017580(struct UnkStruct_Main0 *arg0, u8 count);
|
||||
u8 sub_8016FC0(struct UnkStruct_Main4 *arg0, u32 arg1);
|
||||
u8 sub_8016FF0(struct UnkStruct_Main4 *arg0, u32 arg1);
|
||||
bool8 PrintOnTextbox(u8 *textState, const u8 *str);
|
||||
bool8 sub_801320C(struct UnkStruct_Leader *data, u32 arg1, u32 arg2);
|
||||
u8 sub_8013398(struct UnkStruct_Main0 *arg0);
|
||||
@@ -194,6 +212,7 @@ void sub_8018784(u8 windowId);
|
||||
void sub_8018884(const u8 *src);
|
||||
bool32 mevent_0814257C(u8 *textState, const u8 *str);
|
||||
s8 sub_8018B08(u8 *textState, u8 *arg1, u8 arg2, const u8 *str);
|
||||
bool32 sub_8016F1C(struct UnkStruct_x20 *arg0, s16 arg1);
|
||||
|
||||
// const rom data
|
||||
extern const u8 *const gUnknown_082EDB60[][5];
|
||||
@@ -220,6 +239,12 @@ extern const u8 gUnknown_082EDE48[];
|
||||
extern const u8 gUnknown_082EDE64[];
|
||||
extern const u8 gUnknown_082EDF40[];
|
||||
extern const u8 gText_PleaseStartOver[];
|
||||
extern const u8 gUnknown_082EF7F8[];
|
||||
extern const u8 gUnknown_082EFBC8[];
|
||||
extern const u8 gUnknown_082EFC90[];
|
||||
extern const u8 gUnknown_082EDEC4[];
|
||||
extern const u8 gUnknown_082EDF04[];
|
||||
extern const u8 gText_WirelessSearchCanceled[];
|
||||
|
||||
extern const u32 gUnknown_082F00C4[];
|
||||
|
||||
@@ -240,6 +265,8 @@ extern const u8 *const gUnknown_082EDDC4[];
|
||||
extern const u8 *const gUnknown_082EFB70[];
|
||||
extern const u8 *const gUnknown_082EDD50[];
|
||||
extern const u8 *const gUnknown_082EDE9C[];
|
||||
extern const u8 *const gUnknown_082EDF80[];
|
||||
extern const u8 *const gUnknown_082EFD58[];
|
||||
|
||||
extern const struct UnkStruct_Shared gUnknown_082F045C[];
|
||||
|
||||
@@ -936,7 +963,7 @@ void sub_80134E8(u8 taskId)
|
||||
sub_8017580(data->field_0, 16);
|
||||
data->field_11 = sub_8016FC0(data->field_4, gSpecialVar_0x8004);
|
||||
data->field_C = AddWindow(&gUnknown_082F00BC);
|
||||
data->field_B = AddWindow(&gUnknown_082F0174);
|
||||
data->listWindowId = AddWindow(&gUnknown_082F0174);
|
||||
data->field_D = AddWindow(&gUnknown_082F017C);
|
||||
|
||||
FillWindowPixelBuffer(data->field_C, 0x22);
|
||||
@@ -944,9 +971,9 @@ void sub_80134E8(u8 taskId)
|
||||
PutWindowTilemap(data->field_C);
|
||||
CopyWindowToVram(data->field_C, 2);
|
||||
|
||||
NewMenuHelpers_DrawStdWindowFrame(data->field_B, FALSE);
|
||||
NewMenuHelpers_DrawStdWindowFrame(data->listWindowId, FALSE);
|
||||
gMultiuseListMenuTemplate = gUnknown_082F0204;
|
||||
gMultiuseListMenuTemplate.windowId = data->field_B;
|
||||
gMultiuseListMenuTemplate.windowId = data->listWindowId;
|
||||
data->listTaskId = ListMenuInit(&gMultiuseListMenuTemplate, 0, 0);
|
||||
|
||||
NewMenuHelpers_DrawStdWindowFrame(data->field_D, FALSE);
|
||||
@@ -974,7 +1001,7 @@ void sub_80134E8(u8 taskId)
|
||||
u32 unusedVar;
|
||||
unusedVar = data->field_0->arr[id].unk.field_0.unk_0a_0;
|
||||
|
||||
if (data->field_0->arr[id].field_1A_0 == 1 && data->field_0->arr[id].unk.field_0.unk_0a_7 == 0)
|
||||
if (data->field_0->arr[id].field_1A_0 == 1 && !data->field_0->arr[id].unk.field_0.unk_0a_7)
|
||||
{
|
||||
u32 var = sub_8013B8C(data, id);
|
||||
if (var == 0)
|
||||
@@ -1121,10 +1148,10 @@ void sub_80134E8(u8 taskId)
|
||||
sub_819746C(data->field_D, FALSE);
|
||||
DestroyListMenuTask(data->listTaskId, 0, 0);
|
||||
ClearWindowTilemap(data->field_C);
|
||||
sub_819746C(data->field_B, FALSE);
|
||||
sub_819746C(data->listWindowId, FALSE);
|
||||
CopyBgTilemapBufferToVram(0);
|
||||
RemoveWindow(data->field_D);
|
||||
RemoveWindow(data->field_B);
|
||||
RemoveWindow(data->listWindowId);
|
||||
RemoveWindow(data->field_C);
|
||||
DestroyTask(data->field_11);
|
||||
Free(data->field_0);
|
||||
@@ -1286,7 +1313,7 @@ u8 sub_8013DBC(struct UnkStruct_Group *data, u32 id)
|
||||
{
|
||||
if (data->field_0->arr[id].field_1A_0 == 1)
|
||||
{
|
||||
if (data->field_0->arr[id].unk.field_0.unk_0a_7 != 0)
|
||||
if (data->field_0->arr[id].unk.field_0.unk_0a_7)
|
||||
return 3;
|
||||
else if (data->field_0->arr[id].field_1A_1 != 0)
|
||||
return 1;
|
||||
@@ -1984,3 +2011,393 @@ void sub_8014EFC(u32 arg0)
|
||||
dataPtr->field_12 = arg0 - 21;
|
||||
gSpecialVar_Result = 0;
|
||||
}
|
||||
|
||||
void sub_8014F48(u8 taskId)
|
||||
{
|
||||
s32 id;
|
||||
struct WindowTemplate winTemplate1, winTemplate2;
|
||||
struct UnkStruct_Group *data = gUnknown_02022C30.group;
|
||||
|
||||
switch (data->state)
|
||||
{
|
||||
case 0:
|
||||
sub_8010F84(data->field_12 + 21, 0, 0);
|
||||
sub_800B488();
|
||||
OpenLink();
|
||||
sub_8011C5C();
|
||||
data->field_4 = AllocZeroed(0x70);
|
||||
data->field_0 = AllocZeroed(0x200);
|
||||
data->state = 1;
|
||||
break;
|
||||
case 1:
|
||||
sub_8018884(gUnknown_082EF7F8);
|
||||
data->state = 2;
|
||||
break;
|
||||
case 2:
|
||||
sub_80175EC(data->field_4, 4);
|
||||
sub_8017580(data->field_0, 16);
|
||||
data->field_11 = sub_8016FC0(data->field_4, data->field_12 + 7);
|
||||
|
||||
winTemplate1 = gUnknown_082F0174;
|
||||
winTemplate1.baseBlock = sub_8019930();
|
||||
winTemplate1.paletteNum = 0xC;
|
||||
data->listWindowId = AddWindow(&winTemplate1);
|
||||
|
||||
winTemplate2 = gUnknown_082F017C;
|
||||
winTemplate2.paletteNum = 0xC;
|
||||
data->field_D = AddWindow(&winTemplate2);
|
||||
|
||||
sub_8018784(data->listWindowId);
|
||||
gMultiuseListMenuTemplate = gUnknown_082F0204;
|
||||
gMultiuseListMenuTemplate.windowId = data->listWindowId;
|
||||
data->listTaskId = ListMenuInit(&gMultiuseListMenuTemplate, 0, 0);
|
||||
|
||||
sub_8018784(data->field_D);
|
||||
FillWindowPixelBuffer(data->field_D, 0x11);
|
||||
PutWindowTilemap(data->field_D);
|
||||
sub_80125BC(data->field_D);
|
||||
CopyWindowToVram(data->field_D, 2);
|
||||
|
||||
CopyBgTilemapBufferToVram(0);
|
||||
data->field_F = 0;
|
||||
data->state = 3;
|
||||
break;
|
||||
case 3:
|
||||
id = sub_8013E44();
|
||||
switch (id)
|
||||
{
|
||||
case 1:
|
||||
PlaySE(SE_PC_LOGIN);
|
||||
default:
|
||||
sub_81AE70C(data->listTaskId);
|
||||
break;
|
||||
case 0:
|
||||
id = ListMenuHandleInputGetItemId(data->listTaskId);
|
||||
if (gMain.newKeys & A_BUTTON && id != -1)
|
||||
{
|
||||
// this unused variable along with the assignment is needed to match
|
||||
u32 unusedVar;
|
||||
unusedVar = data->field_0->arr[id].unk.field_0.unk_0a_0;
|
||||
|
||||
if (data->field_0->arr[id].field_1A_0 == 1 && !data->field_0->arr[id].unk.field_0.unk_0a_7)
|
||||
{
|
||||
data->field_F = id;
|
||||
sub_800E0E8();
|
||||
CreateWirelessStatusIndicatorSprite(0, 0);
|
||||
sub_81AE70C(data->listTaskId);
|
||||
sub_8018404(gStringVar1, &data->field_0->arr[data->field_F]);
|
||||
sub_8011FC8(data->field_0->arr[data->field_F].unk.playerName, ReadAsU16(data->field_0->arr[data->field_F].unk.field_0.playerTrainerId));
|
||||
PlaySE(SE_PN_ON);
|
||||
data->state = 4;
|
||||
}
|
||||
else
|
||||
{
|
||||
PlaySE(SE_WALL_HIT);
|
||||
}
|
||||
}
|
||||
else if (gMain.newKeys & B_BUTTON)
|
||||
{
|
||||
data->state = 6;
|
||||
}
|
||||
break;
|
||||
}
|
||||
break;
|
||||
case 4:
|
||||
sub_8018884(gUnknown_082EFC3C);
|
||||
sub_8018404(gStringVar1, &data->field_0->arr[data->field_F]);
|
||||
data->state = 5;
|
||||
break;
|
||||
case 5:
|
||||
if (gReceivedRemoteLinkPlayers != 0)
|
||||
{
|
||||
gUnknown_02022C2C = data->field_0->arr[data->field_F].unk.field_0.unk_0a_0;
|
||||
data->state = 10;
|
||||
}
|
||||
|
||||
switch (sub_8011A74())
|
||||
{
|
||||
case 1:
|
||||
case 2:
|
||||
case 6:
|
||||
data->state = 8;
|
||||
break;
|
||||
case 5:
|
||||
sub_8018884(gUnknown_082EDDF4);
|
||||
sub_8011A64(0, 0);
|
||||
break;
|
||||
}
|
||||
break;
|
||||
case 6:
|
||||
case 8:
|
||||
case 10:
|
||||
DestroyListMenuTask(data->listTaskId, 0, 0);
|
||||
CopyBgTilemapBufferToVram(0);
|
||||
RemoveWindow(data->field_D);
|
||||
RemoveWindow(data->listWindowId);
|
||||
DestroyTask(data->field_11);
|
||||
Free(data->field_0);
|
||||
Free(data->field_4);
|
||||
data->state++;
|
||||
break;
|
||||
case 9:
|
||||
if (mevent_0814257C(&data->textState, gUnknown_082EDF80[sub_8011A74()]))
|
||||
{
|
||||
sub_800E084();
|
||||
DestroyTask(taskId);
|
||||
sub_800EDD4();
|
||||
gSpecialVar_Result = 5;
|
||||
}
|
||||
break;
|
||||
case 7:
|
||||
sub_800E084();
|
||||
sub_8018884(gText_PleaseStartOver);
|
||||
DestroyTask(taskId);
|
||||
sub_800EDD4();
|
||||
gSpecialVar_Result = 5;
|
||||
break;
|
||||
case 11:
|
||||
data->state++;
|
||||
sub_800ADF8();
|
||||
break;
|
||||
case 12:
|
||||
if (sub_800A520())
|
||||
DestroyTask(taskId);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
void sub_80152A8(u32 arg0)
|
||||
{
|
||||
u8 taskId;
|
||||
struct UnkStruct_Group *dataPtr;
|
||||
|
||||
taskId = CreateTask(sub_80152F4, 0);
|
||||
gUnknown_02022C30.group = dataPtr = (void*)(gTasks[taskId].data);
|
||||
gUnknown_03000DA4 = dataPtr;
|
||||
|
||||
dataPtr->state = 0;
|
||||
dataPtr->textState = 0;
|
||||
dataPtr->field_12 = arg0 - 21;
|
||||
gSpecialVar_Result = 0;
|
||||
}
|
||||
|
||||
void sub_80152F4(u8 taskId)
|
||||
{
|
||||
s32 id;
|
||||
struct WindowTemplate winTemplate;
|
||||
struct UnkStruct_Group *data = gUnknown_02022C30.group;
|
||||
|
||||
switch (data->state)
|
||||
{
|
||||
case 0:
|
||||
sub_8010F84(0, 0, 0);
|
||||
sub_800B488();
|
||||
OpenLink();
|
||||
sub_8011C5C();
|
||||
data->field_4 = AllocZeroed(0x70);
|
||||
data->field_0 = AllocZeroed(0x200);
|
||||
data->state = 1;
|
||||
break;
|
||||
case 1:
|
||||
sub_8018884(gUnknown_082EFBC8);
|
||||
data->state = 2;
|
||||
break;
|
||||
case 2:
|
||||
sub_80175EC(data->field_4, 4);
|
||||
sub_8017580(data->field_0, 16);
|
||||
data->field_11 = sub_8016FF0(data->field_4, data->field_12 + 7);
|
||||
|
||||
if (data->field_13 != 0)
|
||||
{
|
||||
winTemplate = gUnknown_082F0174;
|
||||
winTemplate.baseBlock = sub_8019930();
|
||||
data->listWindowId = AddWindow(&winTemplate);
|
||||
|
||||
sub_8018784(data->listWindowId);
|
||||
gMultiuseListMenuTemplate = gUnknown_082F0204;
|
||||
gMultiuseListMenuTemplate.windowId = data->listWindowId;
|
||||
data->listTaskId = ListMenuInit(&gMultiuseListMenuTemplate, 0, 0);
|
||||
|
||||
CopyBgTilemapBufferToVram(0);
|
||||
}
|
||||
|
||||
data->field_F = 0;
|
||||
data->state = 3;
|
||||
break;
|
||||
case 3:
|
||||
id = sub_8013E44();
|
||||
switch (id)
|
||||
{
|
||||
case 1:
|
||||
PlaySE(SE_PC_LOGIN);
|
||||
default:
|
||||
if (data->field_13 != 0)
|
||||
sub_81AE70C(data->listTaskId);
|
||||
break;
|
||||
case 0:
|
||||
if (data->field_13 != 0)
|
||||
id = ListMenuHandleInputGetItemId(data->listTaskId);
|
||||
if (data->field_14 > 120)
|
||||
{
|
||||
if (data->field_0->arr[0].field_1A_0 == 1 && !data->field_0->arr[0].unk.field_0.unk_0a_7)
|
||||
{
|
||||
if (sub_8016F1C(&data->field_0->arr[0], data->field_12 + 7))
|
||||
{
|
||||
data->field_F = 0;
|
||||
data->field_14 = 0;
|
||||
sub_800E0E8();
|
||||
CreateWirelessStatusIndicatorSprite(0, 0);
|
||||
sub_8011FC8(data->field_0->arr[0].unk.playerName, ReadAsU16(data->field_0->arr[0].unk.field_0.playerTrainerId));
|
||||
PlaySE(SE_PN_ON);
|
||||
data->state = 4;
|
||||
}
|
||||
else
|
||||
{
|
||||
PlaySE(SE_BOO);
|
||||
data->state = 10;
|
||||
}
|
||||
}
|
||||
}
|
||||
else if (gMain.newKeys & B_BUTTON)
|
||||
{
|
||||
data->state = 6;
|
||||
data->field_14 = 0;
|
||||
}
|
||||
data->field_14++;
|
||||
break;
|
||||
}
|
||||
break;
|
||||
case 4:
|
||||
sub_8018884(gUnknown_082EFC90);
|
||||
sub_8018404(gStringVar1, &data->field_0->arr[data->field_F]);
|
||||
data->state = 5;
|
||||
break;
|
||||
case 5:
|
||||
if (gReceivedRemoteLinkPlayers != 0)
|
||||
{
|
||||
gUnknown_02022C2C = data->field_0->arr[data->field_F].unk.field_0.unk_0a_0;
|
||||
data->state = 12;
|
||||
}
|
||||
|
||||
switch (sub_8011A74())
|
||||
{
|
||||
case 1:
|
||||
case 2:
|
||||
case 6:
|
||||
data->state = 8;
|
||||
break;
|
||||
case 5:
|
||||
sub_8018884(gUnknown_082EDEC4);
|
||||
sub_8011A64(0, 0);
|
||||
break;
|
||||
}
|
||||
break;
|
||||
case 6:
|
||||
case 8:
|
||||
case 10:
|
||||
case 12:
|
||||
if (data->field_13 != 0)
|
||||
{
|
||||
DestroyListMenuTask(data->listTaskId, 0, 0);
|
||||
CopyBgTilemapBufferToVram(0);
|
||||
RemoveWindow(data->listWindowId);
|
||||
}
|
||||
DestroyTask(data->field_11);
|
||||
Free(data->field_0);
|
||||
Free(data->field_4);
|
||||
data->state++;
|
||||
break;
|
||||
case 9:
|
||||
if (mevent_0814257C(&data->textState, gUnknown_082EDF04))
|
||||
{
|
||||
sub_800E084();
|
||||
DestroyTask(taskId);
|
||||
sub_800EDD4();
|
||||
gSpecialVar_Result = 5;
|
||||
}
|
||||
break;
|
||||
case 7:
|
||||
if (mevent_0814257C(&data->textState, gText_WirelessSearchCanceled))
|
||||
{
|
||||
sub_800E084();
|
||||
DestroyTask(taskId);
|
||||
sub_800EDD4();
|
||||
gSpecialVar_Result = 5;
|
||||
}
|
||||
break;
|
||||
case 11:
|
||||
if (mevent_0814257C(&data->textState, gUnknown_082EFD58[data->field_12]))
|
||||
{
|
||||
sub_800E084();
|
||||
DestroyTask(taskId);
|
||||
sub_800EDD4();
|
||||
gSpecialVar_Result = 5;
|
||||
}
|
||||
break;
|
||||
case 13:
|
||||
data->state++;
|
||||
sub_800ADF8();
|
||||
break;
|
||||
case 14:
|
||||
if (sub_800A520())
|
||||
DestroyTask(taskId);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
void UnionRoomSpecial(void)
|
||||
{
|
||||
struct UnkStruct_URoom *dataPtr;
|
||||
|
||||
sub_8010F60();
|
||||
CreateTask(sub_80156E0, 10);
|
||||
|
||||
// dumb line needed to match
|
||||
gUnknown_02022C30.uRoom = gUnknown_02022C30.uRoom;
|
||||
|
||||
dataPtr = AllocZeroed(0x26C);
|
||||
gUnknown_02022C30.uRoom = dataPtr;
|
||||
gUnknown_03000DA8 = dataPtr;
|
||||
|
||||
dataPtr->field_14 = 0;
|
||||
dataPtr->field_16 = 0;
|
||||
dataPtr->field_10 = 0;
|
||||
dataPtr->field_12 = 0;
|
||||
|
||||
gSpecialVar_Result = 0;
|
||||
sub_819A2BC(0xD0, 1);
|
||||
}
|
||||
|
||||
u16 ReadAsU16(const u8 *ptr)
|
||||
{
|
||||
return (ptr[1] << 8) | (ptr[0]);
|
||||
}
|
||||
|
||||
void sub_8015664(u32 arg0, const u8 *src)
|
||||
{
|
||||
struct UnkStruct_URoom *data = gUnknown_02022C30.uRoom;
|
||||
|
||||
data->field_14 = 8;
|
||||
data->field_15 = arg0;
|
||||
if (src != gStringVar4)
|
||||
StringExpandPlaceholders(gStringVar4, src);
|
||||
}
|
||||
|
||||
void sub_801568C(const u8 *src)
|
||||
{
|
||||
struct UnkStruct_URoom *data = gUnknown_02022C30.uRoom;
|
||||
|
||||
data->field_14 = 26;
|
||||
if (src != gStringVar4)
|
||||
StringExpandPlaceholders(gStringVar4, src);
|
||||
}
|
||||
|
||||
void sub_80156B0(struct UnkStruct_URoom *data)
|
||||
{
|
||||
memcpy(&gDecompressionBuffer[0x3F00], data->field_0, 0x100);
|
||||
}
|
||||
|
||||
void sub_80156C8(struct UnkStruct_URoom *data)
|
||||
{
|
||||
memcpy(data->field_0, &gDecompressionBuffer[0x3F00], 0x100);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user