summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--Makefile2
-rw-r--r--asm/mevent.s2438
-rw-r--r--data/data_83FECCC.s63
-rw-r--r--data/data_845FD54.s86
-rw-r--r--data/data_8466FB8.s76
-rw-r--r--include/battle_tower.h1
-rw-r--r--include/easy_chat.h1
-rw-r--r--include/event_data.h2
-rw-r--r--include/global.h65
-rw-r--r--include/link.h11
-rw-r--r--include/link_rfu_4.h7
-rw-r--r--include/main.h6
-rw-r--r--include/mevent.h18
-rw-r--r--include/script.h1
-rw-r--r--include/unk_815c27c.h11
-rw-r--r--ld_script.txt4
-rw-r--r--src/mevent.c1029
17 files changed, 1270 insertions, 2551 deletions
diff --git a/Makefile b/Makefile
index 4e81222f4..9f8b13141 100644
--- a/Makefile
+++ b/Makefile
@@ -164,7 +164,7 @@ $(OBJ_DIR)/ld_script.ld: ld_script.txt $(OBJ_DIR)/sym_bss.ld $(OBJ_DIR)/sym_comm
cd $(OBJ_DIR) && sed -f ../../ld_script.sed ../../$< | sed "s#tools/#../../tools/#g" > ld_script.ld
$(ELF): $(OBJ_DIR)/ld_script.ld $(OBJS)
- cd $(OBJ_DIR) && $(LD) $(LDFLAGS) -T ld_script.ld -o ../../$@ $(OBJS_REL) $(LIB)
+ cd $(OBJ_DIR) && $(LD) $(LDFLAGS) -T ld_script.ld -o ../../$@ $(LIB)
$(ROM): $(ELF)
$(OBJCOPY) -O binary $< $@
diff --git a/asm/mevent.s b/asm/mevent.s
deleted file mode 100644
index 697266a39..000000000
--- a/asm/mevent.s
+++ /dev/null
@@ -1,2438 +0,0 @@
- .include "asm/macros.inc"
- .include "constants/constants.inc"
-
- .syntax unified
-
- .text
-
- thumb_func_start sub_81435DC
-sub_81435DC: @ 81435DC
- push {r4-r6,lr}
- mov r6, r8
- push {r6}
- sub sp, 0x4
- adds r5, r0, 0
- adds r6, r1, 0
- mov r8, r2
- mov r1, sp
- ldr r4, _08143630 @ =0x04000208
- ldrh r0, [r4]
- strh r0, [r1]
- movs r0, 0
- strh r0, [r4]
- ldr r1, _08143634 @ =gIntrTable
- ldr r0, _08143638 @ =sub_815C6D4
- str r0, [r1, 0x4]
- ldr r0, _0814363C @ =sub_815C6C4
- str r0, [r1, 0x8]
- bl sub_815C8C8
- bl sub_815C960
- ldr r2, _08143640 @ =0x04000200
- ldrh r0, [r2]
- movs r1, 0x4
- orrs r0, r1
- strh r0, [r2]
- mov r0, sp
- ldrh r0, [r0]
- strh r0, [r4]
- movs r0, 0
- strh r0, [r5]
- str r6, [r5, 0x4]
- mov r0, r8
- str r0, [r5, 0x8]
- add sp, 0x4
- pop {r3}
- mov r8, r3
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_08143630: .4byte 0x04000208
-_08143634: .4byte gIntrTable
-_08143638: .4byte sub_815C6D4
-_0814363C: .4byte sub_815C6C4
-_08143640: .4byte 0x04000200
- thumb_func_end sub_81435DC
-
- thumb_func_start sub_8143644
-sub_8143644: @ 8143644
- push {r4,lr}
- sub sp, 0x4
- mov r1, sp
- ldr r4, _08143670 @ =0x04000208
- ldrh r0, [r4]
- strh r0, [r1]
- movs r0, 0
- strh r0, [r4]
- bl sub_815C960
- bl sub_815C91C
- bl RestoreSerialTimer3IntrHandlers
- mov r0, sp
- ldrh r0, [r0]
- strh r0, [r4]
- add sp, 0x4
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_08143670: .4byte 0x04000208
- thumb_func_end sub_8143644
-
- thumb_func_start sub_8143674
-sub_8143674: @ 8143674
- push {r4,r5,lr}
- adds r4, r0, 0
- movs r5, 0
- ldr r1, [r4, 0x4]
- ldr r2, [r4, 0x8]
- movs r0, 0x1
- movs r3, 0
- bl sub_815C498
- adds r1, r0, 0
- strh r1, [r4]
- movs r0, 0x13
- ands r0, r1
- cmp r0, 0x10
- bne _08143694
- movs r5, 0x1
-_08143694:
- movs r0, 0x8
- ands r0, r1
- cmp r0, 0
- beq _0814369E
- movs r5, 0x2
-_0814369E:
- movs r0, 0x4
- ands r0, r1
- cmp r0, 0
- beq _081436A8
- movs r5, 0x3
-_081436A8:
- ldr r1, _081436B8 @ =gUnknown_3003F84
- movs r0, 0
- strb r0, [r1]
- adds r0, r5, 0
- pop {r4,r5}
- pop {r1}
- bx r1
- .align 2, 0
-_081436B8: .4byte gUnknown_3003F84
- thumb_func_end sub_8143674
-
- thumb_func_start sub_81436BC
-sub_81436BC: @ 81436BC
- push {lr}
- ldr r0, _081436E0 @ =gDecompressionBuffer
- movs r2, 0x80
- lsls r2, 6
- movs r1, 0
- bl memset
- ldr r1, _081436E4 @ =gUnknown_202271A
- ldr r2, _081436E8 @ =0x00005502
- adds r0, r2, 0
- strh r0, [r1]
- bl sub_8009804
- movs r0, 0x1
- bl SetSuppressLinkErrorMessage
- pop {r0}
- bx r0
- .align 2, 0
-_081436E0: .4byte gDecompressionBuffer
-_081436E4: .4byte gUnknown_202271A
-_081436E8: .4byte 0x00005502
- thumb_func_end sub_81436BC
-
- thumb_func_start sub_81436EC
-sub_81436EC: @ 81436EC
- push {lr}
- sub sp, 0xC
- mov r1, sp
- ldr r2, _08143730 @ =0x04000208
- ldrh r0, [r2]
- strh r0, [r1]
- movs r0, 0
- strh r0, [r2]
- ldr r0, _08143734 @ =gUnknown_3003FB4
- ldr r1, [r0, 0x4]
- ldr r0, [r0]
- str r0, [sp, 0x4]
- str r1, [sp, 0x8]
- mov r0, sp
- ldrh r0, [r0]
- strh r0, [r2]
- add r2, sp, 0x4
- ldrh r1, [r2]
- ldr r0, _08143738 @ =0x0000b9a0
- cmp r1, r0
- bne _08143744
- ldrh r1, [r2, 0x2]
- ldr r0, _0814373C @ =0x0000ccd0
- cmp r1, r0
- bne _08143744
- ldrh r1, [r2, 0x4]
- ldr r0, _08143740 @ =0x0000ffff
- cmp r1, r0
- bne _08143744
- ldrh r0, [r2, 0x6]
- cmp r0, r1
- bne _08143744
- movs r0, 0x1
- b _08143746
- .align 2, 0
-_08143730: .4byte 0x04000208
-_08143734: .4byte gUnknown_3003FB4
-_08143738: .4byte 0x0000b9a0
-_0814373C: .4byte 0x0000ccd0
-_08143740: .4byte 0x0000ffff
-_08143744:
- movs r0, 0
-_08143746:
- add sp, 0xC
- pop {r1}
- bx r1
- thumb_func_end sub_81436EC
-
- thumb_func_start sub_814374C
-sub_814374C: @ 814374C
- push {lr}
- bl sub_800AA48
- lsls r0, 24
- cmp r0, 0
- beq _08143768
- bl GetLinkPlayerCount_2
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x2
- bne _08143768
- movs r0, 0x1
- b _0814376A
-_08143768:
- movs r0, 0
-_0814376A:
- pop {r1}
- bx r1
- thumb_func_end sub_814374C
-
- thumb_func_start sub_8143770
-sub_8143770: @ 8143770
- push {r4,r5,lr}
- adds r4, r0, 0
- adds r5, r1, 0
- ldrb r0, [r4]
- subs r0, 0x3
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x2
- bhi _08143794
- bl HasLinkErrorOccurred
- lsls r0, 24
- cmp r0, 0
- beq _08143794
- movs r0, 0
- strb r0, [r4]
- movs r0, 0x3
- b _0814389A
-_08143794:
- ldrb r0, [r4]
- cmp r0, 0x5
- bls _0814379C
- b _08143898
-_0814379C:
- lsls r0, 2
- ldr r1, _081437A8 @ =_081437AC
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .align 2, 0
-_081437A8: .4byte _081437AC
- .align 2, 0
-_081437AC:
- .4byte _081437C4
- .4byte _081437E0
- .4byte _081437F8
- .4byte _0814382C
- .4byte _08143878
- .4byte _08143884
-_081437C4:
- bl sub_800AA48
- lsls r0, 24
- cmp r0, 0
- beq _08143814
- bl GetLinkPlayerCount_2
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- bls _08143814
- movs r0, 0x1
- strb r0, [r4]
- b _08143898
-_081437E0:
- ldrh r0, [r5]
- adds r0, 0x1
- strh r0, [r5]
- lsls r0, 16
- lsrs r0, 16
- cmp r0, 0x5
- bls _08143898
- movs r0, 0
- strh r0, [r5]
- movs r0, 0x2
- strb r0, [r4]
- b _08143898
-_081437F8:
- bl GetLinkPlayerCount_2
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x2
- bne _08143814
- movs r0, 0x42
- bl PlaySE
- bl sub_800A5BC
- movs r0, 0
- strh r0, [r5]
- b _08143872
-_08143814:
- ldr r0, _08143828 @ =gMain
- ldrh r1, [r0, 0x2E]
- movs r0, 0x2
- ands r0, r1
- cmp r0, 0
- beq _08143898
- movs r0, 0
- strb r0, [r4]
- movs r0, 0x1
- b _0814389A
- .align 2, 0
-_08143828: .4byte gMain
-_0814382C:
- ldrh r0, [r5]
- adds r0, 0x1
- strh r0, [r5]
- lsls r0, 16
- lsrs r0, 16
- cmp r0, 0x1E
- bls _08143842
- movs r0, 0
- strb r0, [r4]
- movs r0, 0x5
- b _0814389A
-_08143842:
- bl IsLinkConnectionEstablished
- lsls r0, 24
- cmp r0, 0
- beq _08143898
- ldr r0, _08143868 @ =gUnknown_3003F64
- ldrb r0, [r0]
- cmp r0, 0
- beq _08143872
- bl IsLinkPlayerDataExchangeComplete
- lsls r0, 24
- cmp r0, 0
- beq _0814386C
- movs r0, 0
- strb r0, [r4]
- movs r0, 0x2
- b _0814389A
- .align 2, 0
-_08143868: .4byte gUnknown_3003F64
-_0814386C:
- movs r0, 0x4
- strb r0, [r4]
- b _08143898
-_08143872:
- movs r0, 0x3
- strb r0, [r4]
- b _08143898
-_08143878:
- movs r0, 0
- bl sub_800AA80
- movs r0, 0x5
- strb r0, [r4]
- b _08143898
-_08143884:
- ldr r0, _08143894 @ =gUnknown_3003F64
- ldrb r0, [r0]
- cmp r0, 0
- bne _08143898
- strb r0, [r4]
- movs r0, 0x4
- b _0814389A
- .align 2, 0
-_08143894: .4byte gUnknown_3003F64
-_08143898:
- movs r0, 0
-_0814389A:
- pop {r4,r5}
- pop {r1}
- bx r1
- thumb_func_end sub_8143770
-
- thumb_func_start sub_81438A0
-sub_81438A0: @ 81438A0
- push {r4,lr}
- ldr r0, _081438E0 @ =sub_8143910
- movs r1, 0
- bl CreateTask
- lsls r0, 24
- lsrs r0, 24
- lsls r4, r0, 2
- adds r4, r0
- lsls r4, 3
- ldr r0, _081438E4 @ =gTasks+0x8
- adds r4, r0
- movs r0, 0
- strb r0, [r4, 0x8]
- strb r0, [r4, 0x9]
- strb r0, [r4, 0xA]
- strb r0, [r4, 0xB]
- strb r0, [r4, 0xC]
- strb r0, [r4, 0xD]
- movs r1, 0
- strh r0, [r4]
- strh r0, [r4, 0x2]
- strh r0, [r4, 0x4]
- strh r0, [r4, 0x6]
- strb r1, [r4, 0xE]
- movs r0, 0x40
- bl AllocZeroed
- str r0, [r4, 0x10]
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_081438E0: .4byte sub_8143910
-_081438E4: .4byte gTasks+0x8
- thumb_func_end sub_81438A0
-
- thumb_func_start sub_81438E8
-sub_81438E8: @ 81438E8
- movs r1, 0
- strh r1, [r0]
- bx lr
- thumb_func_end sub_81438E8
-
- thumb_func_start sub_81438F0
-sub_81438F0: @ 81438F0
- push {lr}
- adds r2, r0, 0
- lsls r1, 16
- ldrh r0, [r2]
- adds r0, 0x1
- strh r0, [r2]
- lsls r0, 16
- cmp r0, r1
- bhi _08143906
- movs r0, 0
- b _0814390C
-_08143906:
- movs r0, 0
- strh r0, [r2]
- movs r0, 0x1
-_0814390C:
- pop {r1}
- bx r1
- thumb_func_end sub_81438F0
-
- 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}
- sub sp, 0x4
- movs r0, 0
- str r0, [sp]
- ldr r0, _08143D4C @ =gSaveBlock1Ptr
- ldr r1, [r0]
- ldr r0, _08143D50 @ =0x00003120
- adds r1, r0
- ldr r2, _08143D54 @ =0x050000db
- mov r0, sp
- bl CpuSet
- bl sub_8143ED0
- bl sub_80BDE28
- add sp, 0x4
- pop {r0}
- bx r0
- .align 2, 0
-_08143D4C: .4byte gSaveBlock1Ptr
-_08143D50: .4byte 0x00003120
-_08143D54: .4byte 0x050000db
- thumb_func_end sub_8143D24
-
- thumb_func_start sub_8143D58
-sub_8143D58: @ 8143D58
- ldr r0, _08143D64 @ =gSaveBlock1Ptr
- ldr r0, [r0]
- ldr r1, _08143D68 @ =0x00003124
- adds r0, r1
- bx lr
- .align 2, 0
-_08143D64: .4byte gSaveBlock1Ptr
-_08143D68: .4byte 0x00003124
- thumb_func_end sub_8143D58
-
- thumb_func_start sav1_get_mevent_buffer_1
-sav1_get_mevent_buffer_1: @ 8143D6C
- ldr r0, _08143D78 @ =gSaveBlock1Ptr
- ldr r0, [r0]
- ldr r1, _08143D7C @ =0x000032e4
- adds r0, r1
- bx lr
- .align 2, 0
-_08143D78: .4byte gSaveBlock1Ptr
-_08143D7C: .4byte 0x000032e4
- thumb_func_end sav1_get_mevent_buffer_1
-
- thumb_func_start sav1_get_mevent_buffer_2
-sav1_get_mevent_buffer_2: @ 8143D80
- ldr r0, _08143D8C @ =gSaveBlock1Ptr
- ldr r0, [r0]
- ldr r1, _08143D90 @ =0x00003434
- adds r0, r1
- bx lr
- .align 2, 0
-_08143D8C: .4byte gSaveBlock1Ptr
-_08143D90: .4byte 0x00003434
- thumb_func_end sav1_get_mevent_buffer_2
-
- thumb_func_start sub_8143D94
-sub_8143D94: @ 8143D94
- ldr r0, _08143DA0 @ =gSaveBlock1Ptr
- ldr r0, [r0]
- ldr r1, _08143DA4 @ =0x00003460
- adds r0, r1
- bx lr
- .align 2, 0
-_08143DA0: .4byte gSaveBlock1Ptr
-_08143DA4: .4byte 0x00003460
- thumb_func_end sub_8143D94
-
- thumb_func_start sub_8143DA8
-sub_8143DA8: @ 8143DA8
- ldr r0, _08143DB4 @ =gSaveBlock1Ptr
- ldr r0, [r0]
- ldr r1, _08143DB8 @ =0x00003458
- adds r0, r1
- bx lr
- .align 2, 0
-_08143DB4: .4byte gSaveBlock1Ptr
-_08143DB8: .4byte 0x00003458
- thumb_func_end sub_8143DA8
-
- thumb_func_start sub_8143DBC
-sub_8143DBC: @ 8143DBC
- push {lr}
- bl sub_8143E9C
- pop {r0}
- bx r0
- thumb_func_end sub_8143DBC
-
- thumb_func_start sub_8143DC8
-sub_8143DC8: @ 8143DC8
- push {r4-r7,lr}
- adds r7, r0, 0
- bl sub_8143E64
- cmp r0, 0
- beq _08143E14
- bl sub_8143E9C
- ldr r4, _08143E08 @ =gSaveBlock1Ptr
- ldr r0, [r4]
- ldr r5, _08143E0C @ =0x00003124
- adds r0, r5
- movs r6, 0xDE
- lsls r6, 1
- adds r1, r7, 0
- adds r2, r6, 0
- bl memcpy
- ldr r0, [r4]
- adds r0, r5
- adds r1, r6, 0
- bl CalcCRC16WithTable
- ldr r1, [r4]
- ldr r2, _08143E10 @ =0x00003120
- adds r1, r2
- lsls r0, 16
- lsrs r0, 16
- str r0, [r1]
- movs r0, 0x1
- b _08143E16
- .align 2, 0
-_08143E08: .4byte gSaveBlock1Ptr
-_08143E0C: .4byte 0x00003124
-_08143E10: .4byte 0x00003120
-_08143E14:
- movs r0, 0
-_08143E16:
- pop {r4-r7}
- pop {r1}
- bx r1
- thumb_func_end sub_8143DC8
-
- thumb_func_start sub_8143E1C
-sub_8143E1C: @ 8143E1C
- push {r4,lr}
- ldr r4, _08143E50 @ =gSaveBlock1Ptr
- ldr r0, [r4]
- ldr r1, _08143E54 @ =0x00003124
- adds r0, r1
- movs r1, 0xDE
- lsls r1, 1
- bl CalcCRC16WithTable
- lsls r0, 16
- lsrs r0, 16
- ldr r4, [r4]
- ldr r2, _08143E58 @ =0x00003120
- adds r1, r4, r2
- ldr r1, [r1]
- cmp r0, r1
- bne _08143E5C
- ldr r1, _08143E54 @ =0x00003124
- adds r0, r4, r1
- bl sub_8143E64
- cmp r0, 0
- beq _08143E5C
- movs r0, 0x1
- b _08143E5E
- .align 2, 0
-_08143E50: .4byte gSaveBlock1Ptr
-_08143E54: .4byte 0x00003124
-_08143E58: .4byte 0x00003120
-_08143E5C:
- movs r0, 0
-_08143E5E:
- pop {r4}
- pop {r1}
- bx r1
- thumb_func_end sub_8143E1C
-
- thumb_func_start sub_8143E64
-sub_8143E64: @ 8143E64
- push {lr}
- ldrh r0, [r0]
- cmp r0, 0
- beq _08143E70
- movs r0, 0x1
- b _08143E72
-_08143E70:
- movs r0, 0
-_08143E72:
- pop {r1}
- bx r1
- thumb_func_end sub_8143E64
-
- thumb_func_start sub_8143E78
-sub_8143E78: @ 8143E78
- push {lr}
- ldr r0, _08143E8C @ =gSaveBlock1Ptr
- ldr r0, [r0]
- ldr r1, _08143E90 @ =0x00003124
- adds r0, r1
- ldrb r0, [r0, 0x2]
- cmp r0, 0
- beq _08143E94
- movs r0, 0x1
- b _08143E96
- .align 2, 0
-_08143E8C: .4byte gSaveBlock1Ptr
-_08143E90: .4byte 0x00003124
-_08143E94:
- movs r0, 0
-_08143E96:
- pop {r1}
- bx r1
- thumb_func_end sub_8143E78
-
- thumb_func_start sub_8143E9C
-sub_8143E9C: @ 8143E9C
- push {r4,lr}
- sub sp, 0x4
- movs r4, 0
- str r4, [sp]
- bl sub_8143D58
- adds r1, r0, 0
- ldr r2, _08143EC4 @ =0x0500006f
- mov r0, sp
- bl CpuSet
- ldr r0, _08143EC8 @ =gSaveBlock1Ptr
- ldr r0, [r0]
- ldr r1, _08143ECC @ =0x00003120
- adds r0, r1
- str r4, [r0]
- add sp, 0x4
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_08143EC4: .4byte 0x0500006f
-_08143EC8: .4byte gSaveBlock1Ptr
-_08143ECC: .4byte 0x00003120
- thumb_func_end sub_8143E9C
-
- thumb_func_start sub_8143ED0
-sub_8143ED0: @ 8143ED0
- push {lr}
- sub sp, 0x4
- movs r0, 0
- str r0, [sp]
- bl sub_8143D94
- adds r1, r0, 0
- ldr r2, _08143EF0 @ =0x05000001
- mov r0, sp
- bl CpuSet
- bl sub_8146C88
- add sp, 0x4
- pop {r0}
- bx r0
- .align 2, 0
-_08143EF0: .4byte 0x05000001
- thumb_func_end sub_8143ED0
-
- thumb_func_start sub_8143EF4
-sub_8143EF4: @ 8143EF4
- push {r4,r5,lr}
- adds r5, r0, 0
- ldr r0, _08143F0C @ =gSaveBlock1Ptr
- ldr r0, [r0]
- ldr r1, _08143F10 @ =0x00003124
- adds r4, r0, r1
- bl sub_8143E1C
- cmp r0, 0
- bne _08143F14
-_08143F08:
- movs r0, 0
- b _08143F2C
- .align 2, 0
-_08143F0C: .4byte gSaveBlock1Ptr
-_08143F10: .4byte 0x00003124
-_08143F14:
- movs r2, 0
- ldr r3, _08143F34 @ =0x000001bb
-_08143F18:
- adds r0, r4, r2
- adds r1, r5, r2
- ldrb r0, [r0]
- ldrb r1, [r1]
- cmp r0, r1
- bne _08143F08
- adds r2, 0x1
- cmp r2, r3
- bls _08143F18
- movs r0, 0x1
-_08143F2C:
- pop {r4,r5}
- pop {r1}
- bx r1
- .align 2, 0
-_08143F34: .4byte 0x000001bb
- thumb_func_end sub_8143EF4
-
- thumb_func_start sub_8143F38
-sub_8143F38: @ 8143F38
- push {lr}
- bl sub_814407C
- bl sub_81440B4
- bl sub_8144790
- bl ClearRamScript
- bl sub_806E2D0
- bl sub_806E370
- ldr r0, _08143F64 @ =gSaveBlock2Ptr
- ldr r0, [r0]
- movs r1, 0x94
- lsls r1, 3
- adds r0, r1
- bl sub_80E7524
- pop {r0}
- bx r0
- .align 2, 0
-_08143F64: .4byte gSaveBlock2Ptr
- thumb_func_end sub_8143F38
-
- thumb_func_start sub_8143F68
-sub_8143F68: @ 8143F68
- push {r4-r7,lr}
- adds r7, r0, 0
- bl sub_8144018
- cmp r0, 0
- beq _08143FC0
- bl sub_8143F38
- ldr r4, _08143FB0 @ =gSaveBlock1Ptr
- ldr r0, [r4]
- ldr r5, _08143FB4 @ =0x000032e4
- adds r0, r5
- movs r6, 0xA6
- lsls r6, 1
- adds r1, r7, 0
- adds r2, r6, 0
- bl memcpy
- ldr r0, [r4]
- adds r0, r5
- adds r1, r6, 0
- bl CalcCRC16WithTable
- ldr r1, [r4]
- ldr r3, _08143FB8 @ =0x000032e0
- adds r2, r1, r3
- lsls r0, 16
- lsrs r0, 16
- str r0, [r2]
- ldr r0, _08143FBC @ =0x00003434
- adds r2, r1, r0
- adds r1, r5
- ldrh r0, [r1, 0x2]
- strh r0, [r2, 0x6]
- movs r0, 0x1
- b _08143FC2
- .align 2, 0
-_08143FB0: .4byte gSaveBlock1Ptr
-_08143FB4: .4byte 0x000032e4
-_08143FB8: .4byte 0x000032e0
-_08143FBC: .4byte 0x00003434
-_08143FC0:
- movs r0, 0
-_08143FC2:
- pop {r4-r7}
- pop {r1}
- bx r1
- thumb_func_end sub_8143F68
-
- thumb_func_start sub_8143FC8
-sub_8143FC8: @ 8143FC8
- push {r4,r5,lr}
- ldr r5, _08144004 @ =gSaveBlock1Ptr
- ldr r0, [r5]
- ldr r1, _08144008 @ =0x000032e0
- adds r4, r0, r1
- adds r1, 0x4
- adds r0, r1
- movs r1, 0xA6
- lsls r1, 1
- bl CalcCRC16WithTable
- lsls r0, 16
- lsrs r0, 16
- ldr r1, [r4]
- cmp r1, r0
- bne _08144010
- ldr r0, [r5]
- ldr r1, _0814400C @ =0x000032e4
- adds r0, r1
- bl sub_8144018
- cmp r0, 0
- beq _08144010
- bl sub_8069DFC
- cmp r0, 0
- beq _08144010
- movs r0, 0x1
- b _08144012
- .align 2, 0
-_08144004: .4byte gSaveBlock1Ptr
-_08144008: .4byte 0x000032e0
-_0814400C: .4byte 0x000032e4
-_08144010:
- movs r0, 0
-_08144012:
- pop {r4,r5}
- pop {r1}
- bx r1
- thumb_func_end sub_8143FC8
-
- thumb_func_start sub_8144018
-sub_8144018: @ 8144018
- push {lr}
- adds r2, r0, 0
- ldrh r0, [r2]
- cmp r0, 0
- beq _0814404E
- ldrb r1, [r2, 0x8]
- lsls r0, r1, 30
- lsrs r0, 30
- cmp r0, 0x2
- bhi _0814404E
- movs r0, 0xC0
- ands r0, r1
- cmp r0, 0
- beq _0814403C
- cmp r0, 0x40
- beq _0814403C
- cmp r0, 0x80
- bne _0814404E
-_0814403C:
- lsls r0, r1, 26
- lsrs r0, 28
- cmp r0, 0x7
- bhi _0814404E
- ldrb r0, [r2, 0x9]
- cmp r0, 0x7
- bhi _0814404E
- movs r0, 0x1
- b _08144050
-_0814404E:
- movs r0, 0
-_08144050:
- pop {r1}
- bx r1
- thumb_func_end sub_8144018
-
- thumb_func_start sub_8144054
-sub_8144054: @ 8144054
- push {lr}
- ldr r0, _0814406C @ =gSaveBlock1Ptr
- ldr r0, [r0]
- ldr r1, _08144070 @ =0x000032e4
- adds r0, r1
- ldrb r1, [r0, 0x8]
- movs r0, 0xC0
- ands r0, r1
- cmp r0, 0
- beq _08144074
- movs r0, 0x1
- b _08144076
- .align 2, 0
-_0814406C: .4byte gSaveBlock1Ptr
-_08144070: .4byte 0x000032e4
-_08144074:
- movs r0, 0
-_08144076:
- pop {r1}
- bx r1
- thumb_func_end sub_8144054
-
- thumb_func_start sub_814407C
-sub_814407C: @ 814407C
- push {r4,r5,lr}
- sub sp, 0x4
- movs r5, 0
- str r5, [sp]
- ldr r4, _081440A4 @ =gSaveBlock1Ptr
- ldr r1, [r4]
- ldr r0, _081440A8 @ =0x000032e4
- adds r1, r0
- ldr r2, _081440AC @ =0x05000053
- mov r0, sp
- bl CpuSet
- ldr r0, [r4]
- ldr r1, _081440B0 @ =0x000032e0
- adds r0, r1
- str r5, [r0]
- add sp, 0x4
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_081440A4: .4byte gSaveBlock1Ptr
-_081440A8: .4byte 0x000032e4
-_081440AC: .4byte 0x05000053
-_081440B0: .4byte 0x000032e0
- thumb_func_end sub_814407C
-
- thumb_func_start sub_81440B4
-sub_81440B4: @ 81440B4
- push {r4,lr}
- sub sp, 0x4
- movs r4, 0
- str r4, [sp]
- bl sav1_get_mevent_buffer_2
- adds r1, r0, 0
- ldr r2, _081440DC @ =0x05000009
- mov r0, sp
- bl CpuSet
- ldr r0, _081440E0 @ =gSaveBlock1Ptr
- ldr r0, [r0]
- ldr r1, _081440E4 @ =0x00003430
- adds r0, r1
- str r4, [r0]
- add sp, 0x4
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_081440DC: .4byte 0x05000009
-_081440E0: .4byte gSaveBlock1Ptr
-_081440E4: .4byte 0x00003430
- thumb_func_end sub_81440B4
-
- thumb_func_start sub_81440E8
-sub_81440E8: @ 81440E8
- push {lr}
- bl sub_8143FC8
- cmp r0, 0
- bne _081440F6
- movs r0, 0
- b _08144100
-_081440F6:
- ldr r0, _08144104 @ =gSaveBlock1Ptr
- ldr r0, [r0]
- ldr r1, _08144108 @ =0x000032e4
- adds r0, r1
- ldrh r0, [r0]
-_08144100:
- pop {r1}
- bx r1
- .align 2, 0
-_08144104: .4byte gSaveBlock1Ptr
-_08144108: .4byte 0x000032e4
- thumb_func_end sub_81440E8
-
- thumb_func_start sub_814410C
-sub_814410C: @ 814410C
- push {lr}
- adds r2, r0, 0
- ldrb r1, [r2, 0x8]
- movs r0, 0xC0
- ands r0, r1
- cmp r0, 0x40
- bne _08144120
- movs r0, 0x3F
- ands r0, r1
- strb r0, [r2, 0x8]
-_08144120:
- pop {r0}
- bx r0
- thumb_func_end sub_814410C
-
- thumb_func_start sub_8144124
-sub_8144124: @ 8144124
- push {lr}
- lsls r0, 16
- ldr r1, _08144138 @ =0xfc180000
- adds r0, r1
- lsrs r0, 16
- cmp r0, 0x13
- bls _0814413C
- movs r0, 0
- b _0814413E
- .align 2, 0
-_08144138: .4byte 0xfc180000
-_0814413C:
- movs r0, 0x1
-_0814413E:
- pop {r1}
- bx r1
- thumb_func_end sub_8144124
-
- thumb_func_start sub_8144144
-sub_8144144: @ 8144144
- push {r4,lr}
- bl sub_81440E8
- lsls r0, 16
- lsrs r4, r0, 16
- adds r0, r4, 0
- bl sub_8144124
- cmp r0, 0
- beq _0814417C
- ldr r1, _08144174 @ =gUnknown_8466F00
- ldr r2, _08144178 @ =0xfffffc18
- adds r0, r4, r2
- lsls r0, 1
- adds r0, r1
- ldrh r0, [r0]
- bl FlagGet
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- beq _0814417C
- movs r0, 0x1
- b _0814417E
- .align 2, 0
-_08144174: .4byte gUnknown_8466F00
-_08144178: .4byte 0xfffffc18
-_0814417C:
- movs r0, 0
-_0814417E:
- pop {r4}
- pop {r1}
- bx r1
- thumb_func_end sub_8144144
-
- thumb_func_start sub_8144184
-sub_8144184: @ 8144184
- push {lr}
- movs r3, 0
- cmp r3, r1
- bge _081441A6
- adds r2, r0, 0
- adds r2, 0x8
-_08144190:
- ldrh r0, [r2, 0xE]
- cmp r0, 0
- beq _0814419E
- ldrh r0, [r2]
- cmp r0, 0
- beq _0814419E
- adds r3, 0x1
-_0814419E:
- adds r2, 0x2
- subs r1, 0x1
- cmp r1, 0
- bne _08144190
-_081441A6:
- adds r0, r3, 0
- pop {r1}
- bx r1
- thumb_func_end sub_8144184
-
- thumb_func_start sub_81441AC
-sub_81441AC: @ 81441AC
- push {r4-r7,lr}
- adds r5, r0, 0
- adds r4, r1, 0
- movs r1, 0
- cmp r1, r2
- bge _081441E6
- ldrh r6, [r4, 0x2]
- movs r0, 0x16
- adds r0, r5
- mov r12, r0
-_081441C0:
- lsls r3, r1, 1
- mov r7, r12
- ldrh r0, [r7]
- cmp r0, r6
- beq _081441D8
- adds r0, r5, 0
- adds r0, 0x8
- adds r0, r3
- ldrh r0, [r0]
- ldrh r3, [r4]
- cmp r0, r3
- bne _081441DC
-_081441D8:
- movs r0, 0x1
- b _081441E8
-_081441DC:
- movs r7, 0x2
- add r12, r7
- adds r1, 0x1
- cmp r1, r2
- blt _081441C0
-_081441E6:
- movs r0, 0
-_081441E8:
- pop {r4-r7}
- pop {r1}
- bx r1
- thumb_func_end sub_81441AC
-
- thumb_func_start sub_81441F0
-sub_81441F0: @ 81441F0
- push {lr}
- adds r1, r0, 0
- ldrh r0, [r1, 0x2]
- cmp r0, 0
- beq _08144210
- ldrh r1, [r1]
- cmp r1, 0
- beq _08144210
- ldr r0, _0814420C @ =0x0000019b
- cmp r1, r0
- bhi _08144210
- movs r0, 0x1
- b _08144212
- .align 2, 0
-_0814420C: .4byte 0x0000019b
-_08144210:
- movs r0, 0
-_08144212:
- pop {r1}
- bx r1
- thumb_func_end sub_81441F0
-
- thumb_func_start sub_8144218
-sub_8144218: @ 8144218
- push {lr}
- bl sub_8143FC8
- cmp r0, 0
- beq _0814424C
- ldr r0, _08144240 @ =gSaveBlock1Ptr
- ldr r3, [r0]
- ldr r0, _08144244 @ =0x000032e4
- adds r2, r3, r0
- ldrb r1, [r2, 0x8]
- movs r0, 0x3
- ands r0, r1
- cmp r0, 0x1
- bne _0814424C
- ldr r1, _08144248 @ =0x00003434
- adds r0, r3, r1
- ldrb r1, [r2, 0x9]
- bl sub_8144184
- b _0814424E
- .align 2, 0
-_08144240: .4byte gSaveBlock1Ptr
-_08144244: .4byte 0x000032e4
-_08144248: .4byte 0x00003434
-_0814424C:
- movs r0, 0
-_0814424E:
- pop {r1}
- bx r1
- thumb_func_end sub_8144218
-
- thumb_func_start sub_8144254
-sub_8144254: @ 8144254
- push {r4-r6,lr}
- adds r5, r0, 0
- ldr r6, _08144280 @ =gSaveBlock1Ptr
- ldr r0, [r6]
- ldr r1, _08144284 @ =0x000032e4
- adds r0, r1
- ldrb r4, [r0, 0x9]
- adds r0, r5, 0
- bl sub_81441F0
- cmp r0, 0
- beq _081442BE
- ldr r0, [r6]
- ldr r1, _08144288 @ =0x00003434
- adds r0, r1
- adds r1, r5, 0
- adds r2, r4, 0
- bl sub_81441AC
- cmp r0, 0
- beq _08144298
- b _081442BE
- .align 2, 0
-_08144280: .4byte gSaveBlock1Ptr
-_08144284: .4byte 0x000032e4
-_08144288: .4byte 0x00003434
-_0814428C:
- ldrh r0, [r5, 0x2]
- strh r0, [r1]
- ldrh r0, [r5]
- strh r0, [r2]
- movs r0, 0x1
- b _081442C0
-_08144298:
- movs r3, 0
- cmp r3, r4
- bge _081442BE
- ldr r0, [r6]
- ldr r6, _081442C8 @ =0x0000343c
- adds r2, r0, r6
- adds r6, 0xE
- adds r1, r0, r6
-_081442A8:
- ldrh r0, [r2, 0xE]
- cmp r0, 0
- bne _081442B4
- ldrh r0, [r2]
- cmp r0, 0
- beq _0814428C
-_081442B4:
- adds r2, 0x2
- adds r1, 0x2
- adds r3, 0x1
- cmp r3, r4
- blt _081442A8
-_081442BE:
- movs r0, 0
-_081442C0:
- pop {r4-r6}
- pop {r1}
- bx r1
- .align 2, 0
-_081442C8: .4byte 0x0000343c
- thumb_func_end sub_8144254
-
- thumb_func_start sub_81442CC
-sub_81442CC: @ 81442CC
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- sub sp, 0x4
- adds r4, r0, 0
- movs r0, 0
- str r0, [sp]
- ldr r2, _08144328 @ =0x05000019
- mov r0, sp
- adds r1, r4, 0
- bl CpuSet
- ldr r0, _0814432C @ =0x00000101
- str r0, [r4]
- movs r0, 0x1
- strh r0, [r4, 0x4]
- str r0, [r4, 0x8]
- strh r0, [r4, 0xC]
- str r0, [r4, 0x10]
- bl sub_8143FC8
- cmp r0, 0
- beq _08144330
- bl sav1_get_mevent_buffer_1
- ldrh r0, [r0]
- strh r0, [r4, 0x14]
- bl sav1_get_mevent_buffer_2
- adds r1, r4, 0
- adds r1, 0x20
- ldm r0!, {r2,r3,r5}
- stm r1!, {r2,r3,r5}
- ldm r0!, {r2,r3,r5}
- stm r1!, {r2,r3,r5}
- ldm r0!, {r2,r3,r5}
- stm r1!, {r2,r3,r5}
- bl sav1_get_mevent_buffer_1
- ldrb r1, [r0, 0x9]
- adds r0, r4, 0
- adds r0, 0x44
- strb r1, [r0]
- b _08144332
- .align 2, 0
-_08144328: .4byte 0x05000019
-_0814432C: .4byte 0x00000101
-_08144330:
- strh r0, [r4, 0x14]
-_08144332:
- adds r5, r4, 0
- adds r5, 0x4C
- ldr r0, _081443BC @ =gSaveBlock2Ptr
- mov r8, r0
- adds r6, r4, 0
- adds r6, 0x45
- adds r7, r4, 0
- adds r7, 0x50
- movs r1, 0x5C
- adds r1, r4
- mov r9, r1
- movs r2, 0x60
- adds r2, r4
- mov r10, r2
- ldr r0, _081443C0 @ =gSaveBlock1Ptr
- ldr r0, [r0]
- ldr r3, _081443C4 @ =0x00003458
- adds r2, r0, r3
- adds r1, r4, 0
- adds r1, 0x16
- movs r3, 0x3
-_0814435C:
- ldrh r0, [r2]
- strh r0, [r1]
- adds r2, 0x2
- adds r1, 0x2
- subs r3, 0x1
- cmp r3, 0
- bge _0814435C
- mov r0, r8
- ldr r1, [r0]
- adds r1, 0xA
- adds r0, r5, 0
- bl CopyUnalignedWord
- mov r2, r8
- ldr r1, [r2]
- adds r0, r6, 0
- bl StringCopy
- ldr r0, _081443C0 @ =gSaveBlock1Ptr
- ldr r0, [r0]
- ldr r3, _081443C8 @ =0x00002ca0
- adds r2, r0, r3
- adds r1, r7, 0
- movs r3, 0x5
-_0814438C:
- ldrh r0, [r2]
- strh r0, [r1]
- adds r2, 0x2
- adds r1, 0x2
- subs r3, 0x1
- cmp r3, 0
- bge _0814438C
- ldr r1, _081443CC @ =RomHeaderGameCode
- mov r0, r9
- movs r2, 0x4
- bl memcpy
- ldr r0, _081443D0 @ =RomHeaderSoftwareVersion
- ldrb r0, [r0]
- mov r5, r10
- strb r0, [r5]
- add sp, 0x4
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_081443BC: .4byte gSaveBlock2Ptr
-_081443C0: .4byte gSaveBlock1Ptr
-_081443C4: .4byte 0x00003458
-_081443C8: .4byte 0x00002ca0
-_081443CC: .4byte RomHeaderGameCode
-_081443D0: .4byte RomHeaderSoftwareVersion
- thumb_func_end sub_81442CC
-
- thumb_func_start sub_81443D4
-sub_81443D4: @ 81443D4
- push {lr}
- adds r2, r0, 0
- ldr r1, [r2]
- ldr r0, _0814440C @ =0x00000101
- cmp r1, r0
- bne _08144410
- ldrh r1, [r2, 0x4]
- movs r3, 0x1
- adds r0, r3, 0
- ands r0, r1
- cmp r0, 0
- beq _08144410
- ldr r0, [r2, 0x8]
- ands r0, r3
- cmp r0, 0
- beq _08144410
- ldrh r1, [r2, 0xC]
- adds r0, r3, 0
- ands r0, r1
- cmp r0, 0
- beq _08144410
- ldr r0, [r2, 0x10]
- movs r1, 0xF
- ands r0, r1
- cmp r0, 0
- beq _08144410
- movs r0, 0x1
- b _08144412
- .align 2, 0
-_0814440C: .4byte 0x00000101
-_08144410:
- movs r0, 0
-_08144412:
- pop {r1}
- bx r1
- thumb_func_end sub_81443D4
-
- thumb_func_start sub_8144418
-sub_8144418: @ 8144418
- push {lr}
- ldrh r1, [r1, 0x14]
- cmp r1, 0
- bne _08144424
- movs r0, 0
- b _08144430
-_08144424:
- ldrh r0, [r0]
- cmp r0, r1
- beq _0814442E
- movs r0, 0x2
- b _08144430
-_0814442E:
- movs r0, 0x1
-_08144430:
- pop {r1}
- bx r1
- thumb_func_end sub_8144418
-
- thumb_func_start sub_8144434
-sub_8144434: @ 8144434
- push {r4-r6,lr}
- adds r6, r0, 0
- adds r4, r1, 0
- adds r5, r4, 0
- adds r5, 0x20
- adds r4, 0x44
- ldrb r1, [r4]
- adds r0, r5, 0
- bl sub_8144184
- ldrb r2, [r4]
- subs r4, r2, r0
- cmp r4, 0
- bne _08144454
- movs r0, 0x1
- b _0814446E
-_08144454:
- adds r0, r5, 0
- adds r1, r6, 0
- bl sub_81441AC
- cmp r0, 0
- beq _08144464
- movs r0, 0x3
- b _0814446E
-_08144464:
- cmp r4, 0x1
- beq _0814446C
- movs r0, 0x2
- b _0814446E
-_0814446C:
- movs r0, 0x4
-_0814446E:
- pop {r4-r6}
- pop {r1}
- bx r1
- thumb_func_end sub_8144434
-
- thumb_func_start sub_8144474
-sub_8144474: @ 8144474
- push {r4,lr}
- movs r3, 0
- adds r2, r0, 0
- adds r2, 0x16
-_0814447C:
- ldrh r0, [r2]
- ldrh r4, [r1]
- cmp r0, r4
- beq _08144488
- movs r0, 0
- b _08144494
-_08144488:
- adds r1, 0x2
- adds r2, 0x2
- adds r3, 0x1
- cmp r3, 0x3
- ble _0814447C
- movs r0, 0x1
-_08144494:
- pop {r4}
- pop {r1}
- bx r1
- thumb_func_end sub_8144474
-
- thumb_func_start sub_814449C
-sub_814449C: @ 814449C
- push {lr}
- adds r2, r0, 0
- adds r2, 0x20
- adds r0, 0x44
- ldrb r1, [r0]
- adds r0, r2, 0
- bl sub_8144184
- pop {r1}
- bx r1
- thumb_func_end sub_814449C
-
- thumb_func_start sub_81444B0
-sub_81444B0: @ 81444B0
- push {lr}
- adds r2, r0, 0
- cmp r1, 0x4
- bhi _081444FC
- lsls r0, r1, 2
- ldr r1, _081444C4 @ =_081444C8
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .align 2, 0
-_081444C4: .4byte _081444C8
- .align 2, 0
-_081444C8:
- .4byte _081444DC
- .4byte _081444E0
- .4byte _081444E4
- .4byte _081444E8
- .4byte _081444F4
-_081444DC:
- ldrh r0, [r2, 0x20]
- b _0814450A
-_081444E0:
- ldrh r0, [r2, 0x22]
- b _0814450A
-_081444E4:
- ldrh r0, [r2, 0x24]
- b _0814450A
-_081444E8:
- adds r0, r2, 0
- bl sub_814449C
- lsls r0, 16
- lsrs r0, 16
- b _0814450A
-_081444F4:
- adds r0, r2, 0
- adds r0, 0x44
- ldrb r0, [r0]
- b _0814450A
-_081444FC:
- ldr r0, _08144510 @ =gUnknown_8466F28 "C:/WORK/POKeFRLG/src/pm_lgfr_ose/source/mevent.c"
- ldr r1, _08144514 @ =0x00000339
- ldr r2, _08144518 @ =gUnknown_8466F5C "0"
- movs r3, 0x1
- bl AGBAssert
- movs r0, 0
-_0814450A:
- pop {r1}
- bx r1
- .align 2, 0
-_08144510: .4byte gUnknown_8466F28
-_08144514: .4byte 0x00000339
-_08144518: .4byte gUnknown_8466F5C
- thumb_func_end sub_81444B0
-
- thumb_func_start sub_814451C
-sub_814451C: @ 814451C
- push {r4,lr}
- adds r4, r0, 0
- ldr r2, _08144544 @ =gSaveBlock1Ptr
- ldr r0, [r2]
- ldr r1, _08144548 @ =0x000032e4
- adds r0, r1
- ldrb r1, [r0, 0x8]
- movs r0, 0x3
- ands r0, r1
- adds r3, r2, 0
- cmp r0, 0x2
- bne _081445B6
- movs r2, 0
- cmp r4, 0x4
- bhi _08144582
- lsls r0, r4, 2
- ldr r1, _0814454C @ =_08144550
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .align 2, 0
-_08144544: .4byte gSaveBlock1Ptr
-_08144548: .4byte 0x000032e4
-_0814454C: .4byte _08144550
- .align 2, 0
-_08144550:
- .4byte _08144564
- .4byte _08144570
- .4byte _0814457C
- .4byte _08144582
- .4byte _08144582
-_08144564:
- ldr r0, [r3]
- ldr r1, _0814456C @ =0x00003434
- b _08144580
- .align 2, 0
-_0814456C: .4byte 0x00003434
-_08144570:
- ldr r0, [r3]
- ldr r1, _08144578 @ =0x00003436
- b _08144580
- .align 2, 0
-_08144578: .4byte 0x00003436
-_0814457C:
- ldr r0, [r3]
- ldr r1, _08144598 @ =0x00003438
-_08144580:
- adds r2, r0, r1
-_08144582:
- cmp r2, 0
- bne _081445A4
- ldr r0, _0814459C @ =gUnknown_8466F28 "C:/WORK/POKeFRLG/src/pm_lgfr_ose/source/mevent.c"
- movs r1, 0xD9
- lsls r1, 2
- ldr r2, _081445A0 @ =gUnknown_8466F5C "0"
- movs r3, 0x1
- bl AGBAssert
- b _081445B6
- .align 2, 0
-_08144598: .4byte 0x00003438
-_0814459C: .4byte gUnknown_8466F28
-_081445A0: .4byte gUnknown_8466F5C
-_081445A4:
- ldrh r0, [r2]
- adds r0, 0x1
- strh r0, [r2]
- lsls r0, 16
- lsrs r0, 16
- ldr r1, _081445BC @ =0x000003e7
- cmp r0, r1
- bls _081445B6
- strh r1, [r2]
-_081445B6:
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_081445BC: .4byte 0x000003e7
- thumb_func_end sub_814451C
-
- thumb_func_start sub_81445C0
-sub_81445C0: @ 81445C0
- push {lr}
- cmp r0, 0x4
- bhi _081446A4
- lsls r0, 2
- ldr r1, _081445D0 @ =_081445D4
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .align 2, 0
-_081445D0: .4byte _081445D4
- .align 2, 0
-_081445D4:
- .4byte _081445E8
- .4byte _08144610
- .4byte _08144638
- .4byte _08144660
- .4byte _08144684
-_081445E8:
- ldr r0, _08144604 @ =gSaveBlock1Ptr
- ldr r2, [r0]
- ldr r1, _08144608 @ =0x000032e4
- adds r0, r2, r1
- ldrb r1, [r0, 0x8]
- movs r0, 0x3
- ands r0, r1
- cmp r0, 0x2
- bne _081446A4
- ldr r1, _0814460C @ =0x00003434
- adds r0, r2, r1
- ldrh r0, [r0]
- b _081446B2
- .align 2, 0
-_08144604: .4byte gSaveBlock1Ptr
-_08144608: .4byte 0x000032e4
-_0814460C: .4byte 0x00003434
-_08144610:
- ldr r0, _0814462C @ =gSaveBlock1Ptr
- ldr r2, [r0]
- ldr r1, _08144630 @ =0x000032e4
- adds r0, r2, r1
- ldrb r1, [r0, 0x8]
- movs r0, 0x3
- ands r0, r1
- cmp r0, 0x2
- bne _081446A4
- ldr r1, _08144634 @ =0x00003434
- adds r0, r2, r1
- ldrh r0, [r0, 0x2]
- b _081446B2
- .align 2, 0
-_0814462C: .4byte gSaveBlock1Ptr
-_08144630: .4byte 0x000032e4
-_08144634: .4byte 0x00003434
-_08144638:
- ldr r0, _08144654 @ =gSaveBlock1Ptr
- ldr r2, [r0]
- ldr r1, _08144658 @ =0x000032e4
- adds r0, r2, r1
- ldrb r1, [r0, 0x8]
- movs r0, 0x3
- ands r0, r1
- cmp r0, 0x2
- bne _081446A4
- ldr r1, _0814465C @ =0x00003434
- adds r0, r2, r1
- ldrh r0, [r0, 0x4]
- b _081446B2
- .align 2, 0
-_08144654: .4byte gSaveBlock1Ptr
-_08144658: .4byte 0x000032e4
-_0814465C: .4byte 0x00003434
-_08144660:
- ldr r0, _0814467C @ =gSaveBlock1Ptr
- ldr r0, [r0]
- ldr r1, _08144680 @ =0x000032e4
- adds r0, r1
- ldrb r1, [r0, 0x8]
- movs r0, 0x3
- ands r0, r1
- cmp r0, 0x1
- bne _081446A4
- bl sub_8144218
- lsls r0, 16
- lsrs r0, 16
- b _081446B2
- .align 2, 0
-_0814467C: .4byte gSaveBlock1Ptr
-_08144680: .4byte 0x000032e4
-_08144684:
- ldr r0, _0814469C @ =gSaveBlock1Ptr
- ldr r0, [r0]
- ldr r1, _081446A0 @ =0x000032e4
- adds r2, r0, r1
- ldrb r1, [r2, 0x8]
- movs r0, 0x3
- ands r0, r1
- cmp r0, 0x1
- bne _081446A4
- ldrb r0, [r2, 0x9]
- b _081446B2
- .align 2, 0
-_0814469C: .4byte gSaveBlock1Ptr
-_081446A0: .4byte 0x000032e4
-_081446A4:
- ldr r0, _081446B8 @ =gUnknown_8466F28 "C:/WORK/POKeFRLG/src/pm_lgfr_ose/source/mevent.c"
- ldr r1, _081446BC @ =0x00000391
- ldr r2, _081446C0 @ =gUnknown_8466F5C "0"
- movs r3, 0x1
- bl AGBAssert
- movs r0, 0
-_081446B2:
- pop {r1}
- bx r1
- .align 2, 0
-_081446B8: .4byte gUnknown_8466F28
-_081446BC: .4byte 0x00000391
-_081446C0: .4byte gUnknown_8466F5C
- thumb_func_end sub_81445C0
-
- thumb_func_start sub_81446C4
-sub_81446C4: @ 81446C4
- ldr r1, _081446CC @ =gUnknown_203F3BC
- movs r0, 0
- str r0, [r1]
- bx lr
- .align 2, 0
-_081446CC: .4byte gUnknown_203F3BC
- thumb_func_end sub_81446C4
-
- thumb_func_start sub_81446D0
-sub_81446D0: @ 81446D0
- push {r4,r5,lr}
- lsls r0, 16
- lsrs r0, 16
- adds r4, r0, 0
- ldr r5, _08144700 @ =gUnknown_203F3BC
- movs r0, 0
- str r0, [r5]
- cmp r4, 0
- beq _0814470E
- bl sub_8143FC8
- cmp r0, 0
- beq _0814470C
- ldr r0, _08144704 @ =gSaveBlock1Ptr
- ldr r0, [r0]
- ldr r1, _08144708 @ =0x000032e4
- adds r0, r1
- ldrh r0, [r0]
- cmp r0, r4
- bne _0814470C
- movs r0, 0x1
- str r0, [r5]
- b _0814470E
- .align 2, 0
-_08144700: .4byte gUnknown_203F3BC
-_08144704: .4byte gSaveBlock1Ptr
-_08144708: .4byte 0x000032e4
-_0814470C:
- movs r0, 0
-_0814470E:
- pop {r4,r5}
- pop {r1}
- bx r1
- thumb_func_end sub_81446D0
-
- thumb_func_start sub_8144714
-sub_8144714: @ 8144714
- push {lr}
- adds r2, r0, 0
- ldr r0, _08144738 @ =gUnknown_203F3BC
- ldr r0, [r0]
- cmp r0, 0
- beq _08144782
- cmp r2, 0x1
- beq _08144758
- cmp r2, 0x1
- bcc _08144744
- cmp r2, 0x2
- bne _08144774
- ldr r0, _0814473C @ =gSaveBlock1Ptr
- ldr r2, [r0]
- ldr r0, _08144740 @ =0x00003478
- adds r2, r0
- movs r0, 0x2
- b _08144762
- .align 2, 0
-_08144738: .4byte gUnknown_203F3BC
-_0814473C: .4byte gSaveBlock1Ptr
-_08144740: .4byte 0x00003478
-_08144744:
- ldr r0, _08144750 @ =gSaveBlock1Ptr
- ldr r2, [r0]
- ldr r0, _08144754 @ =0x00003464
- adds r2, r0
- movs r0, 0
- b _08144762
- .align 2, 0
-_08144750: .4byte gSaveBlock1Ptr
-_08144754: .4byte 0x00003464
-_08144758:
- ldr r0, _0814476C @ =gSaveBlock1Ptr
- ldr r2, [r0]
- ldr r0, _08144770 @ =0x00003464
- adds r2, r0
- movs r0, 0x1
-_08144762:
- movs r3, 0x5
- bl sub_8144824
- b _08144782
- .align 2, 0
-_0814476C: .4byte gSaveBlock1Ptr
-_08144770: .4byte 0x00003464
-_08144774:
- ldr r0, _08144788 @ =gUnknown_8466F28 "C:/WORK/POKeFRLG/src/pm_lgfr_ose/source/mevent.c"
- movs r1, 0xF7
- lsls r1, 2
- ldr r2, _0814478C @ =gUnknown_8466F5C "0"
- movs r3, 0x1
- bl AGBAssert
-_08144782:
- pop {r0}
- bx r0
- .align 2, 0
-_08144788: .4byte gUnknown_8466F28
-_0814478C: .4byte gUnknown_8466F5C
- thumb_func_end sub_8144714
-
- thumb_func_start sub_8144790
-sub_8144790: @ 8144790
- push {lr}
- sub sp, 0x4
- movs r0, 0
- str r0, [sp]
- ldr r0, _081447B0 @ =gSaveBlock1Ptr
- ldr r1, [r0]
- ldr r0, _081447B4 @ =0x00003464
- adds r1, r0
- ldr r2, _081447B8 @ =0x0500000a
- mov r0, sp
- bl CpuSet
- add sp, 0x4
- pop {r0}
- bx r0
- .align 2, 0
-_081447B0: .4byte gSaveBlock1Ptr
-_081447B4: .4byte 0x00003464
-_081447B8: .4byte 0x0500000a
- thumb_func_end sub_8144790
-
- thumb_func_start sub_81447BC
-sub_81447BC: @ 81447BC
- push {r4,r5,lr}
- adds r5, r0, 0
- adds r4, r1, 0
- movs r1, 0
- cmp r1, r2
- bge _081447DE
- ldr r0, [r4]
- cmp r0, r5
- beq _081447DE
- adds r3, r4, 0
-_081447D0:
- adds r3, 0x4
- adds r1, 0x1
- cmp r1, r2
- bge _081447DE
- ldr r0, [r3]
- cmp r0, r5
- bne _081447D0
-_081447DE:
- cmp r1, r2
- bne _08144800
- subs r3, r1, 0x1
- cmp r3, 0
- ble _081447FA
- lsls r0, r3, 2
- subs r0, 0x4
- adds r2, r0, r4
-_081447EE:
- ldr r0, [r2]
- str r0, [r2, 0x4]
- subs r2, 0x4
- subs r3, 0x1
- cmp r3, 0
- bgt _081447EE
-_081447FA:
- str r5, [r4]
- movs r0, 0x1
- b _0814481C
-_08144800:
- adds r3, r1, 0
- cmp r3, 0
- ble _08144818
- lsls r0, r3, 2
- subs r0, 0x4
- adds r2, r0, r4
-_0814480C:
- ldr r0, [r2]
- str r0, [r2, 0x4]
- subs r2, 0x4
- subs r3, 0x1
- cmp r3, 0
- bgt _0814480C
-_08144818:
- str r5, [r4]
- movs r0, 0
-_0814481C:
- pop {r4,r5}
- pop {r1}
- bx r1
- thumb_func_end sub_81447BC
-
- thumb_func_start sub_8144824
-sub_8144824: @ 8144824
- push {r4,lr}
- adds r4, r0, 0
- adds r0, r1, 0
- adds r1, r2, 0
- adds r2, r3, 0
- bl sub_81447BC
- cmp r0, 0
- beq _0814483C
- adds r0, r4, 0
- bl sub_814451C
-_0814483C:
- pop {r4}
- pop {r0}
- bx r0
- thumb_func_end sub_8144824
-
- .align 2, 0 @ Don't pad with nop.
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/data/data_845FD54.s b/data/data_845FD54.s
index d2b52192d..d05e14570 100644
--- a/data/data_845FD54.s
+++ b/data/data_845FD54.s
@@ -598,89 +598,3 @@ gUnknown_8466EE8:: @ 8466EE8
gUnknown_8466EF0:: @ 8466EF0
.incbin "baserom.gba", 0x466EF0, 0x10
-
-gUnknown_8466F00:: @ 8466F00
- .incbin "baserom.gba", 0x466F00, 0x28
-
- .align 2
-gUnknown_8466F28:: @ 8466F28
- .asciz "C:/WORK/POKeFRLG/src/pm_lgfr_ose/source/mevent.c"
-
- .align 2
-gUnknown_8466F5C:: @ 8466F5C
- .asciz "0"
-
- .align 2
-gUnknown_8466F60:: @ 8466F60
- .incbin "baserom.gba", 0x466F60, 0x20
-
- .align 2
-gUnknown_8466F80:: @ 8466F80
- .asciz "C:/WORK/POKeFRLG/src/pm_lgfr_ose/source/mevent_server.c"
-
- .align 2
-gUnknown_8466FB8:: @ 8466FB8
- .asciz "size <= ME_SEND_BUF_SIZE"
-
- .align 2
-gUnknown_8466FD4:: @ 8466FD4
- .asciz "cmd->parameter == NULL"
-
- .align 2
-gUnknown_8466FEC:: @ 8466FEC
- .asciz "cmd->flag == FALSE"
-
- .align 2
-gUnknown_8467000:: @ 8467000
- .asciz "cmd->flag == FALSE && cmd->parameter == NULL"
-
- .align 2
-gUnknown_8467030:: @ 8467030
- .incbin "baserom.gba", 0x467030, 0x14
-
- .align 2
-gUnknown_8467044:: @ 8467044
- .asciz "svr->mainseqno < NELEMS(func_tbl)"
-
- .align 2
-gUnknown_8467068:: @ 8467068
- .incbin "baserom.gba", 0x467068, 0x8
-
-gUnknown_8467070:: @ 8467070
- .incbin "baserom.gba", 0x467070, 0x4
-
-gUnknown_8467074:: @ 8467074
- .incbin "baserom.gba", 0x467074, 0xEE4
-
-gUnknown_8467F58:: @ 8467F58
- .incbin "baserom.gba", 0x467F58, 0x8
-
-gUnknown_8467F60:: @ 8467F60
- .incbin "baserom.gba", 0x467F60, 0x40
-
-gUnknown_8467FA0:: @ 8467FA0
- .incbin "baserom.gba", 0x467FA0, 0x18
-
-gUnknown_8467FB8:: @ 8467FB8
- .incbin "baserom.gba", 0x467FB8, 0x80
-
-gUnknown_8468038:: @ 8468038
- .incbin "baserom.gba", 0x468038, 0x8
-
-gUnknown_8468040:: @ 8468040
- .incbin "baserom.gba", 0x468040, 0x10
-
-gUnknown_8468050:: @ 8468050
- .incbin "baserom.gba", 0x468050, 0x6D0
-
-gUnknown_8468720:: @ 8468720
- .incbin "baserom.gba", 0x468720, 0xC0
-
-gUnknown_84687E0:: @ 84687E0
- .incbin "baserom.gba", 0x4687E0, 0x38C
-
-gUnknown_8468B6C:: @ 8468B6C
- .incbin "baserom.gba", 0x468B6C, 0x60
-
-gUnknown_8468BCC:: @ 8468BCC
- .incbin "baserom.gba", 0x468BCC, 0x90
diff --git a/data/data_8466FB8.s b/data/data_8466FB8.s
new file mode 100644
index 000000000..3f4fd49cd
--- /dev/null
+++ b/data/data_8466FB8.s
@@ -0,0 +1,76 @@
+ .section .rodata
+
+ .align 2
+gUnknown_8466F60:: @ 8466F60
+ .incbin "baserom.gba", 0x466F60, 0x20
+
+ .align 2
+gUnknown_8466F80:: @ 8466F80
+ .asciz "C:/WORK/POKeFRLG/src/pm_lgfr_ose/source/mevent_server.c"
+
+ .align 2
+gUnknown_8466FB8:: @ 8466FB8
+ .asciz "size <= ME_SEND_BUF_SIZE"
+
+ .align 2
+gUnknown_8466FD4:: @ 8466FD4
+ .asciz "cmd->parameter == NULL"
+
+ .align 2
+gUnknown_8466FEC:: @ 8466FEC
+ .asciz "cmd->flag == FALSE"
+
+ .align 2
+gUnknown_8467000:: @ 8467000
+ .asciz "cmd->flag == FALSE && cmd->parameter == NULL"
+
+ .align 2
+gUnknown_8467030:: @ 8467030
+ .incbin "baserom.gba", 0x467030, 0x14
+
+ .align 2
+gUnknown_8467044:: @ 8467044
+ .asciz "svr->mainseqno < NELEMS(func_tbl)"
+
+ .align 2
+gUnknown_8467068:: @ 8467068
+ .incbin "baserom.gba", 0x467068, 0x8
+
+gUnknown_8467070:: @ 8467070
+ .incbin "baserom.gba", 0x467070, 0x4
+
+gUnknown_8467074:: @ 8467074
+ .incbin "baserom.gba", 0x467074, 0xEE4
+
+gUnknown_8467F58:: @ 8467F58
+ .incbin "baserom.gba", 0x467F58, 0x8
+
+gUnknown_8467F60:: @ 8467F60
+ .incbin "baserom.gba", 0x467F60, 0x40
+
+gUnknown_8467FA0:: @ 8467FA0
+ .incbin "baserom.gba", 0x467FA0, 0x18
+
+gUnknown_8467FB8:: @ 8467FB8
+ .incbin "baserom.gba", 0x467FB8, 0x80
+
+gUnknown_8468038:: @ 8468038
+ .incbin "baserom.gba", 0x468038, 0x8
+
+gUnknown_8468040:: @ 8468040
+ .incbin "baserom.gba", 0x468040, 0x10
+
+gUnknown_8468050:: @ 8468050
+ .incbin "baserom.gba", 0x468050, 0x6D0
+
+gUnknown_8468720:: @ 8468720
+ .incbin "baserom.gba", 0x468720, 0xC0
+
+gUnknown_84687E0:: @ 84687E0
+ .incbin "baserom.gba", 0x4687E0, 0x38C
+
+gUnknown_8468B6C:: @ 8468B6C
+ .incbin "baserom.gba", 0x468B6C, 0x60
+
+gUnknown_8468BCC:: @ 8468BCC
+ .incbin "baserom.gba", 0x468BCC, 0x90
diff --git a/include/battle_tower.h b/include/battle_tower.h
index 120ab9a99..36d5eb1f7 100644
--- a/include/battle_tower.h
+++ b/include/battle_tower.h
@@ -4,5 +4,6 @@
#include "global.h"
u16 sub_8164FCC(u8, u8);
+void sub_80E7524(u32 *);
#endif //GUARD_BATTLE_TOWER_H
diff --git a/include/easy_chat.h b/include/easy_chat.h
index 2b5664420..78e371cbb 100644
--- a/include/easy_chat.h
+++ b/include/easy_chat.h
@@ -37,5 +37,6 @@ bool32 sub_811F8D8(u16 word);
void InitializeEasyChatWordArray(u16 *words, u16 length);
void ConvertEasyChatWordsToString(u8 *dest, const u16 *src, u16 length1, u16 length2);
bool8 ECWord_CheckIfOutsideOfValidRange(u16 word);
+void sub_80BDE28(void);
#endif // GUARD_EASYCHAT_H
diff --git a/include/event_data.h b/include/event_data.h
index 2e340f073..bced2a88f 100644
--- a/include/event_data.h
+++ b/include/event_data.h
@@ -34,6 +34,8 @@ bool8 FlagGet(u16 id);
u16 * GetVarPointer(u16 id);
bool32 sub_806E2BC(void);
void sub_806E6FC(void);
+void sub_806E2D0(void);
+void sub_806E370(void);
extern u16 gSpecialVar_0x8000;
extern u16 gSpecialVar_0x8001;
diff --git a/include/global.h b/include/global.h
index d5bfc5241..1dae2f75f 100644
--- a/include/global.h
+++ b/include/global.h
@@ -264,7 +264,9 @@ struct SaveBlock2
/*0x098*/ struct Time localTimeOffset;
/*0x0A0*/ struct Time lastBerryTreeUpdate;
/*0x0A8*/ u32 field_A8;
- /*0x0AC*/ u8 filler_AC[0x9ec];
+ /*0x0AC*/ u8 filler_AC[0x3F4];
+ /*0x4A0*/ u32 unk_4A0[0x2F];
+ /*0x55c*/ u8 filler_55C[0x53C];
/*0xA98*/ u8 unk_A98[2][16];
/*0xAB8*/ u8 filler_AB8[0x468];
/*0xF20*/ u32 encryptionKey;
@@ -591,6 +593,62 @@ 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 MEventBuffer_3120_Sub
+{
+ u16 unk_00;
+ u8 unk_02;
+ u16 filler_04[220];
+};
+
+struct MEventBuffer_3120
+{
+ u32 crc;
+ struct MEventBuffer_3120_Sub data;
+};
+
+struct MEventBuffer_32E0_Sub
+{
+ u16 unk_00;
+ u16 unk_02;
+ u8 filler_04[4];
+ u8 unk_08_0:2;
+ u8 unk_08_2:4;
+ u8 unk_08_6:2;
+ u8 unk_09;
+ u8 filler_0A[322];
+};
+
+struct MEventBuffer_32E0
+{
+ u32 crc;
+ struct MEventBuffer_32E0_Sub data;
+};
+
+struct MEventBuffer_3430_Sub
+{
+ u16 unk_00;
+ u16 unk_02;
+ u16 unk_04;
+ u16 unk_06;
+ u16 unk_08[2][7];
+};
+
+struct MEventBuffer_3430
+{
+ u32 crc;
+ struct MEventBuffer_3430_Sub data;
+};
+
+struct MEventBuffers
+{
+ /*0x000 0x3120*/ struct MEventBuffer_3120 buffer_000;
+ /*0x1c0 0x32e0*/ struct MEventBuffer_32E0 buffer_1c0;
+ /*0x310 0x3430*/ struct MEventBuffer_3430 buffer_310;
+ /*0x338 0x3458*/ u16 unk_338[4];
+ /*0x340 0x3460*/ struct MysteryEventStruct unk_340;
+ /*0x344 0x3464*/ u32 unk_344[2][5];
+}; // 0x36C 0x348C
+
struct SaveBlock1
{
/*0x0000*/ struct Coords16 pos;
@@ -638,9 +696,8 @@ struct SaveBlock1
/*0x309C*/ u8 giftRibbons[52];
/*0x30D0*/ struct Roamer roamer;
/*0x30EC*/ struct EnigmaBerry enigmaBerry;
- /*0x3120*/ u8 filler3120[0x340];
- /*0x3460*/ struct MysteryEventStruct unk_3460;
- /*0x3464*/ u8 filler_3464[0x1b8];
+ /*0x3120*/ struct MEventBuffers unk_3120;
+ /*0x348C*/ u8 filler_348C[0x190];
/*0x361C*/ struct RamScript ramScript;
/*0x3A08*/ u8 filler3A08[12];
/*0x3A14*/ u8 seen2[DEX_FLAGS_NO];
diff --git a/include/link.h b/include/link.h
index 239a59b71..321a28d11 100644
--- a/include/link.h
+++ b/include/link.h
@@ -146,6 +146,11 @@ extern u16 word_3002910[];
extern bool8 gReceivedRemoteLinkPlayers;
extern bool8 gLinkVSyncDisabled;
+extern u8 gUnknown_3003F64;
+extern u8 gUnknown_3003F84;
+extern u64 gUnknown_3003FB4;
+extern u16 gUnknown_202271A;
+
void Task_DestroySelf(u8);
void OpenLink(void);
void CloseLink(void);
@@ -196,5 +201,11 @@ void sub_8011BD0(void);
u8 sub_800ABAC(void);
u8 sub_800ABBC(void);
void sub_800AC34(void);
+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..91ae86e4c
--- /dev/null
+++ b/include/link_rfu_4.h
@@ -0,0 +1,7 @@
+#ifndef GUARD_LINK_RFU_4_H
+#define GUARD_LINK_RFU_4_H
+
+void sub_8142504(const u8 *str);
+bool32 mevent_0814257C(u8 * cmdPtr, const u8 * src);
+
+#endif //GUARD_LINK_RFU_4_H
diff --git a/include/main.h b/include/main.h
index 84d356692..adbf1fb5d 100644
--- a/include/main.h
+++ b/include/main.h
@@ -9,6 +9,8 @@ typedef void (*MainCallback)(void);
typedef void (*IntrCallback)(void);
typedef void (*IntrFunc)(void);
+extern IntrFunc gIntrTable[];
+
struct Main
{
/*0x000*/ MainCallback callback1;
@@ -62,5 +64,9 @@ void SetSerialCallback(IntrCallback callback);
void InitFlashTimer(void);
void DoSoftReset(void);
void ClearPokemonCrySongs(void);
+void RestoreSerialTimer3IntrHandlers(void);
+
+extern const char RomHeaderGameCode[4];
+extern const char RomHeaderSoftwareVersion;
#endif // GUARD_MAIN_H
diff --git a/include/mevent.h b/include/mevent.h
index 7df669da3..ae301263f 100644
--- a/include/mevent.h
+++ b/include/mevent.h
@@ -3,6 +3,24 @@
#include "global.h"
+struct MEventStruct_Unk1442CC
+{
+ u32 unk_00;
+ u16 unk_04;
+ u32 unk_08;
+ u16 unk_0C;
+ u32 unk_10;
+ u16 unk_14;
+ u16 unk_16[4];
+ struct MEventBuffer_3430_Sub unk_20;
+ u8 unk_44;
+ u8 unk_45[7];
+ u8 unk_4C[4];
+ u16 unk_50[6];
+ u8 unk_5C[4];
+ u8 unk_60;
+};
+
struct MysteryEventStruct * sub_8143D94(void);
bool32 sub_8143E1C(void);
diff --git a/include/script.h b/include/script.h
index 9e26b8a28..6ed2e8f49 100644
--- a/include/script.h
+++ b/include/script.h
@@ -62,5 +62,6 @@ u8 *GetRamScript(u8 objectId, u8 *script);
bool32 sub_80991F8(void);
u8 *sub_8099244(void);
void sub_80992A0(u8 *script, u16 scriptSize);
+bool32 sub_8069DFC(void);
#endif // GUARD_SCRIPT_H
diff --git a/include/unk_815c27c.h b/include/unk_815c27c.h
new file mode 100644
index 000000000..cc1cbb7ce
--- /dev/null
+++ b/include/unk_815c27c.h
@@ -0,0 +1,11 @@
+#ifndef GUARD_UNK_815C27C_H
+#define GUARD_UNK_815C27C_H
+
+void sub_815C6D4(void);
+void sub_815C6C4(void);
+void sub_815C8C8(void);
+void sub_815C960(void);
+void sub_815C91C(void);
+u16 sub_815C498(u8, size_t, const void *, u8);
+
+#endif //GUARD_UNK_815C27C_H
diff --git a/ld_script.txt b/ld_script.txt
index 2a42825c9..237166975 100644
--- a/ld_script.txt
+++ b/ld_script.txt
@@ -243,7 +243,7 @@ SECTIONS {
asm/roamer.o(.text);
asm/mystery_gift_menu.o(.text);
asm/link_rfu_4.o(.text);
- asm/mevent.o(.text);
+ src/mevent.o(.text);
asm/mevent_server.o(.text);
asm/mevent_8145654.o(.text);
src/menews_jisan.o(.text);
@@ -378,6 +378,8 @@ SECTIONS {
data/data_83FECCC.o(.rodata.8456C74);
src/fame_checker.o(.rodata);
data/data_845FD54.o(.rodata);
+ src/mevent.o(.rodata);
+ data/data_8466FB8.o(.rodata);
src/menews_jisan.o(.rodata);
src/menews_jisan.o(.rodata.str1.4);
data/data_8468C98.o(.rodata);
diff --git a/src/mevent.c b/src/mevent.c
new file mode 100644
index 000000000..a65433999
--- /dev/null
+++ b/src/mevent.c
@@ -0,0 +1,1029 @@
+#include "global.h"
+#include "constants/songs.h"
+#include "constants/species.h"
+#include "malloc.h"
+#include "sound.h"
+#include "easy_chat.h"
+#include "main.h"
+#include "task.h"
+#include "decompress.h"
+#include "link.h"
+#include "link_rfu_4.h"
+#include "unk_815c27c.h"
+#include "util.h"
+#include "script.h"
+#include "event_data.h"
+#include "battle_tower.h"
+#include "new_game.h"
+#include "string_util.h"
+#include "menews_jisan.h"
+#include "mevent.h"
+
+struct MEvent_Str_1
+{
+ u16 unk_000;
+ size_t unk_004;
+ const void * unk_008;
+};
+
+struct MEvent_Str_2
+{
+ u8 fill_00[0x40];
+};
+
+struct MEventTaskData1
+{
+ u16 t00;
+ u16 t02;
+ u16 t04;
+ u16 t06;
+ u8 t08;
+ u8 t09;
+ u8 t0A;
+ u8 t0B;
+ u8 t0C;
+ u8 t0D;
+ u8 t0E;
+ struct MEvent_Str_2 *t10;
+};
+
+void sub_8143910(u8 taskId);
+bool32 sub_8143E64(const struct MEventBuffer_3120_Sub * src);
+void sub_8143E9C(void);
+void sub_8143ED0(void);
+bool32 sub_8144018(const struct MEventBuffer_32E0_Sub * src);
+bool32 sub_815D794(u8 *);
+void sub_81422FC(void);
+void sub_812B484(void);
+void sub_814407C(void);
+void sub_81440B4(void);
+void sub_8144824(u32, u32, u32 *, s32);
+void sub_8144790(void);
+u8 sub_815D6B4(u8 *);
+
+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[];
+
+const u16 gUnknown_8466F00[] = {
+ 0x02a7,
+ 0x02a8,
+ 0x02a9,
+ 0x02aa,
+ 0x02ab,
+ 0x02ac,
+ 0x02ad,
+ 0x02ae,
+ 0x02af,
+ 0x02b0,
+ 0x02b1,
+ 0x02b2,
+ 0x02b3,
+ 0x02b4,
+ 0x02b5,
+ 0x02b6,
+ 0x02b7,
+ 0x02b8,
+ 0x02b9,
+ 0x02ba
+};
+
+struct MEvent_Str_1 gUnknown_3005ED0;
+
+bool32 gUnknown_203F3BC = FALSE;
+
+void sub_81435DC(struct MEvent_Str_1 *a0, size_t a1, const void * a2)
+{
+ vu16 imeBak = REG_IME;
+ REG_IME = 0;
+ gIntrTable[1] = sub_815C6D4;
+ gIntrTable[2] = sub_815C6C4;
+ sub_815C8C8();
+ sub_815C960();
+ REG_IE |= INTR_FLAG_VCOUNT;
+ REG_IME = imeBak;
+ a0->unk_000 = 0;
+ a0->unk_004 = a1;
+ a0->unk_008 = a2;
+}
+
+void sub_8143644(struct MEvent_Str_1 *unused)
+{
+ vu16 imeBak = REG_IME;
+ REG_IME = 0;
+ sub_815C960();
+ sub_815C91C();
+ RestoreSerialTimer3IntrHandlers();
+ REG_IME = imeBak;
+}
+
+u8 sub_8143674(struct MEvent_Str_1 *a0)
+{
+ u8 resp = 0;
+ a0->unk_000 = sub_815C498(1, a0->unk_004, a0->unk_008, 0);
+ if ((a0->unk_000 & 0x13) == 0x10)
+ resp = 1;
+ if (a0->unk_000 & 8)
+ resp = 2;
+ if (a0->unk_000 & 4)
+ resp = 3;
+ gUnknown_3003F84 = 0;
+ return resp;
+}
+
+void sub_81436BC(void)
+{
+ memset(gDecompressionBuffer, 0, 0x2000);
+ gUnknown_202271A = 0x5502;
+ sub_8009804();
+ SetSuppressLinkErrorMessage(TRUE);
+}
+
+bool32 sub_81436EC(void)
+{
+ vu16 imeBak = REG_IME;
+ u16 data[4];
+ REG_IME = 0;
+ *(u64 *)data = gUnknown_3003FB4;
+ REG_IME = imeBak;
+ if ( data[0] == 0xB9A0
+ && data[1] == 0xCCD0
+ && data[2] == 0xFFFF
+ && data[3] == 0xFFFF
+ )
+ return TRUE;
+ return FALSE;
+}
+
+bool32 sub_814374C(void)
+{
+ if (sub_800AA48() && GetLinkPlayerCount_2() == 2)
+ return TRUE;
+ return FALSE;
+}
+
+u32 sub_8143770(u8 * r4, u16 * r5)
+{
+ if ((*r4 == 3 || *r4 == 4 || *r4 == 5) && HasLinkErrorOccurred())
+ {
+ *r4 = 0;
+ return 3;
+ }
+ switch (*r4)
+ {
+ case 0:
+ if (sub_800AA48() && GetLinkPlayerCount_2() > 1)
+ {
+ *r4 = 1;
+ ;
+ }
+ else if (JOY_NEW(B_BUTTON))
+ {
+ *r4 = 0;
+ return 1;
+ }
+ break;
+ case 1:
+ if (++(*r5) > 5)
+ {
+ *r5 = 0;
+ *r4 = 2;
+ }
+ break;
+ case 2:
+ if (GetLinkPlayerCount_2() == 2)
+ {
+ PlaySE(SE_TOY_G);
+ sub_800A5BC();
+ *r5 = 0;
+ *r4 = 3;
+ }
+ else if (JOY_NEW(B_BUTTON))
+ {
+ *r4 = 0;
+ return 1;
+ }
+ break;
+ case 3:
+ if (++(*r5) > 30)
+ {
+ *r4 = 0;
+ return 5;
+ }
+ else if (IsLinkConnectionEstablished())
+ {
+ if (gUnknown_3003F64)
+ {
+ if (IsLinkPlayerDataExchangeComplete())
+ {
+ *r4 = 0;
+ return 2;
+ }
+ else
+ *r4 = 4;
+ }
+ else
+ *r4 = 3;
+ }
+ break;
+ case 4:
+ sub_800AA80(0);
+ *r4 = 5;
+ break;
+ case 5:
+ if (!gUnknown_3003F64)
+ {
+ *r4 = 0;
+ return 4;
+ }
+ break;
+ }
+ return 0;
+}
+
+void sub_81438A0(void)
+{
+ u8 taskId = CreateTask(sub_8143910, 0);
+ struct MEventTaskData1 *data = (struct MEventTaskData1 *)gTasks[taskId].data;
+ data->t08 = 0;
+ data->t09 = 0;
+ data->t0A = 0;
+ data->t0B = 0;
+ data->t0C = 0;
+ data->t0D = 0;
+ data->t00 = 0;
+ data->t02 = 0;
+ data->t04 = 0;
+ data->t06 = 0;
+ data->t0E = 0;
+ data->t10 = AllocZeroed(sizeof(struct MEvent_Str_2));
+}
+
+void sub_81438E8(u16 *a0)
+{
+ *a0 = 0;
+}
+
+bool32 sub_81438F0(u16 * a0, u16 a1)
+{
+ if (++(*a0) > a1)
+ {
+ *a0 = 0;
+ return TRUE;
+ }
+ 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;
+ }
+}
+
+void sub_8143D24(void)
+{
+ CpuFill32(0, &gSaveBlock1Ptr->unk_3120, sizeof(gSaveBlock1Ptr->unk_3120));
+ sub_8143ED0();
+ sub_80BDE28();
+}
+
+struct MEventBuffer_3120_Sub * sub_8143D58(void)
+{
+ return &gSaveBlock1Ptr->unk_3120.buffer_000.data;
+}
+
+struct MEventBuffer_32E0_Sub * sav1_get_mevent_buffer_1(void)
+{
+ return &gSaveBlock1Ptr->unk_3120.buffer_1c0.data;
+}
+
+struct MEventBuffer_3430_Sub * sav1_get_mevent_buffer_2(void)
+{
+ return &gSaveBlock1Ptr->unk_3120.buffer_310.data;
+}
+
+struct MysteryEventStruct * sub_8143D94(void)
+{
+ return &gSaveBlock1Ptr->unk_3120.unk_340;
+}
+
+u16 * sub_8143DA8(void)
+{
+ return gSaveBlock1Ptr->unk_3120.unk_338;
+}
+
+void sub_8143DBC(void)
+{
+ sub_8143E9C();
+}
+
+bool32 sub_8143DC8(const struct MEventBuffer_3120_Sub * src)
+{
+ if (!sub_8143E64(src))
+ return FALSE;
+ sub_8143E9C();
+ gSaveBlock1Ptr->unk_3120.buffer_000.data = *src;
+ gSaveBlock1Ptr->unk_3120.buffer_000.crc = CalcCRC16WithTable((void *)&gSaveBlock1Ptr->unk_3120.buffer_000.data, sizeof(struct MEventBuffer_3120_Sub));
+ return TRUE;
+}
+
+bool32 sub_8143E1C(void)
+{
+ if (CalcCRC16WithTable((void *)&gSaveBlock1Ptr->unk_3120.buffer_000.data, sizeof(struct MEventBuffer_3120_Sub)) != gSaveBlock1Ptr->unk_3120.buffer_000.crc)
+ return FALSE;
+ if (!sub_8143E64(&gSaveBlock1Ptr->unk_3120.buffer_000.data))
+ return FALSE;
+ return TRUE;
+}
+
+bool32 sub_8143E64(const struct MEventBuffer_3120_Sub * data)
+{
+ if (data->unk_00 == 0)
+ return FALSE;
+ return TRUE;
+}
+
+bool32 sub_8143E78(void)
+{
+ const struct MEventBuffer_3120_Sub * data = &gSaveBlock1Ptr->unk_3120.buffer_000.data;
+ if (data->unk_02 == 0)
+ return FALSE;
+ return TRUE;
+}
+
+void sub_8143E9C(void)
+{
+ CpuFill32(0, sub_8143D58(), sizeof(gSaveBlock1Ptr->unk_3120.buffer_000.data));
+ gSaveBlock1Ptr->unk_3120.buffer_000.crc = 0;
+}
+
+void sub_8143ED0(void)
+{
+ CpuFill32(0, sub_8143D94(), sizeof(struct MysteryEventStruct));
+ sub_8146C88();
+}
+
+bool32 sub_8143EF4(const u8 * src)
+{
+ const u8 * r5 = (const u8 *)&gSaveBlock1Ptr->unk_3120.buffer_000.data;
+ u32 i;
+ if (!sub_8143E1C())
+ return FALSE;
+ for (i = 0; i < sizeof(struct MEventBuffer_3120_Sub); i++)
+ {
+ if (r5[i] != src[i])
+ return FALSE;
+ }
+ return TRUE;
+}
+
+void sub_8143F38(void)
+{
+ sub_814407C();
+ sub_81440B4();
+ sub_8144790();
+ ClearRamScript();
+ sub_806E2D0();
+ sub_806E370();
+ sub_80E7524(gSaveBlock2Ptr->unk_4A0);
+}
+
+bool32 sub_8143F68(const struct MEventBuffer_32E0_Sub * data)
+{
+ struct MEventBuffer_3430_Sub * r2;
+ struct MEventBuffer_32E0_Sub * r1;
+ if (!sub_8144018(data))
+ return FALSE;
+ sub_8143F38();
+ memcpy(&gSaveBlock1Ptr->unk_3120.buffer_1c0.data, data, sizeof(struct MEventBuffer_32E0_Sub));
+ gSaveBlock1Ptr->unk_3120.buffer_1c0.crc = CalcCRC16WithTable((void *)&gSaveBlock1Ptr->unk_3120.buffer_1c0.data, sizeof(struct MEventBuffer_32E0_Sub));
+ r2 = &gSaveBlock1Ptr->unk_3120.buffer_310.data;
+ r1 = &gSaveBlock1Ptr->unk_3120.buffer_1c0.data;
+ r2->unk_06 = r1->unk_02;
+ return TRUE;
+}
+
+bool32 sub_8143FC8(void)
+{
+ if (gSaveBlock1Ptr->unk_3120.buffer_1c0.crc != CalcCRC16WithTable((void *)&gSaveBlock1Ptr->unk_3120.buffer_1c0.data, sizeof(struct MEventBuffer_32E0_Sub)))
+ return FALSE;
+ if (!sub_8144018(&gSaveBlock1Ptr->unk_3120.buffer_1c0.data))
+ return FALSE;
+ if (!sub_8069DFC())
+ return FALSE;
+ return TRUE;
+}
+
+bool32 sub_8144018(const struct MEventBuffer_32E0_Sub * data)
+{
+ if (data->unk_00 == 0)
+ return FALSE;
+ if (data->unk_08_0 > 2)
+ return FALSE;
+ if (!(data->unk_08_6 == 0 || data->unk_08_6 == 1 || data->unk_08_6 == 2))
+ return FALSE;
+ if (data->unk_08_2 > 7)
+ return FALSE;
+ if (data->unk_09 > 7)
+ return FALSE;
+ return TRUE;
+}
+
+bool32 sub_8144054(void)
+{
+ const struct MEventBuffer_32E0_Sub * data = &gSaveBlock1Ptr->unk_3120.buffer_1c0.data;
+ if (data->unk_08_6 == 0)
+ return FALSE;
+ return TRUE;
+}
+
+void sub_814407C(void)
+{
+ CpuFill32(0, &gSaveBlock1Ptr->unk_3120.buffer_1c0.data, sizeof(struct MEventBuffer_32E0_Sub));
+ gSaveBlock1Ptr->unk_3120.buffer_1c0.crc = 0;
+}
+
+void sub_81440B4(void)
+{
+ CpuFill32(0, sav1_get_mevent_buffer_2(), 18 * sizeof(u16));
+ gSaveBlock1Ptr->unk_3120.buffer_310.crc = 0;
+}
+
+u16 sub_81440E8(void)
+{
+ if (sub_8143FC8())
+ return gSaveBlock1Ptr->unk_3120.buffer_1c0.data.unk_00;
+ return 0;
+}
+
+void sub_814410C(struct MEventBuffer_32E0_Sub * buffer)
+{
+ if (buffer->unk_08_6 == 1)
+ buffer->unk_08_6 = 0;
+}
+
+bool32 sub_8144124(u16 a0)
+{
+ if (a0 >= 1000 && a0 < 1020)
+ return TRUE;
+ return FALSE;
+}
+
+bool32 sub_8144144(void)
+{
+ u16 value = sub_81440E8();
+ if (!sub_8144124(value))
+ return FALSE;
+ if (FlagGet(gUnknown_8466F00[value - 1000]) == TRUE)
+ return FALSE;
+ return TRUE;
+}
+
+s32 sub_8144184(const struct MEventBuffer_3430_Sub * data, s32 size)
+{
+ s32 r3 = 0;
+ s32 i;
+ for (i = 0; i < size; i++)
+ {
+ if (data->unk_08[1][i] && data->unk_08[0][i])
+ r3++;
+ }
+ return r3;
+}
+
+bool32 sub_81441AC(const struct MEventBuffer_3430_Sub * data1, const u16 * data2, s32 size)
+{
+ s32 i;
+ for (i = 0; i < size; i++)
+ {
+ if (data1->unk_08[1][i] == data2[1])
+ return TRUE;
+ if (data1->unk_08[0][i] == data2[0])
+ return TRUE;
+ }
+ return FALSE;
+}
+
+bool32 sub_81441F0(const u16 * data)
+{
+ if (data[1] == 0)
+ return FALSE;
+ if (data[0] == 0)
+ return FALSE;
+ if (data[0] >= NUM_SPECIES)
+ return FALSE;
+ return TRUE;
+}
+
+s32 sub_8144218(void)
+{
+ struct MEventBuffer_32E0_Sub * data;
+ if (!sub_8143FC8())
+ return 0;
+ data = &gSaveBlock1Ptr->unk_3120.buffer_1c0.data;
+ if (data->unk_08_0 != 1)
+ return 0;
+ return sub_8144184(&gSaveBlock1Ptr->unk_3120.buffer_310.data, data->unk_09);
+}
+
+bool32 sub_8144254(const u16 * data)
+{
+ struct MEventBuffer_32E0_Sub * buffer = &gSaveBlock1Ptr->unk_3120.buffer_1c0.data;
+ s32 size = buffer->unk_09;
+ s32 i;
+ if (!sub_81441F0(data))
+ return FALSE;
+ if (sub_81441AC(&gSaveBlock1Ptr->unk_3120.buffer_310.data, data, size))
+ return FALSE;
+ for (i = 0; i < size; i++)
+ {
+ if (gSaveBlock1Ptr->unk_3120.buffer_310.data.unk_08[1][i] == 0 && gSaveBlock1Ptr->unk_3120.buffer_310.data.unk_08[0][i] == 0)
+ {
+ gSaveBlock1Ptr->unk_3120.buffer_310.data.unk_08[1][i] = data[1];
+ gSaveBlock1Ptr->unk_3120.buffer_310.data.unk_08[0][i] = data[0];
+ return TRUE;
+ }
+ }
+ return FALSE;
+}
+
+void sub_81442CC(struct MEventStruct_Unk1442CC * data)
+{
+ s32 i;
+ CpuFill32(0, data, sizeof(struct MEventStruct_Unk1442CC));
+ data->unk_00 = 0x101;
+ data->unk_04 = 1;
+ data->unk_08 = 1;
+ data->unk_0C = 1;
+ data->unk_10 = 1;
+ if (sub_8143FC8())
+ {
+ data->unk_14 = sav1_get_mevent_buffer_1()->unk_00;
+ data->unk_20 = *sav1_get_mevent_buffer_2();
+ data->unk_44 = sav1_get_mevent_buffer_1()->unk_09;
+ }
+ else
+ data->unk_14 = 0;
+ for (i = 0; i < 4; i++)
+ data->unk_16[i] = gSaveBlock1Ptr->unk_3120.unk_338[i];
+ CopyUnalignedWord(data->unk_4C, gSaveBlock2Ptr->playerTrainerId);
+ StringCopy(data->unk_45, gSaveBlock2Ptr->playerName);
+ for (i = 0; i < 6; i++)
+ data->unk_50[i] = gSaveBlock1Ptr->unk2CA0[i];
+ memcpy(data->unk_5C, RomHeaderGameCode, 4);
+ data->unk_60 = RomHeaderSoftwareVersion;
+}
+
+bool32 sub_81443D4(const struct MEventStruct_Unk1442CC * data)
+{
+ if (data->unk_00 != 0x101)
+ return FALSE;
+ if (!(data->unk_04 & 1))
+ return FALSE;
+ if (!(data->unk_08 & 1))
+ return FALSE;
+ if (!(data->unk_0C & 1))
+ return FALSE;
+ if (!(data->unk_10 & 0x0F))
+ return FALSE;
+ return TRUE;
+}
+
+u32 sub_8144418(const u16 * a0, const struct MEventStruct_Unk1442CC * a1)
+{
+ if (a1->unk_14 == 0)
+ return 0;
+ if (*a0 == a1->unk_14)
+ return 1;
+ return 2;
+}
+
+u32 sub_8144434(const u16 * a0, const struct MEventStruct_Unk1442CC * a1)
+{
+ s32 r4 = a1->unk_44 - sub_8144184(&a1->unk_20, a1->unk_44);
+ if (r4 == 0)
+ return 1;
+ if (sub_81441AC(&a1->unk_20, a0, a1->unk_44))
+ return 3;
+ if (r4 == 1)
+ return 4;
+ return 2;
+}
+
+bool32 sub_8144474(const struct MEventStruct_Unk1442CC * a0, const u16 * a1)
+{
+ s32 i;
+ for (i = 0; i < 4; i++)
+ {
+ if (a0->unk_16[i] != a1[i])
+ return FALSE;
+ }
+ return TRUE;
+}
+
+s32 sub_814449C(const struct MEventStruct_Unk1442CC * a0)
+{
+ return sub_8144184(&a0->unk_20, a0->unk_44);
+}
+
+u16 sub_81444B0(const struct MEventStruct_Unk1442CC * a0, u32 command)
+{
+ switch (command)
+ {
+ case 0:
+ return a0->unk_20.unk_00;
+ case 1:
+ return a0->unk_20.unk_02;
+ case 2:
+ return a0->unk_20.unk_04;
+ case 3:
+ return sub_814449C(a0);
+ case 4:
+ return a0->unk_44;
+ default:
+ AGB_ASSERT_EX(0, "C:/WORK/POKeFRLG/src/pm_lgfr_ose/source/mevent.c", 825);
+ return 0;
+ }
+}
+
+void sub_814451C(u32 command)
+{
+ struct MEventBuffer_32E0_Sub * data = &gSaveBlock1Ptr->unk_3120.buffer_1c0.data;
+ if (data->unk_08_0 == 2)
+ {
+ u16 * dest = NULL;
+ switch (command)
+ {
+ case 0:
+ dest = &gSaveBlock1Ptr->unk_3120.buffer_310.data.unk_00;
+ break;
+ case 1:
+ dest = &gSaveBlock1Ptr->unk_3120.buffer_310.data.unk_02;
+ break;
+ case 2:
+ dest = &gSaveBlock1Ptr->unk_3120.buffer_310.data.unk_04;
+ break;
+ case 3:
+ break;
+ case 4:
+ break;
+ }
+ if (dest == NULL)
+ {
+ AGB_ASSERT_EX(0, "C:/WORK/POKeFRLG/src/pm_lgfr_ose/source/mevent.c", 868);
+ }
+ else if (++(*dest) > 999)
+ {
+ *dest = 999;
+ }
+ }
+}
+
+u16 sub_81445C0(u32 command)
+{
+ switch (command)
+ {
+ case 0:
+ {
+ struct MEventBuffer_32E0_Sub * data = &gSaveBlock1Ptr->unk_3120.buffer_1c0.data;
+ if (data->unk_08_0 == 2)
+ {
+ struct MEventBuffer_3430_Sub * buffer = &gSaveBlock1Ptr->unk_3120.buffer_310.data;
+ return buffer->unk_00;
+ }
+ break;
+ }
+ case 1:
+ {
+ struct MEventBuffer_32E0_Sub * data = &gSaveBlock1Ptr->unk_3120.buffer_1c0.data;
+ if (data->unk_08_0 == 2)
+ {
+ struct MEventBuffer_3430_Sub * buffer = &gSaveBlock1Ptr->unk_3120.buffer_310.data;
+ return buffer->unk_02;
+ }
+ break;
+ }
+ case 2:
+ {
+ struct MEventBuffer_32E0_Sub * data = &gSaveBlock1Ptr->unk_3120.buffer_1c0.data;
+ if (data->unk_08_0 == 2)
+ {
+ struct MEventBuffer_3430_Sub * buffer = &gSaveBlock1Ptr->unk_3120.buffer_310.data;
+ return buffer->unk_04;
+ }
+ break;
+ }
+ case 3:
+ {
+ struct MEventBuffer_32E0_Sub * data = &gSaveBlock1Ptr->unk_3120.buffer_1c0.data;
+ if (data->unk_08_0 == 1)
+ return sub_8144218();
+ break;
+ }
+ case 4:
+ {
+ struct MEventBuffer_32E0_Sub * data = &gSaveBlock1Ptr->unk_3120.buffer_1c0.data;
+ if (data->unk_08_0 == 1)
+ return data->unk_09;
+ break;
+ }
+ }
+ AGB_ASSERT_EX(0, "C:/WORK/POKeFRLG/src/pm_lgfr_ose/source/mevent.c", 913);
+ return 0;
+}
+
+void sub_81446C4(void)
+{
+ gUnknown_203F3BC = FALSE;
+}
+
+bool32 sub_81446D0(u16 a0)
+{
+ gUnknown_203F3BC = FALSE;
+ if (a0 == 0)
+ return FALSE;
+ if (!sub_8143FC8())
+ return FALSE;
+ if (gSaveBlock1Ptr->unk_3120.buffer_1c0.data.unk_00 != a0)
+ return FALSE;
+ gUnknown_203F3BC = TRUE;
+ return TRUE;
+}
+
+void sub_8144714(u32 a0, u32 a1)
+{
+ if (gUnknown_203F3BC)
+ {
+ switch (a0)
+ {
+ case 2:
+ sub_8144824(2, a1, gSaveBlock1Ptr->unk_3120.unk_344[1], 5);
+ break;
+ case 0:
+ sub_8144824(0, a1, gSaveBlock1Ptr->unk_3120.unk_344[0], 5);
+ break;
+ case 1:
+ sub_8144824(1, a1, gSaveBlock1Ptr->unk_3120.unk_344[0], 5);
+ break;
+ default:
+ AGB_ASSERT_EX(0, "C:/WORK/POKeFRLG/src/pm_lgfr_ose/source/mevent.c", 988);
+ }
+ }
+}
+
+void sub_8144790(void)
+{
+ CpuFill32(0, gSaveBlock1Ptr->unk_3120.unk_344, sizeof(gSaveBlock1Ptr->unk_3120.unk_344));
+}
+
+bool32 sub_81447BC(u32 a0, u32 * a1, s32 size)
+{
+ s32 i;
+ s32 j;
+
+ for (i = 0; i < size; i++)
+ {
+ if (a1[i] == a0)
+ break;
+ }
+ if (i == size)
+ {
+ for (j = size - 1; j > 0; j--)
+ {
+ a1[j] = a1[j - 1];
+ }
+ a1[0] = a0;
+ return TRUE;
+ }
+ else
+ {
+ for (j = i; j > 0; j--)
+ {
+ a1[j] = a1[j - 1];
+ }
+ a1[0] = a0;
+ return FALSE;
+ }
+}
+
+void sub_8144824(u32 a0, u32 a1, u32 * a2, s32 a3)
+{
+ if (sub_81447BC(a1, a2, a3))
+ sub_814451C(a0);
+}