through sub_80E7820
This commit is contained in:
parent
d921e555d2
commit
cd4aa5efe5
2 changed files with 61 additions and 119 deletions
|
@ -5,115 +5,6 @@
|
||||||
|
|
||||||
.text
|
.text
|
||||||
|
|
||||||
thumb_func_start sub_80E776C
|
|
||||||
sub_80E776C: @ 80E776C
|
|
||||||
push {r4,lr}
|
|
||||||
lsls r0, 24
|
|
||||||
lsrs r3, r0, 24
|
|
||||||
lsls r0, r3, 2
|
|
||||||
adds r0, r3
|
|
||||||
lsls r0, 3
|
|
||||||
ldr r2, =gTasks
|
|
||||||
adds r0, r2
|
|
||||||
movs r4, 0x1C
|
|
||||||
ldrsh r1, [r0, r4]
|
|
||||||
lsls r0, r1, 2
|
|
||||||
adds r0, r1
|
|
||||||
lsls r0, 3
|
|
||||||
adds r0, r2
|
|
||||||
ldrb r0, [r0, 0x4]
|
|
||||||
cmp r0, 0
|
|
||||||
bne _080E7794
|
|
||||||
adds r0, r3, 0
|
|
||||||
bl DestroyTask
|
|
||||||
_080E7794:
|
|
||||||
pop {r4}
|
|
||||||
pop {r0}
|
|
||||||
bx r0
|
|
||||||
.pool
|
|
||||||
thumb_func_end sub_80E776C
|
|
||||||
|
|
||||||
thumb_func_start sub_80E77A0
|
|
||||||
sub_80E77A0: @ 80E77A0
|
|
||||||
push {lr}
|
|
||||||
lsls r0, 24
|
|
||||||
lsrs r0, 24
|
|
||||||
lsls r1, r0, 2
|
|
||||||
adds r1, r0
|
|
||||||
lsls r1, 3
|
|
||||||
ldr r0, =gTasks
|
|
||||||
adds r1, r0
|
|
||||||
ldr r0, =sub_80E776C
|
|
||||||
str r0, [r1]
|
|
||||||
ldr r0, =gUnknown_03001130
|
|
||||||
ldrb r0, [r0]
|
|
||||||
cmp r0, 0x1
|
|
||||||
bne _080E77C4
|
|
||||||
movs r2, 0x12
|
|
||||||
ldrsh r0, [r1, r2]
|
|
||||||
bl sub_80E6F60
|
|
||||||
_080E77C4:
|
|
||||||
pop {r0}
|
|
||||||
bx r0
|
|
||||||
.pool
|
|
||||||
thumb_func_end sub_80E77A0
|
|
||||||
|
|
||||||
thumb_func_start sub_80E77D4
|
|
||||||
sub_80E77D4: @ 80E77D4
|
|
||||||
lsls r0, 24
|
|
||||||
lsrs r0, 24
|
|
||||||
ldr r2, =gTasks
|
|
||||||
lsls r1, r0, 2
|
|
||||||
adds r1, r0
|
|
||||||
lsls r1, 3
|
|
||||||
adds r1, r2
|
|
||||||
ldr r0, =sub_80E77A0
|
|
||||||
str r0, [r1]
|
|
||||||
ldr r1, =gUnknown_03001130
|
|
||||||
movs r0, 0x1
|
|
||||||
strb r0, [r1]
|
|
||||||
bx lr
|
|
||||||
.pool
|
|
||||||
thumb_func_end sub_80E77D4
|
|
||||||
|
|
||||||
thumb_func_start sub_80E77FC
|
|
||||||
sub_80E77FC: @ 80E77FC
|
|
||||||
adds r1, r0, 0
|
|
||||||
ldrh r0, [r1]
|
|
||||||
ldrh r1, [r1, 0x2]
|
|
||||||
lsls r1, 16
|
|
||||||
orrs r0, r1
|
|
||||||
bx lr
|
|
||||||
thumb_func_end sub_80E77FC
|
|
||||||
|
|
||||||
thumb_func_start sub_80E7808
|
|
||||||
sub_80E7808: @ 80E7808
|
|
||||||
strh r0, [r1]
|
|
||||||
lsrs r0, 16
|
|
||||||
strh r0, [r1, 0x2]
|
|
||||||
bx lr
|
|
||||||
thumb_func_end sub_80E7808
|
|
||||||
|
|
||||||
thumb_func_start sub_80E7810
|
|
||||||
sub_80E7810: @ 80E7810
|
|
||||||
push {lr}
|
|
||||||
bl GetMultiplayerId
|
|
||||||
lsls r0, 24
|
|
||||||
lsrs r0, 24
|
|
||||||
pop {r1}
|
|
||||||
bx r1
|
|
||||||
thumb_func_end sub_80E7810
|
|
||||||
|
|
||||||
thumb_func_start sub_80E7820
|
|
||||||
sub_80E7820: @ 80E7820
|
|
||||||
lsls r0, 24
|
|
||||||
lsrs r0, 16
|
|
||||||
ldr r1, =gBlockRecvBuffer
|
|
||||||
adds r0, r1
|
|
||||||
bx lr
|
|
||||||
.pool
|
|
||||||
thumb_func_end sub_80E7820
|
|
||||||
|
|
||||||
thumb_func_start sub_80E7830
|
thumb_func_start sub_80E7830
|
||||||
sub_80E7830: @ 80E7830
|
sub_80E7830: @ 80E7830
|
||||||
push {r4,lr}
|
push {r4,lr}
|
||||||
|
|
|
@ -68,11 +68,11 @@ static void sub_80E715C(u8 taskId);
|
||||||
static void sub_80E7324(u8 taskId);
|
static void sub_80E7324(u8 taskId);
|
||||||
static void sub_80E756C(u8 taskId);
|
static void sub_80E756C(u8 taskId);
|
||||||
static void sub_80E7630(u8 taskId);
|
static void sub_80E7630(u8 taskId);
|
||||||
void sub_80E77D4(u8 taskId);
|
static void sub_80E77D4(u8 taskId);
|
||||||
void *sub_80E77FC(s16 *asShort);
|
static void *sub_80E77FC(const u16 *asShort);
|
||||||
u8 sub_80E7810(void);
|
static void sub_80E7808(void *records, u16 *a1);
|
||||||
void *sub_80E7820(u8);
|
static u8 sub_80E7810(void);
|
||||||
void sub_80E7808(struct PlayerRecords *records, s16 *a1);
|
static void *sub_80E7820(u8);
|
||||||
void sub_80E78C4(OldMan *, size_t, u8);
|
void sub_80E78C4(OldMan *, size_t, u8);
|
||||||
void sub_80E7948(void *, size_t, u8);
|
void sub_80E7948(void *, size_t, u8);
|
||||||
void sub_80E7A14(LilycoveLady *, size_t, u8);
|
void sub_80E7A14(LilycoveLady *, size_t, u8);
|
||||||
|
@ -378,20 +378,20 @@ static void sub_80E7324(u8 taskId)
|
||||||
task->func = sub_80E756C;
|
task->func = sub_80E756C;
|
||||||
if (Link_AnyPartnersPlayingRubyOrSapphrie())
|
if (Link_AnyPartnersPlayingRubyOrSapphrie())
|
||||||
{
|
{
|
||||||
sub_80E7808(gUnknown_0203A018, &task->data[2]);
|
sub_80E7808(gUnknown_0203A018, (u16 *)&task->data[2]);
|
||||||
taskId2 = CreateTask(sub_80E7630, 80);
|
taskId2 = CreateTask(sub_80E7630, 80);
|
||||||
task->data[10] = taskId2;
|
task->data[10] = taskId2;
|
||||||
gTasks[taskId2].data[0] = taskId;
|
gTasks[taskId2].data[0] = taskId;
|
||||||
sub_80E7808(gUnknown_0203A014, &gTasks[taskId2].data[5]);
|
sub_80E7808(gUnknown_0203A014, (u16 *)&gTasks[taskId2].data[5]);
|
||||||
gUnknown_0300115C = 0x1230;
|
gUnknown_0300115C = 0x1230;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
sub_80E7808(gUnknown_0203A018, &task->data[2]);
|
sub_80E7808(gUnknown_0203A018, (u16 *)&task->data[2]);
|
||||||
taskId2 = CreateTask(sub_80E7630, 80);
|
taskId2 = CreateTask(sub_80E7630, 80);
|
||||||
task->data[10] = taskId2;
|
task->data[10] = taskId2;
|
||||||
gTasks[taskId2].data[0] = taskId;
|
gTasks[taskId2].data[0] = taskId;
|
||||||
sub_80E7808(gUnknown_0203A014, &gTasks[taskId2].data[5]);
|
sub_80E7808(gUnknown_0203A014, (u16 *)&gTasks[taskId2].data[5]);
|
||||||
gUnknown_0300115C = 0x1444;
|
gUnknown_0300115C = 0x1444;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
@ -465,7 +465,7 @@ static void sub_80E7630(u8 taskId)
|
||||||
{
|
{
|
||||||
if ((status >> i) & 0x01)
|
if ((status >> i) & 0x01)
|
||||||
{
|
{
|
||||||
dest = sub_80E77FC(&task->data[5]) + task->data[i + 1] * 200 + gUnknown_0300115C * i;
|
dest = sub_80E77FC((u16 *)&task->data[5]) + task->data[i + 1] * 200 + gUnknown_0300115C * i;
|
||||||
src = sub_80E7820(i);
|
src = sub_80E7820(i);
|
||||||
if ((task->data[i + 1] + 1) * 200 > gUnknown_0300115C)
|
if ((task->data[i + 1] + 1) * 200 > gUnknown_0300115C)
|
||||||
{
|
{
|
||||||
|
@ -490,3 +490,54 @@ static void sub_80E7630(u8 taskId)
|
||||||
DestroyTask(taskId);
|
DestroyTask(taskId);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static void sub_80E776C(u8 taskId)
|
||||||
|
{
|
||||||
|
struct Task *task;
|
||||||
|
|
||||||
|
task = &gTasks[taskId];
|
||||||
|
if (!gTasks[task->data[10]].isActive)
|
||||||
|
{
|
||||||
|
DestroyTask(taskId);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
static void sub_80E77A0(u8 taskId)
|
||||||
|
{
|
||||||
|
struct Task *task;
|
||||||
|
|
||||||
|
task = &gTasks[taskId];
|
||||||
|
task->func = sub_80E776C;
|
||||||
|
if (gUnknown_03001130 == TRUE)
|
||||||
|
{
|
||||||
|
sub_80E6F60(task->data[5]);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
static void sub_80E77D4(u8 taskId)
|
||||||
|
{
|
||||||
|
gTasks[taskId].func = sub_80E77A0;
|
||||||
|
gUnknown_03001130 = TRUE;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
static void *sub_80E77FC(const u16 *asShort)
|
||||||
|
{
|
||||||
|
return (void *)(asShort[0] | (asShort[1] << 16));
|
||||||
|
}
|
||||||
|
|
||||||
|
static void sub_80E7808(void *data, u16 *asShort)
|
||||||
|
{
|
||||||
|
asShort[0] = (u32)data;
|
||||||
|
asShort[1] = ((u32)data >> 16);
|
||||||
|
}
|
||||||
|
|
||||||
|
static u8 sub_80E7810(void)
|
||||||
|
{
|
||||||
|
return GetMultiplayerId();
|
||||||
|
}
|
||||||
|
|
||||||
|
static void *sub_80E7820(u8 id)
|
||||||
|
{
|
||||||
|
return gBlockRecvBuffer[id];
|
||||||
|
}
|
||||||
|
|
Loading…
Reference in a new issue