diff options
-rw-r--r-- | Makefile | 2 | ||||
-rw-r--r-- | asm/mevent.s | 2438 | ||||
-rw-r--r-- | data/data_83FECCC.s | 63 | ||||
-rw-r--r-- | data/data_845FD54.s | 86 | ||||
-rw-r--r-- | data/data_8466FB8.s | 76 | ||||
-rw-r--r-- | include/battle_tower.h | 1 | ||||
-rw-r--r-- | include/easy_chat.h | 1 | ||||
-rw-r--r-- | include/event_data.h | 2 | ||||
-rw-r--r-- | include/global.h | 65 | ||||
-rw-r--r-- | include/link.h | 11 | ||||
-rw-r--r-- | include/link_rfu_4.h | 7 | ||||
-rw-r--r-- | include/main.h | 6 | ||||
-rw-r--r-- | include/mevent.h | 18 | ||||
-rw-r--r-- | include/script.h | 1 | ||||
-rw-r--r-- | include/unk_815c27c.h | 11 | ||||
-rw-r--r-- | ld_script.txt | 4 | ||||
-rw-r--r-- | src/mevent.c | 1029 |
17 files changed, 1270 insertions, 2551 deletions
@@ -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); +} |