mirror of
https://github.com/pret/pokeruby.git
synced 2025-03-04 02:47:16 +00:00
Decompile some cable_club functions
This commit is contained in:
parent
ec2abbf46a
commit
c0c3d2c52a
406
asm/cable_club.s
406
asm/cable_club.s
@ -464,413 +464,15 @@ _08083034: .4byte gTasks
|
||||
_08083038: .4byte sub_808303C
|
||||
thumb_func_end sub_8082FEC
|
||||
|
||||
thumb_func_start sub_808303C
|
||||
sub_808303C: @ 808303C
|
||||
push {r4-r7,lr}
|
||||
mov r7, r9
|
||||
mov r6, r8
|
||||
push {r6,r7}
|
||||
lsls r0, 24
|
||||
lsrs r4, r0, 24
|
||||
lsls r0, r4, 2
|
||||
adds r0, r4
|
||||
lsls r0, 3
|
||||
mov r8, r0
|
||||
ldr r0, _080830D0 @ =gTasks + 0x8
|
||||
mov r9, r0
|
||||
mov r7, r8
|
||||
add r7, r9
|
||||
bl GetLinkPlayerCount_2
|
||||
lsls r0, 24
|
||||
lsrs r5, r0, 24
|
||||
adds r0, r4, 0
|
||||
bl sub_8082E28
|
||||
cmp r0, 0x1
|
||||
beq _080830C2
|
||||
adds r0, r4, 0
|
||||
bl sub_8082EB8
|
||||
cmp r0, 0x1
|
||||
beq _080830C2
|
||||
adds r0, r4, 0
|
||||
bl sub_8082DF4
|
||||
cmp r0, 0x1
|
||||
beq _080830C2
|
||||
adds r6, r5, 0
|
||||
adds r0, r4, 0
|
||||
adds r1, r6, 0
|
||||
bl sub_8082D60
|
||||
ldr r0, _080830D4 @ =gMain
|
||||
ldrh r1, [r0, 0x2E]
|
||||
movs r0, 0x1
|
||||
ands r0, r1
|
||||
cmp r0, 0
|
||||
beq _080830C2
|
||||
movs r1, 0x2
|
||||
ldrsh r0, [r7, r1]
|
||||
cmp r5, r0
|
||||
blt _080830C2
|
||||
adds r0, r6, 0
|
||||
bl sub_80081C8
|
||||
bl sub_8082D4C
|
||||
ldr r0, _080830D8 @ =gStringVar1
|
||||
adds r1, r5, 0
|
||||
movs r2, 0
|
||||
movs r3, 0x1
|
||||
bl ConvertIntToDecimalStringN
|
||||
ldr r0, _080830DC @ =gUnknown_081A4975
|
||||
bl ShowFieldAutoScrollMessage
|
||||
mov r0, r9
|
||||
subs r0, 0x8
|
||||
add r0, r8
|
||||
ldr r1, _080830E0 @ =sub_80830E4
|
||||
str r1, [r0]
|
||||
_080830C2:
|
||||
pop {r3,r4}
|
||||
mov r8, r3
|
||||
mov r9, r4
|
||||
pop {r4-r7}
|
||||
pop {r0}
|
||||
bx r0
|
||||
.align 2, 0
|
||||
_080830D0: .4byte gTasks + 0x8
|
||||
_080830D4: .4byte gMain
|
||||
_080830D8: .4byte gStringVar1
|
||||
_080830DC: .4byte gUnknown_081A4975
|
||||
_080830E0: .4byte sub_80830E4
|
||||
thumb_func_end sub_808303C
|
||||
.section .text_80830E4
|
||||
|
||||
|
||||
|
||||
|
||||
thumb_func_start sub_80830E4
|
||||
sub_80830E4: @ 80830E4
|
||||
push {r4-r6,lr}
|
||||
lsls r0, 24
|
||||
lsrs r5, r0, 24
|
||||
adds r6, r5, 0
|
||||
adds r0, r5, 0
|
||||
bl sub_8082E28
|
||||
cmp r0, 0x1
|
||||
beq _08083178
|
||||
adds r0, r5, 0
|
||||
bl sub_8082EB8
|
||||
cmp r0, 0x1
|
||||
beq _08083178
|
||||
adds r0, r5, 0
|
||||
bl sub_8082DF4
|
||||
cmp r0, 0x1
|
||||
beq _08083178
|
||||
bl GetFieldMessageBoxMode
|
||||
lsls r0, 24
|
||||
cmp r0, 0
|
||||
bne _08083178
|
||||
bl sub_800820C
|
||||
adds r4, r0, 0
|
||||
bl GetLinkPlayerCount_2
|
||||
lsls r4, 24
|
||||
lsls r0, 24
|
||||
cmp r4, r0
|
||||
bne _08083132
|
||||
ldr r0, _08083148 @ =gMain
|
||||
ldrh r1, [r0, 0x2C]
|
||||
movs r0, 0x2
|
||||
ands r0, r1
|
||||
cmp r0, 0
|
||||
beq _08083158
|
||||
_08083132:
|
||||
ldr r0, _0808314C @ =gUnknown_081A4932
|
||||
bl ShowFieldAutoScrollMessage
|
||||
ldr r1, _08083150 @ =gTasks
|
||||
lsls r0, r5, 2
|
||||
adds r0, r5
|
||||
lsls r0, 3
|
||||
adds r0, r1
|
||||
ldr r1, _08083154 @ =sub_8082FEC
|
||||
str r1, [r0]
|
||||
b _08083178
|
||||
.align 2, 0
|
||||
_08083148: .4byte gMain
|
||||
_0808314C: .4byte gUnknown_081A4932
|
||||
_08083150: .4byte gTasks
|
||||
_08083154: .4byte sub_8082FEC
|
||||
_08083158:
|
||||
movs r0, 0x1
|
||||
ands r0, r1
|
||||
cmp r0, 0
|
||||
beq _08083178
|
||||
movs r0, 0x5
|
||||
bl PlaySE
|
||||
bl sub_8007F4C
|
||||
ldr r0, _08083180 @ =gTasks
|
||||
lsls r1, r6, 2
|
||||
adds r1, r6
|
||||
lsls r1, 3
|
||||
adds r1, r0
|
||||
ldr r0, _08083184 @ =sub_8083188
|
||||
str r0, [r1]
|
||||
_08083178:
|
||||
pop {r4-r6}
|
||||
pop {r0}
|
||||
bx r0
|
||||
.align 2, 0
|
||||
_08083180: .4byte gTasks
|
||||
_08083184: .4byte sub_8083188
|
||||
thumb_func_end sub_80830E4
|
||||
|
||||
thumb_func_start sub_8083188
|
||||
sub_8083188: @ 8083188
|
||||
push {r4-r7,lr}
|
||||
lsls r0, 24
|
||||
lsrs r4, r0, 24
|
||||
ldr r1, _080831CC @ =gTasks
|
||||
lsls r0, r4, 2
|
||||
adds r0, r4
|
||||
lsls r0, 3
|
||||
adds r5, r0, r1
|
||||
ldrb r7, [r5, 0xA]
|
||||
ldrb r6, [r5, 0xC]
|
||||
adds r0, r4, 0
|
||||
bl sub_8082DF4
|
||||
cmp r0, 0x1
|
||||
beq _080831EA
|
||||
adds r0, r4, 0
|
||||
bl sub_8083444
|
||||
lsls r0, 24
|
||||
lsrs r0, 24
|
||||
cmp r0, 0x1
|
||||
beq _080831EA
|
||||
bl GetLinkPlayerCount_2
|
||||
adds r4, r0, 0
|
||||
bl sub_800820C
|
||||
lsls r4, 24
|
||||
lsls r0, 24
|
||||
cmp r4, r0
|
||||
beq _080831D4
|
||||
ldr r0, _080831D0 @ =sub_8083418
|
||||
b _080831E8
|
||||
.align 2, 0
|
||||
_080831CC: .4byte gTasks
|
||||
_080831D0: .4byte sub_8083418
|
||||
_080831D4:
|
||||
ldr r4, _080831F0 @ =gScriptResult
|
||||
adds r0, r7, 0
|
||||
adds r1, r6, 0
|
||||
bl sub_8082D9C
|
||||
strh r0, [r4]
|
||||
lsls r0, 16
|
||||
cmp r0, 0
|
||||
beq _080831EA
|
||||
ldr r0, _080831F4 @ =sub_8083288
|
||||
_080831E8:
|
||||
str r0, [r5]
|
||||
_080831EA:
|
||||
pop {r4-r7}
|
||||
pop {r0}
|
||||
bx r0
|
||||
.align 2, 0
|
||||
_080831F0: .4byte gScriptResult
|
||||
_080831F4: .4byte sub_8083288
|
||||
thumb_func_end sub_8083188
|
||||
|
||||
thumb_func_start sub_80831F8
|
||||
sub_80831F8: @ 80831F8
|
||||
push {r4-r7,lr}
|
||||
lsls r0, 24
|
||||
lsrs r4, r0, 24
|
||||
ldr r1, _08083244 @ =gTasks
|
||||
lsls r0, r4, 2
|
||||
adds r0, r4
|
||||
lsls r0, 3
|
||||
adds r5, r0, r1
|
||||
ldrb r7, [r5, 0xA]
|
||||
ldrb r6, [r5, 0xC]
|
||||
adds r0, r4, 0
|
||||
bl sub_8082E28
|
||||
cmp r0, 0x1
|
||||
beq _08083270
|
||||
adds r0, r4, 0
|
||||
bl sub_8082DF4
|
||||
cmp r0, 0x1
|
||||
beq _08083270
|
||||
ldr r4, _08083248 @ =gScriptResult
|
||||
adds r0, r7, 0
|
||||
adds r1, r6, 0
|
||||
bl sub_8082D9C
|
||||
strh r0, [r4]
|
||||
lsls r0, 16
|
||||
lsrs r0, 16
|
||||
cmp r0, 0
|
||||
beq _08083270
|
||||
cmp r0, 0x3
|
||||
bne _08083250
|
||||
bl sub_800832C
|
||||
bl HideFieldMessageBox
|
||||
ldr r0, _0808324C @ =sub_80833C4
|
||||
b _0808326E
|
||||
.align 2, 0
|
||||
_08083244: .4byte gTasks
|
||||
_08083248: .4byte gScriptResult
|
||||
_0808324C: .4byte sub_80833C4
|
||||
_08083250:
|
||||
bl GetLinkPlayerCount_2
|
||||
ldr r4, _08083278 @ =gFieldLinkPlayerCount
|
||||
strb r0, [r4]
|
||||
bl GetMultiplayerId
|
||||
ldr r1, _0808327C @ =gUnknown_03004860
|
||||
strb r0, [r1]
|
||||
ldrb r0, [r4]
|
||||
bl sub_80081C8
|
||||
ldr r0, _08083280 @ =gBlockSendBuffer
|
||||
bl sub_8093390
|
||||
ldr r0, _08083284 @ =sub_8083314
|
||||
_0808326E:
|
||||
str r0, [r5]
|
||||
_08083270:
|
||||
pop {r4-r7}
|
||||
pop {r0}
|
||||
bx r0
|
||||
.align 2, 0
|
||||
_08083278: .4byte gFieldLinkPlayerCount
|
||||
_0808327C: .4byte gUnknown_03004860
|
||||
_08083280: .4byte gBlockSendBuffer
|
||||
_08083284: .4byte sub_8083314
|
||||
thumb_func_end sub_80831F8
|
||||
|
||||
thumb_func_start sub_8083288
|
||||
sub_8083288: @ 8083288
|
||||
push {r4,r5,lr}
|
||||
lsls r0, 24
|
||||
lsrs r4, r0, 24
|
||||
adds r5, r4, 0
|
||||
adds r0, r4, 0
|
||||
bl sub_8082DF4
|
||||
cmp r0, 0x1
|
||||
beq _080832F8
|
||||
ldr r0, _080832BC @ =gScriptResult
|
||||
ldrh r0, [r0]
|
||||
cmp r0, 0x3
|
||||
bne _080832C8
|
||||
bl sub_800832C
|
||||
bl HideFieldMessageBox
|
||||
ldr r0, _080832C0 @ =gTasks
|
||||
lsls r1, r4, 2
|
||||
adds r1, r4
|
||||
lsls r1, 3
|
||||
adds r1, r0
|
||||
ldr r0, _080832C4 @ =sub_80833C4
|
||||
str r0, [r1]
|
||||
b _080832F8
|
||||
.align 2, 0
|
||||
_080832BC: .4byte gScriptResult
|
||||
_080832C0: .4byte gTasks
|
||||
_080832C4: .4byte sub_80833C4
|
||||
_080832C8:
|
||||
bl GetLinkPlayerCount_2
|
||||
ldr r4, _08083300 @ =gFieldLinkPlayerCount
|
||||
strb r0, [r4]
|
||||
bl GetMultiplayerId
|
||||
ldr r1, _08083304 @ =gUnknown_03004860
|
||||
strb r0, [r1]
|
||||
ldrb r0, [r4]
|
||||
bl sub_80081C8
|
||||
ldr r0, _08083308 @ =gBlockSendBuffer
|
||||
bl sub_8093390
|
||||
ldr r1, _0808330C @ =gTasks
|
||||
lsls r0, r5, 2
|
||||
adds r0, r5
|
||||
lsls r0, 3
|
||||
adds r0, r1
|
||||
ldr r1, _08083310 @ =sub_8083314
|
||||
str r1, [r0]
|
||||
movs r0, 0x2
|
||||
bl sub_8007E9C
|
||||
_080832F8:
|
||||
pop {r4,r5}
|
||||
pop {r0}
|
||||
bx r0
|
||||
.align 2, 0
|
||||
_08083300: .4byte gFieldLinkPlayerCount
|
||||
_08083304: .4byte gUnknown_03004860
|
||||
_08083308: .4byte gBlockSendBuffer
|
||||
_0808330C: .4byte gTasks
|
||||
_08083310: .4byte sub_8083314
|
||||
thumb_func_end sub_8083288
|
||||
|
||||
thumb_func_start sub_8083314
|
||||
sub_8083314: @ 8083314
|
||||
push {r4-r6,lr}
|
||||
lsls r0, 24
|
||||
lsrs r5, r0, 24
|
||||
adds r0, r5, 0
|
||||
bl sub_8082DF4
|
||||
cmp r0, 0x1
|
||||
beq _080833B6
|
||||
bl GetBlockReceivedStatus
|
||||
adds r4, r0, 0
|
||||
bl sub_8008198
|
||||
lsls r4, 24
|
||||
lsls r0, 24
|
||||
cmp r4, r0
|
||||
bne _080833B6
|
||||
movs r4, 0
|
||||
ldr r6, _0808333C @ =gTrainerCards
|
||||
b _0808335A
|
||||
.align 2, 0
|
||||
_0808333C: .4byte gTrainerCards
|
||||
_08083340:
|
||||
lsls r1, r4, 8
|
||||
ldr r0, _08083394 @ =gBlockRecvBuffer
|
||||
adds r1, r0
|
||||
lsls r0, r4, 3
|
||||
subs r0, r4
|
||||
lsls r0, 3
|
||||
adds r0, r6
|
||||
movs r2, 0x38
|
||||
bl memcpy
|
||||
adds r0, r4, 0x1
|
||||
lsls r0, 24
|
||||
lsrs r4, r0, 24
|
||||
_0808335A:
|
||||
bl GetLinkPlayerCount
|
||||
lsls r0, 24
|
||||
lsrs r0, 24
|
||||
cmp r4, r0
|
||||
bcc _08083340
|
||||
movs r0, 0
|
||||
bl SetSuppressLinkErrorMessage
|
||||
bl ResetBlockReceivedFlags
|
||||
bl HideFieldMessageBox
|
||||
ldr r0, _08083398 @ =gScriptResult
|
||||
ldrh r0, [r0]
|
||||
cmp r0, 0x1
|
||||
bne _080833A4
|
||||
ldr r0, _0808339C @ =gLinkType
|
||||
ldrh r1, [r0]
|
||||
ldr r0, _080833A0 @ =0x00004411
|
||||
bl sub_8082D4C
|
||||
bl EnableBothScriptContexts
|
||||
adds r0, r5, 0
|
||||
bl DestroyTask
|
||||
b _080833B6
|
||||
.align 2, 0
|
||||
_08083394: .4byte gBlockRecvBuffer
|
||||
_08083398: .4byte gScriptResult
|
||||
_0808339C: .4byte gLinkType
|
||||
_080833A0: .4byte 0x00004411
|
||||
_080833A4:
|
||||
bl sub_800832C
|
||||
ldr r0, _080833BC @ =gTasks
|
||||
lsls r1, r5, 2
|
||||
adds r1, r5
|
||||
lsls r1, 3
|
||||
adds r1, r0
|
||||
ldr r0, _080833C0 @ =sub_80833C4
|
||||
str r0, [r1]
|
||||
_080833B6:
|
||||
pop {r4-r6}
|
||||
pop {r0}
|
||||
bx r0
|
||||
.align 2, 0
|
||||
_080833BC: .4byte gTasks
|
||||
_080833C0: .4byte sub_80833C4
|
||||
thumb_func_end sub_8083314
|
||||
|
||||
thumb_func_start sub_80833C4
|
||||
sub_80833C4: @ 80833C4
|
||||
|
@ -124,8 +124,10 @@ struct Link
|
||||
|
||||
extern struct Link gLink;
|
||||
extern u16 gRecvCmds[CMD_LENGTH][MAX_LINK_PLAYERS];
|
||||
extern u8 gBlockSendBuffer[BLOCK_BUFFER_SIZE];
|
||||
extern u16 gLinkType;
|
||||
extern u32 gLinkStatus;
|
||||
extern u16 gBlockRecvBuffer[MAX_LINK_PLAYERS][BLOCK_BUFFER_SIZE / 2];
|
||||
extern u16 gSendCmd[CMD_LENGTH];
|
||||
extern u8 gShouldAdvanceLinkState;
|
||||
extern struct LinkPlayer gLinkPlayers[];
|
||||
|
@ -130,6 +130,8 @@ SECTIONS {
|
||||
asm/field_screen_effect.o(.text);
|
||||
src/battle_setup.o(.text);
|
||||
asm/cable_club.o(.text);
|
||||
src/cable_club.o(.text);
|
||||
asm/cable_club.o(.text_80830E4);
|
||||
src/mori_debug_menu.o(.text);
|
||||
src/trainer_see.o(.text);
|
||||
src/wild_encounter.o(.text);
|
||||
|
@ -69,7 +69,6 @@ extern void c3_0802FDF4(u8);
|
||||
extern void sub_8031F88();
|
||||
extern void sub_8141828();
|
||||
extern void c2_8011A1C(void);
|
||||
extern void sub_800832C();
|
||||
extern void dp01_prepare_buffer_wireless_probably();
|
||||
extern void dp01_build_cmdbuf_x1D_1D_numargs_varargs(int, u16, void *);
|
||||
|
||||
|
304
src/cable_club.c
Normal file
304
src/cable_club.c
Normal file
@ -0,0 +1,304 @@
|
||||
#include "global.h"
|
||||
#include "asm.h"
|
||||
#include "field_message_box.h"
|
||||
#include "link.h"
|
||||
#include "main.h"
|
||||
#include "script.h"
|
||||
#include "songs.h"
|
||||
#include "sound.h"
|
||||
#include "string_util.h"
|
||||
#include "task.h"
|
||||
#include "text.h"
|
||||
#include "trainer_card.h"
|
||||
|
||||
extern u16 gScriptResult;
|
||||
extern struct TrainerCard gTrainerCards[4];
|
||||
|
||||
extern u8 gUnknown_03004860;
|
||||
extern u8 gFieldLinkPlayerCount;
|
||||
|
||||
extern u8 gUnknown_081A4932[];
|
||||
extern const u8 gUnknown_081A4975[];
|
||||
|
||||
void sub_8082D4C();
|
||||
void sub_8082D60(u8, u8);
|
||||
u16 sub_8082D9C(u8, u8);
|
||||
u32 sub_8082DF4(u8);
|
||||
u32 sub_8082E28(u8);
|
||||
u32 sub_8082EB8(u8);
|
||||
void sub_8082FEC(u8 taskId);
|
||||
static void sub_80830E4(u8 taskId);
|
||||
void sub_8083188(u8 taskId);
|
||||
static void sub_8083288(u8 taskId);
|
||||
static void sub_8083314(u8 taskId);
|
||||
void sub_80833C4(u8 taskId);
|
||||
void sub_8083418(u8 taskId);
|
||||
u8 sub_8083444(u8 taskId);
|
||||
|
||||
void sub_808303C(u8 taskId) {
|
||||
s32 linkPlayerCount;
|
||||
s16 *taskData;
|
||||
|
||||
taskData = gTasks[taskId].data;
|
||||
|
||||
linkPlayerCount = GetLinkPlayerCount_2();
|
||||
|
||||
if (sub_8082E28(taskId) == 1 ||
|
||||
sub_8082EB8(taskId) == 1 ||
|
||||
sub_8082DF4(taskId) == 1)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
sub_8082D60(taskId, linkPlayerCount);
|
||||
|
||||
if (!(gMain.newKeys & A_BUTTON))
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
if (linkPlayerCount < taskData[1])
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
sub_80081C8(linkPlayerCount);
|
||||
sub_8082D4C();
|
||||
ConvertIntToDecimalStringN(gStringVar1, linkPlayerCount, STR_CONV_MODE_LEFT_ALIGN, 1); // r5
|
||||
ShowFieldAutoScrollMessage((u8 *) gUnknown_081A4975);
|
||||
gTasks[taskId].func = sub_80830E4;
|
||||
}
|
||||
|
||||
#ifdef NONMATCHING
|
||||
static void sub_80830E4(u8 taskId) {
|
||||
if (sub_8082E28(taskId) == 1 ||
|
||||
sub_8082EB8(taskId) == 1 ||
|
||||
sub_8082DF4(taskId) == 1 ||
|
||||
GetFieldMessageBoxMode())
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
if (sub_800820C() == GetLinkPlayerCount_2() &&
|
||||
!(gMain.heldKeys & B_BUTTON))
|
||||
{
|
||||
ShowFieldAutoScrollMessage(gUnknown_081A4932);
|
||||
gTasks[taskId].func = sub_8082FEC;
|
||||
return;
|
||||
}
|
||||
|
||||
if (gMain.heldKeys & A_BUTTON)
|
||||
{
|
||||
PlaySE(SE_SELECT);
|
||||
sub_8007F4C();
|
||||
gTasks[(u32) taskId].func = sub_8083188;
|
||||
}
|
||||
}
|
||||
#else
|
||||
__attribute__((naked))
|
||||
static void sub_80830E4(u8 taskId) {
|
||||
asm(".syntax unified\n\
|
||||
push {r4-r6,lr}\n\
|
||||
lsls r0, 24\n\
|
||||
lsrs r5, r0, 24\n\
|
||||
adds r6, r5, 0\n\
|
||||
adds r0, r5, 0\n\
|
||||
bl sub_8082E28\n\
|
||||
cmp r0, 0x1\n\
|
||||
beq _08083178\n\
|
||||
adds r0, r5, 0\n\
|
||||
bl sub_8082EB8\n\
|
||||
cmp r0, 0x1\n\
|
||||
beq _08083178\n\
|
||||
adds r0, r5, 0\n\
|
||||
bl sub_8082DF4\n\
|
||||
cmp r0, 0x1\n\
|
||||
beq _08083178\n\
|
||||
bl GetFieldMessageBoxMode\n\
|
||||
lsls r0, 24\n\
|
||||
cmp r0, 0\n\
|
||||
bne _08083178\n\
|
||||
bl sub_800820C\n\
|
||||
adds r4, r0, 0\n\
|
||||
bl GetLinkPlayerCount_2\n\
|
||||
lsls r4, 24\n\
|
||||
lsls r0, 24\n\
|
||||
cmp r4, r0\n\
|
||||
bne _08083132\n\
|
||||
ldr r0, _08083148 @ =gMain\n\
|
||||
ldrh r1, [r0, 0x2C]\n\
|
||||
movs r0, 0x2\n\
|
||||
ands r0, r1\n\
|
||||
cmp r0, 0\n\
|
||||
beq _08083158\n\
|
||||
_08083132:\n\
|
||||
ldr r0, _0808314C @ =gUnknown_081A4932\n\
|
||||
bl ShowFieldAutoScrollMessage\n\
|
||||
ldr r1, _08083150 @ =gTasks\n\
|
||||
lsls r0, r5, 2\n\
|
||||
adds r0, r5\n\
|
||||
lsls r0, 3\n\
|
||||
adds r0, r1\n\
|
||||
ldr r1, _08083154 @ =sub_8082FEC\n\
|
||||
str r1, [r0]\n\
|
||||
b _08083178\n\
|
||||
.align 2, 0\n\
|
||||
_08083148: .4byte gMain\n\
|
||||
_0808314C: .4byte gUnknown_081A4932\n\
|
||||
_08083150: .4byte gTasks\n\
|
||||
_08083154: .4byte sub_8082FEC\n\
|
||||
_08083158:\n\
|
||||
movs r0, 0x1\n\
|
||||
ands r0, r1\n\
|
||||
cmp r0, 0\n\
|
||||
beq _08083178\n\
|
||||
movs r0, 0x5\n\
|
||||
bl PlaySE\n\
|
||||
bl sub_8007F4C\n\
|
||||
ldr r0, _08083180 @ =gTasks\n\
|
||||
lsls r1, r6, 2\n\
|
||||
adds r1, r6\n\
|
||||
lsls r1, 3\n\
|
||||
adds r1, r0\n\
|
||||
ldr r0, _08083184 @ =sub_8083188\n\
|
||||
str r0, [r1]\n\
|
||||
_08083178:\n\
|
||||
pop {r4-r6}\n\
|
||||
pop {r0}\n\
|
||||
bx r0\n\
|
||||
.align 2, 0\n\
|
||||
_08083180: .4byte gTasks\n\
|
||||
_08083184: .4byte sub_8083188\n\
|
||||
.syntax divided\n");
|
||||
}
|
||||
#endif
|
||||
|
||||
void sub_8083188(u8 taskId) {
|
||||
u8 local1, local2;
|
||||
u16 *result;
|
||||
|
||||
local1 = gTasks[taskId].data[1];
|
||||
local2 = gTasks[taskId].data[2];
|
||||
|
||||
|
||||
if (sub_8082DF4(taskId) == 1 ||
|
||||
sub_8083444(taskId) == 1)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
if (GetLinkPlayerCount_2() != sub_800820C())
|
||||
{
|
||||
gTasks[taskId].func = sub_8083418;
|
||||
return;
|
||||
}
|
||||
|
||||
result = &gScriptResult;
|
||||
*result = sub_8082D9C(local1, local2);
|
||||
if (*result)
|
||||
{
|
||||
gTasks[taskId].func = sub_8083288;
|
||||
}
|
||||
}
|
||||
|
||||
void sub_80831F8(u8 taskId) {
|
||||
u8 local1, local2;
|
||||
u16 *result;
|
||||
|
||||
local1 = gTasks[taskId].data[1];
|
||||
local2 = gTasks[taskId].data[2];
|
||||
|
||||
if (sub_8082E28(taskId) == 1 ||
|
||||
sub_8082DF4(taskId) == 1)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
result = &gScriptResult;
|
||||
*result = sub_8082D9C(local1, local2);
|
||||
if (*result == 0)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
if (*result == 3)
|
||||
{
|
||||
sub_800832C();
|
||||
HideFieldMessageBox();
|
||||
gTasks[taskId].func = sub_80833C4;
|
||||
}
|
||||
else
|
||||
{
|
||||
gFieldLinkPlayerCount = GetLinkPlayerCount_2();
|
||||
gUnknown_03004860 = GetMultiplayerId();
|
||||
sub_80081C8(gFieldLinkPlayerCount);
|
||||
sub_8093390((struct TrainerCard *) gBlockSendBuffer);
|
||||
gTasks[taskId].func = sub_8083314;
|
||||
}
|
||||
}
|
||||
|
||||
static void sub_8083288(u8 taskId) {
|
||||
if (sub_8082DF4(taskId) == 1)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
if (gScriptResult == 3)
|
||||
{
|
||||
sub_800832C();
|
||||
HideFieldMessageBox();
|
||||
gTasks[taskId].func = sub_80833C4;
|
||||
}
|
||||
else
|
||||
{
|
||||
gFieldLinkPlayerCount = GetLinkPlayerCount_2();
|
||||
gUnknown_03004860 = GetMultiplayerId();
|
||||
sub_80081C8(gFieldLinkPlayerCount);
|
||||
sub_8093390((struct TrainerCard *) gBlockSendBuffer);
|
||||
gTasks[taskId].func = sub_8083314;
|
||||
sub_8007E9C(2);
|
||||
}
|
||||
}
|
||||
|
||||
static void sub_8083314(u8 taskId) {
|
||||
u8 index;
|
||||
|
||||
struct TrainerCard *trainerCards;
|
||||
|
||||
if (sub_8082DF4(taskId) == 1)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
if (GetBlockReceivedStatus() != sub_8008198())
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
index = 0;
|
||||
trainerCards = gTrainerCards;
|
||||
for (index = 0; index < GetLinkPlayerCount(); index++)
|
||||
{
|
||||
void *src;
|
||||
src = gBlockRecvBuffer[index];
|
||||
memcpy(&trainerCards[index], src, sizeof(struct TrainerCard));
|
||||
}
|
||||
|
||||
SetSuppressLinkErrorMessage(FALSE);
|
||||
ResetBlockReceivedFlags();
|
||||
HideFieldMessageBox();
|
||||
|
||||
if (gScriptResult == 1)
|
||||
{
|
||||
u16 linkType;
|
||||
linkType = gLinkType;
|
||||
sub_8082D4C(0x00004411, linkType);
|
||||
EnableBothScriptContexts();
|
||||
DestroyTask(taskId);
|
||||
return;
|
||||
}
|
||||
|
||||
sub_800832C();
|
||||
gTasks[taskId].func = sub_80833C4;
|
||||
}
|
@ -64,7 +64,6 @@ extern u8* gMatsudaDebugMenuTextList3[];
|
||||
extern u8 gMatsudaDebugMenuContestTopLeft[][2];
|
||||
|
||||
extern bool8 gReceivedRemoteLinkPlayers;
|
||||
extern u16 gBlockRecvBuffer[MAX_LINK_PLAYERS][BLOCK_BUFFER_SIZE / 2];
|
||||
|
||||
extern struct MenuAction gMatsudaDebugMenuActions[];
|
||||
|
||||
|
@ -31,8 +31,6 @@ extern u8 gUnknown_0300071C[];
|
||||
extern u8 gOtherText_MixingComplete[];
|
||||
extern u8 gOtherText_MixingRecordsWithFriend[];
|
||||
extern bool8 gReceivedRemoteLinkPlayers;
|
||||
extern u8 gBlockSendBuffer[BLOCK_BUFFER_SIZE];
|
||||
extern u16 gBlockRecvBuffer[MAX_LINK_PLAYERS][BLOCK_BUFFER_SIZE / 2];
|
||||
|
||||
#define BUFFER_CHUNK_SIZE 200
|
||||
|
||||
|
@ -13,7 +13,6 @@ extern u8 unk_2000000[];
|
||||
#define EWRAM_15000 ((u8 *)(unk_2000000 + 0x15000))
|
||||
|
||||
extern u16 gBattleTypeFlags;
|
||||
extern u16 gBlockRecvBuffer[MAX_LINK_PLAYERS][BLOCK_BUFFER_SIZE / 2];
|
||||
extern const u32 gBitTable[];
|
||||
extern u16 gBattleWeather;
|
||||
extern const struct BattleMove gBattleMoves[];
|
||||
|
Loading…
x
Reference in New Issue
Block a user