diff options
-rw-r--r-- | asm/mevent.s | 473 | ||||
-rw-r--r-- | data/data_83FECCC.s | 63 | ||||
-rw-r--r-- | include/global.h | 12 | ||||
-rw-r--r-- | include/link.h | 2 | ||||
-rw-r--r-- | include/link_rfu_4.h | 6 | ||||
-rw-r--r-- | include/unk_815c27c.h | 2 | ||||
-rw-r--r-- | src/mevent.c | 254 |
7 files changed, 307 insertions, 505 deletions
diff --git a/asm/mevent.s b/asm/mevent.s index 234eb529e..dbee188ee 100644 --- a/asm/mevent.s +++ b/asm/mevent.s @@ -5,479 +5,6 @@ .text - thumb_func_start sub_8143910 -sub_8143910: @ 8143910 - push {r4,r5,lr} - lsls r0, 24 - lsrs r5, r0, 24 - lsls r0, r5, 2 - adds r0, r5 - lsls r0, 3 - ldr r1, _08143934 @ =gTasks+0x8 - adds r4, r0, r1 - ldrb r0, [r4, 0x8] - cmp r0, 0x1A - bls _08143928 - b _08143D1A -_08143928: - lsls r0, 2 - ldr r1, _08143938 @ =_0814393C - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_08143934: .4byte gTasks+0x8 -_08143938: .4byte _0814393C - .align 2, 0 -_0814393C: - .4byte _081439A8 - .4byte _081439C4 - .4byte _081439D4 - .4byte _081439E8 - .4byte _081439F8 - .4byte _08143A24 - .4byte _08143A5C - .4byte _08143AD8 - .4byte _08143AF4 - .4byte _08143B1C - .4byte _08143B38 - .4byte _08143B68 - .4byte _08143B7E - .4byte _08143B94 - .4byte _08143BF6 - .4byte _08143C1C - .4byte _08143C34 - .4byte _08143C52 - .4byte _08143C7E - .4byte _08143CA4 - .4byte _08143CD4 - .4byte _08143CE0 - .4byte _08143CEC - .4byte _08143CBC - .4byte _08143D1A - .4byte _08143D1A - .4byte _08143D04 -_081439A8: - adds r0, r4, 0 - adds r0, 0x9 - ldr r1, _081439C0 @ =gUnknown_841DE52 - bl mevent_0814257C - cmp r0, 0 - bne _081439B8 - b _08143D1A -_081439B8: - movs r0, 0x1 - strb r0, [r4, 0x8] - b _08143D1A - .align 2, 0 -_081439C0: .4byte gUnknown_841DE52 -_081439C4: - bl sub_81436BC - adds r0, r4, 0 - bl sub_81438E8 - movs r0, 0x2 - strb r0, [r4, 0x8] - b _08143D1A -_081439D4: - adds r0, r4, 0 - movs r1, 0xA - bl sub_81438F0 - cmp r0, 0 - bne _081439E2 - b _08143D1A -_081439E2: - movs r0, 0x3 - strb r0, [r4, 0x8] - b _08143D1A -_081439E8: - bl sub_814374C - cmp r0, 0 - beq _081439F2 - b _08143B88 -_081439F2: - bl sub_80098B8 - b _08143AE8 -_081439F8: - adds r0, r4, 0 - adds r0, 0x9 - ldr r1, _08143A1C @ =gUnknown_841DE53 - bl mevent_0814257C - cmp r0, 0 - bne _08143A08 - b _08143D1A -_08143A08: - ldr r0, _08143A20 @ =gUnknown_841DE54 - bl sub_8142504 - adds r0, r4, 0 - bl sub_81438E8 - movs r0, 0x5 - strb r0, [r4, 0x8] - b _08143D1A - .align 2, 0 -_08143A1C: .4byte gUnknown_841DE53 -_08143A20: .4byte gUnknown_841DE54 -_08143A24: - adds r0, r4, 0 - movs r1, 0x5A - bl sub_81438F0 - cmp r0, 0 - beq _08143A3A - bl sub_81436BC - movs r0, 0x6 - strb r0, [r4, 0x8] - b _08143D1A -_08143A3A: - ldr r0, _08143A58 @ =gMain - ldrh r1, [r0, 0x2E] - movs r0, 0x2 - ands r0, r1 - cmp r0, 0 - bne _08143A48 - b _08143D1A -_08143A48: - adds r0, r4, 0 - bl sub_81438E8 - movs r0, 0x5 - bl PlaySE - b _08143BE6 - .align 2, 0 -_08143A58: .4byte gMain -_08143A5C: - ldr r0, _08143A7C @ =gMain - ldrh r1, [r0, 0x2E] - movs r0, 0x2 - ands r0, r1 - cmp r0, 0 - beq _08143A80 - movs r0, 0x5 - bl PlaySE - bl sub_80098B8 - adds r0, r4, 0 - bl sub_81438E8 - b _08143BE6 - .align 2, 0 -_08143A7C: .4byte gMain -_08143A80: - bl GetLinkPlayerCount_2 - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - bls _08143A9C - adds r0, r4, 0 - bl sub_81438E8 - bl sub_80098B8 - movs r0, 0x7 - strb r0, [r4, 0x8] - b _08143D1A -_08143A9C: - bl sub_81436EC - cmp r0, 0 - beq _08143ABA - movs r0, 0x5 - bl PlaySE - bl sub_80098B8 - adds r0, r4, 0 - bl sub_81438E8 - movs r0, 0x8 - strb r0, [r4, 0x8] - b _08143D1A -_08143ABA: - adds r0, r4, 0 - movs r1, 0xA - bl sub_81438F0 - cmp r0, 0 - bne _08143AC8 - b _08143D1A -_08143AC8: - bl sub_80098B8 - bl sub_81436BC - adds r0, r4, 0 - bl sub_81438E8 - b _08143D1A -_08143AD8: - adds r0, r4, 0 - adds r0, 0x9 - ldr r1, _08143AF0 @ =gUnknown_841DE7C - bl mevent_0814257C - cmp r0, 0 - bne _08143AE8 - b _08143D1A -_08143AE8: - movs r0, 0x4 - strb r0, [r4, 0x8] - b _08143D1A - .align 2, 0 -_08143AF0: .4byte gUnknown_841DE7C -_08143AF4: - ldr r0, _08143B0C @ =gUnknown_841DE95 - bl sub_8142504 - ldr r0, _08143B10 @ =gUnknown_3005ED0 - ldr r1, _08143B14 @ =gUnknownSerialData_End - ldr r2, _08143B18 @ =gUnknownSerialData_Start - subs r1, r2 - bl sub_81435DC - movs r0, 0x9 - strb r0, [r4, 0x8] - b _08143D1A - .align 2, 0 -_08143B0C: .4byte gUnknown_841DE95 -_08143B10: .4byte gUnknown_3005ED0 -_08143B14: .4byte gUnknownSerialData_End -_08143B18: .4byte gUnknownSerialData_Start -_08143B1C: - ldr r0, _08143B34 @ =gUnknown_3005ED0 - bl sub_8143674 - strb r0, [r4, 0xE] - lsls r0, 24 - cmp r0, 0 - bne _08143B2C - b _08143D1A -_08143B2C: - movs r0, 0xA - strb r0, [r4, 0x8] - b _08143D1A - .align 2, 0 -_08143B34: .4byte gUnknown_3005ED0 -_08143B38: - ldr r0, _08143B60 @ =gUnknown_3005ED0 - bl sub_8143644 - ldrb r0, [r4, 0xE] - cmp r0, 0x3 - bne _08143B46 - b _08143C4C -_08143B46: - cmp r0, 0x1 - beq _08143B4C - b _08143CFA -_08143B4C: - adds r0, r4, 0 - bl sub_81438E8 - ldr r0, _08143B64 @ =gUnknown_841DE9B - bl sub_8142504 - movs r0, 0xB - strb r0, [r4, 0x8] - b _08143D1A - .align 2, 0 -_08143B60: .4byte gUnknown_3005ED0 -_08143B64: .4byte gUnknown_841DE9B -_08143B68: - movs r1, 0xD2 - lsls r1, 2 - adds r0, r4, 0 - bl sub_81438F0 - cmp r0, 0 - bne _08143B78 - b _08143D1A -_08143B78: - movs r0, 0xC - strb r0, [r4, 0x8] - b _08143D1A -_08143B7E: - bl sub_81436BC - ldr r0, _08143B90 @ =gUnknown_841DE98 - bl sub_8142504 -_08143B88: - movs r0, 0xD - strb r0, [r4, 0x8] - b _08143D1A - .align 2, 0 -_08143B90: .4byte gUnknown_841DE98 -_08143B94: - adds r0, r4, 0 - adds r0, 0x9 - adds r1, r4, 0 - bl sub_8143770 - cmp r0, 0x5 - bls _08143BA4 - b _08143D1A -_08143BA4: - lsls r0, 2 - ldr r1, _08143BB0 @ =_08143BB4 - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_08143BB0: .4byte _08143BB4 - .align 2, 0 -_08143BB4: - .4byte _08143D1A - .4byte _08143BDC - .4byte _08143BCC - .4byte _08143C00 - .4byte _08143C00 - .4byte _08143BEC -_08143BCC: - ldr r0, _08143BD8 @ =gUnknown_841DE95 - bl sub_8142504 - movs r0, 0xE - strb r0, [r4, 0x8] - b _08143D1A - .align 2, 0 -_08143BD8: .4byte gUnknown_841DE95 -_08143BDC: - movs r0, 0x5 - bl PlaySE - bl sub_80098B8 -_08143BE6: - movs r0, 0x17 - strb r0, [r4, 0x8] - b _08143D1A -_08143BEC: - bl sub_80098B8 - movs r0, 0x15 - strb r0, [r4, 0x8] - b _08143D1A -_08143BF6: - bl HasLinkErrorOccurred - lsls r0, 24 - cmp r0, 0 - beq _08143C06 -_08143C00: - bl sub_80098B8 - b _08143C4C -_08143C06: - bl GetBlockReceivedStatus - lsls r0, 24 - cmp r0, 0 - bne _08143C12 - b _08143D1A -_08143C12: - bl ResetBlockReceivedFlags - movs r0, 0xF - strb r0, [r4, 0x8] - b _08143D1A -_08143C1C: - ldr r0, _08143C30 @ =gDecompressionBuffer - bl sub_815D6B4 - strb r0, [r4, 0xE] - ldrb r0, [r4, 0xE] - bl sub_800AA80 - movs r0, 0x10 - strb r0, [r4, 0x8] - b _08143D1A - .align 2, 0 -_08143C30: .4byte gDecompressionBuffer -_08143C34: - ldr r0, _08143C48 @ =gUnknown_3003F64 - ldrb r0, [r0] - cmp r0, 0 - bne _08143D1A - ldrb r0, [r4, 0xE] - cmp r0, 0x1 - bne _08143C4C - movs r0, 0x11 - strb r0, [r4, 0x8] - b _08143D1A - .align 2, 0 -_08143C48: .4byte gUnknown_3003F64 -_08143C4C: - movs r0, 0x14 - strb r0, [r4, 0x8] - b _08143D1A -_08143C52: - ldr r0, _08143C70 @ =gDecompressionBuffer - bl sub_815D794 - cmp r0, 0 - beq _08143C78 - ldr r0, _08143C74 @ =gUnknown_841DE99 - bl sub_8142504 - adds r0, r4, 0 - bl sub_81438E8 - movs r0, 0x12 - strb r0, [r4, 0x8] - b _08143D1A - .align 2, 0 -_08143C70: .4byte gDecompressionBuffer -_08143C74: .4byte gUnknown_841DE99 -_08143C78: - movs r0, 0x16 - strb r0, [r4, 0x8] - b _08143D1A -_08143C7E: - adds r0, r4, 0 - movs r1, 0x78 - bl sub_81438F0 - cmp r0, 0 - beq _08143D1A - ldr r0, _08143CA0 @ =gUnknown_841DE9A - bl sub_8142504 - movs r0, 0x81 - lsls r0, 1 - bl PlayFanfare - movs r0, 0x13 - strb r0, [r4, 0x8] - b _08143D1A - .align 2, 0 -_08143CA0: .4byte gUnknown_841DE9A -_08143CA4: - bl IsFanfareTaskInactive - lsls r0, 24 - cmp r0, 0 - beq _08143D1A - ldr r0, _08143CB8 @ =gMain - ldrh r1, [r0, 0x2E] - movs r0, 0x3 - ands r0, r1 - b _08143CC6 - .align 2, 0 -_08143CB8: .4byte gMain -_08143CBC: - adds r0, r4, 0 - adds r0, 0x9 - ldr r1, _08143CD0 @ =gUnknown_841DE7D - bl mevent_0814257C -_08143CC6: - cmp r0, 0 - beq _08143D1A - movs r0, 0x1A - strb r0, [r4, 0x8] - b _08143D1A - .align 2, 0 -_08143CD0: .4byte gUnknown_841DE7D -_08143CD4: - adds r0, r4, 0 - adds r0, 0x9 - ldr r1, _08143CDC @ =gUnknown_841DE96 - b _08143CF2 - .align 2, 0 -_08143CDC: .4byte gUnknown_841DE96 -_08143CE0: - adds r0, r4, 0 - adds r0, 0x9 - ldr r1, _08143CE8 @ =gUnknown_841DE97 - b _08143CF2 - .align 2, 0 -_08143CE8: .4byte gUnknown_841DE97 -_08143CEC: - adds r0, r4, 0 - adds r0, 0x9 - ldr r1, _08143D00 @ =gUnknown_841DE9C -_08143CF2: - bl mevent_0814257C - cmp r0, 0 - beq _08143D1A -_08143CFA: - movs r0, 0 - strb r0, [r4, 0x8] - b _08143D1A - .align 2, 0 -_08143D00: .4byte gUnknown_841DE9C -_08143D04: - bl sub_812B484 - ldr r0, [r4, 0x10] - bl Free - adds r0, r5, 0 - bl DestroyTask - ldr r0, _08143D20 @ =sub_81422FC - bl SetMainCallback2 -_08143D1A: - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_08143D20: .4byte sub_81422FC - thumb_func_end sub_8143910 - thumb_func_start sub_8143D24 sub_8143D24: @ 8143D24 push {lr} diff --git a/data/data_83FECCC.s b/data/data_83FECCC.s index 2e5c0e6c7..15416aed2 100644 --- a/data/data_83FECCC.s +++ b/data/data_83FECCC.s @@ -1956,67 +1956,88 @@ gUnknown_841D198:: @ 841D198 .incbin "baserom.gba", 0x41D198, 0xCB8 gUnknown_841DE50:: @ 841DE50 - .incbin "baserom.gba", 0x41DE50, 0x1 + .string "$" gUnknown_841DE51:: @ 841DE51 - .incbin "baserom.gba", 0x41DE51, 0x1 + .string "$" gUnknown_841DE52:: @ 841DE52 - .incbin "baserom.gba", 0x41DE52, 0x1 + .string "$" gUnknown_841DE53:: @ 841DE53 - .incbin "baserom.gba", 0x41DE53, 0x1 + .string "$" gUnknown_841DE54:: @ 841DE54 - .incbin "baserom.gba", 0x41DE54, 0x28 + .string "$" + +gUnknown_841DE55:: @ 841DE55 + .incbin "baserom.gba", 0x41DE55, 0x27 @ japanese gUnknown_841DE7C:: @ 841DE7C - .incbin "baserom.gba", 0x41DE7C, 0x1 + .string "$" gUnknown_841DE7D:: @ 841DE7D - .incbin "baserom.gba", 0x41DE7D, 0x18 + .string "$" + +gUnknown_841DE7E:: @ 841DE7E + .incbin "baserom.gba", 0x0041de7e, 0x17 @ japanese gUnknown_841DE95:: @ 841DE95 - .incbin "baserom.gba", 0x41DE95, 0x1 + .string "$" gUnknown_841DE96:: @ 841DE96 - .incbin "baserom.gba", 0x41DE96, 0x1 + .string "$" gUnknown_841DE97:: @ 841DE97 - .incbin "baserom.gba", 0x41DE97, 0x1 + .string "$" gUnknown_841DE98:: @ 841DE98 - .incbin "baserom.gba", 0x41DE98, 0x1 + .string "$" gUnknown_841DE99:: @ 841DE99 - .incbin "baserom.gba", 0x41DE99, 0x1 + .string "$" gUnknown_841DE9A:: @ 841DE9A - .incbin "baserom.gba", 0x41DE9A, 0x1 + .string "$" gUnknown_841DE9B:: @ 841DE9B - .incbin "baserom.gba", 0x41DE9B, 0x1 + .string "$" gUnknown_841DE9C:: @ 841DE9C - .incbin "baserom.gba", 0x41DE9C, 0x1 + .string "$" gUnknown_841DE9D:: @ 841DE9D - .incbin "baserom.gba", 0x41DE9D, 0x53 + .string "Communication error…\n" + .string "Please check all connections,\n" + .string "then turn the power OFF and ON.$" gUnknown_841DEF0:: @ 841DEF0 - .incbin "baserom.gba", 0x41DEF0, 0x15 + .string "Communication error…$" gUnknown_841DF05:: @ 841DF05 - .incbin "baserom.gba", 0x41DF05, 0x47 + .string "Move closer to your link partner(s).\n" + .string "Avoid obstacles between partners.$" gUnknown_841DF4C:: @ 841DF4C - .incbin "baserom.gba", 0x41DF4C, 0x1F + .string "A Button: Registration Counter$" gUnknown_841DF6B:: @ 841DF6B - .incbin "baserom.gba", 0x41DF6B, 0x17 + .string "A Button: Title Screen$" gUnknown_841DF82:: @ 841DF82 - .incbin "baserom.gba", 0x41DF82, 0x23 + .string "{STR_VAR_1}P LINK$" + +gUnknown_841DF8B:: @ 841DF8B + .string "BRONZE$" + +gUnknown_841DF92:: @ 841DF92 + .string "COPPER$" + +gUnknown_841DF99:: @ 841DF99 + .string "SILVER$" + +gUnknown_841DFA0:: @ 841DFA0 + .string "GOLD$" gUnknown_841DFA5:: @ 841DFA5 .incbin "baserom.gba", 0x41DFA5, 0x7 diff --git a/include/global.h b/include/global.h index d5bfc5241..899508993 100644 --- a/include/global.h +++ b/include/global.h @@ -591,6 +591,18 @@ struct FameCheckerSaveData #define NUM_EASY_CHAT_EXTRA_PHRASES 33 #define EASY_CHAT_EXTRA_PHRASES_SIZE ((NUM_EASY_CHAT_EXTRA_PHRASES >> 3) + (NUM_EASY_CHAT_EXTRA_PHRASES % 8 ? 1 : 0)) +struct MEventBuffer1 +{ + u32 crc; + u8 data[0x1bc]; +}; + +struct MEventBuffer2 +{ + u32 crc; + u8 data[0x14c]; +}; + struct SaveBlock1 { /*0x0000*/ struct Coords16 pos; diff --git a/include/link.h b/include/link.h index 92abf6e28..321a28d11 100644 --- a/include/link.h +++ b/include/link.h @@ -205,5 +205,7 @@ void sub_8009804(void); bool8 sub_800AA48(void); void sub_800A5BC(void); void sub_800AA80(u8); +void sub_80098D8(void); +void sub_80098B8(void); #endif // GUARD_LINK_H diff --git a/include/link_rfu_4.h b/include/link_rfu_4.h new file mode 100644 index 000000000..08bb3d7c5 --- /dev/null +++ b/include/link_rfu_4.h @@ -0,0 +1,6 @@ +#ifndef GUARD_LINK_RFU_4_H +#define GUARD_LINK_RFU_4_H + +bool32 mevent_0814257C(u8 * cmdPtr, const u8 * src); + +#endif //GUARD_LINK_RFU_4_H diff --git a/include/unk_815c27c.h b/include/unk_815c27c.h index d5ddc7bdc..cc1cbb7ce 100644 --- a/include/unk_815c27c.h +++ b/include/unk_815c27c.h @@ -6,6 +6,6 @@ void sub_815C6C4(void); void sub_815C8C8(void); void sub_815C960(void); void sub_815C91C(void); -u16 sub_815C498(u8, u32, u32, u8); +u16 sub_815C498(u8, size_t, const void *, u8); #endif //GUARD_UNK_815C27C_H diff --git a/src/mevent.c b/src/mevent.c index 27abf65c3..b2d8ba3f4 100644 --- a/src/mevent.c +++ b/src/mevent.c @@ -6,13 +6,14 @@ #include "task.h" #include "decompress.h" #include "link.h" +#include "link_rfu_4.h" #include "unk_815c27c.h" struct MEvent_Str_1 { u16 unk_000; - u32 unk_004; - u32 unk_008; + size_t unk_004; + const void * unk_008; }; struct MEvent_Str_2 @@ -37,8 +38,31 @@ struct MEventTaskData1 }; void sub_8143910(u8 taskId); +void sub_8142504(const u8 *str); +u8 sub_815D6B4(u8 *); +bool32 sub_815D794(u8 *); +void sub_812B484(void); +void sub_81422FC(void); -void sub_81435DC(struct MEvent_Str_1 *a0, u32 a1, u32 a2) +extern const u8 gUnknown_841DE52[]; +extern const u8 gUnknown_841DE53[]; +extern const u8 gUnknown_841DE54[]; +extern const u8 gUnknown_841DE7C[]; +extern const u8 gUnknown_841DE7D[]; +extern const u8 gUnknown_841DE95[]; +extern const u8 gUnknown_841DE96[]; +extern const u8 gUnknown_841DE97[]; +extern const u8 gUnknown_841DE98[]; +extern const u8 gUnknown_841DE99[]; +extern const u8 gUnknown_841DE9A[]; +extern const u8 gUnknown_841DE9B[]; +extern const u8 gUnknown_841DE9C[]; +extern const u8 gUnknownSerialData_Start[]; +extern const u8 gUnknownSerialData_End[]; + +struct MEvent_Str_1 gUnknown_3005ED0; + +void sub_81435DC(struct MEvent_Str_1 *a0, size_t a1, const void * a2) { vu16 imeBak = REG_IME; REG_IME = 0; @@ -53,7 +77,7 @@ void sub_81435DC(struct MEvent_Str_1 *a0, u32 a1, u32 a2) a0->unk_008 = a2; } -void sub_8143644(void) +void sub_8143644(struct MEvent_Str_1 *unused) { vu16 imeBak = REG_IME; REG_IME = 0; @@ -85,7 +109,7 @@ void sub_81436BC(void) SetSuppressLinkErrorMessage(TRUE); } -bool8 sub_81436EC(void) +bool32 sub_81436EC(void) { vu16 imeBak = REG_IME; u16 data[4]; @@ -101,14 +125,14 @@ bool8 sub_81436EC(void) return FALSE; } -bool8 sub_814374C(void) +bool32 sub_814374C(void) { if (sub_800AA48() && GetLinkPlayerCount_2() == 2) return TRUE; return FALSE; } -u8 sub_8143770(u8 * r4, u16 * r5) +u32 sub_8143770(u8 * r4, u16 * r5) { if ((*r4 == 3 || *r4 == 4 || *r4 == 5) && HasLinkErrorOccurred()) { @@ -123,7 +147,7 @@ u8 sub_8143770(u8 * r4, u16 * r5) *r4 = 1; ; } - else if (gMain.newKeys & B_BUTTON) + else if (JOY_NEW(B_BUTTON)) { *r4 = 0; return 1; @@ -144,7 +168,7 @@ u8 sub_8143770(u8 * r4, u16 * r5) *r5 = 0; *r4 = 3; } - else if (gMain.newKeys & B_BUTTON) + else if (JOY_NEW(B_BUTTON)) { *r4 = 0; return 1; @@ -210,7 +234,7 @@ void sub_81438E8(u16 *a0) *a0 = 0; } -bool8 sub_81438F0(u16 * a0, u16 a1) +bool32 sub_81438F0(u16 * a0, u16 a1) { if (++(*a0) > a1) { @@ -219,3 +243,213 @@ bool8 sub_81438F0(u16 * a0, u16 a1) } return FALSE; } + +void sub_8143910(u8 taskId) +{ + struct MEventTaskData1 *data = (struct MEventTaskData1 *)gTasks[taskId].data; + switch (data->t08) + { + case 0: + if (mevent_0814257C(&data->t09, gUnknown_841DE52)) + data->t08 = 1; + break; + case 1: + sub_81436BC(); + sub_81438E8(&data->t00); + data->t08 = 2; + break; + case 2: + if (sub_81438F0(&data->t00, 10)) + data->t08 = 3; + break; + case 3: + if (!sub_814374C()) + { + sub_80098B8(); + data->t08 = 4; + } + else + data->t08 = 13; + break; + case 4: + if (mevent_0814257C(&data->t09, gUnknown_841DE53)) + { + sub_8142504(gUnknown_841DE54); + sub_81438E8(&data->t00); + data->t08 = 5; + } + break; + case 5: + if (sub_81438F0(&data->t00, 90)) + { + sub_81436BC(); + data->t08 = 6; + } + else if (JOY_NEW(B_BUTTON)) + { + sub_81438E8(&data->t00); + PlaySE(SE_SELECT); + data->t08 = 23; + } + break; + case 6: + if (JOY_NEW(B_BUTTON)) + { + PlaySE(SE_SELECT); + sub_80098B8(); + sub_81438E8(&data->t00); + data->t08 = 23; + } + else if (GetLinkPlayerCount_2() > 1) + { + sub_81438E8(&data->t00); + sub_80098B8(); + data->t08 = 7; + } + else if (sub_81436EC()) + { + PlaySE(SE_SELECT); + sub_80098B8(); + sub_81438E8(&data->t00); + data->t08 = 8; + } + else if (sub_81438F0(&data->t00, 10)) + { + sub_80098B8(); + sub_81436BC(); + sub_81438E8(&data->t00); + } + break; + case 7: + if (mevent_0814257C(&data->t09, gUnknown_841DE7C)) + data->t08 = 4; + break; + case 8: + sub_8142504(gUnknown_841DE95); + sub_81435DC(&gUnknown_3005ED0, gUnknownSerialData_End - gUnknownSerialData_Start, gUnknownSerialData_Start); + data->t08 = 9; + break; + case 9: + data->t0E = sub_8143674(&gUnknown_3005ED0); + if (data->t0E != 0) + data->t08 = 10; + break; + case 10: + sub_8143644(&gUnknown_3005ED0); + if (data->t0E == 3) + data->t08 = 20; + else if (data->t0E == 1) + { + sub_81438E8(&data->t00); + sub_8142504(gUnknown_841DE9B); + data->t08 = 11; + } + else + data->t08 = 0; + break; + case 11: + if (sub_81438F0(&data->t00, 840)) + data->t08 = 12; + break; + case 12: + sub_81436BC(); + sub_8142504(gUnknown_841DE98); + data->t08 = 13; + break; + case 13: + switch (sub_8143770(&data->t09, &data->t00)) + { + case 0: + break; + case 2: + sub_8142504(gUnknown_841DE95); + data->t08 = 14; + break; + case 1: + PlaySE(SE_SELECT); + sub_80098B8(); + data->t08 = 23; + break; + case 5: + sub_80098B8(); + data->t08 = 21; + break; + case 3: + case 4: + sub_80098B8(); + data->t08 = 20; + break; + } + break; + case 14: + if (HasLinkErrorOccurred()) + { + sub_80098B8(); + data->t08 = 20; + } + else if (GetBlockReceivedStatus()) + { + ResetBlockReceivedFlags(); + data->t08 = 15; + } + break; + case 15: + data->t0E = sub_815D6B4(gDecompressionBuffer); + sub_800AA80(data->t0E); + data->t08 = 16; + break; + case 16: + if (!gUnknown_3003F64) + { + if (data->t0E == 1) + data->t08 = 17; + else + data->t08 = 20; + } + break; + case 17: + if (sub_815D794(gDecompressionBuffer)) + { + sub_8142504(gUnknown_841DE99); + sub_81438E8(&data->t00); + data->t08 = 18; + } + else + data->t08 = 22; + break; + case 18: + if (sub_81438F0(&data->t00, 120)) + { + sub_8142504(gUnknown_841DE9A); + PlayFanfare(258); + data->t08 = 19; + } + break; + case 19: + if (IsFanfareTaskInactive() &&JOY_NEW(A_BUTTON | B_BUTTON)) + data->t08 = 26; + break; + case 23: + if (mevent_0814257C(&data->t09, gUnknown_841DE7D)) + data->t08 = 26; + break; + case 20: + if (mevent_0814257C(&data->t09, gUnknown_841DE96)) + data->t08 = 0; + break; + case 21: + if (mevent_0814257C(&data->t09, gUnknown_841DE97)) + data->t08 = 0; + break; + case 22: + if (mevent_0814257C(&data->t09, gUnknown_841DE9C)) + data->t08 = 0; + break; + case 26: + sub_812B484(); + Free(data->t10); + DestroyTask(taskId); + SetMainCallback2(sub_81422FC); + break; + } +} |