summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--asm/code_80869E4.s1277
-rw-r--r--asm/code_8086A3C.s1050
-rw-r--r--asm/wonder_mail_main_menu.s450
-rw-r--r--data/data_80DED44.s171
-rw-r--r--data/data_810AE24.s8
-rw-r--r--data/text/wonder_mail_2.inc248
-rw-r--r--include/dungeon_entity.h37
-rw-r--r--include/gUnknown_203B418.h6
-rw-r--r--include/wonder_mail.h15
-rwxr-xr-xld_script.txt6
-rw-r--r--src/code_8041AD0.c4
-rw-r--r--src/code_80521D0_1.c10
-rw-r--r--src/code_8057824_1.c72
-rw-r--r--src/code_80869E4.c2
-rw-r--r--src/code_8086A3C.c124
-rw-r--r--src/ds_menus.c11
-rw-r--r--src/felicity_bank.c2
-rw-r--r--src/thank_you_wonder_mail.c1723
-rw-r--r--src/wonder_mail.c1113
-rw-r--r--src/wonder_mail_2.c336
-rw-r--r--src/wonder_mail_main_menu.c300
21 files changed, 3275 insertions, 3690 deletions
diff --git a/asm/code_80869E4.s b/asm/code_80869E4.s
index 6f109eb..6528560 100644
--- a/asm/code_80869E4.s
+++ b/asm/code_80869E4.s
@@ -53,1281 +53,4 @@ _08086A30:
bx r0
thumb_func_end sub_80869E4
- thumb_func_start sub_8086A3C
-sub_8086A3C:
- ldr r1, [r0, 0x70]
- movs r2, 0xAE
- lsls r2, 1
- adds r1, r2
- movs r2, 0x1
- strb r2, [r1]
- ldr r0, [r0, 0x70]
- movs r1, 0xAF
- lsls r1, 1
- adds r0, r1
- strb r2, [r0]
- bx lr
- thumb_func_end sub_8086A3C
-
- thumb_func_start sub_8086A54
-sub_8086A54:
- ldr r1, [r0, 0x70]
- movs r2, 0xAE
- lsls r2, 1
- adds r1, r2
- movs r3, 0
- movs r2, 0x1
- strb r2, [r1]
- ldr r0, [r0, 0x70]
- movs r1, 0xAF
- lsls r1, 1
- adds r0, r1
- strb r3, [r0]
- bx lr
- thumb_func_end sub_8086A54
-
- thumb_func_start sub_8086A70
-sub_8086A70:
- push {r4-r6,lr}
- adds r5, r0, 0
- lsls r2, 16
- lsrs r4, r2, 16
- ldr r3, [r5, 0x70]
- adds r2, r3, 0
- movs r0, 0xF7
- adds r0, r3
- mov r12, r0
- movs r0, 0x1
- mov r6, r12
- strb r0, [r6]
- ldrh r0, [r3, 0x10]
- strh r0, [r3, 0x12]
- cmp r1, 0
- beq _08086A94
- strh r1, [r3, 0x10]
- strh r1, [r3, 0xE]
-_08086A94:
- ldr r0, _08086AB8
- ldr r0, [r0]
- ldr r1, _08086ABC
- adds r0, r1
- strh r4, [r0]
- adds r0, r2, 0
- adds r0, 0x8C
- mov r2, r12
- ldrb r1, [r2]
- bl sub_808EC94
- adds r0, r5, 0
- bl sub_807191C
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_08086AB8: .4byte gUnknown_203B418
-_08086ABC: .4byte 0x0000066a
- thumb_func_end sub_8086A70
-
- thumb_func_start sub_8086AC0
-sub_8086AC0:
- push {lr}
- bl sub_8044B28
- lsls r0, 24
- cmp r0, 0
- bne _08086ADA
- ldr r0, _08086AE0
- ldr r0, [r0]
- ldrb r0, [r0, 0x2]
- cmp r0, 0
- bne _08086ADA
- bl sub_8097FF8
-_08086ADA:
- pop {r0}
- bx r0
- .align 2, 0
-_08086AE0: .4byte gUnknown_203B418
- thumb_func_end sub_8086AC0
-
- thumb_func_start sub_8086AE4
-sub_8086AE4:
- push {lr}
- lsls r0, 16
- asrs r1, r0, 16
- ldr r0, _08086B04
- ldr r0, [r0]
- ldr r2, _08086B08
- adds r0, r2
- ldrb r0, [r0]
- cmp r0, 0
- beq _08086B0C
- adds r0, r1, 0
- bl HasRecruitedMon
- lsls r0, 24
- lsrs r0, 24
- b _08086B0E
- .align 2, 0
-_08086B04: .4byte gUnknown_203B418
-_08086B08: .4byte 0x0000065c
-_08086B0C:
- movs r0, 0x1
-_08086B0E:
- pop {r1}
- bx r1
- thumb_func_end sub_8086AE4
-
- thumb_func_start sub_8086B14
-sub_8086B14:
- push {r4-r6,lr}
- mov r6, r8
- push {r6}
- bl sub_8085480
- mov r8, r0
- movs r0, 0x4
- bl sub_8085680
- adds r6, r0, 0
- movs r0, 0x3
- bl sub_8085680
- adds r5, r0, 0
- movs r0, 0x72
- bl sub_8083E88
- bl sub_8085374
- bl sub_80854D4
- movs r0, 0x4
- bl sub_8085930
- ldr r4, _08086B8C
- adds r0, r4, 0
- bl sub_80855E4
- adds r0, r5, 0
- bl _call_via_r4
- ldr r0, [r6, 0x70]
- movs r1, 0xAE
- lsls r1, 1
- adds r0, r1
- movs r1, 0x1
- strb r1, [r0]
- mov r2, r8
- movs r3, 0x4
- ldrsh r0, [r2, r3]
- movs r3, 0x6
- ldrsh r1, [r2, r3]
- subs r1, 0x2
- bl sub_8085860
- ldr r4, _08086B90
- adds r0, r4, 0
- movs r1, 0x32
- bl CopySpeciesNametoBuffer
- adds r4, 0x50
- adds r0, r4, 0
- movs r1, 0xFC
- bl CopySpeciesNametoBuffer
- pop {r3}
- mov r8, r3
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_08086B8C: .4byte sub_8086A3C
-_08086B90: .4byte gUnknown_202E038
- thumb_func_end sub_8086B14
-
- thumb_func_start sub_8086B94
-sub_8086B94:
- push {r4-r6,lr}
- bl sub_8085480
- adds r6, r0, 0
- movs r0, 0x4
- bl sub_8085680
- adds r5, r0, 0
- movs r0, 0x3
- bl sub_8085680
- movs r4, 0x87
- lsls r4, 2
- adds r1, r4, 0
- movs r2, 0
- bl sub_8068FE0
- adds r0, r5, 0
- adds r1, r4, 0
- movs r2, 0
- bl sub_8068FE0
- bl sub_80854D4
- movs r0, 0x4
- bl sub_8085930
- movs r1, 0x4
- ldrsh r0, [r6, r1]
- movs r2, 0x6
- ldrsh r1, [r6, r2]
- bl sub_8085860
- pop {r4-r6}
- pop {r0}
- bx r0
- thumb_func_end sub_8086B94
-
- thumb_func_start sub_8086BDC
-sub_8086BDC:
- push {lr}
- lsls r0, 24
- lsrs r0, 24
- lsls r1, 24
- movs r2, 0xFF
- lsls r2, 24
- adds r1, r2
- lsrs r1, 24
- cmp r1, 0x1
- bhi _08086C02
- cmp r0, 0x3
- bne _08086C02
- movs r0, 0x1
- bl sub_8097FA8
- ldr r0, _08086C08
- ldr r1, [r0]
- movs r0, 0x1
- strb r0, [r1, 0x2]
-_08086C02:
- pop {r0}
- bx r0
- .align 2, 0
-_08086C08: .4byte gUnknown_203B418
- thumb_func_end sub_8086BDC
-
- thumb_func_start SkarmonyPreFightDialogue
-SkarmonyPreFightDialogue:
- push {r4-r6,lr}
- mov r6, r9
- mov r5, r8
- push {r5,r6}
- sub sp, 0x10
- bl sub_8085480
- mov r8, r0
- bl sub_808548C
- mov r9, r0
- movs r0, 0x4
- bl sub_8085680
- adds r4, r0, 0
- movs r0, 0x3
- bl sub_8085680
- adds r6, r0, 0
- ldr r0, [r4, 0xC]
- str r0, [sp]
- ldr r0, [r4, 0x10]
- movs r1, 0xC0
- lsls r1, 6
- adds r0, r1
- str r0, [sp, 0x4]
- ldr r0, [r6, 0xC]
- str r0, [sp, 0x8]
- ldr r0, [r6, 0x10]
- movs r2, 0x80
- lsls r2, 6
- adds r0, r2
- add r5, sp, 0x8
- str r0, [r5, 0x4]
- bl sub_8086448
- movs r0, 0xA
- movs r1, 0x46
- bl sub_803E708
- mov r0, r9
- bl sub_80862BC
- movs r0, 0x20
- movs r1, 0x46
- bl sub_803E708
- movs r0, 0xA
- movs r1, 0x46
- bl sub_803E708
- ldr r0, _08086D84
- bl sub_8052910
- mov r0, sp
- movs r1, 0x40
- bl sub_80858AC
- movs r0, 0x40
- movs r1, 0x46
- bl sub_803E708
- adds r0, r5, 0
- movs r1, 0x30
- bl sub_80858AC
- ldr r0, _08086D88
- bl sub_8052910
- movs r0, 0xA
- movs r1, 0x46
- bl sub_803E708
- ldr r0, [r4, 0x70]
- ldr r2, _08086D8C
- adds r1, r0, r2
- movs r0, 0x1
- strb r0, [r1]
- mov r0, sp
- movs r1, 0x30
- bl sub_80858AC
- ldr r0, _08086D90
- bl sub_8052910
- movs r0, 0xA
- movs r1, 0x46
- bl sub_803E708
- adds r0, r5, 0
- movs r1, 0x20
- bl sub_80858AC
- movs r0, 0x20
- movs r1, 0x46
- bl sub_803E708
- adds r0, r6, 0
- bl sub_8086E74
- ldr r0, _08086D94
- bl sub_8052910
- movs r0, 0xA
- movs r1, 0x46
- bl sub_803E708
- ldr r0, _08086D98
- bl sub_8052910
- movs r0, 0xA
- movs r1, 0x46
- bl sub_803E708
- ldr r0, _08086D9C
- bl sub_8052910
- movs r0, 0xA
- movs r1, 0x46
- bl sub_803E708
- ldr r0, _08086DA0
- bl sub_8052910
- movs r0, 0xA
- movs r1, 0x46
- bl sub_803E708
- adds r0, r6, 0
- movs r1, 0xD
- movs r2, 0
- bl sub_806CDD4
- ldr r0, _08086DA4
- bl sub_8052910
- movs r0, 0xA
- movs r1, 0x46
- bl sub_803E708
- mov r0, r9
- movs r1, 0x4
- movs r2, 0x1
- movs r3, 0x2
- bl sub_80869E4
- mov r0, r8
- movs r1, 0x4
- movs r2, 0x2
- movs r3, 0x6
- bl sub_80869E4
- ldr r0, _08086DA8
- bl sub_8052910
- mov r0, r9
- movs r1, 0x4
- movs r2, 0x2
- movs r3, 0x4
- bl sub_80869E4
- mov r0, r8
- movs r1, 0x4
- movs r2, 0x1
- movs r3, 0x4
- bl sub_80869E4
- movs r0, 0xA
- movs r1, 0x46
- bl sub_803E708
- movs r0, 0xB
- bl sub_8083E88
- movs r0, 0xC
- add r8, r0
- mov r0, r8
- movs r1, 0x10
- bl sub_80858AC
- add sp, 0x10
- pop {r3,r4}
- mov r8, r3
- mov r9, r4
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_08086D84: .4byte gUnknown_8100768
-_08086D88: .4byte gUnknown_8100798
-_08086D8C: .4byte 0x0000015d
-_08086D90: .4byte gUnknown_8100820
-_08086D94: .4byte gUnknown_8100844
-_08086D98: .4byte gUnknown_8100880
-_08086D9C: .4byte gUnknown_8100928
-_08086DA0: .4byte gUnknown_8100A04
-_08086DA4: .4byte gUnknown_8100B80
-_08086DA8: .4byte gUnknown_8100BC0
- thumb_func_end SkarmonyPreFightDialogue
-
- thumb_func_start SkarmonyReFightDialogue
-SkarmonyReFightDialogue:
- push {r4,r5,lr}
- sub sp, 0x8
- bl sub_8085480
- adds r5, r0, 0
- movs r0, 0x3
- bl sub_8085680
- adds r4, r0, 0
- ldr r0, [r4, 0xC]
- str r0, [sp]
- ldr r0, [r4, 0x10]
- movs r1, 0x80
- lsls r1, 6
- adds r0, r1
- str r0, [sp, 0x4]
- bl sub_8086448
- movs r0, 0xA
- movs r1, 0x46
- bl sub_803E708
- adds r0, r4, 0
- bl sub_8086E74
- mov r0, sp
- movs r1, 0x10
- bl sub_80858AC
- ldr r0, _08086E34
- bl sub_8052910
- movs r0, 0xA
- movs r1, 0x46
- bl sub_803E708
- ldr r0, _08086E38
- bl sub_8052910
- movs r0, 0xA
- movs r1, 0x46
- bl sub_803E708
- adds r0, r4, 0
- movs r1, 0xD
- movs r2, 0
- bl sub_806CDD4
- ldr r0, _08086E3C
- bl sub_8052910
- movs r0, 0xA
- movs r1, 0x46
- bl sub_803E708
- adds r5, 0xC
- adds r0, r5, 0
- movs r1, 0x10
- bl sub_80858AC
- movs r0, 0xB
- bl sub_8083E88
- add sp, 0x8
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_08086E34: .4byte gUnknown_8100C90
-_08086E38: .4byte gUnknown_8100CBC
-_08086E3C: .4byte gUnknown_8100CDC
- thumb_func_end SkarmonyReFightDialogue
-
- thumb_func_start sub_8086E40
-sub_8086E40:
- push {lr}
- bl sub_8085480
- bl SpriteLookAroundEffect
- movs r0, 0xA
- movs r1, 0x46
- bl sub_803E708
- ldr r0, _08086E6C
- bl sub_8052910
- movs r0, 0xA
- movs r1, 0x46
- bl sub_803E708
- ldr r0, _08086E70
- ldr r1, [r0]
- movs r0, 0x1
- strb r0, [r1, 0x2]
- pop {r0}
- bx r0
- .align 2, 0
-_08086E6C: .4byte gUnknown_8100D3C
-_08086E70: .4byte gUnknown_203B418
- thumb_func_end sub_8086E40
-
- thumb_func_start sub_8086E74
-sub_8086E74:
- push {r4,lr}
- adds r4, r0, 0
- movs r1, 0xF
- movs r2, 0
- bl sub_806CDD4
- adds r0, r4, 0
- bl sub_8086A54
- movs r0, 0xFC
- lsls r0, 1
- bl PlaySoundEffect
- movs r0, 0x44
- movs r1, 0x46
- bl sub_803E708
- pop {r4}
- pop {r0}
- bx r0
- thumb_func_end sub_8086E74
-
- thumb_func_start sub_8086E9C
-sub_8086E9C:
- push {r4,r5,lr}
- bl sub_8085480
- adds r5, r0, 0
- movs r0, 0x72
- bl sub_8083E88
- bl sub_8085374
- bl sub_80854D4
- movs r0, 0x4
- bl sub_8085930
- ldr r4, _08086EF8
- adds r0, r4, 0
- bl sub_80855E4
- adds r0, r4, 0
- bl sub_808563C
- movs r1, 0x4
- ldrsh r0, [r5, r1]
- movs r2, 0x6
- ldrsh r1, [r5, r2]
- subs r1, 0x3
- bl sub_8085860
- ldr r4, _08086EFC
- adds r0, r4, 0
- movs r1, 0xB
- bl CopySpeciesNametoBuffer
- adds r0, r4, 0
- adds r0, 0x50
- movs r1, 0x5E
- bl CopySpeciesNametoBuffer
- adds r4, 0xA0
- adds r0, r4, 0
- movs r1, 0xA
- bl CopySpeciesNametoBuffer
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_08086EF8: .4byte sub_8086A3C
-_08086EFC: .4byte gUnknown_202E038
- thumb_func_end sub_8086E9C
-
- thumb_func_start sub_8086F00
-sub_8086F00:
- push {r4,lr}
- bl sub_8085480
- adds r4, r0, 0
- bl sub_80854D4
- movs r0, 0x4
- bl sub_8085930
- ldr r0, _08086F4C
- bl sub_80855E4
- movs r1, 0x4
- ldrsh r0, [r4, r1]
- movs r2, 0x6
- ldrsh r1, [r4, r2]
- subs r1, 0x3
- bl sub_8085860
- ldr r4, _08086F50
- adds r0, r4, 0
- movs r1, 0xB
- bl CopySpeciesNametoBuffer
- adds r0, r4, 0
- adds r0, 0x50
- movs r1, 0x5E
- bl CopySpeciesNametoBuffer
- adds r4, 0xA0
- adds r0, r4, 0
- movs r1, 0xA
- bl CopySpeciesNametoBuffer
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_08086F4C: .4byte sub_8086A3C
-_08086F50: .4byte gUnknown_202E038
- thumb_func_end sub_8086F00
-
- thumb_func_start sub_8086F54
-sub_8086F54:
- push {r4-r6,lr}
- lsls r0, 24
- lsrs r6, r0, 24
- lsls r1, 24
- movs r0, 0xFC
- lsls r0, 24
- adds r1, r0
- lsrs r1, 24
- cmp r1, 0x1
- bhi _08086FA8
- movs r5, 0
-_08086F6A:
- ldr r0, _08086FB0
- ldr r0, [r0]
- lsls r1, r5, 2
- ldr r2, _08086FB4
- adds r0, r2
- adds r0, r1
- ldr r4, [r0]
- adds r0, r4, 0
- bl sub_80450E0
- lsls r0, 24
- cmp r0, 0
- beq _08086F8E
- ldr r0, [r4, 0x70]
- adds r0, 0xA4
- ldrb r0, [r0]
- cmp r0, r6
- bne _08086FA8
-_08086F8E:
- adds r5, 0x1
- cmp r5, 0xF
- ble _08086F6A
- movs r0, 0
- cmp r0, 0
- bne _08086FA8
- movs r0, 0x3
- bl sub_8097FA8
- ldr r0, _08086FB0
- ldr r1, [r0]
- movs r0, 0x1
- strb r0, [r1, 0x2]
-_08086FA8:
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_08086FB0: .4byte gUnknown_203B418
-_08086FB4: .4byte 0x0001358c
- thumb_func_end sub_8086F54
-
- thumb_func_start TeamMeaniePreFightDialogue
-TeamMeaniePreFightDialogue:
- push {r4,lr}
- bl sub_8085480
- adds r4, r0, 0
- bl sub_8086448
- movs r0, 0xA
- movs r1, 0x46
- bl sub_803E708
- ldr r0, _08087048
- bl sub_8052910
- movs r0, 0xA
- movs r1, 0x46
- bl sub_803E708
- ldr r0, _0808704C
- bl sub_8052910
- movs r0, 0xA
- movs r1, 0x46
- bl sub_803E708
- bl sub_8087144
- movs r0, 0xA
- bl sub_8083E88
- ldr r0, _08087050
- bl sub_8052910
- movs r0, 0xA
- movs r1, 0x46
- bl sub_803E708
- ldr r0, _08087054
- bl sub_8052910
- movs r0, 0xA
- movs r1, 0x46
- bl sub_803E708
- ldr r0, _08087058
- bl sub_8052910
- movs r0, 0xA
- movs r1, 0x46
- bl sub_803E708
- ldr r0, _0808705C
- bl sub_8052910
- movs r0, 0xA
- movs r1, 0x46
- bl sub_803E708
- ldr r0, _08087060
- bl sub_8052910
- movs r0, 0xA
- movs r1, 0x46
- bl sub_803E708
- adds r4, 0xC
- adds r0, r4, 0
- movs r1, 0x10
- bl sub_80858AC
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_08087048: .4byte gUnknown_8100DB0
-_0808704C: .4byte gUnknown_8100E64
-_08087050: .4byte gUnknown_8100E88
-_08087054: .4byte gUnknown_8100F14
-_08087058: .4byte gUnknown_8101004
-_0808705C: .4byte gUnknown_8101050
-_08087060: .4byte gUnknown_81010D0
- thumb_func_end TeamMeaniePreFightDialogue
-
- thumb_func_start TeamMeanieReFightDialogue
-TeamMeanieReFightDialogue:
- push {r4,r5,lr}
- bl sub_8085480
- adds r4, r0, 0
- bl sub_808548C
- adds r5, r0, 0
- bl sub_8086448
- ldr r0, _08087118
- bl sub_8052910
- movs r0, 0xA
- movs r1, 0x46
- bl sub_803E708
- ldr r0, _0808711C
- bl sub_8052910
- movs r0, 0xA
- movs r1, 0x46
- bl sub_803E708
- bl sub_8087144
- movs r0, 0xA
- movs r1, 0x46
- bl sub_803E708
- ldr r0, _08087120
- bl sub_8052910
- movs r0, 0xA
- movs r1, 0x46
- bl sub_803E708
- ldr r0, _08087124
- bl sub_8052910
- movs r0, 0xA
- movs r1, 0x46
- bl sub_803E708
- adds r0, r4, 0
- movs r1, 0x6
- movs r2, 0x4
- bl sub_806CDD4
- adds r0, r5, 0
- movs r1, 0x6
- movs r2, 0x4
- bl sub_806CDD4
- movs r0, 0xA
- movs r1, 0x46
- bl sub_803E708
- adds r0, r4, 0
- movs r1, 0x7
- movs r2, 0x4
- bl sub_806CDD4
- adds r0, r5, 0
- movs r1, 0x7
- movs r2, 0x4
- bl sub_806CDD4
- movs r0, 0xA
- movs r1, 0x46
- bl sub_803E708
- ldr r0, _08087128
- bl sub_8052910
- ldr r0, _0808712C
- bl sub_8052910
- movs r0, 0xA
- movs r1, 0x46
- bl sub_803E708
- adds r4, 0xC
- adds r0, r4, 0
- movs r1, 0x10
- bl sub_80858AC
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_08087118: .4byte gUnknown_8101164
-_0808711C: .4byte gUnknown_8100E64
-_08087120: .4byte gUnknown_8101240
-_08087124: .4byte gUnknown_8101310
-_08087128: .4byte gUnknown_810137C
-_0808712C: .4byte gUnknown_8101408
- thumb_func_end TeamMeanieReFightDialogue
-
- thumb_func_start sub_8087130
-sub_8087130:
- push {lr}
- bl sub_8086448
- ldr r0, _08087140
- bl sub_80866C4
- pop {r0}
- bx r0
- .align 2, 0
-_08087140: .4byte gUnknown_8101440
- thumb_func_end sub_8087130
-
- thumb_func_start sub_8087144
-sub_8087144:
- push {r4-r7,lr}
- mov r7, r9
- mov r6, r8
- push {r6,r7}
- sub sp, 0xF0
- movs r0, 0x5
- bl sub_8085680
- adds r7, r0, 0
- movs r0, 0x6
- bl sub_8085680
- mov r8, r0
- movs r0, 0x7
- bl sub_8085680
- mov r9, r0
- ldr r1, _080871E0
- mov r0, sp
- movs r2, 0x38
- bl memcpy
- add r6, sp, 0x38
- ldr r1, _080871E4
- adds r0, r6, 0
- movs r2, 0x38
- bl memcpy
- add r4, sp, 0x70
- ldr r1, _080871E8
- adds r0, r4, 0
- movs r2, 0x38
- bl memcpy
- add r5, sp, 0xA8
- mov r0, sp
- str r0, [r5]
- str r6, [r5, 0x4]
- str r4, [r5, 0x8]
- add r4, sp, 0xB4
- str r7, [r4]
- mov r3, r8
- str r3, [r4, 0x4]
- mov r0, r9
- str r0, [r4, 0x8]
- movs r0, 0xA
- bl sub_8083E88
- adds r0, r7, 0
- bl sub_8086A54
- mov r0, r8
- bl sub_8086A54
- mov r0, r9
- bl sub_8086A54
- add r6, sp, 0xC0
- adds r0, r6, 0
- adds r1, r5, 0
- adds r2, r4, 0
- movs r3, 0x3
- bl sub_8085B4C
- ldr r0, [r7, 0x70]
- ldr r2, _080871EC
- adds r0, r2
- movs r1, 0x1
- strb r1, [r0]
- mov r3, r8
- ldr r0, [r3, 0x70]
- adds r0, r2
- strb r1, [r0]
- mov r3, r9
- ldr r0, [r3, 0x70]
- adds r0, r2
- strb r1, [r0]
- b _080871F6
- .align 2, 0
-_080871E0: .4byte gUnknown_810739C
-_080871E4: .4byte gUnknown_81073D4
-_080871E8: .4byte gUnknown_810740C
-_080871EC: .4byte 0x0000015f
-_080871F0:
- movs r0, 0x46
- bl sub_803E46C
-_080871F6:
- adds r0, r6, 0
- bl sub_8085B80
- lsls r0, 24
- lsrs r2, r0, 24
- cmp r2, 0
- bne _080871F0
- ldr r0, [r7, 0x70]
- ldr r1, _0808722C
- adds r0, r1
- strb r2, [r0]
- mov r3, r8
- ldr r0, [r3, 0x70]
- adds r0, r1
- strb r2, [r0]
- mov r3, r9
- ldr r0, [r3, 0x70]
- adds r0, r1
- strb r2, [r0]
- add sp, 0xF0
- pop {r3,r4}
- mov r8, r3
- mov r9, r4
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_0808722C: .4byte 0x0000015f
- thumb_func_end sub_8087144
-
- thumb_func_start sub_8087230
-sub_8087230:
- push {r4-r6,lr}
- bl sub_8085480
- adds r6, r0, 0
- movs r0, 0x8
- bl sub_8085680
- adds r5, r0, 0
- movs r0, 0x72
- bl sub_8083E88
- bl sub_8085374
- bl sub_80854D4
- movs r0, 0x4
- bl sub_8085930
- ldr r4, _08087294
- adds r0, r4, 0
- bl sub_80855E4
- adds r0, r5, 0
- movs r1, 0
- bl sub_8085918
- adds r0, r5, 0
- bl _call_via_r4
- movs r1, 0x4
- ldrsh r0, [r6, r1]
- movs r2, 0x6
- ldrsh r1, [r6, r2]
- subs r1, 0x3
- bl sub_8085860
- ldr r4, _08087298
- movs r1, 0x96
- lsls r1, 1
- adds r0, r4, 0
- bl CopySpeciesNametoBuffer
- adds r4, 0x50
- adds r0, r4, 0
- movs r1, 0x91
- bl CopySpeciesNametoBuffer
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_08087294: .4byte sub_8086A3C
-_08087298: .4byte gUnknown_202E038
- thumb_func_end sub_8087230
-
- thumb_func_start sub_808729C
-sub_808729C:
- push {r4-r6,lr}
- sub sp, 0x4
- bl sub_8085480
- adds r5, r0, 0
- movs r0, 0x8
- bl sub_8085680
- adds r4, r0, 0
- bl sub_80854D4
- movs r0, 0x4
- bl sub_8085930
- ldr r6, _080872DC
- adds r0, r6, 0
- bl sub_80855E4
- movs r0, 0x91
- bl sub_8086AE4
- lsls r0, 24
- lsrs r1, r0, 24
- cmp r1, 0
- beq _080872E0
- movs r1, 0x87
- lsls r1, 2
- adds r0, r4, 0
- movs r2, 0
- bl sub_8068FE0
- b _08087300
- .align 2, 0
-_080872DC: .4byte sub_8086A3C
-_080872E0:
- ldr r0, _0808732C
- movs r3, 0
- ldrsh r2, [r0, r3]
- str r1, [sp]
- adds r0, r4, 0
- adds r1, r4, 0
- movs r3, 0
- bl sub_8072008
- adds r0, r4, 0
- movs r1, 0
- bl sub_8085918
- adds r0, r4, 0
- bl _call_via_r6
-_08087300:
- movs r1, 0x4
- ldrsh r0, [r5, r1]
- movs r2, 0x6
- ldrsh r1, [r5, r2]
- subs r1, 0x3
- bl sub_8085860
- ldr r4, _08087330
- movs r1, 0x96
- lsls r1, 1
- adds r0, r4, 0
- bl CopySpeciesNametoBuffer
- adds r4, 0x50
- adds r0, r4, 0
- movs r1, 0x91
- bl CopySpeciesNametoBuffer
- add sp, 0x4
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_0808732C: .4byte gUnknown_80F57CC
-_08087330: .4byte gUnknown_202E038
- thumb_func_end sub_808729C
-
- thumb_func_start sub_8087334
-sub_8087334:
- push {lr}
- lsls r0, 24
- lsrs r0, 24
- lsls r1, 24
- movs r2, 0xF9
- lsls r2, 24
- adds r1, r2
- lsrs r1, 24
- cmp r1, 0x2
- bhi _0808735A
- cmp r0, 0x8
- bne _0808735A
- movs r0, 0x5
- bl sub_8097FA8
- ldr r0, _08087360
- ldr r1, [r0]
- movs r0, 0x1
- strb r0, [r1, 0x2]
-_0808735A:
- pop {r0}
- bx r0
- .align 2, 0
-_08087360: .4byte gUnknown_203B418
- thumb_func_end sub_8087334
-
- thumb_func_start ZapdosPreFightDialogue
-ZapdosPreFightDialogue:
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- sub sp, 0x70
- bl sub_8085480
- mov r9, r0
- bl sub_808548C
- adds r6, r0, 0
- movs r0, 0x8
- bl sub_8085680
- str r0, [sp, 0x68]
- bl sub_8086448
- movs r0, 0xA
- movs r1, 0x46
- bl sub_803E708
- adds r0, r6, 0
- bl SpriteLookAroundEffect
- movs r0, 0xA
- movs r1, 0x46
- bl sub_803E708
- adds r0, r6, 0
- movs r1, 0x4
- movs r2, 0x1
- movs r3, 0x2
- bl sub_80869E4
- mov r0, r9
- movs r1, 0x4
- movs r2, 0x2
- movs r3, 0x6
- bl sub_80869E4
- ldr r0, _08087470
- bl sub_8052910
- movs r0, 0xA
- movs r1, 0x46
- bl sub_803E708
- adds r0, r6, 0
- movs r1, 0x4
- movs r2, 0x2
- movs r3, 0x4
- bl sub_80869E4
- mov r0, r9
- movs r1, 0x4
- movs r2, 0x1
- movs r3, 0x4
- bl sub_80869E4
- ldr r0, _08087474
- bl sub_8052910
- movs r0, 0xA
- movs r1, 0x46
- bl sub_803E708
- movs r0, 0x3
- bl sub_808775C
- bl sub_8083F14
- movs r0, 0xED
- lsls r0, 1
- bl PlaySoundEffect
- ldr r0, _08087478
- bl sub_8052910
- ldr r0, [sp, 0x68]
- bl sub_8087704
- movs r0, 0x9
- bl sub_8083E88
- adds r0, r6, 0
- movs r1, 0x6
- movs r2, 0x4
- bl sub_806CDD4
- ldr r0, _0808747C
- bl sub_8052910
- movs r0, 0xA
- movs r1, 0x46
- bl sub_803E708
- adds r0, r6, 0
- movs r1, 0x2
- movs r2, 0x1
- movs r3, 0x1
- bl sub_80869E4
- mov r1, sp
- ldr r0, _08087480
- ldm r0!, {r2-r4}
- stm r1!, {r2-r4}
- ldm r0!, {r2-r4}
- stm r1!, {r2-r4}
- mov r0, sp
- str r0, [sp, 0x58]
- str r6, [sp, 0x5C]
- add r4, sp, 0x18
- add r1, sp, 0x58
- add r2, sp, 0x5C
- adds r0, r4, 0
- movs r3, 0x1
- bl sub_8085B4C
- ldr r0, [r6, 0x70]
- ldr r2, _08087484
- adds r1, r0, r2
- movs r0, 0x1
- strb r0, [r1]
- add r7, sp, 0x28
- add r3, sp, 0x48
- mov r8, r3
- add r0, sp, 0x60
- mov r10, r0
- mov r1, sp
- adds r1, 0x64
- str r1, [sp, 0x6C]
- b _0808748E
- .align 2, 0
-_08087470: .4byte gUnknown_81014B0
-_08087474: .4byte gUnknown_8101504
-_08087478: .4byte gUnknown_81015A0
-_0808747C: .4byte gUnknown_81015D4
-_08087480: .4byte gUnknown_810744C
-_08087484: .4byte 0x0000015f
-_08087488:
- movs r0, 0x46
- bl sub_803E46C
-_0808748E:
- adds r0, r4, 0
- bl sub_8085B80
- lsls r0, 24
- lsrs r5, r0, 24
- cmp r5, 0
- bne _08087488
- ldr r0, [r6, 0x70]
- ldr r2, _08087510
- adds r0, r2
- strb r5, [r0]
- ldr r0, [r6, 0x70]
- ldr r4, _08087514
- adds r0, r4
- movs r1, 0x1
- strb r1, [r0]
- adds r0, r6, 0
- movs r1, 0x2
- movs r2, 0x2
- movs r3, 0x4
- bl sub_80869E4
- ldr r0, _08087518
- bl sub_8052910
- movs r0, 0x3C
- movs r1, 0x46
- bl sub_803E708
- ldr r0, _0808751C
- bl sub_8052910
- movs r0, 0xA
- movs r1, 0x46
- bl sub_803E708
- ldr r0, [r6, 0x70]
- adds r0, r4
- strb r5, [r0]
- adds r0, r6, 0
- movs r1, 0x2
- movs r2, 0x2
- movs r3, 0x5
- bl sub_80869E4
- adds r1, r7, 0
- ldr r0, _08087520
- ldm r0!, {r2-r4}
- stm r1!, {r2-r4}
- ldm r0!, {r2-r4}
- stm r1!, {r2-r4}
- ldm r0!, {r3,r4}
- stm r1!, {r3,r4}
- str r7, [sp, 0x60]
- str r6, [sp, 0x64]
- mov r0, r8
- mov r1, r10
- ldr r2, [sp, 0x6C]
- movs r3, 0x1
- bl sub_8085B4C
- mov r4, r9
- adds r4, 0xC
- b _0808752A
- .align 2, 0
-_08087510: .4byte 0x0000015f
-_08087514: .4byte 0x0000015d
-_08087518: .4byte gUnknown_81015E8
-_0808751C: .4byte gUnknown_8101624
-_08087520: .4byte gUnknown_8107464
-_08087524:
- movs r0, 0x46
- bl sub_803E46C
-_0808752A:
- mov r0, r8
- bl sub_8085B80
- lsls r0, 24
- cmp r0, 0
- bne _08087524
- adds r0, r6, 0
- movs r1, 0x2
- movs r2, 0x1
- movs r3, 0x3
- bl sub_80869E4
- ldr r0, _080875B0
- bl sub_8052910
- movs r0, 0xA
- movs r1, 0x46
- bl sub_803E708
- movs r0, 0x3
- bl sub_808775C
- ldr r0, _080875B4
- bl sub_8052910
- movs r0, 0xA
- movs r1, 0x46
- bl sub_803E708
- movs r0, 0x1
- bl sub_808775C
- ldr r0, _080875B8
- bl sub_8052910
- movs r0, 0xA
- movs r1, 0x46
- bl sub_803E708
- movs r0, 0x2
- bl sub_808775C
- ldr r0, _080875BC
- bl sub_8052910
- movs r0, 0xA
- movs r1, 0x46
- bl sub_803E708
- movs r1, 0x96
- lsls r1, 1
- ldr r0, [sp, 0x68]
- movs r2, 0xB
- bl sub_8086A70
- adds r0, r4, 0
- movs r1, 0x10
- bl sub_80858AC
- add sp, 0x70
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_080875B0: .4byte gUnknown_810165C
-_080875B4: .4byte gUnknown_8101750
-_080875B8: .4byte gUnknown_810178C
-_080875BC: .4byte gUnknown_81017B4
- thumb_func_end ZapdosPreFightDialogue
-
.align 2,0
diff --git a/asm/code_8086A3C.s b/asm/code_8086A3C.s
new file mode 100644
index 0000000..b0fe243
--- /dev/null
+++ b/asm/code_8086A3C.s
@@ -0,0 +1,1050 @@
+ .include "constants/gba_constants.inc"
+ .include "asm/macros.inc"
+
+ .syntax unified
+
+ .text
+
+ thumb_func_start SkarmonyPreFightDialogue
+SkarmonyPreFightDialogue:
+ push {r4-r6,lr}
+ mov r6, r9
+ mov r5, r8
+ push {r5,r6}
+ sub sp, 0x10
+ bl sub_8085480
+ mov r8, r0
+ bl sub_808548C
+ mov r9, r0
+ movs r0, 0x4
+ bl sub_8085680
+ adds r4, r0, 0
+ movs r0, 0x3
+ bl sub_8085680
+ adds r6, r0, 0
+ ldr r0, [r4, 0xC]
+ str r0, [sp]
+ ldr r0, [r4, 0x10]
+ movs r1, 0xC0
+ lsls r1, 6
+ adds r0, r1
+ str r0, [sp, 0x4]
+ ldr r0, [r6, 0xC]
+ str r0, [sp, 0x8]
+ ldr r0, [r6, 0x10]
+ movs r2, 0x80
+ lsls r2, 6
+ adds r0, r2
+ add r5, sp, 0x8
+ str r0, [r5, 0x4]
+ bl sub_8086448
+ movs r0, 0xA
+ movs r1, 0x46
+ bl sub_803E708
+ mov r0, r9
+ bl sub_80862BC
+ movs r0, 0x20
+ movs r1, 0x46
+ bl sub_803E708
+ movs r0, 0xA
+ movs r1, 0x46
+ bl sub_803E708
+ ldr r0, _08086D84
+ bl sub_8052910
+ mov r0, sp
+ movs r1, 0x40
+ bl sub_80858AC
+ movs r0, 0x40
+ movs r1, 0x46
+ bl sub_803E708
+ adds r0, r5, 0
+ movs r1, 0x30
+ bl sub_80858AC
+ ldr r0, _08086D88
+ bl sub_8052910
+ movs r0, 0xA
+ movs r1, 0x46
+ bl sub_803E708
+ ldr r0, [r4, 0x70]
+ ldr r2, _08086D8C
+ adds r1, r0, r2
+ movs r0, 0x1
+ strb r0, [r1]
+ mov r0, sp
+ movs r1, 0x30
+ bl sub_80858AC
+ ldr r0, _08086D90
+ bl sub_8052910
+ movs r0, 0xA
+ movs r1, 0x46
+ bl sub_803E708
+ adds r0, r5, 0
+ movs r1, 0x20
+ bl sub_80858AC
+ movs r0, 0x20
+ movs r1, 0x46
+ bl sub_803E708
+ adds r0, r6, 0
+ bl sub_8086E74
+ ldr r0, _08086D94
+ bl sub_8052910
+ movs r0, 0xA
+ movs r1, 0x46
+ bl sub_803E708
+ ldr r0, _08086D98
+ bl sub_8052910
+ movs r0, 0xA
+ movs r1, 0x46
+ bl sub_803E708
+ ldr r0, _08086D9C
+ bl sub_8052910
+ movs r0, 0xA
+ movs r1, 0x46
+ bl sub_803E708
+ ldr r0, _08086DA0
+ bl sub_8052910
+ movs r0, 0xA
+ movs r1, 0x46
+ bl sub_803E708
+ adds r0, r6, 0
+ movs r1, 0xD
+ movs r2, 0
+ bl sub_806CDD4
+ ldr r0, _08086DA4
+ bl sub_8052910
+ movs r0, 0xA
+ movs r1, 0x46
+ bl sub_803E708
+ mov r0, r9
+ movs r1, 0x4
+ movs r2, 0x1
+ movs r3, 0x2
+ bl sub_80869E4
+ mov r0, r8
+ movs r1, 0x4
+ movs r2, 0x2
+ movs r3, 0x6
+ bl sub_80869E4
+ ldr r0, _08086DA8
+ bl sub_8052910
+ mov r0, r9
+ movs r1, 0x4
+ movs r2, 0x2
+ movs r3, 0x4
+ bl sub_80869E4
+ mov r0, r8
+ movs r1, 0x4
+ movs r2, 0x1
+ movs r3, 0x4
+ bl sub_80869E4
+ movs r0, 0xA
+ movs r1, 0x46
+ bl sub_803E708
+ movs r0, 0xB
+ bl sub_8083E88
+ movs r0, 0xC
+ add r8, r0
+ mov r0, r8
+ movs r1, 0x10
+ bl sub_80858AC
+ add sp, 0x10
+ pop {r3,r4}
+ mov r8, r3
+ mov r9, r4
+ pop {r4-r6}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_08086D84: .4byte gUnknown_8100768
+_08086D88: .4byte gUnknown_8100798
+_08086D8C: .4byte 0x0000015d
+_08086D90: .4byte gUnknown_8100820
+_08086D94: .4byte gUnknown_8100844
+_08086D98: .4byte gUnknown_8100880
+_08086D9C: .4byte gUnknown_8100928
+_08086DA0: .4byte gUnknown_8100A04
+_08086DA4: .4byte gUnknown_8100B80
+_08086DA8: .4byte gUnknown_8100BC0
+ thumb_func_end SkarmonyPreFightDialogue
+
+ thumb_func_start SkarmonyReFightDialogue
+SkarmonyReFightDialogue:
+ push {r4,r5,lr}
+ sub sp, 0x8
+ bl sub_8085480
+ adds r5, r0, 0
+ movs r0, 0x3
+ bl sub_8085680
+ adds r4, r0, 0
+ ldr r0, [r4, 0xC]
+ str r0, [sp]
+ ldr r0, [r4, 0x10]
+ movs r1, 0x80
+ lsls r1, 6
+ adds r0, r1
+ str r0, [sp, 0x4]
+ bl sub_8086448
+ movs r0, 0xA
+ movs r1, 0x46
+ bl sub_803E708
+ adds r0, r4, 0
+ bl sub_8086E74
+ mov r0, sp
+ movs r1, 0x10
+ bl sub_80858AC
+ ldr r0, _08086E34
+ bl sub_8052910
+ movs r0, 0xA
+ movs r1, 0x46
+ bl sub_803E708
+ ldr r0, _08086E38
+ bl sub_8052910
+ movs r0, 0xA
+ movs r1, 0x46
+ bl sub_803E708
+ adds r0, r4, 0
+ movs r1, 0xD
+ movs r2, 0
+ bl sub_806CDD4
+ ldr r0, _08086E3C
+ bl sub_8052910
+ movs r0, 0xA
+ movs r1, 0x46
+ bl sub_803E708
+ adds r5, 0xC
+ adds r0, r5, 0
+ movs r1, 0x10
+ bl sub_80858AC
+ movs r0, 0xB
+ bl sub_8083E88
+ add sp, 0x8
+ pop {r4,r5}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_08086E34: .4byte gUnknown_8100C90
+_08086E38: .4byte gUnknown_8100CBC
+_08086E3C: .4byte gUnknown_8100CDC
+ thumb_func_end SkarmonyReFightDialogue
+
+ thumb_func_start sub_8086E40
+sub_8086E40:
+ push {lr}
+ bl sub_8085480
+ bl SpriteLookAroundEffect
+ movs r0, 0xA
+ movs r1, 0x46
+ bl sub_803E708
+ ldr r0, _08086E6C
+ bl sub_8052910
+ movs r0, 0xA
+ movs r1, 0x46
+ bl sub_803E708
+ ldr r0, _08086E70
+ ldr r1, [r0]
+ movs r0, 0x1
+ strb r0, [r1, 0x2]
+ pop {r0}
+ bx r0
+ .align 2, 0
+_08086E6C: .4byte gUnknown_8100D3C
+_08086E70: .4byte gUnknown_203B418
+ thumb_func_end sub_8086E40
+
+ thumb_func_start sub_8086E74
+sub_8086E74:
+ push {r4,lr}
+ adds r4, r0, 0
+ movs r1, 0xF
+ movs r2, 0
+ bl sub_806CDD4
+ adds r0, r4, 0
+ bl sub_8086A54
+ movs r0, 0xFC
+ lsls r0, 1
+ bl PlaySoundEffect
+ movs r0, 0x44
+ movs r1, 0x46
+ bl sub_803E708
+ pop {r4}
+ pop {r0}
+ bx r0
+ thumb_func_end sub_8086E74
+
+ thumb_func_start sub_8086E9C
+sub_8086E9C:
+ push {r4,r5,lr}
+ bl sub_8085480
+ adds r5, r0, 0
+ movs r0, 0x72
+ bl sub_8083E88
+ bl sub_8085374
+ bl sub_80854D4
+ movs r0, 0x4
+ bl sub_8085930
+ ldr r4, _08086EF8
+ adds r0, r4, 0
+ bl sub_80855E4
+ adds r0, r4, 0
+ bl sub_808563C
+ movs r1, 0x4
+ ldrsh r0, [r5, r1]
+ movs r2, 0x6
+ ldrsh r1, [r5, r2]
+ subs r1, 0x3
+ bl sub_8085860
+ ldr r4, _08086EFC
+ adds r0, r4, 0
+ movs r1, 0xB
+ bl CopySpeciesNametoBuffer
+ adds r0, r4, 0
+ adds r0, 0x50
+ movs r1, 0x5E
+ bl CopySpeciesNametoBuffer
+ adds r4, 0xA0
+ adds r0, r4, 0
+ movs r1, 0xA
+ bl CopySpeciesNametoBuffer
+ pop {r4,r5}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_08086EF8: .4byte sub_8086A3C
+_08086EFC: .4byte gUnknown_202E038
+ thumb_func_end sub_8086E9C
+
+ thumb_func_start sub_8086F00
+sub_8086F00:
+ push {r4,lr}
+ bl sub_8085480
+ adds r4, r0, 0
+ bl sub_80854D4
+ movs r0, 0x4
+ bl sub_8085930
+ ldr r0, _08086F4C
+ bl sub_80855E4
+ movs r1, 0x4
+ ldrsh r0, [r4, r1]
+ movs r2, 0x6
+ ldrsh r1, [r4, r2]
+ subs r1, 0x3
+ bl sub_8085860
+ ldr r4, _08086F50
+ adds r0, r4, 0
+ movs r1, 0xB
+ bl CopySpeciesNametoBuffer
+ adds r0, r4, 0
+ adds r0, 0x50
+ movs r1, 0x5E
+ bl CopySpeciesNametoBuffer
+ adds r4, 0xA0
+ adds r0, r4, 0
+ movs r1, 0xA
+ bl CopySpeciesNametoBuffer
+ pop {r4}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_08086F4C: .4byte sub_8086A3C
+_08086F50: .4byte gUnknown_202E038
+ thumb_func_end sub_8086F00
+
+ thumb_func_start sub_8086F54
+sub_8086F54:
+ push {r4-r6,lr}
+ lsls r0, 24
+ lsrs r6, r0, 24
+ lsls r1, 24
+ movs r0, 0xFC
+ lsls r0, 24
+ adds r1, r0
+ lsrs r1, 24
+ cmp r1, 0x1
+ bhi _08086FA8
+ movs r5, 0
+_08086F6A:
+ ldr r0, _08086FB0
+ ldr r0, [r0]
+ lsls r1, r5, 2
+ ldr r2, _08086FB4
+ adds r0, r2
+ adds r0, r1
+ ldr r4, [r0]
+ adds r0, r4, 0
+ bl sub_80450E0
+ lsls r0, 24
+ cmp r0, 0
+ beq _08086F8E
+ ldr r0, [r4, 0x70]
+ adds r0, 0xA4
+ ldrb r0, [r0]
+ cmp r0, r6
+ bne _08086FA8
+_08086F8E:
+ adds r5, 0x1
+ cmp r5, 0xF
+ ble _08086F6A
+ movs r0, 0
+ cmp r0, 0
+ bne _08086FA8
+ movs r0, 0x3
+ bl sub_8097FA8
+ ldr r0, _08086FB0
+ ldr r1, [r0]
+ movs r0, 0x1
+ strb r0, [r1, 0x2]
+_08086FA8:
+ pop {r4-r6}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_08086FB0: .4byte gUnknown_203B418
+_08086FB4: .4byte 0x0001358c
+ thumb_func_end sub_8086F54
+
+ thumb_func_start TeamMeaniePreFightDialogue
+TeamMeaniePreFightDialogue:
+ push {r4,lr}
+ bl sub_8085480
+ adds r4, r0, 0
+ bl sub_8086448
+ movs r0, 0xA
+ movs r1, 0x46
+ bl sub_803E708
+ ldr r0, _08087048
+ bl sub_8052910
+ movs r0, 0xA
+ movs r1, 0x46
+ bl sub_803E708
+ ldr r0, _0808704C
+ bl sub_8052910
+ movs r0, 0xA
+ movs r1, 0x46
+ bl sub_803E708
+ bl sub_8087144
+ movs r0, 0xA
+ bl sub_8083E88
+ ldr r0, _08087050
+ bl sub_8052910
+ movs r0, 0xA
+ movs r1, 0x46
+ bl sub_803E708
+ ldr r0, _08087054
+ bl sub_8052910
+ movs r0, 0xA
+ movs r1, 0x46
+ bl sub_803E708
+ ldr r0, _08087058
+ bl sub_8052910
+ movs r0, 0xA
+ movs r1, 0x46
+ bl sub_803E708
+ ldr r0, _0808705C
+ bl sub_8052910
+ movs r0, 0xA
+ movs r1, 0x46
+ bl sub_803E708
+ ldr r0, _08087060
+ bl sub_8052910
+ movs r0, 0xA
+ movs r1, 0x46
+ bl sub_803E708
+ adds r4, 0xC
+ adds r0, r4, 0
+ movs r1, 0x10
+ bl sub_80858AC
+ pop {r4}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_08087048: .4byte gUnknown_8100DB0
+_0808704C: .4byte gUnknown_8100E64
+_08087050: .4byte gUnknown_8100E88
+_08087054: .4byte gUnknown_8100F14
+_08087058: .4byte gUnknown_8101004
+_0808705C: .4byte gUnknown_8101050
+_08087060: .4byte gUnknown_81010D0
+ thumb_func_end TeamMeaniePreFightDialogue
+
+ thumb_func_start TeamMeanieReFightDialogue
+TeamMeanieReFightDialogue:
+ push {r4,r5,lr}
+ bl sub_8085480
+ adds r4, r0, 0
+ bl sub_808548C
+ adds r5, r0, 0
+ bl sub_8086448
+ ldr r0, _08087118
+ bl sub_8052910
+ movs r0, 0xA
+ movs r1, 0x46
+ bl sub_803E708
+ ldr r0, _0808711C
+ bl sub_8052910
+ movs r0, 0xA
+ movs r1, 0x46
+ bl sub_803E708
+ bl sub_8087144
+ movs r0, 0xA
+ movs r1, 0x46
+ bl sub_803E708
+ ldr r0, _08087120
+ bl sub_8052910
+ movs r0, 0xA
+ movs r1, 0x46
+ bl sub_803E708
+ ldr r0, _08087124
+ bl sub_8052910
+ movs r0, 0xA
+ movs r1, 0x46
+ bl sub_803E708
+ adds r0, r4, 0
+ movs r1, 0x6
+ movs r2, 0x4
+ bl sub_806CDD4
+ adds r0, r5, 0
+ movs r1, 0x6
+ movs r2, 0x4
+ bl sub_806CDD4
+ movs r0, 0xA
+ movs r1, 0x46
+ bl sub_803E708
+ adds r0, r4, 0
+ movs r1, 0x7
+ movs r2, 0x4
+ bl sub_806CDD4
+ adds r0, r5, 0
+ movs r1, 0x7
+ movs r2, 0x4
+ bl sub_806CDD4
+ movs r0, 0xA
+ movs r1, 0x46
+ bl sub_803E708
+ ldr r0, _08087128
+ bl sub_8052910
+ ldr r0, _0808712C
+ bl sub_8052910
+ movs r0, 0xA
+ movs r1, 0x46
+ bl sub_803E708
+ adds r4, 0xC
+ adds r0, r4, 0
+ movs r1, 0x10
+ bl sub_80858AC
+ pop {r4,r5}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_08087118: .4byte gUnknown_8101164
+_0808711C: .4byte gUnknown_8100E64
+_08087120: .4byte gUnknown_8101240
+_08087124: .4byte gUnknown_8101310
+_08087128: .4byte gUnknown_810137C
+_0808712C: .4byte gUnknown_8101408
+ thumb_func_end TeamMeanieReFightDialogue
+
+ thumb_func_start sub_8087130
+sub_8087130:
+ push {lr}
+ bl sub_8086448
+ ldr r0, _08087140
+ bl sub_80866C4
+ pop {r0}
+ bx r0
+ .align 2, 0
+_08087140: .4byte gUnknown_8101440
+ thumb_func_end sub_8087130
+
+ thumb_func_start sub_8087144
+sub_8087144:
+ push {r4-r7,lr}
+ mov r7, r9
+ mov r6, r8
+ push {r6,r7}
+ sub sp, 0xF0
+ movs r0, 0x5
+ bl sub_8085680
+ adds r7, r0, 0
+ movs r0, 0x6
+ bl sub_8085680
+ mov r8, r0
+ movs r0, 0x7
+ bl sub_8085680
+ mov r9, r0
+ ldr r1, _080871E0
+ mov r0, sp
+ movs r2, 0x38
+ bl memcpy
+ add r6, sp, 0x38
+ ldr r1, _080871E4
+ adds r0, r6, 0
+ movs r2, 0x38
+ bl memcpy
+ add r4, sp, 0x70
+ ldr r1, _080871E8
+ adds r0, r4, 0
+ movs r2, 0x38
+ bl memcpy
+ add r5, sp, 0xA8
+ mov r0, sp
+ str r0, [r5]
+ str r6, [r5, 0x4]
+ str r4, [r5, 0x8]
+ add r4, sp, 0xB4
+ str r7, [r4]
+ mov r3, r8
+ str r3, [r4, 0x4]
+ mov r0, r9
+ str r0, [r4, 0x8]
+ movs r0, 0xA
+ bl sub_8083E88
+ adds r0, r7, 0
+ bl sub_8086A54
+ mov r0, r8
+ bl sub_8086A54
+ mov r0, r9
+ bl sub_8086A54
+ add r6, sp, 0xC0
+ adds r0, r6, 0
+ adds r1, r5, 0
+ adds r2, r4, 0
+ movs r3, 0x3
+ bl sub_8085B4C
+ ldr r0, [r7, 0x70]
+ ldr r2, _080871EC
+ adds r0, r2
+ movs r1, 0x1
+ strb r1, [r0]
+ mov r3, r8
+ ldr r0, [r3, 0x70]
+ adds r0, r2
+ strb r1, [r0]
+ mov r3, r9
+ ldr r0, [r3, 0x70]
+ adds r0, r2
+ strb r1, [r0]
+ b _080871F6
+ .align 2, 0
+_080871E0: .4byte gUnknown_810739C
+_080871E4: .4byte gUnknown_81073D4
+_080871E8: .4byte gUnknown_810740C
+_080871EC: .4byte 0x0000015f
+_080871F0:
+ movs r0, 0x46
+ bl sub_803E46C
+_080871F6:
+ adds r0, r6, 0
+ bl sub_8085B80
+ lsls r0, 24
+ lsrs r2, r0, 24
+ cmp r2, 0
+ bne _080871F0
+ ldr r0, [r7, 0x70]
+ ldr r1, _0808722C
+ adds r0, r1
+ strb r2, [r0]
+ mov r3, r8
+ ldr r0, [r3, 0x70]
+ adds r0, r1
+ strb r2, [r0]
+ mov r3, r9
+ ldr r0, [r3, 0x70]
+ adds r0, r1
+ strb r2, [r0]
+ add sp, 0xF0
+ pop {r3,r4}
+ mov r8, r3
+ mov r9, r4
+ pop {r4-r7}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_0808722C: .4byte 0x0000015f
+ thumb_func_end sub_8087144
+
+ thumb_func_start sub_8087230
+sub_8087230:
+ push {r4-r6,lr}
+ bl sub_8085480
+ adds r6, r0, 0
+ movs r0, 0x8
+ bl sub_8085680
+ adds r5, r0, 0
+ movs r0, 0x72
+ bl sub_8083E88
+ bl sub_8085374
+ bl sub_80854D4
+ movs r0, 0x4
+ bl sub_8085930
+ ldr r4, _08087294
+ adds r0, r4, 0
+ bl sub_80855E4
+ adds r0, r5, 0
+ movs r1, 0
+ bl sub_8085918
+ adds r0, r5, 0
+ bl _call_via_r4
+ movs r1, 0x4
+ ldrsh r0, [r6, r1]
+ movs r2, 0x6
+ ldrsh r1, [r6, r2]
+ subs r1, 0x3
+ bl sub_8085860
+ ldr r4, _08087298
+ movs r1, 0x96
+ lsls r1, 1
+ adds r0, r4, 0
+ bl CopySpeciesNametoBuffer
+ adds r4, 0x50
+ adds r0, r4, 0
+ movs r1, 0x91
+ bl CopySpeciesNametoBuffer
+ pop {r4-r6}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_08087294: .4byte sub_8086A3C
+_08087298: .4byte gUnknown_202E038
+ thumb_func_end sub_8087230
+
+ thumb_func_start sub_808729C
+sub_808729C:
+ push {r4-r6,lr}
+ sub sp, 0x4
+ bl sub_8085480
+ adds r5, r0, 0
+ movs r0, 0x8
+ bl sub_8085680
+ adds r4, r0, 0
+ bl sub_80854D4
+ movs r0, 0x4
+ bl sub_8085930
+ ldr r6, _080872DC
+ adds r0, r6, 0
+ bl sub_80855E4
+ movs r0, 0x91
+ bl sub_8086AE4
+ lsls r0, 24
+ lsrs r1, r0, 24
+ cmp r1, 0
+ beq _080872E0
+ movs r1, 0x87
+ lsls r1, 2
+ adds r0, r4, 0
+ movs r2, 0
+ bl sub_8068FE0
+ b _08087300
+ .align 2, 0
+_080872DC: .4byte sub_8086A3C
+_080872E0:
+ ldr r0, _0808732C
+ movs r3, 0
+ ldrsh r2, [r0, r3]
+ str r1, [sp]
+ adds r0, r4, 0
+ adds r1, r4, 0
+ movs r3, 0
+ bl sub_8072008
+ adds r0, r4, 0
+ movs r1, 0
+ bl sub_8085918
+ adds r0, r4, 0
+ bl _call_via_r6
+_08087300:
+ movs r1, 0x4
+ ldrsh r0, [r5, r1]
+ movs r2, 0x6
+ ldrsh r1, [r5, r2]
+ subs r1, 0x3
+ bl sub_8085860
+ ldr r4, _08087330
+ movs r1, 0x96
+ lsls r1, 1
+ adds r0, r4, 0
+ bl CopySpeciesNametoBuffer
+ adds r4, 0x50
+ adds r0, r4, 0
+ movs r1, 0x91
+ bl CopySpeciesNametoBuffer
+ add sp, 0x4
+ pop {r4-r6}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_0808732C: .4byte gUnknown_80F57CC
+_08087330: .4byte gUnknown_202E038
+ thumb_func_end sub_808729C
+
+ thumb_func_start sub_8087334
+sub_8087334:
+ push {lr}
+ lsls r0, 24
+ lsrs r0, 24
+ lsls r1, 24
+ movs r2, 0xF9
+ lsls r2, 24
+ adds r1, r2
+ lsrs r1, 24
+ cmp r1, 0x2
+ bhi _0808735A
+ cmp r0, 0x8
+ bne _0808735A
+ movs r0, 0x5
+ bl sub_8097FA8
+ ldr r0, _08087360
+ ldr r1, [r0]
+ movs r0, 0x1
+ strb r0, [r1, 0x2]
+_0808735A:
+ pop {r0}
+ bx r0
+ .align 2, 0
+_08087360: .4byte gUnknown_203B418
+ thumb_func_end sub_8087334
+
+ thumb_func_start ZapdosPreFightDialogue
+ZapdosPreFightDialogue:
+ push {r4-r7,lr}
+ mov r7, r10
+ mov r6, r9
+ mov r5, r8
+ push {r5-r7}
+ sub sp, 0x70
+ bl sub_8085480
+ mov r9, r0
+ bl sub_808548C
+ adds r6, r0, 0
+ movs r0, 0x8
+ bl sub_8085680
+ str r0, [sp, 0x68]
+ bl sub_8086448
+ movs r0, 0xA
+ movs r1, 0x46
+ bl sub_803E708
+ adds r0, r6, 0
+ bl SpriteLookAroundEffect
+ movs r0, 0xA
+ movs r1, 0x46
+ bl sub_803E708
+ adds r0, r6, 0
+ movs r1, 0x4
+ movs r2, 0x1
+ movs r3, 0x2
+ bl sub_80869E4
+ mov r0, r9
+ movs r1, 0x4
+ movs r2, 0x2
+ movs r3, 0x6
+ bl sub_80869E4
+ ldr r0, _08087470
+ bl sub_8052910
+ movs r0, 0xA
+ movs r1, 0x46
+ bl sub_803E708
+ adds r0, r6, 0
+ movs r1, 0x4
+ movs r2, 0x2
+ movs r3, 0x4
+ bl sub_80869E4
+ mov r0, r9
+ movs r1, 0x4
+ movs r2, 0x1
+ movs r3, 0x4
+ bl sub_80869E4
+ ldr r0, _08087474
+ bl sub_8052910
+ movs r0, 0xA
+ movs r1, 0x46
+ bl sub_803E708
+ movs r0, 0x3
+ bl sub_808775C
+ bl sub_8083F14
+ movs r0, 0xED
+ lsls r0, 1
+ bl PlaySoundEffect
+ ldr r0, _08087478
+ bl sub_8052910
+ ldr r0, [sp, 0x68]
+ bl sub_8087704
+ movs r0, 0x9
+ bl sub_8083E88
+ adds r0, r6, 0
+ movs r1, 0x6
+ movs r2, 0x4
+ bl sub_806CDD4
+ ldr r0, _0808747C
+ bl sub_8052910
+ movs r0, 0xA
+ movs r1, 0x46
+ bl sub_803E708
+ adds r0, r6, 0
+ movs r1, 0x2
+ movs r2, 0x1
+ movs r3, 0x1
+ bl sub_80869E4
+ mov r1, sp
+ ldr r0, _08087480
+ ldm r0!, {r2-r4}
+ stm r1!, {r2-r4}
+ ldm r0!, {r2-r4}
+ stm r1!, {r2-r4}
+ mov r0, sp
+ str r0, [sp, 0x58]
+ str r6, [sp, 0x5C]
+ add r4, sp, 0x18
+ add r1, sp, 0x58
+ add r2, sp, 0x5C
+ adds r0, r4, 0
+ movs r3, 0x1
+ bl sub_8085B4C
+ ldr r0, [r6, 0x70]
+ ldr r2, _08087484
+ adds r1, r0, r2
+ movs r0, 0x1
+ strb r0, [r1]
+ add r7, sp, 0x28
+ add r3, sp, 0x48
+ mov r8, r3
+ add r0, sp, 0x60
+ mov r10, r0
+ mov r1, sp
+ adds r1, 0x64
+ str r1, [sp, 0x6C]
+ b _0808748E
+ .align 2, 0
+_08087470: .4byte gUnknown_81014B0
+_08087474: .4byte gUnknown_8101504
+_08087478: .4byte gUnknown_81015A0
+_0808747C: .4byte gUnknown_81015D4
+_08087480: .4byte gUnknown_810744C
+_08087484: .4byte 0x0000015f
+_08087488:
+ movs r0, 0x46
+ bl sub_803E46C
+_0808748E:
+ adds r0, r4, 0
+ bl sub_8085B80
+ lsls r0, 24
+ lsrs r5, r0, 24
+ cmp r5, 0
+ bne _08087488
+ ldr r0, [r6, 0x70]
+ ldr r2, _08087510
+ adds r0, r2
+ strb r5, [r0]
+ ldr r0, [r6, 0x70]
+ ldr r4, _08087514
+ adds r0, r4
+ movs r1, 0x1
+ strb r1, [r0]
+ adds r0, r6, 0
+ movs r1, 0x2
+ movs r2, 0x2
+ movs r3, 0x4
+ bl sub_80869E4
+ ldr r0, _08087518
+ bl sub_8052910
+ movs r0, 0x3C
+ movs r1, 0x46
+ bl sub_803E708
+ ldr r0, _0808751C
+ bl sub_8052910
+ movs r0, 0xA
+ movs r1, 0x46
+ bl sub_803E708
+ ldr r0, [r6, 0x70]
+ adds r0, r4
+ strb r5, [r0]
+ adds r0, r6, 0
+ movs r1, 0x2
+ movs r2, 0x2
+ movs r3, 0x5
+ bl sub_80869E4
+ adds r1, r7, 0
+ ldr r0, _08087520
+ ldm r0!, {r2-r4}
+ stm r1!, {r2-r4}
+ ldm r0!, {r2-r4}
+ stm r1!, {r2-r4}
+ ldm r0!, {r3,r4}
+ stm r1!, {r3,r4}
+ str r7, [sp, 0x60]
+ str r6, [sp, 0x64]
+ mov r0, r8
+ mov r1, r10
+ ldr r2, [sp, 0x6C]
+ movs r3, 0x1
+ bl sub_8085B4C
+ mov r4, r9
+ adds r4, 0xC
+ b _0808752A
+ .align 2, 0
+_08087510: .4byte 0x0000015f
+_08087514: .4byte 0x0000015d
+_08087518: .4byte gUnknown_81015E8
+_0808751C: .4byte gUnknown_8101624
+_08087520: .4byte gUnknown_8107464
+_08087524:
+ movs r0, 0x46
+ bl sub_803E46C
+_0808752A:
+ mov r0, r8
+ bl sub_8085B80
+ lsls r0, 24
+ cmp r0, 0
+ bne _08087524
+ adds r0, r6, 0
+ movs r1, 0x2
+ movs r2, 0x1
+ movs r3, 0x3
+ bl sub_80869E4
+ ldr r0, _080875B0
+ bl sub_8052910
+ movs r0, 0xA
+ movs r1, 0x46
+ bl sub_803E708
+ movs r0, 0x3
+ bl sub_808775C
+ ldr r0, _080875B4
+ bl sub_8052910
+ movs r0, 0xA
+ movs r1, 0x46
+ bl sub_803E708
+ movs r0, 0x1
+ bl sub_808775C
+ ldr r0, _080875B8
+ bl sub_8052910
+ movs r0, 0xA
+ movs r1, 0x46
+ bl sub_803E708
+ movs r0, 0x2
+ bl sub_808775C
+ ldr r0, _080875BC
+ bl sub_8052910
+ movs r0, 0xA
+ movs r1, 0x46
+ bl sub_803E708
+ movs r1, 0x96
+ lsls r1, 1
+ ldr r0, [sp, 0x68]
+ movs r2, 0xB
+ bl SetupBossFightHP
+ adds r0, r4, 0
+ movs r1, 0x10
+ bl sub_80858AC
+ add sp, 0x70
+ pop {r3-r5}
+ mov r8, r3
+ mov r9, r4
+ mov r10, r5
+ pop {r4-r7}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080875B0: .4byte gUnknown_810165C
+_080875B4: .4byte gUnknown_8101750
+_080875B8: .4byte gUnknown_810178C
+_080875BC: .4byte gUnknown_81017B4
+ thumb_func_end ZapdosPreFightDialogue
+
+ .align 2,0
diff --git a/asm/wonder_mail_main_menu.s b/asm/wonder_mail_main_menu.s
deleted file mode 100644
index f8029fb..0000000
--- a/asm/wonder_mail_main_menu.s
+++ /dev/null
@@ -1,450 +0,0 @@
- .include "constants/gba_constants.inc"
- .include "asm/macros.inc"
-
- .syntax unified
-
- .text
-
- thumb_func_start sub_8039E18
-sub_8039E18:
- push {r4-r7,lr}
- mov r7, r8
- push {r7}
- sub sp, 0x14
- ldr r1, _08039E38
- ldr r0, [r1]
- ldrb r0, [r0]
- adds r6, r1, 0
- cmp r0, 0x13
- bls _08039E2E
- b _0803A1AA
-_08039E2E:
- lsls r0, 2
- ldr r1, _08039E3C
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .align 2, 0
-_08039E38: .4byte gUnknown_203B3E8
-_08039E3C: .4byte _08039E40
- .align 2, 0
-_08039E40:
- .4byte _08039E90
- .4byte _08039EB8
- .4byte _0803A1AA
- .4byte _08039EC8
- .4byte _08039EDC
- .4byte _0803A1AA
- .4byte _08039FF4
- .4byte _08039FA4
- .4byte _08039FCC
- .4byte _0803A00C
- .4byte _0803A1AA
- .4byte _0803A1AA
- .4byte _0803A1AA
- .4byte _08039F04
- .4byte _08039F68
- .4byte _0803A1AA
- .4byte _08039FAC
- .4byte _0803A152
- .4byte _0803A168
- .4byte _0803A18E
-_08039E90:
- ldr r0, _08039EB0
- ldr r3, _08039EB4
- movs r2, 0
- str r2, [sp]
- movs r1, 0x4
- str r1, [sp, 0x4]
- str r2, [sp, 0x8]
- str r2, [sp, 0xC]
- adds r1, 0xFD
- str r1, [sp, 0x10]
- movs r1, 0
- movs r2, 0x1
- bl sub_8014248
- b _0803A1AA
- .align 2, 0
-_08039EB0: .4byte gUnknown_80E7AC4
-_08039EB4: .4byte gUnknown_80E786C
-_08039EB8:
- ldr r0, _08039EC0
- ldr r3, _08039EC4
- b _08039EE0
- .align 2, 0
-_08039EC0: .4byte gUnknown_80E7AE0
-_08039EC4: .4byte gUnknown_80E7894
-_08039EC8:
- bl ResetUnusedInputStruct
- movs r0, 0
- movs r1, 0x1
- movs r2, 0x1
- bl sub_800641C
- bl sub_802EF48
- b _0803A1AA
-_08039EDC:
- ldr r0, _08039EFC
- ldr r3, _08039F00
-_08039EE0:
- movs r2, 0
- str r2, [sp]
- movs r1, 0x4
- str r1, [sp, 0x4]
- str r2, [sp, 0x8]
- str r2, [sp, 0xC]
- adds r1, 0xFD
- str r1, [sp, 0x10]
- movs r1, 0
- movs r2, 0x3
- bl sub_8014248
- b _0803A1AA
- .align 2, 0
-_08039EFC: .4byte gUnknown_80E7B14
-_08039F00: .4byte gUnknown_80E78D8
-_08039F04:
- ldr r0, [r6]
- ldr r2, _08039F3C
- adds r1, r0, r2
- movs r3, 0xF0
- lsls r3, 2
- adds r0, r3
- ldm r0!, {r2-r4}
- stm r1!, {r2-r4}
- ldm r0!, {r2,r4}
- stm r1!, {r2,r4}
- ldr r2, [r6]
- ldr r3, _08039F40
- adds r0, r2, r3
- ldrb r0, [r0]
- cmp r0, 0x4
- bne _08039F44
- movs r4, 0x91
- lsls r4, 3
- adds r1, r2, r4
- subs r3, 0xA2
- adds r0, r2, r3
- str r0, [r1]
- adds r4, 0x4
- adds r1, r2, r4
- adds r3, 0x28
- adds r0, r2, r3
- str r0, [r1]
- b _08039F54
- .align 2, 0
-_08039F3C: .4byte 0x00000474
-_08039F40: .4byte 0x00000476
-_08039F44:
- movs r4, 0x91
- lsls r4, 3
- adds r0, r2, r4
- movs r1, 0
- str r1, [r0]
- ldr r3, _08039F60
- adds r0, r2, r3
- str r1, [r0]
-_08039F54:
- ldr r0, [r6]
- ldr r4, _08039F64
- adds r0, r4
- bl sub_802D098
- b _0803A1AA
- .align 2, 0
-_08039F60: .4byte 0x0000048c
-_08039F64: .4byte 0x00000474
-_08039F68:
- ldr r1, [r6]
- movs r2, 0x93
- lsls r2, 3
- adds r0, r1, r2
- ldrb r0, [r0]
- cmp r0, 0
- beq _08039F9C
- movs r3, 0x92
- lsls r3, 3
- adds r0, r1, r3
- ldr r0, [r0]
- cmp r0, 0x4
- bne _08039F84
- b _0803A1AA
-_08039F84:
- cmp r0, 0x4
- bgt _08039F8E
- cmp r0, 0x3
- beq _08039F94
- b _0803A1AA
-_08039F8E:
- cmp r0, 0x5
- beq _08039F94
- b _0803A1AA
-_08039F94:
- ldr r0, _08039F98
- b _0803A154
- .align 2, 0
-_08039F98: .4byte gUnknown_80E7B48
-_08039F9C:
- ldr r0, _08039FA0
- b _0803A154
- .align 2, 0
-_08039FA0: .4byte gUnknown_80E7B48
-_08039FA4:
- ldr r0, _08039FA8
- b _0803A154
- .align 2, 0
-_08039FA8: .4byte gUnknown_80E7B68
-_08039FAC:
- ldr r0, [r6]
- movs r4, 0x93
- lsls r4, 3
- adds r0, r4
- ldrb r0, [r0]
- cmp r0, 0
- beq _08039FC4
- ldr r0, _08039FC0
- b _0803A154
- .align 2, 0
-_08039FC0: .4byte gUnknown_80E7B88
-_08039FC4:
- ldr r0, _08039FC8
- b _0803A154
- .align 2, 0
-_08039FC8: .4byte gUnknown_80E7BC8
-_08039FCC:
- ldr r0, _08039FEC
- ldr r3, _08039FF0
- movs r2, 0
- str r2, [sp]
- movs r1, 0x4
- str r1, [sp, 0x4]
- str r2, [sp, 0x8]
- str r2, [sp, 0xC]
- adds r1, 0xFD
- str r1, [sp, 0x10]
- movs r1, 0
- movs r2, 0x6
- bl sub_8014248
- b _0803A1AA
- .align 2, 0
-_08039FEC: .4byte gUnknown_80E7BEC
-_08039FF0: .4byte gUnknown_80E78F8
-_08039FF4:
- movs r0, 0
- bl nullsub_23
- ldr r0, _0803A008
- movs r1, 0
- movs r2, 0
- movs r3, 0
- bl sub_80141B4
- b _0803A1AA
- .align 2, 0
-_0803A008: .4byte gUnknown_80E7C48
-_0803A00C:
- ldr r0, [r6]
- movs r1, 0x94
- lsls r1, 2
- mov r8, r1
- add r0, r8
- movs r1, 0
- str r1, [r0]
- bl sub_8011830
- ldr r0, [r6]
- movs r7, 0x93
- lsls r7, 2
- adds r0, r7
- ldr r0, [r0]
- bl sub_8037B28
- ldr r2, [r6]
- mov r3, r8
- adds r1, r2, r3
- str r0, [r1]
- cmp r0, 0
- beq _0803A03A
- b _0803A14C
-_0803A03A:
- adds r4, r7, 0
- adds r0, r2, r4
- ldr r0, [r0]
- cmp r0, 0x9
- beq _0803A04A
- cmp r0, 0xA
- beq _0803A0AA
- b _0803A0DE
-_0803A04A:
- movs r5, 0x95
- lsls r5, 2
- adds r0, r2, r5
- movs r1, 0
- movs r2, 0xB4
- bl MemoryFill8
- ldr r0, [r6]
- movs r1, 0xEF
- lsls r1, 2
- adds r0, r1
- ldrb r0, [r0]
- bl sub_803B344
- adds r4, r0, 0
- ldr r1, [r4, 0x14]
- cmp r1, 0
- beq _0803A08C
- ldr r0, [r6]
- movs r2, 0x9A
- lsls r2, 2
- adds r0, r2
- movs r2, 0x28
- bl MemoryCopy8
- ldr r0, [r6]
- movs r3, 0xA4
- lsls r3, 2
- adds r0, r3
- ldr r1, [r4, 0x18]
- movs r2, 0x78
- bl MemoryCopy8
-_0803A08C:
- ldr r1, [r6]
- adds r1, r5
- adds r0, r4, 0
- ldm r0!, {r2-r4}
- stm r1!, {r2-r4}
- ldm r0!, {r2,r4}
- stm r1!, {r2,r4}
- ldr r2, [r6]
- adds r0, r2, r7
- ldr r0, [r0]
- adds r1, r2, r5
- movs r3, 0xC2
- lsls r3, 2
- adds r2, r3
- b _0803A0D4
-_0803A0AA:
- movs r4, 0x95
- lsls r4, 2
- adds r0, r2, r4
- movs r1, 0
- movs r2, 0xB4
- bl MemoryFill8
- ldr r0, [r6]
- movs r5, 0xC2
- lsls r5, 2
- adds r0, r5
- movs r1, 0
- movs r2, 0xB4
- bl MemoryFill8
- ldr r2, [r6]
- adds r0, r2, r7
- ldr r0, [r0]
- adds r4, r2, r4
- adds r2, r5
- adds r1, r4, 0
-_0803A0D4:
- bl sub_8037D64
- ldr r1, [r6]
- add r1, r8
- str r0, [r1]
-_0803A0DE:
- ldr r4, _0803A134
- ldr r2, [r4]
- movs r5, 0x94
- lsls r5, 2
- adds r0, r2, r5
- ldr r0, [r0]
- cmp r0, 0
- bne _0803A14C
- movs r1, 0x93
- lsls r1, 2
- adds r0, r2, r1
- ldr r0, [r0]
- cmp r0, 0xA
- bhi _0803A14C
- cmp r0, 0x9
- bcc _0803A14C
- movs r3, 0x95
- lsls r3, 2
- adds r1, r2, r3
- adds r3, 0xB4
- adds r2, r3
- bl sub_80381F4
- ldr r1, [r4]
- adds r1, r5
- str r0, [r1]
- bl sub_800D588
- lsls r0, 24
- cmp r0, 0
- beq _0803A138
- ldr r1, [r4]
- movs r4, 0xF0
- lsls r4, 2
- adds r0, r1, r4
- movs r2, 0xC2
- lsls r2, 2
- adds r1, r2
- movs r2, 0xB4
- bl memcpy
- b _0803A14C
- .align 2, 0
-_0803A134: .4byte gUnknown_203B3E8
-_0803A138:
- ldr r1, [r4]
- movs r3, 0xF0
- lsls r3, 2
- adds r0, r1, r3
- movs r4, 0x95
- lsls r4, 2
- adds r1, r4
- movs r2, 0xB4
- bl memcpy
-_0803A14C:
- bl xxx_call_start_bg_music
- b _0803A1AA
-_0803A152:
- ldr r0, _0803A160
-_0803A154:
- ldr r3, _0803A164
- movs r1, 0
- movs r2, 0
- bl sub_80141B4
- b _0803A1AA
- .align 2, 0
-_0803A160: .4byte gUnknown_80E7C98
-_0803A164: .4byte 0x00000101
-_0803A168:
- ldr r0, [r6]
- movs r1, 0xF6
- lsls r1, 1
- adds r0, r1
- bl sub_8006518
- bl ResetUnusedInputStruct
- movs r0, 0
- movs r1, 0x1
- movs r2, 0x1
- bl sub_800641C
- ldr r1, [r6]
- adds r1, 0x1
- movs r0, 0x5
- bl sub_80151C0
- b _0803A1AA
-_0803A18E:
- ldr r0, _0803A1B8
- ldr r3, _0803A1BC
- movs r2, 0
- str r2, [sp]
- movs r1, 0x4
- str r1, [sp, 0x4]
- str r2, [sp, 0x8]
- str r2, [sp, 0xC]
- adds r1, 0xFD
- str r1, [sp, 0x10]
- movs r1, 0
- movs r2, 0x6
- bl sub_8014248
-_0803A1AA:
- add sp, 0x14
- pop {r3}
- mov r8, r3
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_0803A1B8: .4byte gUnknown_80E7CC4
-_0803A1BC: .4byte gUnknown_80E78F8
- thumb_func_end sub_8039E18
-
- .align 2,0
diff --git a/data/data_80DED44.s b/data/data_80DED44.s
index 0f0884a..5f992f8 100644
--- a/data/data_80DED44.s
+++ b/data/data_80DED44.s
@@ -1,174 +1,5 @@
.section .rodata
- .global gUnknown_80DED48
-gUnknown_80DED48: @ 80DED48
- .byte 0x00, 0x00, 0x00, 0x00
- .byte 0x03, 0x00, 0x00, 0x00
- .byte 0x15, 0x00, 0x04, 0x00
- .byte 0x06, 0x00, 0x05, 0x00
- .byte 0x05, 0x00, 0x00, 0x00
- .byte 0x00, 0x00, 0x00, 0x00
-
- .global gUnknown_80DED60
-gUnknown_80DED60: @ 80DED60
- .byte 0x00, 0x00, 0x00, 0x00
- .byte 0x03, 0x00, 0x00, 0x00
- .byte 0x16, 0x00, 0x07, 0x00
- .byte 0x06, 0x00, 0x05, 0x00
- .byte 0x05, 0x00, 0x00, 0x00
- .byte 0x00, 0x00, 0x00, 0x00
-
- .global gUnknown_80DED78
-gUnknown_80DED78: @ 80DED78
- .4byte Confirm_80DED98
- .byte 0x0b, 0x00, 0x00, 0x00
- .4byte Info_80DED90
- .byte 0x0c, 0x00, 0x00, 0x00
- .byte 0x00, 0x00, 0x00, 0x00
- .byte 0x00, 0x00, 0x00, 0x00
-
- .global Info_80DED90
- Info_80DED90:
- .string "Info\0"
- .align 2,0
-
- .global Confirm_80DED98
- Confirm_80DED98:
- .string "Confirm\0"
-
- .byte 0x00, 0x00, 0x00, 0x00
- .byte 0x03, 0x00, 0x00, 0x00
- .byte 0x00, 0x00, 0x00, 0x00
- .byte 0x00, 0x00, 0x00, 0x00
- .byte 0x00, 0x00, 0x00, 0x00
- .byte 0x00, 0x00, 0x00, 0x00
-
- .global gUnknown_80DEDB8
-gUnknown_80DEDB8: @ 80DEDB8
- .4byte SendThankYou_Text
- .byte 0x01, 0x00, 0x00, 0x00
- .4byte GetThankYou_Text
- .byte 0x02, 0x00, 0x00, 0x00
- .4byte Cancel_80DEDD8
- .byte 0x00, 0x00, 0x00, 0x00
- .byte 0x00, 0x00, 0x00, 0x00
- .byte 0x00, 0x00, 0x00, 0x00
-
- .global Cancel_80DEDD8
- Cancel_80DEDD8:
- .string "Cancel\0"
- .align 2,0
-
- .global GetThankYou_Text
- GetThankYou_Text:
- .string "Get Thank-You Mail\0"
- .align 2,0
-
- .global SendThankYou_Text
- SendThankYou_Text:
- .string "Send Thank-You Mail\0"
- .align 2,0
-
- .global gUnknown_80DEE08
-gUnknown_80DEE08: @ 80DEE08
- @ Thank You Mail Pelipper Menu
- .4byte GameLinkCable_Text
- .byte 0x03, 0x00, 0x00, 0x00
- .4byte Password_Text
- .byte 0x05, 0x00, 0x00, 0x00
- .4byte Cancel_80DEDD8
- .byte 0x00, 0x00, 0x00, 0x00
- .byte 0x00, 0x00, 0x00, 0x00
- .byte 0x00, 0x00, 0x00, 0x00
-
- .global Password_Text
- Password_Text:
- .string "Password\0"
- .align 2,0
-
- .global GameLinkCable_Text
- GameLinkCable_Text:
- .string "Game Link cable\0"
- .align 2,0
-
- .global gUnknown_80DEE44
-gUnknown_80DEE44: @ 80DEE44
- @ Game Link Cable Thank-You Mail Menu
- .4byte Yes_80DEE5C
- .byte 0x07, 0x00, 0x00, 0x00
- .4byte Cancel_80DEDD8
- .byte 0x00, 0x00, 0x00, 0x00
- .byte 0x00, 0x00, 0x00, 0x00
- .byte 0x00, 0x00, 0x00, 0x00
-
- .global Yes_80DEE5C
- Yes_80DEE5C:
- .string "Yes\0"
- .align 2,0
-
- .global gUnknown_80DEE60
-gUnknown_80DEE60: @ 80DEE60
- .4byte Yes_80DEE5C
- .byte 0x07, 0x00, 0x00, 0x00
- .4byte No_80DEE78
- .byte 0x08, 0x00, 0x00, 0x00
- .byte 0x00, 0x00, 0x00, 0x00
- .byte 0x00, 0x00, 0x00, 0x00
-
- .global No_80DEE78
- No_80DEE78:
- .string "No\0"
- .align 2,0
-
- .global gUnknown_80DEE7C
-gUnknown_80DEE7C: @ 80DEE7C
- .4byte SendItem_Text
- .byte 0x09, 0x00, 0x00, 0x00
- .4byte DontSendItemText
- .byte 0x0a, 0x00, 0x00, 0x00
- .4byte Cancel_80DEDD8
- .byte 0x00, 0x00, 0x00, 0x00
- .byte 0x00, 0x00, 0x00, 0x00
- .byte 0x00, 0x00, 0x00, 0x00
-
- .global DontSendItem_Text
- DontSendItemText:
- .string "Don~27t Send Item\0"
- .align 2,0
-
- .global SendItem_Text
- SendItem_Text:
- .string "Send Item\0"
- .align 2,0
-
- .global gUnknown_80DEEBC
-gUnknown_80DEEBC: @ 80DEEBC
- .4byte SendWOItem_Text
- .byte 0x0a, 0x00, 0x00, 0x00
- .4byte Cancel_80DEDD8
- .byte 0x00, 0x00, 0x00, 0x00
- .byte 0x00, 0x00, 0x00, 0x00
- .byte 0x00, 0x00, 0x00, 0x00
-
- .global SendWOItem_Text
- SendWOItem_Text:
- .string "Send w/o Item\0"
- .align 2,0
-
- .global gUnknown_80DEEE4
-gUnknown_80DEEE4: @ 80DEEE4
- .4byte Yes_80DEE5C
- .byte 0x07, 0x00, 0x00, 0x00
- .4byte No_80DEE78
- .byte 0x08, 0x00, 0x00, 0x00
- .4byte Cancel_80DEDD8
- .byte 0x00, 0x00, 0x00, 0x00
- .byte 0x00, 0x00, 0x00, 0x00
- .byte 0x00, 0x00, 0x00, 0x00
-
-
- .include "data/text/wonder_mail_2.inc"
-
.global gUnknown_80DFBD0
gUnknown_80DFBD0: @ 80DFBD0
.byte 0x00, 0x00, 0x00, 0x00
@@ -192,7 +23,7 @@ gUnknown_80DFBEC: @ 80DFBEC
.byte 0x02, 0x00, 0x02, 0x00
.byte 0x18, 0x00, 0x0e, 0x00
.byte 0x0e, 0x00, 0x00, 0x00
- .byte 0xe8, 0xfb, 0x0d, 0x08
+ .4byte gUnknown_80DFBE8
.global gUnknown_80DFC04
diff --git a/data/data_810AE24.s b/data/data_810AE24.s
index b31809b..a8743e5 100644
--- a/data/data_810AE24.s
+++ b/data/data_810AE24.s
@@ -1537,7 +1537,7 @@ gUnknown_81161E8: @ 81161E8
.byte 0x01, 0x00, 0x00, 0x00
.byte 0x00, 0x00, 0x00, 0x00
.4byte CleanFelicityBank
- .4byte sub_80163A0
+ .4byte FelicityBankCallback
.global gUnknown_81161F8
gUnknown_81161F8: @ 81161F8
@@ -1577,9 +1577,9 @@ gUnknown_8116238: @ 8116238
.global gUnknown_8116248
gUnknown_8116248: @ 8116248
.byte 0x01, 0x00, 0x00, 0x00
- .4byte sub_8029B50
- .4byte sub_8029E60
- .4byte sub_8029C98
+ .4byte CreateThankYouMailPelipper
+ .4byte CleanThankYouMailPelipper
+ .4byte ThankYouMailPelipperCallback
.global gUnknown_8116258
gUnknown_8116258: @ 8116258
diff --git a/data/text/wonder_mail_2.inc b/data/text/wonder_mail_2.inc
deleted file mode 100644
index b1ee6ce..0000000
--- a/data/text/wonder_mail_2.inc
+++ /dev/null
@@ -1,248 +0,0 @@
-gUnknown_80DEF04:: @ 80DEF04
- .string " ...Oh?\n"
- .string "Something~27s gone wrong.\0"
- .align 2, 0
-
-gUnknown_80DEF28:: @ 80DEF28
- .string " ...Oh? The number of linked\n"
- .string "GBA systems is incorrect.\n"
- .string "Please try again from the start.\0"
- .align 2, 0
-
-gUnknown_80DEF80:: @ 80DEF80
- .string " ...Oh? It looks like your\n"
- .string "friend chose a different mode.\n"
- .string "Please try again from the start.\0"
- .align 2, 0
-
-gUnknown_80DEFDC:: @ 80DEFDC
- .string " ...Oh? It looks like your\n"
- .string "storage space is full. Please clear some\n"
- .string "space and try again from the start.\0"
- .align 2, 0
-
-gUnknown_80DF044:: @ 80DF044
- .string " ...Oh?\n"
- .string "I think you~27ve received this mail before.\n"
- .string "You can~27t get the same mail twice.\0"
- .align 2, 0
-
-gUnknown_80DF0A0:: @ 80DF0A0
- .string " ...Oh?\n"
- .string "I don~27t think you~27re eligible to receive\n"
- .string "this mail.\0"
- .align 2, 0
-
-gUnknown_80DF0E0:: @ 80DF0E0
- .string " ...Oh?\n"
- .string "There is no room to receive new mail.\n"
- .string "Please delete some mail and try again.\0"
- .align 2, 0
-
-gUnknown_80DF138:: @ 80DF138
- .string " ...Oh? Your friend didn~27t\n"
- .string "follow through on their side.\n"
- .string "Please try again from the start.\0"
- .align 2, 0
-
-gUnknown_80DF194:: @ 80DF194
- .string " Your #CGThank-You Mail#R\n"
- .string "has been sent.\0"
- .align 2, 0
-
-gUnknown_80DF1C0:: @ 80DF1C0
- .string " ...Oh?\n"
- .string "This password appears to be wrong.\n"
- .string "Would you like to try again?\0"
- .align 2, 0
-
-gUnknown_80DF208:: @ 80DF208
- .string " ...Oh? This password doesn~27t\n"
- .string "appear to be for a #CGThank-You Mail#R.\0"
- .align 2, 0
-
-gUnknown_80DF250:: @ 80DF250
- .string ": This is the counter for\n"
- .string "#CGThank-You Mail#R.#P"
- .string ": Oh~2c hi~2c #CN%s#R.\n"
- .string "I~27ve been waiting for you. You wanted me\n"
- .string "to process a #CGThank-You Mail#R?#P"
- .string ": Let me get on it right away.\0"
- .align 2, 0
-
-gUnknown_80DF304:: @ 80DF304
- .string " Is it OK to send this\n"
- .string "#CGThank-You Mail#R?\0"
- .align 2, 0
-
-gUnknown_80DF330:: @ 80DF330
- .string " Please choose the\n"
- .string "#CGThank-You Mail#R that you want to\n"
- .string "send to your friend.\0"
- .align 2, 0
-
-gUnknown_80DF380:: @ 80DF380
- .string " OK. Please enter the\n"
- .string "#CGThank-You Mail password#R.\0"
- .align 2, 0
-
-gUnknown_80DF3B4:: @ 80DF3B4
- .string " Please give this password\n"
- .string "to the friend that rescued your team.#P"
- .string " I also must save your\n"
- .string "adventure.\0"
- .align 2, 0
-
-gUnknown_80DF418:: @ 80DF418
- .string " OK~2c here is your\n"
- .string "#CGThank-You Mail password#R.\0"
- .align 2, 0
-
-gUnknown_80DF44C:: @ 80DF44C
- .string " I need to save your\n"
- .string "adventure.\0"
- .align 2, 0
-
-gUnknown_80DF46C:: @ 80DF46C
- .string " There we go.\n"
- .string "I~27m all done.#P"
- .string " Doesn~27t it feel great to\n"
- .string "be appreciated for doing something good?\n"
- .string "Please keep up your rescue work!\0"
- .align 2, 0
-
-gUnknown_80DF4F4:: @ 80DF4F4
- .string " A #CGThank-You Mail#R has\n"
- .string "arrived from your friend for your rescue\n"
- .string "mission.\0"
- .align 2, 0
-
-gUnknown_80DF544:: @ 80DF544
- .string "#+Communicating...\n"
- .string "#+Please wait with the power on.\n"
- .string "#+To cancel~2c press {B_BUTTON}.\0"
- .align 2, 0
-
-gUnknown_80DF594:: @ 80DF594
- .string " There. I~27ve sent your\n"
- .string "#CGThank-You Mail#R.\n"
- .string "I need to save your adventure.\0"
- .align 2, 0
-
-gUnknown_80DF5E4:: @ 80DF5E4
- .string " Please connect the GBA\n"
- .string "systems with a #CGGame Link cable#R.\n"
- .string "Is your friend also ready?\0"
- .align 2, 0
-
-gUnknown_80DF63C:: @ 80DF63C
- .string " There~2c all done.\n"
- .string "#CN%s#R~2c I hope your friend\n"
- .string "appreciates your sense of gratitude.\0"
- .align 2, 0
-
-gUnknown_80DF694:: @ 80DF694
- .string " The item you~27ve chosen\n"
- .string "here can~27t be exchanged later.\n"
- .string "Are you certain this item is OK?\0"
- .align 2, 0
-
-gUnknown_80DF6F0:: @ 80DF6F0
- .string " I~27ve saved your adventure. \0"
- .align 2, 0
-
-gUnknown_80DF710:: @ 80DF710
- .string " OK~2c please choose\n"
- .string "the item to be sent.\0"
- .align 2, 0
-
-gUnknown_80DF73C:: @ 80DF73C
- .string " ...Oh?\n"
- .string "Your storage space is empty.\n"
- .string "What would you like to do?\0"
- .align 2, 0
-
-gUnknown_80DF77C:: @ 80DF77C
- .string " Would you like to choose\n"
- .string "a #CGreward item#R from storage and\n"
- .string "send it with your mail?\0"
- .align 2, 0
-
-gUnknown_80DF7D4:: @ 80DF7D4
- .string " ...Oh?\n"
- .string "You~27ve already attached a #CGreward item#R\n"
- .string "to this mail.#P"
- .string " I~27m sorry~2c but once an item\n"
- .string "has been attached to mail~2c it can~27t be\n"
- .string "exchanged.\0"
- .align 2, 0
-
-gUnknown_80DF870:: @ 80DF870
- .string " Would you like to send it\n"
- .string "again with the item you chose before?\0"
- .align 2, 0
-
-gUnknown_80DF8B4:: @ 80DF8B4
- .string " ...Oh?\n"
- .string "You don~27t seem to have a #CGThank-You Mail#R.\0"
- .align 2, 0
-
-gUnknown_80DF8EC:: @ 80DF8EC
- .string " Hello.\n"
- .string "I handle #CGThank-You Mail#R.\n"
- .string "How may I serve you?\0"
- .align 2, 0
-
-gUnknown_80DF928:: @ 80DF928
- .string " May I help you with\n"
- .string "anything else?\0"
- .align 2, 0
-
-gUnknown_80DF94C:: @ 80DF94C
- .string " Please come see me\n"
- .string "anytime.\0"
- .align 2, 0
-
-gUnknown_80DF96C:: @ 80DF96C
- .string " How would you like to send\n"
- .string "your #CGThank-You Mail#R?\0"
- .align 2, 0
-
-gUnknown_80DF9A4:: @ 80DF9A4
- .string " How would you like to\n"
- .string "receive your friend~27s #CGThank-You Mail#R?\0"
-
- .string "pksdir0\0"
- .align 2, 0
-
-gUnknown_80DF9F0:: @ 80DF9F0
- .string "????\0"
- .align 2, 0
-
-gUnknown_80DF9F8:: @ 80DF9F8
- .string " Oh~2c hello!\n"
- .string "Your rescue mission went well~2c didn~27t it?\n"
- .string "I wouldn~27t expect any less~2c #CG%s#R!#P"
- .string " Well~2c well!\n"
- .string "Here is your reward from the Pokémon\n"
- .string "Rescue Organization!\0"
- .align 2, 0
-
-gUnknown_80DFAA8:: @ 80DFAA8
- .string " I hope you will keep on\n"
- .string "rescuing your friends in\n"
- .string "dire straits.#P"
- .string " And now~2c I must save\n"
- .string "your adventure.\0"
- .align 2, 0
-
-gUnknown_80DFB14:: @ 80DFB14
- .string " Oh~2c yes~2c that~27s right.\n"
- .string "Please don~27t forget to send an #CGA-OK Mail#R\n"
- .string "to the friend you just rescued.#P"
- .string " Please give me a shout if\n"
- .string "you would like to send #CGA-OK Mail#R.\0"
- .align 2, 0
-
- .string "pksdir0\0"
- .align 2, 0
diff --git a/include/dungeon_entity.h b/include/dungeon_entity.h
index 82e2791..9f3033c 100644
--- a/include/dungeon_entity.h
+++ b/include/dungeon_entity.h
@@ -3,24 +3,35 @@
struct subStruct_8048524
{
- u8 fill0[0x6];
- u8 unk6;
- u8 unk7;
- u8 fill8[0xE - 0x8];
- /* 0xE */ s16 HP; // HP??
- s16 unk10;
- u8 fill12[0x46 - 0x12];
- s8 unk46;
- u8 fill47[0xA4 - 0x47];
- u8 unkA4;
+ /* 0x0 */ u8 unk0;
+ /* 0x1 */ u8 unk1;
+ /* 0x2 */ s16 species;
+ /* 0x4 */ s16 transformSpecies;
+ /* 0x6 */ bool8 isEnemy;
+ /* 0x7 */ bool8 isLeader;
+ /* 0x8 */ u8 shopKeeper;
+ /* 0x9 */ u8 level;
+ /* 0xA */ u16 partyIndex;
+ /* 0xC */ u16 IQ;
+ /* 0xE */ s16 HP;
+ /* 0x10 */ s16 maxHP;
+ /* 0x12 */ s16 bossHPBackup;
+ u8 fill14[0x46 - 0x14];
+ /* 0x46 */ s8 facingDir;
+ u8 fill47[0x8C - 0x47];
+ u8 unk8C[4];
+ u8 fill90[0xA4 - 0x90];
+ /* 0xA4 */ u8 clientFlags;
u8 fillA5[0xAC - 0xA5];
/* 0xAC */ u8 statusCondition;
- u8 fillAD[0xFB - 0xAD];
+ u8 fillAD[0xF7 - 0xAD];
+ /* 0xF7 */ bool8 isBoss;
+ u8 fillF8[0xFB - 0xF8];
u8 unkFB;
u8 fillFC[0x112 - 0xFC];
- u8 unk112;
+ /* 0x112 */ u8 stockpileCount;
u8 fill113[0x13C - 0x113];
- u32 unk13C;
+ /* 0x13C */ u32 belly;
u8 fill140[0x15C - 0x140];
u8 unk15C;
u8 unk15D;
diff --git a/include/gUnknown_203B418.h b/include/gUnknown_203B418.h
index 902b591..e022b4b 100644
--- a/include/gUnknown_203B418.h
+++ b/include/gUnknown_203B418.h
@@ -16,7 +16,11 @@ struct unkStruct_203B418
u8 unk11;
u8 fill12[0x16D - 0x12];
u8 unk16D;
- u8 fill16E[0xE23C - 0x16E];
+ u8 fill16E[0x65C - 0x16E];
+ u8 unk65C;
+ u8 fill65D[0x66A - 0x65D];
+ u16 unk66A;
+ u8 fill66B[0xE23C - 0x66C];
s16 unkE23C;
s16 unkE23E;
u8 fillE240[0xE265 - 0xE240];
diff --git a/include/wonder_mail.h b/include/wonder_mail.h
index 9593e3b..ae4c701 100644
--- a/include/wonder_mail.h
+++ b/include/wonder_mail.h
@@ -90,8 +90,8 @@ struct WonderMailStruct_203B2C4
u8 unk42E;
u32 unk430;
u8 formattedString[0x100];
- s32 unk534;
- u32 unk538;
+ s32 wonderMailMethod;
+ u32 wonderMailMode;
u8 unk53C[0xA];
u32 unk548;
u32 unk54C;
@@ -110,5 +110,16 @@ struct WonderMailStruct_203B2C4
void sub_8028B04(u32 r0);
+enum WonderMailMode {
+ WONDER_MAIL_MODE_SEND = 1,
+ WONDER_MAIL_MODE_RECEIVE = 2,
+};
+
+enum WonderMailMethod {
+ WONDER_MAIL_GAME_LINK = 3,
+ WONDER_MAIL_PASSWORD = 5,
+};
+
+
#endif
diff --git a/ld_script.txt b/ld_script.txt
index 6bd55fa..7fb46f6 100755
--- a/ld_script.txt
+++ b/ld_script.txt
@@ -122,6 +122,7 @@ SECTIONS {
src/wonder_mail_pre.o(.text);
asm/wonder_mail.o(.text);
src/wonder_mail.o(.text);
+ src/thank_you_wonder_mail.o(.text);
src/wonder_mail_2.o(.text);
asm/wonder_mail_2.o(.text);
src/wonder_mail_3.o(.text);
@@ -155,7 +156,6 @@ SECTIONS {
src/rescue_password_menu_1.o(.text);
src/load_screen.o(.text);
src/wonder_mail_main_menu.o(.text);
- asm/wonder_mail_main_menu.o(.text);
src/ds_menus.o(.text);
src/debug_menu.o(.text);
asm/debug_menu.o(.text);
@@ -186,6 +186,8 @@ SECTIONS {
asm/code_807001C.o(.text);
src/code_80869E4.o(.text);
asm/code_80869E4.o(.text);
+ src/code_8086A3C.o(.text);
+ asm/code_8086A3C.o(.text);
src/code_8057824_1.o(.text);
asm/jirachi_wish.o(.text);
src/code_80521D0_1.o(.text);
@@ -307,6 +309,8 @@ SECTIONS {
src/save.o(.rodata);
data/data_80D47B8.o(.rodata);
src/wonder_mail.o(.rodata);
+ src/thank_you_wonder_mail.o(.rodata);
+ src/wonder_mail_2.o(.rodata);
data/data_80DED44.o(.rodata);
src/post_office_guide.o(.rodata);
data/data_80E1F30.o(.rodata);
diff --git a/src/code_8041AD0.c b/src/code_8041AD0.c
index 28ac016..9874f48 100644
--- a/src/code_8041AD0.c
+++ b/src/code_8041AD0.c
@@ -289,7 +289,7 @@ void sub_8041D5C(struct DungeonEntity *r0)
{
return;
}
- sub_803ED30(r0->unk70->unk112 , r0, 1, 0xB);
+ sub_803ED30(r0->unk70->stockpileCount , r0, 1, 0xB);
}
void sub_8041D84(struct DungeonEntity * r0)
@@ -675,7 +675,7 @@ void sub_8042208(struct DungeonEntity *r0, u8 r1)
void sub_8042238(u32 r0, struct DungeonEntity *r1)
{
- if(r1->unk70->unk6 != 0)
+ if(r1->unk70->isEnemy)
PlaySoundEffect(0x157);
else
PlaySoundEffect(0x156);
diff --git a/src/code_80521D0_1.c b/src/code_80521D0_1.c
index f275279..d71de9a 100644
--- a/src/code_80521D0_1.c
+++ b/src/code_80521D0_1.c
@@ -106,7 +106,7 @@ extern void sub_8083ED8(u32);
extern u32 sub_803F994();
extern s32 sub_803F9B0();
extern void sub_803F878(u32, s32);
-extern void sub_8086A70(struct DungeonEntity *, u32, u32);
+extern void SetupBossFightHP(struct DungeonEntity *, u32, u32);
extern void sub_8085C54(u32, u32, u32, u32, u32);
extern void sub_803E9D0(void);
extern void DeoxysScreenFlash(void);
@@ -341,7 +341,7 @@ void LugiaPreFightDialogue(void)
sub_80861D4(uVar3,7,0);
sub_8052910(&gUnknown_8106024);
sub_808BFA0();
- sub_8086A70(uVar3,800,0x20);
+ SetupBossFightHP(uVar3,800,0x20);
sub_8083E88(0x23);
sub_80858AC(&iVar2->posPixelX,0x10);
}
@@ -491,7 +491,7 @@ void KyogrePreFightDialogue(void)
// power!
sub_8052910(&gUnknown_810627C);
sub_803E708(10,0x46);
- sub_8086A70(uVar3,600,0xb);
+ SetupBossFightHP(uVar3,600,0xb);
sub_8083E88(0x23);
sub_80858AC(&iVar2->posPixelX,0x10);
}
@@ -633,7 +633,7 @@ void sub_808C5A0(struct DungeonEntity *r0)
void sub_808C5AC(struct DungeonEntity *r0)
{
- sub_8086A70(r0, 0x3b6, 0x20);
+ SetupBossFightHP(r0, 0x3b6, 0x20);
}
void sub_808C5C0(void)
@@ -1122,7 +1122,7 @@ void sub_808C998(void)
void sub_808C9B0(struct DungeonEntity *param_1)
{
- param_1->unk70->unk46 = 4;
+ param_1->unk70->facingDir = NORTH;
sub_806CE68(param_1, 4);
}
diff --git a/src/code_8057824_1.c b/src/code_8057824_1.c
index 5f38346..29ab09e 100644
--- a/src/code_8057824_1.c
+++ b/src/code_8057824_1.c
@@ -234,7 +234,7 @@ extern void sub_80862BC(struct DungeonEntity *);
extern void sub_8086448();
extern void SpriteLookAroundEffect();
extern u32 sub_80861F8(u32, struct DungeonEntity *, u32);
-extern void sub_8086A70(struct DungeonEntity *, u32, u32);
+extern void SetupBossFightHP(struct DungeonEntity *, u32, u32);
extern void sub_80858AC(u32 *, u32);
extern void sub_8097FA8(u32);
@@ -386,7 +386,7 @@ void ZapdosReFightDialogue(void)
sub_8052910(&gUnknown_81018EC);
sub_808775C(2);
sub_8052910(&gUnknown_8101918);
- sub_8086A70(uVar2,300,0xb);
+ SetupBossFightHP(uVar2,300,0xb);
sub_80858AC(&iVar1->posPixelX,0x10);
}
@@ -414,7 +414,7 @@ void ZapdosPostStoryPreFightDialogue(void)
sub_808775C(2);
sub_8052910(&gUnknown_8101A04);
sub_803E708(10,0x46);
- sub_8086A70(uVar3,300,0xb);
+ SetupBossFightHP(uVar3,300,0xb);
sub_80858AC(&iVar2->posPixelX,0x10);
}
}
@@ -592,7 +592,7 @@ void MoltresPreFightDialogue(void)
sub_8087DE8(0xb,6);
sub_8052910(&gUnknown_8102108);
sub_803E708(10,0x46);
- sub_8086A70(uVar3,400,0xb);
+ SetupBossFightHP(uVar3,400,0xb);
sub_80858AC(&iVar1->posPixelX,0x10);
}
@@ -635,7 +635,7 @@ void MoltresReFightDialogue(void)
sub_803E708(10,0x46);
sub_8052910(&gUnknown_81022F8);
sub_803E708(10,0x46);
- sub_8086A70(uVar3,400,0xb);
+ SetupBossFightHP(uVar3,400,0xb);
sub_80858AC(&iVar1->posPixelX,0x10);
}
@@ -673,7 +673,7 @@ void MoltresPostStoryPreFightDialogue(void)
sub_8087DE8(0xb,6);
sub_8052910(&gUnknown_8102454);
sub_803E708(10,0x46);
- sub_8086A70(uVar3,400,0xb);
+ SetupBossFightHP(uVar3,400,0xb);
sub_80858AC(&iVar2->posPixelX,0x10);
}
}
@@ -1021,7 +1021,7 @@ void ArticunoPreFightDialogue(void)
sub_8052910(&gUnknown_81028B8);
sub_806CDD4(uVar3,0xf,0);
sub_803E708(0x10,0x46);
- sub_8086A70(uVar3,0x1c2,0xb);
+ SetupBossFightHP(uVar3,0x1c2,0xb);
sub_80858AC(&iVar1->posPixelX,0x10);
}
@@ -1043,7 +1043,7 @@ void ArticunoReFightDialogue(void)
sub_8052910(&gUnknown_8102948);
sub_806CDD4(uVar2,0xf,0);
sub_803E708(0x28,0x46);
- sub_8086A70(uVar2,0x1c2,0xb);
+ SetupBossFightHP(uVar2,0x1c2,0xb);
sub_80858AC(&iVar1->posPixelX,0x10);
}
@@ -1079,7 +1079,7 @@ void ArticunoPostStoryPreFightDialogue(void)
sub_8052910(&gUnknown_8102A74);
sub_806CDD4(uVar3,0xf,0);
sub_803E708(0x28,0x46);
- sub_8086A70(uVar3,0x1c2,0xb);
+ SetupBossFightHP(uVar3,0x1c2,0xb);
sub_80858AC(&iVar2->posPixelX,0x10);
}
}
@@ -1342,7 +1342,7 @@ void GroudonPreFightDialogue(void)
sub_8086A54(uVar4);
sub_8085930(4);
sub_8086764();
- sub_8086A70(uVar4,500,0xb);
+ SetupBossFightHP(uVar4,500,0xb);
sub_80858AC(&iVar1->posPixelX,0x10);
}
@@ -1374,7 +1374,7 @@ void GroudonReFightDialogue(void)
sub_8086A54(uVar2);
sub_8085930(4);
sub_8086764();
- sub_8086A70(uVar2,500,0xb);
+ SetupBossFightHP(uVar2,500,0xb);
sub_80858AC(&iVar1->posPixelX,0x10);
}
@@ -1402,7 +1402,7 @@ void GroudonPostStoryPreFightDialogue(void)
sub_8088CA0();
sub_8052910(&gUnknown_810347C);
sub_803E708(10,0x46);
- sub_8086A70(uVar3,500,0xb);
+ SetupBossFightHP(uVar3,500,0xb);
sub_80858AC(&iVar2->posPixelX,0x10);
}
}
@@ -1843,7 +1843,7 @@ void RayquazaPreFightDialogue(void)
sub_8052910(&gUnknown_81037D4);
RayquazaScreenFlash();
sub_8052910(&gUnknown_8103820);
- sub_8086A70(uVar3,600,0x20);
+ SetupBossFightHP(uVar3,600,0x20);
sub_80858AC(&iVar1->posPixelX,0x10);
}
@@ -1867,7 +1867,7 @@ void RayquazaReFightDialogue(void)
sub_8052910(&gUnknown_81038A8);
RayquazaScreenFlash();
sub_8052910(&gUnknown_81038F8);
- sub_8086A70(uVar2,600,0x20);
+ SetupBossFightHP(uVar2,600,0x20);
sub_80858AC(&iVar1->posPixelX,0x10);
}
@@ -1893,7 +1893,7 @@ void RayquazaPostStoryPreFightDialogue(void)
sub_8052910(&gUnknown_8103AE4);
RayquazaScreenFlash();
sub_8052910(&gUnknown_8103B30);
- sub_8086A70(uVar3,600,0xb);
+ SetupBossFightHP(uVar3,600,0xb);
sub_80858AC(&iVar2->posPixelX,0x10);
}
}
@@ -1984,7 +1984,7 @@ void sub_8089788(struct DungeonEntity *param_1, u8 param_2, s32 param_3)
for(iVar3 = 0; iVar3 < 0x10; iVar3++)
{
iVar2 = gUnknown_203B418->unk1358C[iVar3];
- if ((sub_80450E0(iVar2) != '\0') && (iVar2 != param_1) && (iVar2->unk70->unkA4 == param_2)) {
+ if ((sub_80450E0(iVar2) != '\0') && (iVar2 != param_1) && (iVar2->unk70->clientFlags == param_2)) {
return;
}
}
@@ -2140,7 +2140,7 @@ void MewtwoPreFightDialogue(void)
MewtwoScreenFlash();
sub_8052910(&gUnknown_8104008);
sub_803E708(10,0x46);
- sub_8086A70(uVar2,900,0x20);
+ SetupBossFightHP(uVar2,900,0x20);
sub_80858AC(&iVar1->posPixelX,0x10);
}
@@ -2166,7 +2166,7 @@ void MewtwoPreFightDialogue1(void)
sub_8052910(&gUnknown_81040CC);
MewtwoScreenFlash();
sub_8052910(&gUnknown_8104114);
- sub_8086A70(uVar3,900,0x20);
+ SetupBossFightHP(uVar3,900,0x20);
sub_80858AC(&iVar2->posPixelX,0x10);
}
}
@@ -2279,7 +2279,7 @@ void EnteiPreFightDialogue(void)
EnteiScreenFlash();
sub_8052910(&gUnknown_81041F8);
sub_803E708(10,70);
- sub_8086A70(uVar2,600,0xb);
+ SetupBossFightHP(uVar2,600,0xb);
sub_80858AC(&iVar1->posPixelX,0x10);
}
@@ -2297,7 +2297,7 @@ void EnteiPreFightDialogue1(void)
EnteiScreenFlash();
sub_8052910(&gUnknown_81042B8);
sub_803E708(10,70);
- sub_8086A70(uVar2,600,0xb);
+ SetupBossFightHP(uVar2,600,0xb);
sub_80858AC(&iVar1->posPixelX,0x10);
}
@@ -2319,7 +2319,7 @@ void EnteiPreFightDialogue2(void)
EnteiScreenFlash();
sub_8052910(&gUnknown_81043C0);
sub_803E708(10,70);
- sub_8086A70(uVar3,600,0xb);
+ SetupBossFightHP(uVar3,600,0xb);
sub_80858AC(&iVar2->posPixelX,0x10);
}
}
@@ -2432,7 +2432,7 @@ void RaikouPreFightDialogue(void)
RaikouScreenFlash();
sub_8052910(&gUnknown_81045B0);
sub_803E708(10,70);
- sub_8086A70(uVar2,0x28a,0xb);
+ SetupBossFightHP(uVar2,0x28a,0xb);
sub_80858AC(&iVar1->posPixelX,0x10);
}
@@ -2452,7 +2452,7 @@ void RaikouPreFightDialogue1(void)
RaikouScreenFlash();
sub_8052910(&gUnknown_81046A0);
sub_803E708(10,70);
- sub_8086A70(uVar3,0x28a,0xb);
+ SetupBossFightHP(uVar3,0x28a,0xb);
sub_80858AC(&iVar2->posPixelX,0x10);
}
@@ -2475,7 +2475,7 @@ void RaikouPreFightDialogue2(void)
RaikouScreenFlash();
sub_8052910(&gUnknown_810476C);
sub_803E708(10,70);
- sub_8086A70(uVar3,0x28a,0xb);
+ SetupBossFightHP(uVar3,0x28a,0xb);
sub_80858AC(&iVar2->posPixelX,0x10);
}
}
@@ -2590,7 +2590,7 @@ void SuicunePreFightDialogue(void)
SuicuneScreenFlash();
sub_8052910(&gUnknown_8104914);
sub_803E708(10,70);
- sub_8086A70(uVar2,0x28a,0xb);
+ SetupBossFightHP(uVar2,0x28a,0xb);
sub_80858AC(&iVar1->posPixelX,0x10);
}
@@ -2607,7 +2607,7 @@ void SuicunePreFightDialogue1(void)
SuicuneScreenFlash();
sub_8052910(&gUnknown_8104998);
sub_803E708(10,70);
- sub_8086A70(uVar2,0x28a,0xb);
+ SetupBossFightHP(uVar2,0x28a,0xb);
sub_80858AC(&iVar1->posPixelX,0x10);
}
@@ -2628,7 +2628,7 @@ void SuicunePreFightDialogue2(void)
SuicuneScreenFlash();
sub_8052910(&gUnknown_8104A9C);
sub_803E708(10,70);
- sub_8086A70(uVar3,0x28a,0xb);
+ SetupBossFightHP(uVar3,0x28a,0xb);
sub_80858AC(&iVar2->posPixelX,0x10);
}
}
@@ -2771,7 +2771,7 @@ void HoOhPreFightDialogue(void)
HoOhScreenFlash();
sub_8052910(&gUnknown_8104CE0);
sub_803E708(10,70);
- sub_8086A70(uVar2,800,0x20);
+ SetupBossFightHP(uVar2,800,0x20);
sub_80858AC(&iVar1->posPixelX,0x10);
}
@@ -2807,7 +2807,7 @@ void HoOhPreFightDialogue1(void)
HoOhScreenFlash();
sub_8052910(&gUnknown_8104E0C);
sub_803E708(10,70);
- sub_8086A70(uVar3,800,0x20);
+ SetupBossFightHP(uVar3,800,0x20);
sub_80858AC(&iVar2->posPixelX,0x10);
}
}
@@ -2943,7 +2943,7 @@ void LatiosPreFightDialogue(void)
LatiosScreenFlash();
sub_8052910(&gUnknown_8104F30);
sub_803E708(10,70);
- sub_8086A70(iVar2,600,0xb);
+ SetupBossFightHP(iVar2,600,0xb);
sub_80858AC(&iVar1->posPixelX,0x10);
}
@@ -2962,7 +2962,7 @@ void LatiosReFightDialogue(void)
LatiosScreenFlash();
sub_8052910(&gUnknown_8104F30);
sub_803E708(10,70);
- sub_8086A70(uVar2,600,0xb);
+ SetupBossFightHP(uVar2,600,0xb);
sub_80858AC(&iVar1->posPixelX,0x10);
}
@@ -3362,26 +3362,26 @@ void sub_808B1CC(u8 r0)
void sub_808B2B0(struct DungeonEntity *r0)
{
- r0->unk70->unk46 = 4;
+ r0->unk70->facingDir = NORTH;
sub_806CE68(r0, 4);
}
void sub_808B2C4(struct DungeonEntity *r0)
{
- sub_8086A70(r0, 0xE1 << 1, 0xB);
+ SetupBossFightHP(r0, 0xE1 << 1, 0xB);
}
void sub_808B2D4(struct DungeonEntity *r0)
{
- sub_8086A70(r0, 0xE1 << 1, 0xB);
+ SetupBossFightHP(r0, 0xE1 << 1, 0xB);
}
void sub_808B2E4(struct DungeonEntity *r0)
{
- sub_8086A70(r0, 0xE1 << 1, 0xB);
+ SetupBossFightHP(r0, 0xE1 << 1, 0xB);
}
void sub_808B2F4(void)
@@ -3540,7 +3540,7 @@ void JirachiPreFightDialogue(void)
sub_803E708(10,70);
sub_8052910(&gUnknown_810550C);
sub_803E708(10,70);
- sub_8086A70(uVar2,0x15e,0x20);
+ SetupBossFightHP(uVar2,0x15e,0x20);
sub_80858AC(&iVar1->posPixelX,0x10);
}
diff --git a/src/code_80869E4.c b/src/code_80869E4.c
index 18261a0..9718195 100644
--- a/src/code_80869E4.c
+++ b/src/code_80869E4.c
@@ -478,7 +478,7 @@ void SpriteLookAroundEffect(struct DungeonEntity *r0)
s8 r4;
s8 r3;
- r4 = sub_8002984(r0->unk70->unk46, 4);
+ r4 = sub_8002984(r0->unk70->facingDir, 4);
sub_80869E4(r0, 4, 2, r4);
diff --git a/src/code_8086A3C.c b/src/code_8086A3C.c
new file mode 100644
index 0000000..d740ccd
--- /dev/null
+++ b/src/code_8086A3C.c
@@ -0,0 +1,124 @@
+#include "global.h"
+#include "dungeon_entity.h"
+#include "gUnknown_203B418.h"
+#include "pokemon.h"
+
+extern struct unkStruct_203B418 *gUnknown_203B418;
+extern void sub_807191C(struct DungeonEntity *);
+extern struct DungeonEntity *sub_8085480(void);
+extern struct DungeonEntity *sub_8085680(u32);
+extern void sub_808EC94(u8 *param_1, u8 param_2);
+extern void sub_8097FF8(void);
+extern u8 sub_8044B28(void);
+extern u8 HasRecruitedMon(u32);
+extern u8 gUnknown_202E038[];
+extern void sub_8083E88(u32);
+extern void sub_8085374();
+extern void sub_80854D4();
+extern void sub_8085930(u32);
+extern void sub_80855E4(void *);
+extern void sub_8085860(s32 r0, u32 r1);
+extern void sub_8068FE0(struct DungeonEntity *, u32, u32);
+extern void sub_8097FA8(u32);
+
+void sub_8086A3C(struct DungeonEntity *param_1)
+{
+ param_1->unk70->unk15C = 1;
+ param_1->unk70->unk15E = 1;
+}
+
+void sub_8086A54(struct DungeonEntity *param_1)
+{
+ param_1->unk70->unk15C = 1;
+ param_1->unk70->unk15E = 0;
+}
+
+void SetupBossFightHP(struct DungeonEntity *param_1, s32 newHP, u16 param_3)
+{
+
+ // NOTE: needed two of these to match.. very dumb
+ struct subStruct_8048524 *iVar1;
+ struct subStruct_8048524 *iVar2;
+
+ iVar1 = param_1->unk70;
+ iVar2 = param_1->unk70;
+
+ iVar1->isBoss = TRUE;
+
+ // BUG: Source of the Reviver Seed Boss Glitch
+ //
+ // Video to demonstration:
+ // https://www.youtube.com/watch?v=rHu7EehrZ68
+ iVar1->bossHPBackup = iVar1->maxHP;
+ if (newHP != 0) {
+ iVar1->maxHP = newHP;
+ iVar1->HP = newHP;
+ }
+
+ gUnknown_203B418->unk66A = param_3;
+ sub_808EC94(iVar2->unk8C,iVar2->isBoss);
+ sub_807191C(param_1);
+}
+
+void sub_8086AC0(void)
+{
+ if(!sub_8044B28())
+ if(gUnknown_203B418->unk2 == 0)
+ sub_8097FF8();
+}
+
+u8 sub_8086AE4(s16 _index)
+{
+ s32 pokeIndex = _index;
+
+ if(gUnknown_203B418->unk65C == 0)
+ return 1;
+ else
+ return HasRecruitedMon(pokeIndex);
+}
+
+void sub_8086B14(void)
+{
+ struct DungeonEntity * iVar1;
+ struct DungeonEntity * iVar2;
+ struct DungeonEntity * uVar3;
+
+ iVar1 = sub_8085480();
+ iVar2 = sub_8085680(4);
+ uVar3 = sub_8085680(3);
+ sub_8083E88(0x72);
+ sub_8085374();
+ sub_80854D4();
+ sub_8085930(4);
+ sub_80855E4(sub_8086A3C);
+ sub_8086A3C(uVar3);
+ iVar2->unk70->unk15C = 1;
+ sub_8085860(iVar1->posWorldX,iVar1->posWorldY + -2);
+ CopySpeciesNametoBuffer(gUnknown_202E038,SPECIES_DIGLETT);
+ CopySpeciesNametoBuffer(gUnknown_202E038 + 0x50, SPECIES_SKARMORY);
+}
+
+void sub_8086B94(void)
+{
+ struct DungeonEntity * iVar1;
+ struct DungeonEntity * iVar2;
+ struct DungeonEntity * uVar3;
+
+ iVar1 = sub_8085480();
+ iVar2 = sub_8085680(4);
+ uVar3 = sub_8085680(3);
+
+ sub_8068FE0(uVar3,0x21c,0);
+ sub_8068FE0(iVar2,0x21c,0);
+ sub_80854D4();
+ sub_8085930(4);
+ sub_8085860(iVar1->posWorldX,iVar1->posWorldY);
+}
+
+void sub_8086BDC(char param_1, s32 param_2)
+{
+ if ((((param_2 * 0x1000000) - 0x1000000U) >> 0x18 < 2) && (param_1 == 3)) {
+ sub_8097FA8(1);
+ gUnknown_203B418->unk2 = 1;
+ }
+}
diff --git a/src/ds_menus.c b/src/ds_menus.c
index 7d7bc27..4e53311 100644
--- a/src/ds_menus.c
+++ b/src/ds_menus.c
@@ -2,17 +2,6 @@
#include "input.h"
#include "text.h"
-extern u8 *gUnknown_203B3E8;
-extern void nullsub_54();
-extern void sub_8039E18();
-
-void SetWonderMailMainMenuState(u8 r0)
-{
- *gUnknown_203B3E8 = r0;
- nullsub_54();
- sub_8039E18();
-}
-
u32 CreateDualSlotMenu(void)
{
return 1;
diff --git a/src/felicity_bank.c b/src/felicity_bank.c
index 727c957..6d1bd84 100644
--- a/src/felicity_bank.c
+++ b/src/felicity_bank.c
@@ -55,7 +55,7 @@ u32 CreateFelicityBank(s32 param_1)
return 1;
}
-u32 sub_80163A0(void)
+u32 FelicityBankCallback(void)
{
switch(gUnknown_203B204->currState) {
case 1:
diff --git a/src/thank_you_wonder_mail.c b/src/thank_you_wonder_mail.c
new file mode 100644
index 0000000..4e26b46
--- /dev/null
+++ b/src/thank_you_wonder_mail.c
@@ -0,0 +1,1723 @@
+#include "global.h"
+#include "save.h"
+#include "pokemon.h"
+#include "file_system.h"
+#include "item.h"
+#include "sub_8095228.h"
+#include "wonder_mail.h"
+#include "memory.h"
+#include "menu.h"
+#include "input.h"
+#include "text.h"
+#include "team_inventory.h"
+
+extern struct WonderMailStruct_203B2C4 *gUnknown_203B2C4;
+extern struct TeamInventory *gTeamInventory_203B460;
+
+#define THANK_YOU_MAIL_MAIN_MENU 0
+#define ANYTHING_ELSE_THANK_YOU_MAIN_MENU 1
+#define EXIT_THANK_YOU_MAIL 3
+#define NO_THANK_YOU_MAIL 4
+#define SELECT_THANK_YOU_MAIL_COMMS 6
+#define ITEM_EXISTS_ON_THANK_YOU_MAIL 7
+#define PROMPT_RESEND_WITH_ATTACHED_ITEM 8
+#define PROMPT_REWARD_ITEM_TO_SEND 9
+#define THANK_YOU_MAIL_STORAGE_EMPTY 0xA
+#define PROMPT_ITEM_TO_SEND 0xB
+#define CONFIRM_ITEM_TO_SEND 0xC
+#define THANK_YOU_MAIL_COMMS_CLEANUP 0xD
+#define PROMPT_THANK_YOU_TO_SEND 0xF
+#define SHOW_ITEM_TO_SEND_INFO 0x15
+#define COMMUNICATING_THANK_YOU_MAIL 0x16
+
+// TODO: verify it is 0x19 and not 0x1A
+#define DISPLAY_THANK_YOU_PASSWORD 0x19
+
+#define PROMPT_CONNECT_GAME_LINK 0x1D
+#define THANK_YOU_MAIL_COMMS_FINISHED 0x1E
+#define PRINT_THANK_YOU_ERROR 0x1F
+#define THANK_YOU_PASSWORD_SUCCESS 0x21
+#define PROMPT_THANK_YOU_PASSWORD 0x26
+#define PROCESS_THANK_YOU_PASSWORD 0x27
+#define THANK_YOU_PASSWORD_WRONG 0x28
+
+const struct ItemSlot gUnknown_80DED44 =
+{
+ 1, 0, 0
+};
+
+extern char gUnknown_202E5D8[0x50];
+extern char gAvailablePokemonNames[0x50];
+
+
+const struct UnkTextStruct2 gUnknown_80DED48 =
+{
+ 0x00, 0x00, 0x00, 0x00,
+ 0x03, 0x00, 0x00, 0x00,
+ 0x15, 0x00, 0x04, 0x00,
+ 0x06, 0x05,
+ 0x05, 0x00,
+ NULL
+};
+
+const struct UnkTextStruct2 gUnknown_80DED60 =
+{
+ 0x00, 0x00, 0x00, 0x00,
+ 0x03, 0x00, 0x00, 0x00,
+ 0x16, 0x00, 0x07, 0x00,
+ 0x06, 0x05,
+ 0x05, 0x00,
+ NULL
+};
+
+extern const u8 Confirm_80DED98[];
+extern const u8 Info_80DED90[];
+extern const u8 SendThankYou_Text[];
+extern const u8 GetThankYou_Text[];
+extern const u8 Cancel_80DEDD8[];
+extern const u8 GameLinkCable_Text[];
+extern const u8 Password_Text[];
+extern const u8 Yes_80DEE5C[];
+extern const u8 No_80DEE78[];
+extern const u8 SendItem_Text[];
+extern const u8 DontSendItem_Text[];
+extern const u8 SendWOItem_Text[];
+
+const struct MenuItem gUnknown_80DED78[3] =
+{
+ {Confirm_80DED98, 0xB},
+ {Info_80DED90, 0xC},
+ {NULL, 0x0},
+};
+
+ALIGNED(4) const u8 Info_80DED90[] = "Info";
+ALIGNED(4) const u8 Confirm_80DED98[] = "Confirm";
+
+// Unused
+const struct UnkTextStruct2 gUnknown_80DEDA0 =
+{
+ 0x00, 0x00, 0x00, 0x00,
+ 0x03, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00,
+ 0x00, 0x00,
+ NULL
+};
+
+
+const struct MenuItem gThankYouMailMainMenuItems[4] =
+{
+ {SendThankYou_Text, 0x1},
+ {GetThankYou_Text, 0x2},
+ {Cancel_80DEDD8, 0x0},
+ {NULL, 0x0},
+};
+
+ALIGNED(4) const u8 Cancel_80DEDD8[] = "Cancel";
+ALIGNED(4) const u8 GetThankYou_Text[] = "Get Thank-You Mail";
+ALIGNED(4) const u8 SendThankYou_Text[] = "Send Thank-You Mail";
+
+const struct MenuItem gUnknown_80DEE08[4] =
+{
+ {GameLinkCable_Text, WONDER_MAIL_GAME_LINK},
+ {Password_Text, WONDER_MAIL_PASSWORD},
+ {Cancel_80DEDD8, 0x0},
+ {NULL, 0x0},
+};
+
+ALIGNED(4) const u8 Password_Text[] = "Password";
+ALIGNED(4) const u8 GameLinkCable_Text[] = "Game Link cable";
+
+const struct MenuItem gUnknown_80DEE44[3] =
+{
+ {Yes_80DEE5C, 0x7},
+ {Cancel_80DEDD8, 0x0},
+ {NULL, 0x0},
+};
+
+ALIGNED(4) const u8 Yes_80DEE5C[] = "Yes";
+
+
+const struct MenuItem gUnknown_80DEE60[3] =
+{
+ {Yes_80DEE5C, 0x7},
+ {No_80DEE78, 0x8},
+ {NULL, 0x0},
+};
+
+ALIGNED(4) const u8 No_80DEE78[] = "No";
+
+const struct MenuItem gUnknown_80DEE7C[4] =
+{
+ {SendItem_Text, 0x9},
+ {DontSendItem_Text, 0xA},
+ {Cancel_80DEDD8, 0x0},
+ {NULL, 0x0},
+};
+
+ALIGNED(4) const u8 DontSendItem_Text[] = "Don~27t Send Item";
+ALIGNED(4) const u8 SendItem_Text[] = "Send Item";
+
+const struct MenuItem gUnknown_80DEEBC[3] =
+{
+ {SendWOItem_Text, 0xA},
+ {Cancel_80DEDD8, 0x0},
+ {NULL, 0x0},
+};
+
+ALIGNED(4) const u8 SendWOItem_Text[] = "Send w/o Item";
+
+const struct MenuItem gUnknown_80DEEE4[4] =
+{
+ {Yes_80DEE5C, 0x7},
+ {No_80DEE78, 0x8},
+ {Cancel_80DEDD8, 0x0},
+ {NULL, 0x0},
+};
+
+ALIGNED(4) const char gUnknown_80DEF04[] = " ...Oh?\n"
+ "Something~27s gone wrong.";
+
+ALIGNED(4) const char gUnknown_80DEF28[] = " ...Oh? The number of linked\n"
+ "GBA systems is incorrect.\n"
+ "Please try again from the start.";
+
+ALIGNED(4) const u8 gUnknown_80DEF80[]=
+ " ...Oh? It looks like your\n"
+ "friend chose a different mode.\n"
+ "Please try again from the start.";
+
+ALIGNED(4) const u8 gUnknown_80DEFDC[]=
+ " ...Oh? It looks like your\n"
+ "storage space is full. Please clear some\n"
+ "space and try again from the start.";
+
+ALIGNED(4) const u8 gUnknown_80DF044[]=
+ " ...Oh?\n"
+ "I think you~27ve received this mail before.\n"
+ "You can~27t get the same mail twice.";
+
+ALIGNED(4) const u8 gUnknown_80DF0A0[]=
+ " ...Oh?\n"
+ "I don~27t think you~27re eligible to receive\n"
+ "this mail.";
+
+ALIGNED(4) const u8 gUnknown_80DF0E0[]=
+ " ...Oh?\n"
+ "There is no room to receive new mail.\n"
+ "Please delete some mail and try again.";
+
+ALIGNED(4) const u8 gUnknown_80DF138[]=
+ " ...Oh? Your friend didn~27t\n"
+ "follow through on their side.\n"
+ "Please try again from the start.";
+
+ALIGNED(4) const u8 gUnknown_80DF194[]=
+ " Your #CGThank-You Mail#R\n"
+ "has been sent.";
+
+ALIGNED(4) const u8 gUnknown_80DF1C0[]=
+ " ...Oh?\n"
+ "This password appears to be wrong.\n"
+ "Would you like to try again?";
+
+ALIGNED(4) const u8 gUnknown_80DF208[]=
+ " ...Oh? This password doesn~27t\n"
+ "appear to be for a #CGThank-You Mail#R.";
+
+ALIGNED(4) const u8 gUnknown_80DF250[]=
+ ": This is the counter for\n"
+ "#CGThank-You Mail#R.#P"
+ ": Oh~2c hi~2c #CN%s#R.\n"
+ "I~27ve been waiting for you. You wanted me\n"
+ "to process a #CGThank-You Mail#R?#P"
+ ": Let me get on it right away.";
+
+ALIGNED(4) const u8 gUnknown_80DF304[]=
+ " Is it OK to send this\n"
+ "#CGThank-You Mail#R?";
+
+ALIGNED(4) const u8 gUnknown_80DF330[]=
+ " Please choose the\n"
+ "#CGThank-You Mail#R that you want to\n"
+ "send to your friend.";
+
+ALIGNED(4) const u8 gUnknown_80DF380[]=
+ " OK. Please enter the\n"
+ "#CGThank-You Mail password#R.";
+
+ALIGNED(4) const u8 gUnknown_80DF3B4[]=
+ " Please give this password\n"
+ "to the friend that rescued your team.#P"
+ " I also must save your\n"
+ "adventure.";
+
+ALIGNED(4) const u8 gUnknown_80DF418[]=
+ " OK~2c here is your\n"
+ "#CGThank-You Mail password#R.";
+
+ALIGNED(4) const u8 gUnknown_80DF44C[]=
+ " I need to save your\n"
+ "adventure.";
+
+ALIGNED(4) const u8 gUnknown_80DF46C[]=
+ " There we go.\n"
+ "I~27m all done.#P"
+ " Doesn~27t it feel great to\n"
+ "be appreciated for doing something good?\n"
+ "Please keep up your rescue work!";
+
+ALIGNED(4) const u8 gUnknown_80DF4F4[]=
+ " A #CGThank-You Mail#R has\n"
+ "arrived from your friend for your rescue\n"
+ "mission.";
+
+ALIGNED(4) const u8 gUnknown_80DF544[]= _(
+ "#+Communicating...\n"
+ "#+Please wait with the power on.\n"
+ "#+To cancel~2c press {B_BUTTON}.");
+
+ALIGNED(4) const u8 gUnknown_80DF594[]=
+ " There. I~27ve sent your\n"
+ "#CGThank-You Mail#R.\n"
+ "I need to save your adventure.";
+
+ALIGNED(4) const u8 gUnknown_80DF5E4[]=
+ " Please connect the GBA\n"
+ "systems with a #CGGame Link cable#R.\n"
+ "Is your friend also ready?";
+
+ALIGNED(4) const u8 gUnknown_80DF63C[]=
+ " There~2c all done.\n"
+ "#CN%s#R~2c I hope your friend\n"
+ "appreciates your sense of gratitude.";
+
+ALIGNED(4) const u8 gUnknown_80DF694[]=
+ " The item you~27ve chosen\n"
+ "here can~27t be exchanged later.\n"
+ "Are you certain this item is OK?";
+
+ALIGNED(4) const u8 gUnknown_80DF6F0[]=
+ " I~27ve saved your adventure. ";
+
+ALIGNED(4) const u8 gUnknown_80DF710[]=
+ " OK~2c please choose\n"
+ "the item to be sent.";
+
+ALIGNED(4) const u8 gUnknown_80DF73C[]=
+ " ...Oh?\n"
+ "Your storage space is empty.\n"
+ "What would you like to do?";
+
+ALIGNED(4) const u8 gUnknown_80DF77C[]=
+ " Would you like to choose\n"
+ "a #CGreward item#R from storage and\n"
+ "send it with your mail?";
+
+ALIGNED(4) const u8 gUnknown_80DF7D4[]=
+ " ...Oh?\n"
+ "You~27ve already attached a #CGreward item#R\n"
+ "to this mail.#P"
+ " I~27m sorry~2c but once an item\n"
+ "has been attached to mail~2c it can~27t be\n"
+ "exchanged.";
+
+ALIGNED(4) const u8 gUnknown_80DF870[]=
+ " Would you like to send it\n"
+ "again with the item you chose before?";
+
+ALIGNED(4) const u8 gUnknown_80DF8B4[]=
+ " ...Oh?\n"
+ "You don~27t seem to have a #CGThank-You Mail#R.";
+
+ALIGNED(4) const u8 gUnknown_80DF8EC[]=
+ " Hello.\n"
+ "I handle #CGThank-You Mail#R.\n"
+ "How may I serve you?";
+
+ALIGNED(4) const u8 gUnknown_80DF928[]=
+ " May I help you with\n"
+ "anything else?";
+
+ALIGNED(4) const u8 gUnknown_80DF94C[] =
+ " Please come see me\n"
+ "anytime.";
+
+ALIGNED(4) const u8 gUnknown_80DF96C[] =
+ " How would you like to send\n"
+ "your #CGThank-You Mail#R?";
+
+ALIGNED(4) const u8 gUnknown_80DF9A4[]=
+ " How would you like to\n"
+ "receive your friend~27s #CGThank-You Mail#R?";
+
+ALIGNED(4) const u8 thank_you_fill[] = "pksdir0";
+
+
+extern s32 sub_80953D4(u32);
+extern void sub_80141B4(const char *r0, u32, struct OpenedFile **r1, u32);
+extern void sub_8014248(const char *r0, u32, u32, const struct MenuItem *r4, u32, u32, u32, struct OpenedFile **r5, u32);
+extern u8 sub_8012FD8(u32 *r0);
+extern void sub_8035CC0(struct UnkTextStruct2 *r0, u32);
+extern void sub_8030810(u32);
+extern u32 sub_8095324(u32);
+extern u32 sub_8031DCC(void);
+extern void sub_8031E00(void);
+extern void sub_8095240(u8);
+extern u32 sub_802F298();
+extern u8 sub_801CF14(u32);
+extern u32 sub_8030768(u32);
+extern s8 sub_80307EC(void);
+extern void sub_8030D40(u8, u32);
+extern u32 sub_8030DA0();
+extern void sub_8013114(u32 *r0, s32 *r1);
+extern void HandleThankYouMailPelipperMainMenu();
+extern void sub_802AAC8();
+extern void ReturnToThankYouMailMainMenu();
+extern void sub_802AB7C();
+extern void HandleMailCommunicationMenu();
+extern void sub_802A98C();
+extern void sub_802A9A8();
+extern void sub_802A910();
+extern void sub_802A8BC();
+extern void sub_802A8A0();
+extern void HandleConfirmItemtoSendMenu();
+extern void ExitThankYouMailMenu1();
+extern void sub_802A090();
+extern void sub_802A158();
+extern void sub_802A0C8();
+extern void sub_802A174();
+extern void sub_802A230();
+extern void sub_802A28C();
+extern void sub_802A39C();
+extern void sub_802A33C();
+extern void sub_802A740();
+extern void sub_802A6F0();
+extern void sub_802A68C();
+extern void sub_802A4D4();
+extern void sub_802A050();
+extern void sub_802A4AC();
+extern void sub_802A458();
+extern void sub_802A75C();
+extern void DisplayThankYouMailCommsOutcome();
+extern void ReturnToThankYouMainFromError();
+extern void ExitThankYouMailMenu2();
+extern void sub_802AB60();
+extern void sub_802AB98();
+extern void sub_802A718();
+extern void sub_802A6B4();
+extern void AdvanceToThankYouPasswordProcessing();
+extern void HandleThankYouMailPasswordMenu();
+extern void sub_802A9FC();
+extern void sub_802A828();
+extern void sub_802A850();
+extern void sub_8030DE4();
+extern void sub_801B450();
+extern void sub_803084C();
+extern void sub_801CBB8();
+extern void sub_80155F0();
+extern void sub_8031E10();
+extern void sub_802F2C0();
+extern u32 sub_80144A4(s32 *r0);
+extern void SetThankYouMailMenuState(u32);
+extern struct PokemonStruct *sub_808D33C(void);
+extern void ExpandPlaceholdersBuffer(u8 *buffer, const char *text, ...);
+extern void SetMenuItems(void *menu, struct UnkTextStruct2 *, u32, const struct UnkTextStruct2 *, const struct MenuItem *entries, u32, u32, u32);
+extern void sub_80922B4(u8 *, u8 *, u32);
+extern void sub_802F204(u8 *, u32);
+extern void sub_80151C0(u32, u8 *);
+extern void xxx_call_start_bg_music(void);
+extern void sub_803092C(void);
+extern void sub_801CCD8(void);
+extern void sub_8011830(void);
+extern void nullsub_23(u32);
+extern s32 sub_8037B28(u32);
+extern u32 sub_8030894(void);
+extern u32 sub_801D008(void);
+extern void sub_80306A8(u32, u32, u32, u32);
+extern s32 sub_8037D64(u32, void *, void *);
+extern s32 sub_80381F4(u32, void *, void *);
+extern void sub_801C8C4(u32, u32, s32 * , u32);
+extern u8 sub_809539C(u32, u32);
+extern u8 sub_800D588(void);
+extern u32 sub_803C200(u8 *, u32);
+extern void sub_8031D70(u8, u32);
+
+extern void sub_803092C(void);
+extern void sub_8035CF4(u32 *, u32, u32);
+extern u32 sub_801CA08(u32);
+extern void sub_801CBB8(void);
+extern void sub_801B3C0(struct ItemSlot *);
+extern u8 sub_801CB24(void);
+extern void sub_801B450(void);
+extern u32 sub_801B410(void);
+extern void sub_801CB5C(u32);
+extern void sub_801CCD8(void);
+extern void sub_8011C28(u32);
+extern u32 sub_80154F0(void);
+extern u32 sub_8039068(u32, u8 *r1, u8 *r0);
+extern u8 sub_809539C(u32, u32);
+
+
+u32 CreateThankYouMailPelipper(void)
+{
+ char *monName;
+ struct OpenedFile *faceFile;
+ s32 uVar2;
+ int counter;
+ struct unkStruct_8095228 *temp;
+
+ ResetUnusedInputStruct();
+ sub_800641C(0,1,1);
+ gUnknown_203B2C4 = MemoryAlloc(sizeof(struct WonderMailStruct_203B2C4), 8);
+ MemoryFill8((u8 *)gUnknown_203B2C4, 0, sizeof(struct WonderMailStruct_203B2C4));
+
+ CopyYellowSpeciesNametoBuffer(gUnknown_202E5D8, SPECIES_PELIPPER);
+ monName = GetMonSpecies(SPECIES_PELIPPER);
+ strcpy(gAvailablePokemonNames, monName);
+ faceFile = GetDialogueSpriteDataPtr(SPECIES_PELIPPER);
+
+ gUnknown_203B2C4->faceFile = faceFile;
+ gUnknown_203B2C4->faceData = faceFile->data;
+ gUnknown_203B2C4->unk42C = 0;
+ gUnknown_203B2C4->unk42D = 0;
+ gUnknown_203B2C4->unk42E = 0;
+ gUnknown_203B2C4->unk428 = 2;
+ gUnknown_203B2C4->unk42A = 8;
+
+ for(counter = 0; counter < PASSWORD_BUFFER_SIZE; counter++){
+ gUnknown_203B2C4->passwordBuffer[counter] = 0;
+ }
+
+ gUnknown_203B2C4->wonderMailMethod = WONDER_MAIL_GAME_LINK;
+ gUnknown_203B2C4->wonderMailMode = WONDER_MAIL_MODE_SEND;
+
+ uVar2 = sub_80953D4(6);
+ if (uVar2 != -1) {
+ temp = sub_8095228(uVar2);
+ gUnknown_203B2C4->unk41C = temp->unk20;
+ gUnknown_203B2C4->unk218 = uVar2;
+ gUnknown_203B2C4->unk430 = temp->unk10;
+ SetThankYouMailMenuState(5);
+ }
+ else {
+ gUnknown_203B2C4->unk41C = gUnknown_80DED44;
+ gUnknown_203B2C4->unk218 = -1;
+ SetThankYouMailMenuState(THANK_YOU_MAIL_MAIN_MENU);
+ }
+ gUnknown_203B2C4->unk4 = 0x2b;
+ return 1;
+}
+
+u32 ThankYouMailPelipperCallback(void)
+{
+
+ switch(gUnknown_203B2C4->state) {
+ case 5:
+ sub_802AB7C();
+ break;
+ case THANK_YOU_MAIL_COMMS_FINISHED:
+ DisplayThankYouMailCommsOutcome();
+ break;
+ case PRINT_THANK_YOU_ERROR:
+ ReturnToThankYouMainFromError();
+ break;
+ case 0xe:
+ sub_802A090();
+ break;
+ case PROMPT_THANK_YOU_TO_SEND:
+ sub_802A158();
+ break;
+ case 0x11:
+ sub_802A174();
+ break;
+ case 0x12:
+ sub_802A230();
+ break;
+ case 0x10:
+ sub_802A0C8();
+ break;
+ case 0x13:
+ sub_802A28C();
+ break;
+ case 0x14:
+ sub_802A39C();
+ break;
+ case SHOW_ITEM_TO_SEND_INFO:
+ sub_802A33C();
+ break;
+ case 0x1c:
+ sub_802A458();
+ break;
+ case 0x1b:
+ sub_802A4AC();
+ break;
+ case DISPLAY_THANK_YOU_PASSWORD:
+ sub_802A4D4();
+ break;
+ case 0x1a:
+ sub_802A050();
+ break;
+ case THANK_YOU_PASSWORD_WRONG:
+ sub_802A9FC();
+ break;
+ case PROMPT_THANK_YOU_PASSWORD:
+ AdvanceToThankYouPasswordProcessing();
+ break;
+ case PROCESS_THANK_YOU_PASSWORD:
+ HandleThankYouMailPasswordMenu();
+ break;
+ case 0x25:
+ sub_802A6B4();
+ break;
+ case 0x24:
+ sub_802A718();
+ break;
+ case THANK_YOU_PASSWORD_SUCCESS:
+ sub_802AB60();
+ break;
+ case 0x22:
+ sub_802AB98();
+ break;
+ case COMMUNICATING_THANK_YOU_MAIL:
+ sub_802A740();
+ break;
+ case 0x18:
+ sub_802A68C();
+ break;
+ case 0x17:
+ sub_802A6F0();
+ break;
+ case PROMPT_CONNECT_GAME_LINK:
+ sub_802A75C();
+ break;
+ case 0x20:
+ ExitThankYouMailMenu2();
+ break;
+ case THANK_YOU_MAIL_COMMS_CLEANUP:
+ ExitThankYouMailMenu1();
+ break;
+ case CONFIRM_ITEM_TO_SEND:
+ HandleConfirmItemtoSendMenu();
+ break;
+ case 0x29:
+ sub_802A828();
+ break;
+ case 0x2a:
+ sub_802A850();
+ break;
+ case PROMPT_ITEM_TO_SEND:
+ sub_802A8A0();
+ break;
+ case THANK_YOU_MAIL_STORAGE_EMPTY:
+ sub_802A8BC();
+ break;
+ case PROMPT_REWARD_ITEM_TO_SEND:
+ sub_802A910();
+ break;
+ case ITEM_EXISTS_ON_THANK_YOU_MAIL:
+ sub_802A98C();
+ break;
+ case PROMPT_RESEND_WITH_ATTACHED_ITEM:
+ sub_802A9A8();
+ break;
+ case SELECT_THANK_YOU_MAIL_COMMS:
+ HandleMailCommunicationMenu();
+ break;
+ case NO_THANK_YOU_MAIL:
+ ReturnToThankYouMailMainMenu();
+ break;
+ case THANK_YOU_MAIL_MAIN_MENU:
+ case ANYTHING_ELSE_THANK_YOU_MAIN_MENU:
+ HandleThankYouMailPelipperMainMenu();
+ break;
+ case 2:
+ sub_802AAC8();
+ break;
+ case EXIT_THANK_YOU_MAIL:
+ return 3;
+ }
+ return 0;
+}
+
+void CleanThankYouMailPelipper(void)
+{
+ if(gUnknown_203B2C4 != NULL)
+ {
+ CloseFile(gUnknown_203B2C4->faceFile);
+ MemoryFree(gUnknown_203B2C4);
+ gUnknown_203B2C4 = NULL;
+ sub_8030DE4();
+ sub_801B450();
+ sub_803084C();
+ sub_801CBB8();
+ sub_80155F0();
+ sub_8031E10();
+ sub_802F2C0();
+ }
+}
+
+void ReturnToThankYouMainFromError(void)
+{
+ s32 temp;
+ if(sub_80144A4(&temp) == 0)
+ {
+ SetThankYouMailMenuState(ANYTHING_ELSE_THANK_YOU_MAIN_MENU);
+ }
+}
+
+void PrintThankYouMailLinkError(u32 param_1)
+{
+ switch(param_1) {
+ case 3:
+ sub_80141B4(gUnknown_80DEF28, 0, &gUnknown_203B2C4->faceFile, 0x10d);
+ break;
+ case 4:
+ sub_80141B4(gUnknown_80DEF80, 0, &gUnknown_203B2C4->faceFile, 0x10d);
+ break;
+ case 6:
+ sub_80141B4(gUnknown_80DEFDC, 0, &gUnknown_203B2C4->faceFile, 0x10d);
+ break;
+ case 7:
+ sub_80141B4(gUnknown_80DF044, 0, &gUnknown_203B2C4->faceFile, 0x10d);
+ break;
+ case 9:
+ sub_80141B4(gUnknown_80DF0A0, 0, &gUnknown_203B2C4->faceFile, 0x10d);
+ break;
+ case 11:
+ sub_80141B4(gUnknown_80DF0A0, 0, &gUnknown_203B2C4->faceFile, 0x10d);
+ break;
+ case 13:
+ sub_80141B4(gUnknown_80DF0E0, 0, &gUnknown_203B2C4->faceFile, 0x10d);
+ break;
+ case 1:
+ case 2:
+ case 5:
+ case 14:
+ sub_80141B4(gUnknown_80DEF04, 0, &gUnknown_203B2C4->faceFile, 0x10d);
+ break;
+ case 15:
+ sub_80141B4(gUnknown_80DF138, 0, &gUnknown_203B2C4->faceFile, 0x10d);
+ break;
+ case 0:
+ default:
+ break;
+ }
+}
+
+void DisplayThankYouMailCommsOutcome(void)
+{
+ s32 auStack20;
+
+ if (sub_80144A4(&auStack20) != 0) {
+ return;
+ }
+ MemoryFill8((u8 *)&gUnknown_203B2C4->unk41C, 0, sizeof(struct ItemSlot));
+ gUnknown_203B2C4->unk41C.itemIndex = 0;
+ gUnknown_203B2C4->unk41C.numItems = 1;
+ gUnknown_203B2C4->unk41C.unk0 = 0;
+ if (gUnknown_203B2C4->linkError == 0) {
+ switch(gUnknown_203B2C4->unk40)
+ {
+ case 6:
+ switch(gUnknown_203B2C4->wonderMailMethod)
+ {
+ case WONDER_MAIL_GAME_LINK:
+ case WONDER_MAIL_PASSWORD:
+ case 6:
+ // "Thank-You Mail has been sent"
+ sub_80141B4(gUnknown_80DF194, 0, &gUnknown_203B2C4->faceFile, 0x10d);
+ break;
+ case 4:
+ default:
+ break;
+ }
+ SetThankYouMailMenuState(THANK_YOU_MAIL_COMMS_CLEANUP);
+ break;
+ case 7:
+ SetThankYouMailMenuState(THANK_YOU_PASSWORD_SUCCESS);
+ break;
+ default:
+ break;
+ }
+ }
+ else
+ {
+ PrintThankYouMailLinkError(gUnknown_203B2C4->linkError);
+ SetThankYouMailMenuState(PRINT_THANK_YOU_ERROR);
+ }
+}
+
+void sub_802A050(void)
+{
+ switch(sub_8031DCC())
+ {
+
+ case 3:
+ case 2:
+ sub_8031E10();
+ ResetUnusedInputStruct();
+ sub_800641C(gUnknown_203B2C4->unk3BC, 1, 1);
+ SetThankYouMailMenuState(0x1B);
+ break;
+ case 1:
+ sub_8031E00();
+ break;
+ default:
+ return;
+ }
+}
+
+void sub_802A090(void)
+{
+ s32 temp;
+ if(sub_80144A4(&temp) == 0)
+ {
+ switch(temp)
+ {
+ case 7:
+ SetThankYouMailMenuState(SELECT_THANK_YOU_MAIL_COMMS);
+ break;
+ case 8:
+ case 0:
+ SetThankYouMailMenuState(ANYTHING_ELSE_THANK_YOU_MAIN_MENU);
+ break;
+ default:
+ break;
+ }
+ }
+}
+
+void sub_802A0C8(void)
+{
+ switch(sub_8030768(1))
+ {
+ case 2:
+ sub_803084C();
+ SetThankYouMailMenuState(ANYTHING_ELSE_THANK_YOU_MAIN_MENU);
+ break;
+ case 3:
+ gUnknown_203B2C4->unk218 = sub_80307EC();
+ SetThankYouMailMenuState(0x11);
+ break;
+ case 4:
+ gUnknown_203B2C4->unk4 = 0x10;
+ gUnknown_203B2C4->unk218 = sub_80307EC();
+ sub_8006518(gUnknown_203B2C4->unk3BC);
+ ResetUnusedInputStruct();
+ sub_800641C(0,1,1);
+ sub_8030D40(gUnknown_203B2C4->unk218,0);
+ SetThankYouMailMenuState(0x12);
+ break;
+ }
+}
+
+void sub_802A158(void)
+{
+ s32 temp;
+ if(sub_80144A4(&temp) == 0)
+ {
+ SetThankYouMailMenuState(0x10);
+ }
+}
+
+void sub_802A174(void)
+{
+ s32 menuAction;
+
+ menuAction = -1;
+ sub_8030768(0);
+ if (sub_8012FD8(&gUnknown_203B2C4->unk30C) == 0) {
+ sub_8013114(&gUnknown_203B2C4->unk30C, &menuAction);
+ }
+
+ switch(menuAction)
+ {
+ case 0xB:
+ sub_803084C();
+ SetThankYouMailMenuState(0xe);
+ break;
+ case 0xC:
+ gUnknown_203B2C4->unk4 = 0x2b;
+ sub_8006518(gUnknown_203B2C4->unk3BC);
+ ResetUnusedInputStruct();
+ sub_800641C(0,1,1);
+ sub_8030D40(gUnknown_203B2C4->unk218,0);
+ SetThankYouMailMenuState(0x12);
+ break;
+ case 0:
+ case 0xD:
+ sub_8035CC0(gUnknown_203B2C4->unk35C,2);
+ sub_8030810(1);
+ SetThankYouMailMenuState(0x10);
+ default:
+ break;
+ }
+}
+
+void sub_802A230(void)
+{
+ switch(sub_8030DA0())
+ {
+ case 2:
+ case 3:
+ sub_8030DE4();
+ ResetUnusedInputStruct();
+ sub_800641C(gUnknown_203B2C4->unk3BC, 1, 1);
+ sub_803092C();
+ if (gUnknown_203B2C4->unk4 == 0x2b) {
+ sub_8035CF4(&gUnknown_203B2C4->unk21C, 3, 1);
+ SetThankYouMailMenuState(0x11);
+ }
+ else {
+ SetThankYouMailMenuState(gUnknown_203B2C4->unk4);
+ }
+ break;
+ default:
+ break;
+ }
+}
+
+void sub_802A28C(void)
+{
+
+ gUnknown_203B2C4->unk41C.itemIndex = 0;
+ gUnknown_203B2C4->unk41C.numItems = 1;
+ gUnknown_203B2C4->unk41C.unk0 = 0;
+
+ switch(sub_801CA08(1))
+ {
+ case 2:
+ sub_801CBB8();
+ SetThankYouMailMenuState(ANYTHING_ELSE_THANK_YOU_MAIN_MENU);
+ break;
+ case 3:
+ gUnknown_203B2C4->unk41C.itemIndex = sub_801CB24();
+ SetThankYouMailMenuState(0x14);
+ break;
+ case 4:
+ gUnknown_203B2C4->unk4 = 0x13;
+ gUnknown_203B2C4->unk41C.itemIndex = sub_801CB24();
+ sub_8006518(gUnknown_203B2C4->unk3BC);
+ ResetUnusedInputStruct();
+ sub_800641C(0,1,1);
+ sub_801B3C0(&gUnknown_203B2C4->unk41C);
+ SetThankYouMailMenuState(SHOW_ITEM_TO_SEND_INFO);
+ break;
+ }
+}
+
+void sub_802A33C(void)
+{
+ switch(sub_801B410())
+ {
+ case 2:
+ case 3:
+ sub_801B450();
+ ResetUnusedInputStruct();
+ sub_800641C(gUnknown_203B2C4->unk3BC,1,1);
+ sub_801CB5C(1);
+ if (gUnknown_203B2C4->unk4 == 0x2b) {
+ sub_8035CF4(&gUnknown_203B2C4->unk21C,3,1);
+ SetThankYouMailMenuState(0x14);
+ }
+ else {
+ SetThankYouMailMenuState(gUnknown_203B2C4->unk4);
+ }
+ break;
+ case 1:
+ default:
+ break;
+ }
+}
+
+void sub_802A39C(void)
+{
+ s32 menuAction;
+
+ menuAction = -1;
+ sub_801CA08(0);
+ if (sub_8012FD8(&gUnknown_203B2C4->unk30C) == 0) {
+ sub_8013114(&gUnknown_203B2C4->unk30C, &menuAction);
+ }
+
+ switch(menuAction)
+ {
+ case 0xB:
+ sub_801CBB8();
+ SetThankYouMailMenuState(CONFIRM_ITEM_TO_SEND);
+ break;
+ case 0xC:
+ gUnknown_203B2C4->unk4 = 0x2b;
+ sub_8006518(gUnknown_203B2C4->unk3BC);
+ ResetUnusedInputStruct();
+ sub_800641C(0,1,1);
+ sub_801B3C0(&gUnknown_203B2C4->unk41C);
+ SetThankYouMailMenuState(SHOW_ITEM_TO_SEND_INFO);
+ break;
+ case 0:
+ case 0xD:
+ sub_8035CC0(gUnknown_203B2C4->unk35C, 3);
+ sub_801CCD8();
+ SetThankYouMailMenuState(0x13);
+ default:
+ break;
+ }
+}
+
+void sub_802A458(void)
+{
+ s32 temp;
+ if(sub_80144A4(&temp) == 0)
+ {
+ SetThankYouMailMenuState(THANK_YOU_MAIL_COMMS_CLEANUP);
+ }
+}
+
+void ExitThankYouMailMenu1(void)
+{
+ s32 temp;
+ if(sub_80144A4(&temp) == 0)
+ {
+ SetThankYouMailMenuState(EXIT_THANK_YOU_MAIL);
+ }
+}
+
+void ExitThankYouMailMenu2(void)
+{
+ s32 temp;
+ if(sub_80144A4(&temp) == 0)
+ {
+ SetThankYouMailMenuState(EXIT_THANK_YOU_MAIL);
+ }
+}
+
+void sub_802A4AC(void)
+{
+ s32 temp;
+ if(sub_80144A4(&temp) == 0)
+ {
+ SetThankYouMailMenuState(0x18);
+ sub_8011C28(1);
+ PrepareSavePakWrite(SPECIES_NONE);
+ }
+}
+
+void sub_802A4D4(void)
+{
+ s32 temp;
+ if(sub_80144A4(&temp) == 0)
+ {
+ SetThankYouMailMenuState(0x1A);
+ }
+}
+
+void AdvanceToThankYouPasswordProcessing(void)
+{
+ s32 temp;
+ if(sub_80144A4(&temp) == 0)
+ {
+ SetThankYouMailMenuState(PROCESS_THANK_YOU_PASSWORD);
+ }
+}
+
+void HandleThankYouMailPasswordMenu(void)
+{
+ u8 uVar1;
+ struct unkStruct_8095228 *puVar5;
+ u32 return_var;
+ struct unkStruct_8095228 temp;
+
+ return_var = sub_80154F0();
+ MemoryFill8((u8 *)&temp, 0, sizeof(struct unkStruct_8095228));
+ switch(return_var)
+ {
+ case 3:
+ switch(sub_8039068(0x20,gUnknown_203B2C4->passwordBuffer,&temp.unk0))
+ {
+ case 0x11:
+ // Wrong password
+ sub_8014248(gUnknown_80DF1C0, 0, 7, gUnknown_80DEE44, 0, 4, 0, &gUnknown_203B2C4->faceFile, 0xc);
+ SetThankYouMailMenuState(THANK_YOU_PASSWORD_WRONG);
+ break;
+ case 0x14:
+ // Incorrect password
+ sub_80141B4(gUnknown_80DF208, 0, &gUnknown_203B2C4->faceFile, 0x10d);
+ SetThankYouMailMenuState(PRINT_THANK_YOU_ERROR);
+ break;
+ case 0xB:
+ // Not eligible to receive
+ sub_80141B4(gUnknown_80DF0A0, 0, &gUnknown_203B2C4->faceFile, 0x10d);
+ SetThankYouMailMenuState(PRINT_THANK_YOU_ERROR);
+ break;
+ case 0x18:
+ // I think this is when password works successfully
+ uVar1 = sub_809539C(4,temp.unk10);
+ puVar5 = sub_8095228(uVar1);
+ *puVar5 = temp;
+ puVar5->unk0 = 6;
+ gUnknown_203B2C4->unk430 = temp.unk10;
+ SetThankYouMailMenuState(THANK_YOU_PASSWORD_SUCCESS);
+ break;
+ default:
+ case 7:
+ break;
+ }
+ sub_80155F0();
+ break;
+ case 2:
+ sub_80155F0();
+ ResetUnusedInputStruct();
+ sub_800641C(gUnknown_203B2C4->unk3BC, 1, 1);
+ SetThankYouMailMenuState(ANYTHING_ELSE_THANK_YOU_MAIN_MENU);
+ break;
+ }
+}
+
+void sub_802A68C(void)
+{
+ s32 temp;
+
+ if (sub_80144A4(&temp) == 0) {
+ if (!WriteSavePak()) {
+ FinishWriteSavePak();
+ SetThankYouMailMenuState(THANK_YOU_MAIL_COMMS_CLEANUP);
+ }
+ }
+}
+
+void sub_802A6B4(void)
+{
+ int saveStatus;
+ u32 temp;
+
+ if (sub_80144A4(&temp) == 0) {
+ if (!WriteSavePak()) {
+ saveStatus = GetSavePakStatus();
+ FinishWriteSavePak();
+ if (saveStatus == SAVE_COMPLETED) {
+ SetThankYouMailMenuState(0x20);
+ }
+ else {
+ SetThankYouMailMenuState(EXIT_THANK_YOU_MAIL);
+ }
+ }
+ }
+}
+
+void sub_802A6F0(void)
+{
+ s32 temp;
+
+ if (sub_80144A4(&temp) == 0) {
+ SetThankYouMailMenuState(0x18);
+ sub_8011C28(1);
+ PrepareSavePakWrite(SPECIES_NONE);
+ }
+}
+
+void sub_802A718(void)
+{
+ s32 temp;
+
+ if (sub_80144A4(&temp) == 0) {
+ SetThankYouMailMenuState(0x25);
+ sub_8011C28(1);
+ PrepareSavePakWrite(SPECIES_NONE);
+ }
+}
+
+void sub_802A740(void)
+{
+ s32 temp;
+
+ if (sub_80144A4(&temp) == 0) {
+ SetThankYouMailMenuState(THANK_YOU_MAIL_COMMS_FINISHED);
+ }
+}
+
+void sub_802A75C(void)
+{
+ s32 temp;
+ if(sub_80144A4(&temp) == 0)
+ {
+ switch(temp)
+ {
+ case 7:
+ // NOTE: if statement is needed to match
+ if(gUnknown_203B2C4->wonderMailMode)
+ SetThankYouMailMenuState(COMMUNICATING_THANK_YOU_MAIL);
+ else
+ SetThankYouMailMenuState(COMMUNICATING_THANK_YOU_MAIL);
+ break;
+ case 0:
+ SetThankYouMailMenuState(ANYTHING_ELSE_THANK_YOU_MAIN_MENU);
+ break;
+ }
+ }
+}
+
+void HandleConfirmItemtoSendMenu(void)
+{
+ s32 temp;
+ struct unkStruct_8095228 *return_var;
+ if(sub_80144A4(&temp) == 0)
+ {
+ switch(temp)
+ {
+ case 7:
+ return_var = sub_8095228(gUnknown_203B2C4->unk218);
+ if(gUnknown_203B2C4->unk41C.itemIndex != 0)
+ {
+ return_var->unk20 = gUnknown_203B2C4->unk41C;
+ }
+ gTeamInventory_203B460->teamStorage[gUnknown_203B2C4->unk41C.itemIndex]--;
+ SetThankYouMailMenuState(0x29);
+ break;
+ case 8:
+ SetThankYouMailMenuState(PROMPT_ITEM_TO_SEND);
+ break;
+ case 0:
+ SetThankYouMailMenuState(ANYTHING_ELSE_THANK_YOU_MAIN_MENU);
+ break;
+ }
+ }
+}
+
+void sub_802A828(void)
+{
+ s32 temp;
+ if(sub_80144A4(&temp) == 0)
+ {
+ SetThankYouMailMenuState(0x2A);
+ sub_8011C28(1);
+ PrepareSavePakWrite(SPECIES_NONE);
+ }
+}
+
+void sub_802A850(void)
+{
+ s32 temp;
+ if(sub_80144A4(&temp) == 0)
+ {
+ if(!WriteSavePak())
+ {
+ FinishWriteSavePak();
+ switch(gUnknown_203B2C4->wonderMailMethod)
+ {
+ case WONDER_MAIL_GAME_LINK:
+ case 4:
+ SetThankYouMailMenuState(PROMPT_CONNECT_GAME_LINK);
+ break;
+ case WONDER_MAIL_PASSWORD:
+ SetThankYouMailMenuState(DISPLAY_THANK_YOU_PASSWORD);
+ break;
+ }
+ }
+ }
+}
+
+void sub_802A8A0(void)
+{
+ s32 temp;
+
+ if (sub_80144A4(&temp) == 0) {
+ SetThankYouMailMenuState(0x13);
+ }
+}
+
+void sub_802A8BC(void)
+{
+ s32 temp;
+ if(sub_80144A4(&temp) == 0)
+ {
+ switch(temp)
+ {
+ case 0xA:
+ switch(gUnknown_203B2C4->wonderMailMethod)
+ {
+ case WONDER_MAIL_GAME_LINK:
+ case 4:
+ SetThankYouMailMenuState(PROMPT_CONNECT_GAME_LINK);
+ break;
+ case WONDER_MAIL_PASSWORD:
+ SetThankYouMailMenuState(DISPLAY_THANK_YOU_PASSWORD);
+ break;
+ }
+ break;
+ case 0:
+ SetThankYouMailMenuState(ANYTHING_ELSE_THANK_YOU_MAIN_MENU);
+ break;
+ }
+ }
+}
+
+void sub_802A910(void)
+{
+ s32 temp;
+ if(sub_80144A4(&temp) == 0)
+ {
+ switch(temp)
+ {
+ case 9:
+ if(sub_801CF14(0) != 0)
+ {
+ SetThankYouMailMenuState(THANK_YOU_MAIL_STORAGE_EMPTY);
+ }
+ else
+ {
+ SetThankYouMailMenuState(PROMPT_ITEM_TO_SEND);
+ }
+ break;
+ case 0xA:
+ switch(gUnknown_203B2C4->wonderMailMethod)
+ {
+ case WONDER_MAIL_GAME_LINK:
+ case 4:
+ SetThankYouMailMenuState(PROMPT_CONNECT_GAME_LINK);
+ break;
+ case WONDER_MAIL_PASSWORD:
+ SetThankYouMailMenuState(DISPLAY_THANK_YOU_PASSWORD);
+ break;
+ }
+ break;
+ case 0:
+ SetThankYouMailMenuState(ANYTHING_ELSE_THANK_YOU_MAIN_MENU);
+ break;
+ }
+ }
+}
+
+void sub_802A98C(void)
+{
+ s32 temp;
+
+ if (sub_80144A4(&temp) == 0) {
+ SetThankYouMailMenuState(PROMPT_RESEND_WITH_ATTACHED_ITEM);
+ }
+}
+
+void sub_802A9A8(void)
+{
+ s32 temp;
+ if(sub_80144A4(&temp) == 0)
+ {
+ switch(temp)
+ {
+ case 0x7:
+ switch(gUnknown_203B2C4->wonderMailMethod)
+ {
+ case WONDER_MAIL_GAME_LINK:
+ case 4:
+ SetThankYouMailMenuState(PROMPT_CONNECT_GAME_LINK);
+ break;
+ case WONDER_MAIL_PASSWORD:
+ SetThankYouMailMenuState(DISPLAY_THANK_YOU_PASSWORD);
+ break;
+ }
+ break;
+ case 0:
+ SetThankYouMailMenuState(ANYTHING_ELSE_THANK_YOU_MAIN_MENU);
+ break;
+ }
+ }
+}
+
+void sub_802A9FC(void)
+{
+ s32 temp;
+ if(sub_80144A4(&temp) == 0)
+ {
+ switch(temp)
+ {
+ case 0x7:
+ SetThankYouMailMenuState(PROMPT_THANK_YOU_PASSWORD);
+ break;
+ case 0:
+ SetThankYouMailMenuState(ANYTHING_ELSE_THANK_YOU_MAIN_MENU);
+ break;
+ }
+ }
+}
+
+void HandleMailCommunicationMenu(void)
+{
+ s32 temp;
+ struct unkStruct_8095228 *return_var;
+ if(sub_80144A4(&temp) == 0)
+ {
+ switch(temp)
+ {
+ case WONDER_MAIL_GAME_LINK:
+ case 4:
+ case WONDER_MAIL_PASSWORD:
+ gUnknown_203B2C4->wonderMailMethod = temp;
+ switch(gUnknown_203B2C4->wonderMailMode)
+ {
+ case WONDER_MAIL_MODE_SEND:
+ return_var = sub_8095228(sub_80953D4(5));
+ if(return_var->unk20.itemIndex != 0)
+ {
+ SetThankYouMailMenuState(ITEM_EXISTS_ON_THANK_YOU_MAIL);
+ }
+ else
+ {
+ SetThankYouMailMenuState(PROMPT_REWARD_ITEM_TO_SEND);
+ }
+ break;
+ default:
+ if(gUnknown_203B2C4->wonderMailMethod == WONDER_MAIL_PASSWORD)
+ {
+ SetThankYouMailMenuState(PROMPT_THANK_YOU_PASSWORD);
+ }
+ else
+ {
+ SetThankYouMailMenuState(PROMPT_CONNECT_GAME_LINK);
+ }
+ break;
+ }
+ break;
+ case 0:
+ SetThankYouMailMenuState(ANYTHING_ELSE_THANK_YOU_MAIN_MENU);
+ break;
+ }
+ }
+}
+
+void ReturnToThankYouMailMainMenu(void)
+{
+ s32 temp;
+ if(sub_80144A4(&temp) == 0)
+ {
+ SetThankYouMailMenuState(ANYTHING_ELSE_THANK_YOU_MAIN_MENU);
+ }
+}
+
+void sub_802AAC8(void)
+{
+ s32 temp;
+ if(sub_80144A4(&temp) == 0)
+ {
+ SetThankYouMailMenuState(EXIT_THANK_YOU_MAIL);
+ }
+}
+
+void HandleThankYouMailPelipperMainMenu(void)
+{
+ s32 temp;
+ if(sub_80144A4(&temp) == 0)
+ {
+ switch(temp)
+ {
+ case 1:
+ gUnknown_203B2C4->unk40 = 6;
+ gUnknown_203B2C4->wonderMailMode = WONDER_MAIL_MODE_SEND;
+ if(sub_8095324(5) == 0)
+ {
+ SetThankYouMailMenuState(NO_THANK_YOU_MAIL);
+ }
+ else
+ {
+ SetThankYouMailMenuState(PROMPT_THANK_YOU_TO_SEND);
+ }
+ break;
+ case 2:
+ gUnknown_203B2C4->unk40 = 7;
+ gUnknown_203B2C4->wonderMailMode = WONDER_MAIL_MODE_RECEIVE;
+ SetThankYouMailMenuState(SELECT_THANK_YOU_MAIL_COMMS);
+ break;
+ case 0:
+ SetThankYouMailMenuState(2);
+ break;
+ }
+ }
+}
+
+void sub_802AB60(void)
+{
+ s32 temp;
+ if(sub_80144A4(&temp) == 0)
+ {
+ SetThankYouMailMenuState(0x22);
+ }
+}
+
+void sub_802AB7C(void)
+{
+ s32 temp;
+ if(sub_80144A4(&temp) == 0)
+ {
+ SetThankYouMailMenuState(0x22);
+ }
+}
+
+
+void sub_802AB98(void)
+{
+ const char *monName;
+ switch(sub_802F298())
+ {
+ case 3:
+ sub_802F2C0();
+ CopyYellowSpeciesNametoBuffer(gUnknown_202E5D8, SPECIES_PELIPPER);
+ monName = GetMonSpecies(SPECIES_PELIPPER);
+ strcpy(gAvailablePokemonNames, monName);
+ sub_8095240(sub_809539C(6, gUnknown_203B2C4->unk430));
+ SetThankYouMailMenuState(0x24);
+ break;
+ default:
+ break;
+ }
+}
+
+void nullsub_131(void)
+{
+}
+
+void UpdateThankYouMailText(void)
+{
+ char cVar1;
+ char *monName;
+ u8 auStack180 [80];
+ u8 auStack100 [80];
+ u8 uVar2;
+ struct PokemonStruct *pokeStruct;
+ struct PokemonStruct *pokeStruct2;
+ s32 linkStatus;
+ struct unkStruct_8095228 *puVar4;
+
+ switch(gUnknown_203B2C4->state) {
+ case 5:
+ pokeStruct = sub_808D33C();
+ sub_80922B4(auStack180,pokeStruct->name, POKEMON_NAME_LENGTH);
+ ExpandPlaceholdersBuffer(gUnknown_203B2C4->formattedString,gUnknown_80DF250,auStack180);
+ sub_80141B4(gUnknown_203B2C4->formattedString,0,&gUnknown_203B2C4->faceFile,0x10d);
+ break;
+ case 0xe:
+ // Is it OK to send this Thank-You Mail?
+ sub_8014248(gUnknown_80DF304,0,7,gUnknown_80DEE60,0,4,0,&gUnknown_203B2C4->faceFile,0xc);
+ break;
+ case PROMPT_THANK_YOU_TO_SEND:
+ // Please choose the Thank-You Mail that you want to send to your friend
+ sub_80141B4(gUnknown_80DF330,0,&gUnknown_203B2C4->faceFile,0x10d);
+ break;
+ case 0x10:
+ if (sub_8030894() != 0)
+ break;
+ ResetUnusedInputStruct();
+ sub_800641C(0,1,1);
+ sub_80306A8(5,0,0,6);
+ break;
+ case 0x11:
+ sub_8006518(gUnknown_203B2C4->unk35C);
+ SetMenuItems(&gUnknown_203B2C4->unk21C,gUnknown_203B2C4->unk35C,3,&gUnknown_80DED60,gUnknown_80DED78,1,0,0);
+ sub_803092C();
+ sub_8035CF4(&gUnknown_203B2C4->unk21C,3,1);
+ break;
+ case 0x13:
+ if (sub_801D008() != 0)
+ break;
+ ResetUnusedInputStruct();
+ sub_800641C(0,1,1);
+ // TODO: Probably a macro - Pika
+ {
+ struct {u16 a; u16 b;} local_x = {3, 2};
+ sub_801C8C4(0, 1, (s32 *)&local_x, 9);
+ }
+ break;
+ case 0x14:
+ sub_8006518(gUnknown_203B2C4->unk35C);
+ SetMenuItems(&gUnknown_203B2C4->unk21C,gUnknown_203B2C4->unk35C,3,&gUnknown_80DED48,gUnknown_80DED78,1,0,0);
+ sub_801CCD8();
+ sub_8035CF4(&gUnknown_203B2C4->unk21C,3,1);
+ break;
+ case THANK_YOU_MAIL_COMMS_FINISHED:
+ gUnknown_203B2C4->linkError = 0;
+ sub_8011830();
+ linkStatus = sub_8037B28(gUnknown_203B2C4->unk40);
+ gUnknown_203B2C4->linkError = linkStatus;
+ if (linkStatus == 0)
+ {
+ switch(gUnknown_203B2C4->unk40)
+ {
+ case 6:
+ MemoryFill8((u8 *)&gUnknown_203B2C4->unk1B8,0, sizeof(struct unkStruct_8095228));
+ gUnknown_203B2C4->unk1B8 = *sub_8095228(gUnknown_203B2C4->unk218);
+ gUnknown_203B2C4->linkError = sub_8037D64(gUnknown_203B2C4->unk40,&gUnknown_203B2C4->unk1B8,&gUnknown_203B2C4->unk1E8);
+ break;
+ case 7:
+ MemoryFill8((u8 *)&gUnknown_203B2C4->unk1B8,0, sizeof(struct unkStruct_8095228));
+ MemoryFill8((u8 *)&gUnknown_203B2C4->unk1E8,0, sizeof(struct unkStruct_8095228));
+ gUnknown_203B2C4->linkError = sub_8037D64(gUnknown_203B2C4->unk40,&gUnknown_203B2C4->unk1B8,&gUnknown_203B2C4->unk1E8);
+ break;
+ }
+ if (gUnknown_203B2C4->linkError == 0){
+ switch(gUnknown_203B2C4->unk40){
+ case 6:
+ case 7:
+ gUnknown_203B2C4->linkError = sub_80381F4(gUnknown_203B2C4->unk40,&gUnknown_203B2C4->unk1B8,&gUnknown_203B2C4->unk1E8);
+ if ( sub_800D588() != '\0') {
+ gUnknown_203B2C4->unk430 = gUnknown_203B2C4->unk1E8.unk10;
+ }
+ else {
+ gUnknown_203B2C4->unk430 = gUnknown_203B2C4->unk1B8.unk10;
+ }
+ break;
+ }
+ }
+ }
+ xxx_call_start_bg_music();
+ break;
+ case PROMPT_THANK_YOU_PASSWORD:
+ // OK. Please enter the Thank-You Mail Password
+ sub_80141B4(gUnknown_80DF380,0,&gUnknown_203B2C4->faceFile,0x10d);
+ break;
+ case PROCESS_THANK_YOU_PASSWORD:
+ sub_8006518(gUnknown_203B2C4->unk3BC);
+ ResetUnusedInputStruct();
+ sub_800641C(0,1,1);
+ sub_80151C0(4,gUnknown_203B2C4->passwordBuffer);
+ break;
+ case 0x1a:
+ sub_8006518(gUnknown_203B2C4->unk3BC);
+ ResetUnusedInputStruct();
+ sub_800641C(0,1,1);
+ sub_8031D70(gUnknown_203B2C4->unk218,0);
+ break;
+ case 0x1b:
+ // Please give this password to the friend that rescued your team. I also must save your adventure
+ sub_80141B4(gUnknown_80DF3B4,0,&gUnknown_203B2C4->faceFile,0x10d);
+ break;
+ case DISPLAY_THANK_YOU_PASSWORD:
+ // Ok. Here is your Thank You Mail Password
+ sub_80141B4(gUnknown_80DF418,0,&gUnknown_203B2C4->faceFile,0x10d);
+ break;
+ case 0x24:
+ // I need to save your adventure
+ sub_80141B4(gUnknown_80DF44C,0,&gUnknown_203B2C4->faceFile,0x10d);
+ break;
+ case 0x20:
+ // There we go. I'm all done.
+ sub_80141B4(gUnknown_80DF46C,0,&gUnknown_203B2C4->faceFile,0x10d);
+ break;
+ case THANK_YOU_PASSWORD_SUCCESS:
+ switch(gUnknown_203B2C4->wonderMailMethod)
+ {
+ case WONDER_MAIL_GAME_LINK:
+ case WONDER_MAIL_PASSWORD:
+ case 6:
+ // A Thank You Mail has arrived from your friend
+ sub_80141B4(gUnknown_80DF4F4,0,&gUnknown_203B2C4->faceFile,0x10d);
+ break;
+ case 4:
+ break;
+ }
+ break;
+ case 0x22:
+ monName = GetMonSpecies(SPECIES_PELIPPER);
+ strcpy(gUnknown_203B2C4->unk53C,monName);
+ gUnknown_203B2C4->unk550 = 0x130;
+ gUnknown_203B2C4->unk552 = 2;
+ gUnknown_203B2C4->unk554 = 0;
+ uVar2 = sub_809539C(6,gUnknown_203B2C4->unk430);
+ puVar4 = sub_8095228(uVar2);
+ cVar1 = puVar4->unk20.itemIndex;
+ if (cVar1 != '\0')
+ gUnknown_203B2C4->unk558 = cVar1;
+ else
+ gUnknown_203B2C4->unk558 = 0;
+ gUnknown_203B2C4->unk55B = 1;
+ gUnknown_203B2C4->unk560 = sub_803C200(&puVar4->unk4, 0);
+ gUnknown_203B2C4->unk559 = 0;
+ gUnknown_203B2C4->unk55A = 0;
+ gUnknown_203B2C4->unk55C = 0;
+ sub_802F204(gUnknown_203B2C4->unk53C,0);
+ break;
+ case COMMUNICATING_THANK_YOU_MAIL:
+ // Communicating..
+ nullsub_23(0);
+ sub_80141B4(gUnknown_80DF544,0,0,0);
+ break;
+ case 0x17:
+ // There. I've sent your thank-you mail. I need to save your adventure.
+ sub_80141B4(gUnknown_80DF594,0,&gUnknown_203B2C4->faceFile,0x10d);
+ break;
+ case PROMPT_CONNECT_GAME_LINK:
+ // Please connect the GBA systems with a Game Link Cable
+ sub_8014248(gUnknown_80DF5E4,0,7,gUnknown_80DEE44,0,4,0,&gUnknown_203B2C4->faceFile,0xc);
+ break;
+ case THANK_YOU_MAIL_COMMS_CLEANUP:
+ pokeStruct2 = sub_808D33C();
+ sub_80922B4(auStack100, pokeStruct2->name, POKEMON_NAME_LENGTH);
+ ExpandPlaceholdersBuffer(gUnknown_203B2C4->formattedString,gUnknown_80DF63C,auStack100);
+ sub_80141B4(gUnknown_203B2C4->formattedString,0,&gUnknown_203B2C4->faceFile,0x10d);
+ break;
+ case CONFIRM_ITEM_TO_SEND:
+ // The item you've chosen can't be exchanged later. Is that OK?
+ sub_8014248(gUnknown_80DF694,0,7,gUnknown_80DEEE4,0,4,0,&gUnknown_203B2C4->faceFile,0xc);
+ break;
+ case 0x29:
+ // I need to save your adventure
+ sub_80141B4(gUnknown_80DF44C,0,&gUnknown_203B2C4->faceFile,0x10d);
+ break;
+ case 0x2a:
+ // I've saved your adventure
+ sub_80141B4(gUnknown_80DF6F0,0,&gUnknown_203B2C4->faceFile,0x10d);
+ break;
+ case PROMPT_ITEM_TO_SEND:
+ // Ok, please choose the item to be sent
+ sub_80141B4(gUnknown_80DF710,0,&gUnknown_203B2C4->faceFile,0x10d);
+ break;
+ case THANK_YOU_MAIL_STORAGE_EMPTY:
+ // Oh? Your storage space is empty
+ sub_8014248(gUnknown_80DF73C,0,0,gUnknown_80DEEBC,0,4,0,&gUnknown_203B2C4->faceFile,0xc);
+ break;
+ case PROMPT_REWARD_ITEM_TO_SEND:
+ // Would you like to choose a reward item from storage and send it with your mail?
+ sub_8014248(gUnknown_80DF77C,0,0,gUnknown_80DEE7C,0,4,0,&gUnknown_203B2C4->faceFile,0xc);
+ break;
+ case ITEM_EXISTS_ON_THANK_YOU_MAIL:
+ // Oh? You've already attached a reward item on this mail.
+ sub_80141B4(gUnknown_80DF7D4,0,&gUnknown_203B2C4->faceFile,0x10d);
+ break;
+ case PROMPT_RESEND_WITH_ATTACHED_ITEM:
+ // Would you like to send it again with the item you chose before?
+ sub_8014248(gUnknown_80DF870,0,7,gUnknown_80DEE44,0,4,0,&gUnknown_203B2C4->faceFile,0xc);
+ break;
+ case NO_THANK_YOU_MAIL:
+ // You don't seem to have a Thank-You Mail
+ sub_80141B4(gUnknown_80DF8B4,0,&gUnknown_203B2C4->faceFile,0x10d);
+ break;
+ case THANK_YOU_MAIL_MAIN_MENU:
+ // Hello. I handle Thank You Mail. How may I help You?
+ sub_8014248(gUnknown_80DF8EC,0,1,gThankYouMailMainMenuItems,0,4,0,&gUnknown_203B2C4->faceFile,0xc);
+ break;
+ case ANYTHING_ELSE_THANK_YOU_MAIN_MENU:
+ // May I help you with anything else?
+ sub_8014248(gUnknown_80DF928,0,1,gThankYouMailMainMenuItems,0,4,0,&gUnknown_203B2C4->faceFile,0xc);
+ break;
+ case 2:
+ // Please come see me anytime
+ sub_80141B4(gUnknown_80DF94C,0,&gUnknown_203B2C4->faceFile,0x10d);
+ break;
+ case SELECT_THANK_YOU_MAIL_COMMS:
+ switch(gUnknown_203B2C4->wonderMailMode){
+ case WONDER_MAIL_MODE_SEND:
+ // How would you like to send your thank you mail?
+ sub_8014248(gUnknown_80DF96C,0,3,gUnknown_80DEE08,0,4,0,&gUnknown_203B2C4->faceFile,0xc);
+ break;
+ case WONDER_MAIL_MODE_RECEIVE:
+ // How would you like to recieve your friend's thank you mail?
+ sub_8014248(gUnknown_80DF9A4,0,3,gUnknown_80DEE08,0,4,0,&gUnknown_203B2C4->faceFile,0xc);
+ break;
+ }
+ break;
+ }
+}
+
+void SetThankYouMailMenuState(u32 newState)
+{
+ gUnknown_203B2C4->state = newState;
+ nullsub_131();
+ UpdateThankYouMailText();
+}
diff --git a/src/wonder_mail.c b/src/wonder_mail.c
index 04e9f73..ed52bb2 100644
--- a/src/wonder_mail.c
+++ b/src/wonder_mail.c
@@ -6,11 +6,11 @@
#include "sub_8095228.h"
#include "wonder_mail.h"
#include "memory.h"
+#include "menu.h"
#include "text.h"
#include "team_inventory.h"
extern struct WonderMailStruct_203B2C0 *gUnknown_203B2C0;
-extern struct WonderMailStruct_203B2C4 *gUnknown_203B2C4;
extern struct TeamInventory *gTeamInventory_203B460;
extern u32 sub_80144A4(s32 *r0);
@@ -22,37 +22,15 @@ extern u8 sub_8030C20(u32);
extern u32 sub_8031050();
extern void sub_80310B4();
extern u32 sub_8095350();
-extern u8 sub_801CF14(u32);
-extern u32 sub_802F298();
-
extern u8 sub_80A2824(u8);
#include "data/wonder_mail_1.h"
-const struct ItemSlot gUnknown_80DED44 =
-{
- 1, 0, 0
-};
-
-
-extern struct MenuItem gUnknown_80DDA48[];
-extern const char gUnknown_80DEF04[];
-extern const char gUnknown_80DEF28[];
-extern const char gUnknown_80DEF80[];
-extern const char gUnknown_80DEFDC[];
-extern const char gUnknown_80DF044[];
-extern const char gUnknown_80DF0A0[];
-extern const char gUnknown_80DF0E0[];
-extern const char gUnknown_80DF138[];
-extern const char gUnknown_80DF194[];
-extern struct MenuItem gUnknown_80DEE44[];
-extern const char gUnknown_80DF1C0[];
-extern const char gUnknown_80DF208[];
-extern const char gUnknown_80DF0A0[];
extern u8 sub_809539C(u32, u32);
extern char gUnknown_202E5D8[0x50];
extern char gAvailablePokemonNames[0x50];
+extern struct MenuItem gUnknown_80DDA48[];
extern s32 sub_8095190(void);
extern u32 sub_8095324(u32);
@@ -91,56 +69,6 @@ extern u8 sub_8024108(u32);
extern u32 sub_8031DCC();
extern void sub_8031E10();
extern void sub_8031E00();
-extern s32 sub_80953D4(u32);
-extern void sub_802B2BC(u32);
-
-extern void sub_802AAE4();
-extern void sub_802AAC8();
-extern void sub_802AAAC();
-extern void sub_802AB7C();
-extern void sub_802AA28();
-extern void sub_802A98C();
-extern void sub_802A9A8();
-extern void sub_802A910();
-extern void sub_802A8BC();
-extern void sub_802A8A0();
-extern void sub_802A798();
-extern void sub_802A474();
-extern void sub_802A090();
-extern void sub_802A158();
-extern void sub_802A0C8();
-extern void sub_802A174();
-extern void sub_802A230();
-extern void sub_802A28C();
-extern void sub_802A39C();
-extern void sub_802A33C();
-extern void sub_802A740();
-extern void sub_802A6F0();
-extern void sub_802A68C();
-extern void sub_802A4D4();
-extern void sub_802A050();
-extern void sub_802A4AC();
-extern void sub_802A458();
-extern void sub_802A75C();
-extern void sub_8029F98();
-extern void sub_8029EA8();
-extern void sub_802A490();
-extern void sub_802AB60();
-extern void sub_802AB98();
-extern void sub_802A718();
-extern void sub_802A6B4();
-extern void sub_802A4F0();
-extern void sub_802A50C();
-extern void sub_802A9FC();
-extern void sub_802A828();
-extern void sub_802A850();
-extern void sub_8030DE4();
-extern void sub_801B450();
-extern void sub_803084C();
-extern void sub_801CBB8();
-extern void sub_80155F0();
-extern void sub_8031E10();
-extern void sub_802F2C0();
extern u16 gUnknown_80E5990[];
extern s32 sub_8001658(u32, u32);
extern u32 gUnknown_80E4A40[];
@@ -150,33 +78,11 @@ extern void sub_8099A5C(u32, u32, u32*);
extern void sub_8099AFC(u32, u32, u32*);
extern void ResetUnusedInputStruct();
extern void sub_8099690(u32);
-extern void sub_80141B4(const char *r0, u32, u32 *r1, u32);
-extern u32 sub_80144A4(s32 *r0);
-extern u32 sub_8031DCC(void);
-extern void sub_8031E00(void);
extern void sub_8031E10(void);
-extern void sub_8030D40(u8, u32);
-extern u32 sub_8030768(u32);
extern void sub_803084C(void);
-extern s8 sub_80307EC(void);
-extern u8 sub_8012FD8(u32 *r0);
-extern void sub_8013114(u32 *, s32 *);
-extern void sub_8030810(u32);
-extern u32 sub_8030DA0();
extern void sub_8030DE4();
-extern void sub_803092C();
-extern void sub_8035CF4(u32 *, u32, u32);
-extern u32 sub_801CA08(u32);
-extern void sub_801CBB8();
-extern void sub_801B3C0(struct ItemSlot *);
-extern u8 sub_801CB24();
-extern void sub_801B450();
-extern u32 sub_801B410();
-extern void sub_801CB5C(u32);
-extern void sub_801CCD8();
-extern void sub_8011C28(u32);
void sub_8028B04(u32 r0)
@@ -1294,1018 +1200,3 @@ void sub_8029B34(void)
sub_8028B04(3);
}
-u32 sub_8029B50(void)
-{
- char *monName;
- struct OpenedFile *faceFile;
- s32 uVar2;
- int counter;
- struct unkStruct_8095228 *temp;
-
- ResetUnusedInputStruct();
- sub_800641C(0,1,1);
- gUnknown_203B2C4 = MemoryAlloc(sizeof(struct WonderMailStruct_203B2C4), 8);
- MemoryFill8((u8 *)gUnknown_203B2C4, 0, sizeof(struct WonderMailStruct_203B2C4));
-
- CopyYellowSpeciesNametoBuffer(gUnknown_202E5D8, SPECIES_PELIPPER);
- monName = GetMonSpecies(SPECIES_PELIPPER);
- strcpy(gAvailablePokemonNames, monName);
- faceFile = GetDialogueSpriteDataPtr(SPECIES_PELIPPER);
-
- gUnknown_203B2C4->faceFile = faceFile;
- gUnknown_203B2C4->faceData = faceFile->data;
- gUnknown_203B2C4->unk42C = 0;
- gUnknown_203B2C4->unk42D = 0;
- gUnknown_203B2C4->unk42E = 0;
- gUnknown_203B2C4->unk428 = 2;
- gUnknown_203B2C4->unk42A = 8;
-
- for(counter = 0; counter < PASSWORD_BUFFER_SIZE; counter++){
- gUnknown_203B2C4->passwordBuffer[counter] = 0;
- }
-
- gUnknown_203B2C4->unk534 = 3;
- gUnknown_203B2C4->unk538 = 1;
-
- uVar2 = sub_80953D4(6);
- if (uVar2 != -1) {
- temp = sub_8095228(uVar2);
- gUnknown_203B2C4->unk41C = temp->unk20;
- gUnknown_203B2C4->unk218 = uVar2;
- gUnknown_203B2C4->unk430 = temp->unk10;
- sub_802B2BC(5);
- }
- else {
- gUnknown_203B2C4->unk41C = gUnknown_80DED44;
- gUnknown_203B2C4->unk218 = -1;
- sub_802B2BC(0);
- }
- gUnknown_203B2C4->unk4 = 0x2b;
- return 1;
-}
-
-u32 sub_8029C98(void)
-{
-
- switch(gUnknown_203B2C4->state) {
- case 5:
- sub_802AB7C();
- break;
- case 0x1e:
- sub_8029F98();
- break;
- case 0x1f:
- sub_8029EA8();
- break;
- case 0xe:
- sub_802A090();
- break;
- case 0xf:
- sub_802A158();
- break;
- case 0x11:
- sub_802A174();
- break;
- case 0x12:
- sub_802A230();
- break;
- case 0x10:
- sub_802A0C8();
- break;
- case 0x13:
- sub_802A28C();
- break;
- case 0x14:
- sub_802A39C();
- break;
- case 0x15:
- sub_802A33C();
- break;
- case 0x1c:
- sub_802A458();
- break;
- case 0x1b:
- sub_802A4AC();
- break;
- case 0x19:
- sub_802A4D4();
- break;
- case 0x1a:
- sub_802A050();
- break;
- case 0x28:
- sub_802A9FC();
- break;
- case 0x26:
- sub_802A4F0();
- break;
- case 0x27:
- sub_802A50C();
- break;
- case 0x25:
- sub_802A6B4();
- break;
- case 0x24:
- sub_802A718();
- break;
- case 0x21:
- sub_802AB60();
- break;
- case 0x22:
- sub_802AB98();
- break;
- case 0x16:
- sub_802A740();
- break;
- case 0x18:
- sub_802A68C();
- break;
- case 0x17:
- sub_802A6F0();
- break;
- case 0x1d:
- sub_802A75C();
- break;
- case 0x20:
- sub_802A490();
- break;
- case 0xd:
- sub_802A474();
- break;
- case 0xc:
- sub_802A798();
- break;
- case 0x29:
- sub_802A828();
- break;
- case 0x2a:
- sub_802A850();
- break;
- case 0xb:
- sub_802A8A0();
- break;
- case 10:
- sub_802A8BC();
- break;
- case 9:
- sub_802A910();
- break;
- case 7:
- sub_802A98C();
- break;
- case 8:
- sub_802A9A8();
- break;
- case 6:
- sub_802AA28();
- break;
- case 4:
- sub_802AAAC();
- break;
- case 0:
- case 1:
- sub_802AAE4();
- break;
- case 2:
- sub_802AAC8();
- break;
- case 3:
- return 3;
- }
- return 0;
-}
-
-void sub_8029E60(void)
-{
- if(gUnknown_203B2C4 != NULL)
- {
- CloseFile(gUnknown_203B2C4->faceFile);
- MemoryFree(gUnknown_203B2C4);
- gUnknown_203B2C4 = NULL;
- sub_8030DE4();
- sub_801B450();
- sub_803084C();
- sub_801CBB8();
- sub_80155F0();
- sub_8031E10();
- sub_802F2C0();
- }
-}
-
-void sub_8029EA8(void)
-{
- s32 temp;
- if(sub_80144A4(&temp) == 0)
- {
- sub_802B2BC(1);
- }
-}
-
-// Is this used for only Thank-You Mail??
-void PrintWonderMailLinkError(u32 param_1)
-{
- switch(param_1) {
- case 3:
- sub_80141B4(gUnknown_80DEF28, 0, (u32 *)&gUnknown_203B2C4->faceFile, 0x10d);
- break;
- case 4:
- sub_80141B4(gUnknown_80DEF80, 0, (u32 *)&gUnknown_203B2C4->faceFile, 0x10d);
- break;
- case 6:
- sub_80141B4(gUnknown_80DEFDC, 0, (u32 *)&gUnknown_203B2C4->faceFile, 0x10d);
- break;
- case 7:
- sub_80141B4(gUnknown_80DF044, 0, (u32 *)&gUnknown_203B2C4->faceFile, 0x10d);
- break;
- case 9:
- sub_80141B4(gUnknown_80DF0A0, 0, (u32 *)&gUnknown_203B2C4->faceFile, 0x10d);
- break;
- case 11:
- sub_80141B4(gUnknown_80DF0A0, 0, (u32 *)&gUnknown_203B2C4->faceFile, 0x10d);
- break;
- case 13:
- sub_80141B4(gUnknown_80DF0E0, 0, (u32 *)&gUnknown_203B2C4->faceFile, 0x10d);
- break;
- case 1:
- case 2:
- case 5:
- case 14:
- sub_80141B4(gUnknown_80DEF04, 0, (u32 *)&gUnknown_203B2C4->faceFile, 0x10d);
- break;
- case 15:
- sub_80141B4(gUnknown_80DF138, 0, (u32 *)&gUnknown_203B2C4->faceFile, 0x10d);
- break;
- case 0:
- default:
- break;
- }
-}
-
-void sub_8029F98(void)
-{
- s32 auStack20;
-
- if (sub_80144A4(&auStack20) != 0) {
- return;
- }
- MemoryFill8((u8 *)&gUnknown_203B2C4->unk41C, 0, sizeof(struct ItemSlot));
- gUnknown_203B2C4->unk41C.itemIndex = 0;
- gUnknown_203B2C4->unk41C.numItems = 1;
- gUnknown_203B2C4->unk41C.unk0 = 0;
- if (gUnknown_203B2C4->linkError == 0) {
- switch(gUnknown_203B2C4->unk40)
- {
- case 6:
- switch(gUnknown_203B2C4->unk534)
- {
- case 3:
- case 5:
- case 6:
- // "Thank-You Mail has been sent"
- sub_80141B4(gUnknown_80DF194, 0, (u32 *)&gUnknown_203B2C4->faceFile, 0x10d);
- break;
- case 4:
- default:
- break;
- }
- sub_802B2BC(0xD);
- break;
- case 7:
- sub_802B2BC(0x21);
- break;
- default:
- break;
- }
- }
- else
- {
- PrintWonderMailLinkError(gUnknown_203B2C4->linkError);
- sub_802B2BC(0x1F);
- }
-}
-
-void sub_802A050(void)
-{
- switch(sub_8031DCC())
- {
-
- case 3:
- case 2:
- sub_8031E10();
- ResetUnusedInputStruct();
- sub_800641C(gUnknown_203B2C4->unk3BC, 1, 1);
- sub_802B2BC(0x1B);
- break;
- case 1:
- sub_8031E00();
- break;
- default:
- return;
- }
-}
-
-void sub_802A090(void)
-{
- s32 temp;
- if(sub_80144A4(&temp) == 0)
- {
- switch(temp)
- {
- case 7:
- sub_802B2BC(6);
- break;
- case 8:
- case 0:
- sub_802B2BC(1);
- break;
- default:
- break;
- }
- }
-}
-
-void sub_802A0C8(void)
-{
- switch(sub_8030768(1))
- {
- case 2:
- sub_803084C();
- sub_802B2BC(1);
- break;
- case 3:
- gUnknown_203B2C4->unk218 = sub_80307EC();
- sub_802B2BC(0x11);
- break;
- case 4:
- gUnknown_203B2C4->unk4 = 0x10;
- gUnknown_203B2C4->unk218 = sub_80307EC();
- sub_8006518(gUnknown_203B2C4->unk3BC);
- ResetUnusedInputStruct();
- sub_800641C(0,1,1);
- sub_8030D40(gUnknown_203B2C4->unk218,0);
- sub_802B2BC(0x12);
- break;
- }
-}
-
-void sub_802A158(void)
-{
- s32 temp;
- if(sub_80144A4(&temp) == 0)
- {
- sub_802B2BC(0x10);
- }
-}
-
-void sub_802A174(void)
-{
- s32 menuAction;
-
- menuAction = -1;
- sub_8030768(0);
- if (sub_8012FD8(&gUnknown_203B2C4->unk30C) == 0) {
- sub_8013114(&gUnknown_203B2C4->unk30C, &menuAction);
- }
-
- switch(menuAction)
- {
- case 0xB:
- sub_803084C();
- sub_802B2BC(0xe);
- break;
- case 0xC:
- gUnknown_203B2C4->unk4 = 0x2b;
- sub_8006518(gUnknown_203B2C4->unk3BC);
- ResetUnusedInputStruct();
- sub_800641C(0,1,1);
- sub_8030D40(gUnknown_203B2C4->unk218,0);
- sub_802B2BC(0x12);
- break;
- case 0:
- case 0xD:
- sub_8035CC0(gUnknown_203B2C4->unk35C,2);
- sub_8030810(1);
- sub_802B2BC(0x10);
- default:
- break;
- }
-}
-
-void sub_802A230(void)
-{
- switch(sub_8030DA0())
- {
- case 2:
- case 3:
- sub_8030DE4();
- ResetUnusedInputStruct();
- sub_800641C(gUnknown_203B2C4->unk3BC, 1, 1);
- sub_803092C();
- if (gUnknown_203B2C4->unk4 == 0x2b) {
- sub_8035CF4(&gUnknown_203B2C4->unk21C, 3, 1);
- sub_802B2BC(0x11);
- }
- else {
- sub_802B2BC(gUnknown_203B2C4->unk4);
- }
- break;
- default:
- break;
- }
-}
-
-void sub_802A28C(void)
-{
-
- gUnknown_203B2C4->unk41C.itemIndex = 0;
- gUnknown_203B2C4->unk41C.numItems = 1;
- gUnknown_203B2C4->unk41C.unk0 = 0;
-
- switch(sub_801CA08(1))
- {
- case 2:
- sub_801CBB8();
- sub_802B2BC(1);
- break;
- case 3:
- gUnknown_203B2C4->unk41C.itemIndex = sub_801CB24();
- sub_802B2BC(0x14);
- break;
- case 4:
- gUnknown_203B2C4->unk4 = 0x13;
- gUnknown_203B2C4->unk41C.itemIndex = sub_801CB24();
- sub_8006518(gUnknown_203B2C4->unk3BC);
- ResetUnusedInputStruct();
- sub_800641C(0,1,1);
- sub_801B3C0(&gUnknown_203B2C4->unk41C);
- sub_802B2BC(0x15);
- break;
- }
-}
-
-void sub_802A33C(void)
-{
- switch(sub_801B410())
- {
- case 2:
- case 3:
- sub_801B450();
- ResetUnusedInputStruct();
- sub_800641C(gUnknown_203B2C4->unk3BC,1,1);
- sub_801CB5C(1);
- if (gUnknown_203B2C4->unk4 == 0x2b) {
- sub_8035CF4(&gUnknown_203B2C4->unk21C,3,1);
- sub_802B2BC(0x14);
- }
- else {
- sub_802B2BC(gUnknown_203B2C4->unk4);
- }
- break;
- case 1:
- default:
- break;
- }
-}
-
-void sub_802A39C(void)
-{
- s32 menuAction;
-
- menuAction = -1;
- sub_801CA08(0);
- if (sub_8012FD8(&gUnknown_203B2C4->unk30C) == 0) {
- sub_8013114(&gUnknown_203B2C4->unk30C, &menuAction);
- }
-
- switch(menuAction)
- {
- case 0xB:
- sub_801CBB8();
- sub_802B2BC(0xC);
- break;
- case 0xC:
- gUnknown_203B2C4->unk4 = 0x2b;
- sub_8006518(gUnknown_203B2C4->unk3BC);
- ResetUnusedInputStruct();
- sub_800641C(0,1,1);
- sub_801B3C0(&gUnknown_203B2C4->unk41C);
- sub_802B2BC(0x15);
- break;
- case 0:
- case 0xD:
- sub_8035CC0(gUnknown_203B2C4->unk35C, 3);
- sub_801CCD8();
- sub_802B2BC(0x13);
- default:
- break;
- }
-}
-
-void sub_802A458(void)
-{
- s32 temp;
- if(sub_80144A4(&temp) == 0)
- {
- sub_802B2BC(0xD);
- }
-}
-
-void sub_802A474(void)
-{
- s32 temp;
- if(sub_80144A4(&temp) == 0)
- {
- sub_802B2BC(0x3);
- }
-}
-
-void sub_802A490(void)
-{
- s32 temp;
- if(sub_80144A4(&temp) == 0)
- {
- sub_802B2BC(0x3);
- }
-}
-
-void sub_802A4AC(void)
-{
- s32 temp;
- if(sub_80144A4(&temp) == 0)
- {
- sub_802B2BC(0x18);
- sub_8011C28(1);
- PrepareSavePakWrite(SPECIES_NONE);
- }
-}
-
-void sub_802A4D4(void)
-{
- s32 temp;
- if(sub_80144A4(&temp) == 0)
- {
- sub_802B2BC(0x1A);
- }
-}
-
-void sub_802A4F0(void)
-{
- s32 temp;
- if(sub_80144A4(&temp) == 0)
- {
- sub_802B2BC(0x27);
- }
-}
-
-void sub_802A50C(void)
-{
- u8 uVar1;
- struct unkStruct_8095228 *puVar5;
- u32 return_var;
- struct unkStruct_8095228 temp;
-
- return_var = sub_80154F0();
- MemoryFill8((u8 *)&temp, 0, sizeof(struct unkStruct_8095228));
- switch(return_var)
- {
- case 3:
- switch(sub_8039068(0x20,gUnknown_203B2C4->passwordBuffer,&temp.unk0))
- {
- case 0x11:
- // Wrong password
- sub_8014248(gUnknown_80DF1C0, 0, 7, gUnknown_80DEE44, 0, 4, 0, (u32 *)&gUnknown_203B2C4->faceFile, 0xc);
- sub_802B2BC(0x28);
- break;
- case 0x14:
- // Incorrect password
- sub_80141B4(gUnknown_80DF208, 0, (u32 *)&gUnknown_203B2C4->faceFile, 0x10d);
- sub_802B2BC(0x1f);
- break;
- case 0xB:
- // Not eligible to receive
- sub_80141B4(gUnknown_80DF0A0, 0, (u32 *)&gUnknown_203B2C4->faceFile, 0x10d);
- sub_802B2BC(0x1f);
- break;
- case 0x18:
- // I think this is when password works successfully
- uVar1 = sub_809539C(4,temp.unk10);
- puVar5 = sub_8095228(uVar1);
- *puVar5 = temp;
- puVar5->unk0 = 6;
- gUnknown_203B2C4->unk430 = temp.unk10;
- sub_802B2BC(0x21);
- break;
- default:
- case 7:
- break;
- }
- sub_80155F0();
- break;
- case 2:
- sub_80155F0();
- ResetUnusedInputStruct();
- sub_800641C(gUnknown_203B2C4->unk3BC, 1, 1);
- sub_802B2BC(1);
- break;
- }
-}
-
-void sub_802A68C(void)
-{
- s32 temp;
-
- if (sub_80144A4(&temp) == 0) {
- if (!WriteSavePak()) {
- FinishWriteSavePak();
- sub_802B2BC(0xd);
- }
- }
-}
-
-void sub_802A6B4(void)
-{
- int saveStatus;
- u32 temp;
-
- if (sub_80144A4(&temp) == 0) {
- if (!WriteSavePak()) {
- saveStatus = GetSavePakStatus();
- FinishWriteSavePak();
- if (saveStatus == SAVE_COMPLETED) {
- sub_802B2BC(0x20);
- }
- else {
- sub_802B2BC(3);
- }
- }
- }
-}
-
-void sub_802A6F0(void)
-{
- s32 temp;
-
- if (sub_80144A4(&temp) == 0) {
- sub_802B2BC(0x18);
- sub_8011C28(1);
- PrepareSavePakWrite(SPECIES_NONE);
- }
-}
-
-void sub_802A718(void)
-{
- s32 temp;
-
- if (sub_80144A4(&temp) == 0) {
- sub_802B2BC(0x25);
- sub_8011C28(1);
- PrepareSavePakWrite(SPECIES_NONE);
- }
-}
-
-void sub_802A740(void)
-{
- s32 temp;
-
- if (sub_80144A4(&temp) == 0) {
- sub_802B2BC(0x1e);
- }
-}
-
-void sub_802A75C(void)
-{
- s32 temp;
- if(sub_80144A4(&temp) == 0)
- {
- switch(temp)
- {
- case 7:
- // NOTE: if statement is needed to match
- if(gUnknown_203B2C4->unk538)
- sub_802B2BC(0x16);
- else
- sub_802B2BC(0x16);
- break;
- case 0:
- sub_802B2BC(1);
- break;
- }
- }
-}
-
-void sub_802A798(void)
-{
- s32 temp;
- struct unkStruct_8095228 *return_var;
- if(sub_80144A4(&temp) == 0)
- {
- switch(temp)
- {
- case 7:
- return_var = sub_8095228(gUnknown_203B2C4->unk218);
- if(gUnknown_203B2C4->unk41C.itemIndex != 0)
- {
- return_var->unk20 = gUnknown_203B2C4->unk41C;
- }
- gTeamInventory_203B460->teamStorage[gUnknown_203B2C4->unk41C.itemIndex]--;
- sub_802B2BC(0x29);
- break;
- case 8:
- sub_802B2BC(0xB);
- break;
- case 0:
- sub_802B2BC(1);
- break;
- }
- }
-}
-
-void sub_802A828(void)
-{
- s32 temp;
- if(sub_80144A4(&temp) == 0)
- {
- sub_802B2BC(0x2A);
- sub_8011C28(1);
- PrepareSavePakWrite(SPECIES_NONE);
- }
-}
-
-void sub_802A850(void)
-{
- s32 temp;
- if(sub_80144A4(&temp) == 0)
- {
- if(!WriteSavePak())
- {
- FinishWriteSavePak();
- switch(gUnknown_203B2C4->unk534)
- {
- case 3:
- case 4:
- sub_802B2BC(0x1D);
- break;
- case 5:
- sub_802B2BC(0x19);
- break;
- }
- }
- }
-}
-
-void sub_802A8A0(void)
-{
- s32 temp;
-
- if (sub_80144A4(&temp) == 0) {
- sub_802B2BC(0x13);
- }
-}
-
-void sub_802A8BC(void)
-{
- s32 temp;
- if(sub_80144A4(&temp) == 0)
- {
- switch(temp)
- {
- case 0xA:
- switch(gUnknown_203B2C4->unk534)
- {
- case 3:
- case 4:
- sub_802B2BC(0x1D);
- break;
- case 5:
- sub_802B2BC(0x19);
- break;
- }
- break;
- case 0:
- sub_802B2BC(1);
- break;
- }
- }
-}
-
-void sub_802A910(void)
-{
- s32 temp;
- if(sub_80144A4(&temp) == 0)
- {
- switch(temp)
- {
- case 9:
- if(sub_801CF14(0) != 0)
- {
- sub_802B2BC(0xA);
- }
- else
- {
- sub_802B2BC(0xB);
- }
- break;
- case 0xA:
- switch(gUnknown_203B2C4->unk534)
- {
- case 3:
- case 4:
- sub_802B2BC(0x1D);
- break;
- case 5:
- sub_802B2BC(0x19);
- break;
- }
- break;
- case 0:
- sub_802B2BC(1);
- break;
- }
- }
-}
-
-void sub_802A98C(void)
-{
- s32 temp;
-
- if (sub_80144A4(&temp) == 0) {
- sub_802B2BC(0x8);
- }
-}
-
-void sub_802A9A8(void)
-{
- s32 temp;
- if(sub_80144A4(&temp) == 0)
- {
- switch(temp)
- {
- case 0x7:
- switch(gUnknown_203B2C4->unk534)
- {
- case 3:
- case 4:
- sub_802B2BC(0x1D);
- break;
- case 5:
- sub_802B2BC(0x19);
- break;
- }
- break;
- case 0:
- sub_802B2BC(1);
- break;
- }
- }
-}
-
-void sub_802A9FC(void)
-{
- s32 temp;
- if(sub_80144A4(&temp) == 0)
- {
- switch(temp)
- {
- case 0x7:
- sub_802B2BC(0x26);
- break;
- case 0:
- sub_802B2BC(1);
- break;
- }
- }
-}
-
-void sub_802AA28(void)
-{
- s32 temp;
- struct unkStruct_8095228 *return_var;
- if(sub_80144A4(&temp) == 0)
- {
- switch(temp)
- {
- case 3:
- case 4:
- case 5:
- gUnknown_203B2C4->unk534 = temp;
- switch(gUnknown_203B2C4->unk538)
- {
- case 1:
- return_var = sub_8095228(sub_80953D4(5));
- if(return_var->unk20.itemIndex != 0)
- {
- sub_802B2BC(7);
- }
- else
- {
- sub_802B2BC(9);
- }
- break;
- default:
- if(gUnknown_203B2C4->unk534 == 5)
- {
- sub_802B2BC(0x26);
- }
- else
- {
- sub_802B2BC(0x1D);
- }
- break;
- }
- break;
- case 0:
- sub_802B2BC(1);
- break;
- }
- }
-}
-
-void sub_802AAAC(void)
-{
- s32 temp;
- if(sub_80144A4(&temp) == 0)
- {
- sub_802B2BC(1);
- }
-}
-
-void sub_802AAC8(void)
-{
- s32 temp;
- if(sub_80144A4(&temp) == 0)
- {
- sub_802B2BC(3);
- }
-}
-
-void sub_802AAE4(void)
-{
- s32 temp;
- if(sub_80144A4(&temp) == 0)
- {
- switch(temp)
- {
- case 1:
- gUnknown_203B2C4->unk40 = 6;
- gUnknown_203B2C4->unk538 = 1;
- if(sub_8095324(5) == 0)
- {
- sub_802B2BC(4);
- }
- else
- {
- sub_802B2BC(0xF);
- }
- break;
- case 2:
- gUnknown_203B2C4->unk40 = 7;
- gUnknown_203B2C4->unk538 = 2;
- sub_802B2BC(6);
- break;
- case 0:
- sub_802B2BC(2);
- break;
- }
- }
-}
-
-void sub_802AB60(void)
-{
- s32 temp;
- if(sub_80144A4(&temp) == 0)
- {
- sub_802B2BC(0x22);
- }
-}
-
-void sub_802AB7C(void)
-{
- s32 temp;
- if(sub_80144A4(&temp) == 0)
- {
- sub_802B2BC(0x22);
- }
-}
-
-
-void sub_802AB98(void)
-{
- const char *monName;
- switch(sub_802F298())
- {
- case 3:
- sub_802F2C0();
- CopyYellowSpeciesNametoBuffer(gUnknown_202E5D8, SPECIES_PELIPPER);
- monName = GetMonSpecies(SPECIES_PELIPPER);
- strcpy(gAvailablePokemonNames, monName);
- sub_8095240(sub_809539C(6, gUnknown_203B2C4->unk430));
- sub_802B2BC(0x24);
- break;
- default:
- break;
- }
-}
-
-void nullsub_131(void)
-{
-}
diff --git a/src/wonder_mail_2.c b/src/wonder_mail_2.c
index f5bcd12..cca9794 100644
--- a/src/wonder_mail_2.c
+++ b/src/wonder_mail_2.c
@@ -9,8 +9,6 @@
#include "sub_8095228.h"
#include "wonder_mail.h"
-extern struct WonderMailStruct_203B2C4 *gUnknown_203B2C4;
-
struct unkStruct_203B2C8
{
// size: 0x140
@@ -90,325 +88,61 @@ extern struct UnkTextStruct2 gUnknown_80DFBD0;
extern struct unkStruct_203B2C8 *gUnknown_203B2C8;
-extern struct MenuItem gUnknown_80DED78[];
-extern struct MenuItem gUnknown_80DEDB8[];
-extern u8 gUnknown_80DF6F0[];
-extern u8 gUnknown_80DF44C[];
-extern u8 gUnknown_80DF380[];
-extern u8 gUnknown_80DF544[];
-extern u8 gUnknown_80DF96C[];
-extern u8 gUnknown_80DF9A4[];
-extern u8 gUnknown_80DF4F4[];
-extern u8 gUnknown_80DF46C[];
-extern u8 gUnknown_80DF94C[];
-extern u8 gUnknown_80DF928[];
-extern u8 gUnknown_80DF8EC[];
-extern u8 gUnknown_80DF7D4[];
-extern u8 gUnknown_80DF8B4[];
-extern u8 gUnknown_80DF3B4[];
-extern u8 gUnknown_80DF63C[];
-extern u8 gUnknown_80DF250[];
-extern u8 gUnknown_80DF594[];
-extern u8 gUnknown_80DF870[];
-extern u8 gUnknown_80DF77C[];
-extern u8 gUnknown_80DF5E4[];
-extern u8 gUnknown_80DF710[];
-extern u8 gUnknown_80DF694[];
-extern u8 gUnknown_80DF73C[];
-extern u8 gUnknown_80DF330[];
-extern u8 gUnknown_80DF418[];
-extern u8 gUnknown_80DF304[];
-extern struct UnkTextStruct2 gUnknown_80DED60;
-extern struct UnkTextStruct2 gUnknown_80DED48;
-extern struct MenuItem gUnknown_80DEE44[];
-extern struct MenuItem gUnknown_80DEE08[];
-extern struct MenuItem gUnknown_80DEE7C[];
-extern struct MenuItem gUnknown_80DEEBC[];
-extern struct MenuItem gUnknown_80DEEE4[];
-extern struct MenuItem gUnknown_80DEE60[];
-
-extern void sub_8031D70(u8, u32);
-extern u8 sub_809539C(u32, u32);
-extern u8 sub_800D588(void);
-extern u32 sub_803C200(u8 *, u32);
-
-extern struct PokemonStruct *sub_808D33C(void);
-
-extern void sub_802F204(u8 *, u32);
-extern void sub_80151C0(u32, u8 *);
-extern void xxx_call_start_bg_music(void);
-extern void sub_803092C(void);
-extern void sub_801CCD8(void);
-extern void sub_8011830(void);
-extern void nullsub_23(u32);
-extern void sub_80922B4(u8 *, u8 *, u32);
-extern s32 sub_8037B28(u32);
-extern u32 sub_8030894(void);
-extern u32 sub_801D008(void);
-extern void sub_80306A8(u32, u32, u32, u32);
-extern void sub_8035CF4(u32 *, u32, u32);
-extern s32 sub_8037D64(u32, void *, void *);
-extern s32 sub_80381F4(u32, void *, void *);
-extern void sub_801C8C4(u32, u32, s32 * , u32);
-
-
-void ExpandPlaceholdersBuffer(u8 *buffer, const char *text, ...);
-extern void SetMenuItems(void *menu, struct UnkTextStruct2 *, u32, const struct UnkTextStruct2 *, const struct MenuItem *entries, u32, u32, u32);
extern void sub_8014248(const char *r0, u32, u32, const struct MenuItem *r4, u32, u32, u32, struct OpenedFile **r5, u32);
extern void sub_80920D8(u8 *buffer);
-extern void sub_8097790();
+extern void sub_8097790(void);
extern char gUnknown_202E5D8[0x50];
extern char gAvailablePokemonNames[0x50];
-extern u32 sub_802F298();
-extern void sub_802F2C0();
+extern u32 sub_802F298(void);
+extern void sub_802F2C0(void);
extern u8 sub_8099394(u8 *);
extern void sub_802B548(u32);
extern u32 sub_80144A4(s32 *);
-extern void sub_802B560();
-extern void sub_802B57C();
-extern void sub_802B5B8();
-extern void sub_802B5FC();
-extern void sub_802B624();
+extern void sub_802B560(void);
+extern void sub_802B57C(void);
+extern void sub_802B5B8(void);
+extern void sub_802B5FC(void);
+extern void sub_802B624(void);
void ExpandPlaceholdersBuffer(u8 *buffer, const char *text, ...);
extern void sub_802F204(u8 *, u32);
extern void sub_803C37C(u8 *, u32, u8 *);
extern u32 sub_803C200(u8 *, u32);
extern void sub_80141B4(const char *r0, u32, struct OpenedFile **r1, u32);
-extern const char gUnknown_80DFAA8[];
-extern const char gUnknown_80DFB14[];
-extern const char gUnknown_80DF9F0[];
-extern const char gUnknown_80DF9F8[];
extern u8 sub_80023E4(u32);
-
extern void nullsub_131(void);
extern void sub_802ABF8(void);
-void sub_802ABF8(void)
-{
- char cVar1;
- char *monName;
- u8 auStack180 [80];
- u8 auStack100 [80];
- u8 uVar2;
- struct PokemonStruct *pokeStruct;
- struct PokemonStruct *pokeStruct2;
- s32 iVar6;
- struct unkStruct_8095228 *puVar4;
+ALIGNED(4) const char gUnknown_80DF9F0[] = "????";
+// NOTE: had to be pre-proc'd to match
+ALIGNED(4) const char gUnknown_80DF9F8[] = _(
+ " Oh~2c hello!\n"
+ "Your rescue mission went well~2c didn~27t it?\n"
+ "I wouldn~27t expect any less~2c #CG%s#R!#P"
+ " Well~2c well!\n"
+ "Here is your reward from the Pokémon\n"
+ "Rescue Organization!");
+
+ALIGNED(4) const char gUnknown_80DFAA8[] =
+ " I hope you will keep on\n"
+ "rescuing your friends in\n"
+ "dire straits.#P"
+ " And now~2c I must save\n"
+ "your adventure.";
+
+ALIGNED(4) const char gUnknown_80DFB14[] =
+ " Oh~2c yes~2c that~27s right.\n"
+ "Please don~27t forget to send an #CGA-OK Mail#R\n"
+ "to the friend you just rescued.#P"
+ " Please give me a shout if\n"
+ "you would like to send #CGA-OK Mail#R.";
+
+ALIGNED(4) const char wonder_mail_2_fill[] = "pksdir0";
-
- switch(gUnknown_203B2C4->state) {
- case 5:
- pokeStruct = sub_808D33C();
- sub_80922B4(auStack180,pokeStruct->name, POKEMON_NAME_LENGTH);
- ExpandPlaceholdersBuffer(gUnknown_203B2C4->formattedString,gUnknown_80DF250,auStack180);
- sub_80141B4(gUnknown_203B2C4->formattedString,0,&gUnknown_203B2C4->faceFile,0x10d);
- break;
- case 0xe:
- sub_8014248(gUnknown_80DF304,0,7,gUnknown_80DEE60,0,4,0,&gUnknown_203B2C4->faceFile,0xc);
- break;
- case 0xf:
- sub_80141B4(gUnknown_80DF330,0,&gUnknown_203B2C4->faceFile,0x10d);
- break;
- case 0x10:
- if (sub_8030894() != 0)
- break;
- ResetUnusedInputStruct();
- sub_800641C(0,1,1);
- sub_80306A8(5,0,0,6);
- break;
- case 0x11:
- sub_8006518(gUnknown_203B2C4->unk35C);
- SetMenuItems(&gUnknown_203B2C4->unk21C,gUnknown_203B2C4->unk35C,3,&gUnknown_80DED60,gUnknown_80DED78,1,0,0);
- sub_803092C();
- sub_8035CF4(&gUnknown_203B2C4->unk21C,3,1);
- break;
- case 0x13:
- if (sub_801D008() != 0)
- break;
- ResetUnusedInputStruct();
- sub_800641C(0,1,1);
- // TODO: Probably a macro - Pika
- {
- struct {u16 a; u16 b;} local_x = {3, 2};
- sub_801C8C4(0, 1, (s32 *)&local_x, 9);
- }
- break;
- case 0x14:
- sub_8006518(gUnknown_203B2C4->unk35C);
- SetMenuItems(&gUnknown_203B2C4->unk21C,gUnknown_203B2C4->unk35C,3,&gUnknown_80DED48,gUnknown_80DED78,1,0,0);
- sub_801CCD8();
- sub_8035CF4(&gUnknown_203B2C4->unk21C,3,1);
- break;
- case 0x1e:
- gUnknown_203B2C4->linkError = 0;
- sub_8011830();
- iVar6 = sub_8037B28(gUnknown_203B2C4->unk40);
- gUnknown_203B2C4->linkError = iVar6;
- if (iVar6 != 0) goto _0802AEE6;
- switch(gUnknown_203B2C4->unk40)
- {
- case 6:
- MemoryFill8((u8 *)&gUnknown_203B2C4->unk1B8,0, sizeof(struct unkStruct_8095228));
- gUnknown_203B2C4->unk1B8 = *sub_8095228(gUnknown_203B2C4->unk218);
- gUnknown_203B2C4->linkError = sub_8037D64(gUnknown_203B2C4->unk40,&gUnknown_203B2C4->unk1B8,&gUnknown_203B2C4->unk1E8);
- break;
- case 7:
- MemoryFill8((u8 *)&gUnknown_203B2C4->unk1B8,0, sizeof(struct unkStruct_8095228));
- MemoryFill8((u8 *)&gUnknown_203B2C4->unk1E8,0, sizeof(struct unkStruct_8095228));
- gUnknown_203B2C4->linkError = sub_8037D64(gUnknown_203B2C4->unk40,&gUnknown_203B2C4->unk1B8,&gUnknown_203B2C4->unk1E8);
- break;
- }
- if (gUnknown_203B2C4->linkError == 0){
- switch(gUnknown_203B2C4->unk40){
- case 6:
- case 7:
- gUnknown_203B2C4->linkError = sub_80381F4(gUnknown_203B2C4->unk40,&gUnknown_203B2C4->unk1B8,&gUnknown_203B2C4->unk1E8);
- if ( sub_800D588() != '\0') {
- gUnknown_203B2C4->unk430 = gUnknown_203B2C4->unk1E8.unk10;
- }
- else {
- gUnknown_203B2C4->unk430 = gUnknown_203B2C4->unk1B8.unk10;
- }
- break;
- }
- }
- _0802AEE6:
- xxx_call_start_bg_music();
- break;
- case 0x26:
- sub_80141B4(gUnknown_80DF380,0,&gUnknown_203B2C4->faceFile,0x10d);
- break;
- case 0x27:
- sub_8006518(gUnknown_203B2C4->unk3BC);
- ResetUnusedInputStruct();
- sub_800641C(0,1,1);
- sub_80151C0(4,gUnknown_203B2C4->passwordBuffer);
- break;
- case 0x1a:
- sub_8006518(gUnknown_203B2C4->unk3BC);
- ResetUnusedInputStruct();
- sub_800641C(0,1,1);
- sub_8031D70(gUnknown_203B2C4->unk218,0);
- break;
- case 0x1b:
- sub_80141B4(gUnknown_80DF3B4,0,&gUnknown_203B2C4->faceFile,0x10d);
- break;
- case 0x19:
- sub_80141B4(gUnknown_80DF418,0,&gUnknown_203B2C4->faceFile,0x10d);
- break;
- case 0x24:
- sub_80141B4(gUnknown_80DF44C,0,&gUnknown_203B2C4->faceFile,0x10d);
- break;
- case 0x20:
- sub_80141B4(gUnknown_80DF46C,0,&gUnknown_203B2C4->faceFile,0x10d);
- break;
- case 0x21:
- switch(gUnknown_203B2C4->unk534)
- {
- case 3:
- case 5:
- case 6:
- sub_80141B4(gUnknown_80DF4F4,0,&gUnknown_203B2C4->faceFile,0x10d);
- break;
- case 4:
- break;
- }
- break;
- case 0x22:
- monName = GetMonSpecies(SPECIES_PELIPPER);
- strcpy(gUnknown_203B2C4->unk53C,monName);
- gUnknown_203B2C4->unk550 = 0x130;
- gUnknown_203B2C4->unk552 = 2;
- gUnknown_203B2C4->unk554 = 0;
- uVar2 = sub_809539C(6,gUnknown_203B2C4->unk430);
- puVar4 = sub_8095228(uVar2);
- cVar1 = puVar4->unk20.itemIndex;
- if (cVar1 != '\0')
- gUnknown_203B2C4->unk558 = cVar1;
- else
- gUnknown_203B2C4->unk558 = 0;
- gUnknown_203B2C4->unk55B = 1;
- gUnknown_203B2C4->unk560 = sub_803C200(&puVar4->unk4, 0);
- gUnknown_203B2C4->unk559 = 0;
- gUnknown_203B2C4->unk55A = 0;
- gUnknown_203B2C4->unk55C = 0;
- sub_802F204(gUnknown_203B2C4->unk53C,0);
- break;
- case 0x16:
- nullsub_23(0);
- sub_80141B4(gUnknown_80DF544,0,0,0);
- break;
- case 0x17:
- sub_80141B4(gUnknown_80DF594,0,&gUnknown_203B2C4->faceFile,0x10d);
- break;
- case 0x1d:
- sub_8014248(gUnknown_80DF5E4,0,7,gUnknown_80DEE44,0,4,0,&gUnknown_203B2C4->faceFile,0xc);
- break;
- case 0xd:
- pokeStruct2 = sub_808D33C();
- sub_80922B4(auStack100, pokeStruct2->name, POKEMON_NAME_LENGTH);
- ExpandPlaceholdersBuffer(gUnknown_203B2C4->formattedString,gUnknown_80DF63C,auStack100);
- sub_80141B4(gUnknown_203B2C4->formattedString,0,&gUnknown_203B2C4->faceFile,0x10d);
- break;
- case 0xc:
- sub_8014248(gUnknown_80DF694,0,7,gUnknown_80DEEE4,0,4,0,&gUnknown_203B2C4->faceFile,0xc);
- break;
- case 0x29:
- sub_80141B4(gUnknown_80DF44C,0,&gUnknown_203B2C4->faceFile,0x10d);
- break;
- case 0x2a:
- sub_80141B4(gUnknown_80DF6F0,0,&gUnknown_203B2C4->faceFile,0x10d);
- break;
- case 0xb:
- sub_80141B4(gUnknown_80DF710,0,&gUnknown_203B2C4->faceFile,0x10d);
- break;
- case 10:
- sub_8014248(gUnknown_80DF73C,0,0,gUnknown_80DEEBC,0,4,0,&gUnknown_203B2C4->faceFile,0xc);
- break;
- case 9:
- sub_8014248(gUnknown_80DF77C,0,0,gUnknown_80DEE7C,0,4,0,&gUnknown_203B2C4->faceFile,0xc);
- break;
- case 7:
- sub_80141B4(gUnknown_80DF7D4,0,&gUnknown_203B2C4->faceFile,0x10d);
- break;
- case 8:
- sub_8014248(gUnknown_80DF870,0,7,gUnknown_80DEE44,0,4,0,&gUnknown_203B2C4->faceFile,0xc);
- break;
- case 4:
- sub_80141B4(gUnknown_80DF8B4,0,&gUnknown_203B2C4->faceFile,0x10d);
- break;
- case 0:
- sub_8014248(gUnknown_80DF8EC,0,1,gUnknown_80DEDB8,0,4,0,&gUnknown_203B2C4->faceFile,0xc);
- break;
- case 1:
- sub_8014248(gUnknown_80DF928,0,1,gUnknown_80DEDB8,0,4,0,&gUnknown_203B2C4->faceFile,0xc);
- break;
- case 2:
- sub_80141B4(gUnknown_80DF94C,0,&gUnknown_203B2C4->faceFile,0x10d);
- break;
- case 6:
- switch(gUnknown_203B2C4->unk538){
- case 1:
- sub_8014248(gUnknown_80DF96C,0,3,gUnknown_80DEE08,0,4,0,&gUnknown_203B2C4->faceFile,0xc);
- break;
- case 2:
- sub_8014248(gUnknown_80DF9A4,0,3,gUnknown_80DEE08,0,4,0,&gUnknown_203B2C4->faceFile,0xc);
- break;
- }
- break;
- }
-}
-void sub_802B2BC(u32 newState)
-{
- gUnknown_203B2C4->state = newState;
- nullsub_131();
- sub_802ABF8();
-}
u32 sub_802B2D4(void)
{
@@ -494,7 +228,7 @@ void sub_802B3E0(void)
}
// Print and expand placeholders?
ExpandPlaceholdersBuffer(gUnknown_203B2C8->teamName,gUnknown_80DF9F8,teamNameBuffer);
- // Display to screen with Pelliper face
+ // Display to screen with Peliper face
sub_80141B4(gUnknown_203B2C8->teamName, 0, &gUnknown_203B2C8->faceFile, 0x10d);
break;
case 1:
@@ -607,7 +341,7 @@ u32 sub_802B640(u32 r0, struct UnkTextStruct2_sub *r1, u32 r2)
{
if(gUnknown_203B2CC == NULL)
{
- gUnknown_203B2CC = MemoryAlloc(0xD4, 8);
+ gUnknown_203B2CC = MemoryAlloc(sizeof(struct unkStruct_203B2CC), 8);
}
gUnknown_203B2CC->unk6C = r0;
gUnknown_203B2CC->unk70 = &gUnknown_203B2CC->unk74[r0];
diff --git a/src/wonder_mail_main_menu.c b/src/wonder_mail_main_menu.c
index 2c8e6bb..87166b9 100644
--- a/src/wonder_mail_main_menu.c
+++ b/src/wonder_mail_main_menu.c
@@ -6,9 +6,14 @@
#include "sub_8095228.h"
#include "wonder_mail.h"
-#define WONDER_MAIL_MAIN_SCREEN 4
+#define SEND_WONDER_MAIL_MAIN_SCREEN 1
+#define SEND_GAME_LINK_CABLE 2
+#define RECEIVE_WONDER_MAIL_MAIN_SCREEN 4
#define EXIT_TO_MAIN_MENU 5
+#define WONDER_MAIL_SENT 7
+#define GAME_LINK_CABLE_MENU 8
#define COMMUNICATION_ERROR 10
+#define RECEIVE_GAME_LINK_CABLE 12
#define PASSWORD_SUCCESS 13
#define PREPARE_SAVE 14
#define SAVE_ADVENTURE 15
@@ -17,6 +22,17 @@
#define PASSWORD_INVALID 19
#define PASSWORD_ENTRY_SCREEN 18
+
+struct unkStruct_803B344
+{
+ // size: 0xB4
+ struct WonderMail unk0;
+ u8* unk14;
+ u8* unk18;
+ u8 fill1C[0x3C - 0x1C];
+ u8 unk3C[0x78];
+};
+
struct unkStruct_203B3E8
{
// size: 0x49C
@@ -31,15 +47,21 @@ struct unkStruct_203B3E8
struct UnkTextStruct2 unk1EC[4];
u32 unk24C;
u32 wonderMailStatus;
- u8 fill254[0x3C0 - 0x254];
- struct WonderMail unk3C0;
- u8 fill3D0[0x490 - 0x3D4];
- u32 unk490;
- u32 unk494;
+
+ struct unkStruct_803B344 unk254;
+
+ struct unkStruct_803B344 unk308;
+ u8 unk3BC;
+ u8 fill3BD[0x3C0 - 0x3BD];
+
+ struct unkStruct_803B344 unk3C0;
+
+ struct WonderMail unk474;
+ u8 **unk488;
+ u8 *unk48C;
+ s32 wonderMailMethod;
+ u32 wonderMailMode;
u8 unk498;
- u8 unk499;
- u8 unk49A;
- u8 unk49B;
};
extern u32 sub_8095324(u32);
@@ -54,6 +76,39 @@ extern void sub_801CBB8(void);
extern void sub_80155F0(void);
extern void sub_8031E10(void);
+extern u8 sub_800D588(void);
+extern s32 sub_8037D64(u32, void *, void *);
+extern s32 sub_80381F4(u32, void *, void *);
+extern void sub_8011830(void);
+extern void sub_80151C0(u32, u8 *);
+extern void xxx_call_start_bg_music(void);
+extern void sub_8014248(u8 *, u32, u32, u8 *, u32, u32, u32, u32, u32);
+extern void nullsub_23(u32);
+extern void sub_802EF48(void);
+extern void sub_802D098(struct WonderMail *);
+
+
+extern struct unkStruct_803B344 *sub_803B344(u8);
+
+
+
+extern u8 gUnknown_80E7CC4[];
+extern u8 gUnknown_80E78F8;
+extern u8 gUnknown_80E7AC4[];
+extern u8 gUnknown_80E786C;
+extern u8 gUnknown_80E7AE0[];
+extern u8 gUnknown_80E7894;
+extern u8 gUnknown_80E7C48[];
+extern u8 gUnknown_80E7B14[];
+extern u8 gUnknown_80E78D8;
+extern u8 gUnknown_80E7B68[];
+extern u8 gUnknown_80E7BEC[];
+extern u8 gUnknown_80E7BC8[];
+extern u8 gUnknown_80E7B88[];
+extern u8 gUnknown_80E7C98[];
+extern u8 gUnknown_80E7B48[];
+extern s32 sub_8037B28(u32);
+
extern u32 sub_802D0E0();
extern u8 sub_802D178();
extern void sub_802D184();
@@ -61,30 +116,30 @@ extern void sub_802D184();
extern s32 sub_80154F0();
extern bool8 DecodeWonderMailPassword(u8 *, struct WonderMail *);
extern bool8 IsValidWonderMail(struct WonderMail *WonderMailData);
-extern void sub_80141B4(u32 *r0, u32, u32 *r1, u32);
+extern void sub_80141B4(u8 *r0, u32, u32 *r1, u32);
void PrintWonderMailMainMenuError(u32);
void HandleWonderMailMainScreen(void);
-void sub_8039AA8(void);
+void HandleGameLinkCableMenu(void);
void sub_8039B14(void);
void sub_8039B20(void);
void sub_8039B58(void);
-void sub_8039D88(void);
+void ReturnToGameLinkCableMenu(void);
void HandlePasswordSuccess(void);
void HandlePrepareSaveScreen(void);
void HandleSaveAdventureScreen(void);
void HandleWonderMailAddedScreen(void);
-void ReturnToWonderMailMainScreen(void);
+void ReturnToReceiveWonderMailMainScreen(void);
void AdvanceToPasswordEntryScreen(void);
void HandlePasswordEntryScreen(void);
void HandleInvalidPasswordMenu(void);
-extern u32 gUnknown_80E7914;
-extern u32 gUnknown_80E7938;
-extern u32 gUnknown_80E7994;
-extern u32 gUnknown_80E79E4;
-extern u32 gUnknown_80E7A48;
+extern u8 gUnknown_80E7914[];
+extern u8 gUnknown_80E7938[];
+extern u8 gUnknown_80E7994[];
+extern u8 gUnknown_80E79E4[];
+extern u8 gUnknown_80E7A48[];
bool8 sub_8039880(void)
{
@@ -105,10 +160,10 @@ bool8 CreateWonderMailMenu(void)
gUnknown_203B3E8->PasswordEntryBuffer[iVar2] = 0;
}
- gUnknown_203B3E8->unk490 = 3;
- gUnknown_203B3E8->unk494 = 2;
+ gUnknown_203B3E8->wonderMailMethod = WONDER_MAIL_GAME_LINK;
+ gUnknown_203B3E8->wonderMailMode = WONDER_MAIL_MODE_RECEIVE;
gUnknown_203B3E8->unk498 = 1;
- gUnknown_203B3E8->unk490 = 5; // ??? Why?
+ gUnknown_203B3E8->wonderMailMethod = WONDER_MAIL_PASSWORD; // ??? Why?
SetWonderMailMainMenuState(PROMPT_PASSWORD_ENTRY); // -> Display "Enter Wonder Mail Password"
return 1;
}
@@ -116,17 +171,15 @@ bool8 CreateWonderMailMenu(void)
u8 UpdateWonderMailMenu(void)
{
switch(gUnknown_203B3E8->state) {
- case WONDER_MAIL_MAIN_SCREEN:
+ case RECEIVE_WONDER_MAIL_MAIN_SCREEN:
HandleWonderMailMainScreen();
break;
case EXIT_TO_MAIN_MENU: // When you exit out of the menu
return 3;
- case 8:
- sub_8039AA8();
+ case GAME_LINK_CABLE_MENU:
+ HandleGameLinkCableMenu();
break;
- case 11:
- break;
- case 12:
+ case RECEIVE_GAME_LINK_CABLE:
sub_8039B14();
break;
case 6:
@@ -135,8 +188,8 @@ u8 UpdateWonderMailMenu(void)
case 9:
sub_8039B58();
break;
- case 7:
- sub_8039D88();
+ case WONDER_MAIL_SENT:
+ ReturnToGameLinkCableMenu();
break;
case PASSWORD_SUCCESS:
HandlePasswordSuccess();
@@ -151,7 +204,7 @@ u8 UpdateWonderMailMenu(void)
HandleWonderMailAddedScreen();
break;
case COMMUNICATION_ERROR:
- ReturnToWonderMailMainScreen();
+ ReturnToReceiveWonderMailMainScreen();
break;
case PROMPT_PASSWORD_ENTRY: // "Please enter the Wonder Mail Password" Screen
AdvanceToPasswordEntryScreen();
@@ -188,11 +241,11 @@ void HandleWonderMailMainScreen(void)
switch(menuAction) {
case 3:
case 4:
- gUnknown_203B3E8->unk490 = 3;
- SetWonderMailMainMenuState(8);
+ gUnknown_203B3E8->wonderMailMethod = WONDER_MAIL_GAME_LINK;
+ SetWonderMailMainMenuState(GAME_LINK_CABLE_MENU);
break;
case 5:
- gUnknown_203B3E8->unk490 = 5;
+ gUnknown_203B3E8->wonderMailMethod = WONDER_MAIL_PASSWORD;
SetWonderMailMainMenuState(PROMPT_PASSWORD_ENTRY);
break;
case 0:
@@ -203,26 +256,26 @@ void HandleWonderMailMainScreen(void)
}
}
-void sub_8039AA8(void)
+void HandleGameLinkCableMenu(void)
{
s32 menuAction;
if (sub_80144A4(&menuAction) == 0) {
switch(menuAction){
case 6:
- if (gUnknown_203B3E8->unk494 == 1) {
- SetWonderMailMainMenuState(2);
+ if (gUnknown_203B3E8->wonderMailMode == WONDER_MAIL_MODE_SEND) {
+ SetWonderMailMainMenuState(SEND_GAME_LINK_CABLE);
}
else {
- SetWonderMailMainMenuState(12);
+ SetWonderMailMainMenuState(RECEIVE_GAME_LINK_CABLE);
}
break;
case 0:
- if (gUnknown_203B3E8->unk494 == 1) {
- SetWonderMailMainMenuState(1);
+ if (gUnknown_203B3E8->wonderMailMode == WONDER_MAIL_MODE_SEND) {
+ SetWonderMailMainMenuState(SEND_WONDER_MAIL_MAIN_SCREEN);
}
else {
- SetWonderMailMainMenuState(WONDER_MAIL_MAIN_SCREEN);
+ SetWonderMailMainMenuState(RECEIVE_WONDER_MAIL_MAIN_SCREEN);
}
break;
}
@@ -243,12 +296,12 @@ void sub_8039B20(void)
}
}
-void ReturnToWonderMailMainScreen(void)
+void ReturnToReceiveWonderMailMainScreen(void)
{
s32 local_8;
if (sub_80144A4(&local_8) == 0) {
- SetWonderMailMainMenuState(WONDER_MAIL_MAIN_SCREEN);
+ SetWonderMailMainMenuState(RECEIVE_WONDER_MAIL_MAIN_SCREEN);
}
}
@@ -260,7 +313,7 @@ void sub_8039B58(void)
if (gUnknown_203B3E8->wonderMailStatus == 0) {
switch(gUnknown_203B3E8->unk24C){
case 9:
- SetWonderMailMainMenuState(7);
+ SetWonderMailMainMenuState(WONDER_MAIL_SENT);
break;
case 10:
SetWonderMailMainMenuState(PASSWORD_SUCCESS);
@@ -274,6 +327,7 @@ void sub_8039B58(void)
}
}
+/* NOTE: I think the error codes for wonder mail are the same across SOS/WONDER */
void PrintWonderMailMainMenuError(u32 status)
{
switch(status)
@@ -282,42 +336,42 @@ void PrintWonderMailMainMenuError(u32 status)
break;
case 1:
// "Communication Error"
- sub_80141B4(&gUnknown_80E7914, 0, 0, 0x101);
+ sub_80141B4(gUnknown_80E7914, 0, 0, 0x101);
break;
case 3:
// Incorrect number of GBA Systems
- sub_80141B4(&gUnknown_80E7938, 0, 0, 0x101);
+ sub_80141B4(gUnknown_80E7938, 0, 0, 0x101);
break;
case 2:
// No response from friend. Redo from start
- sub_80141B4(&gUnknown_80E7994, 0, 0, 0x101);
+ sub_80141B4(gUnknown_80E7994, 0, 0, 0x101);
break;
case 4:
// Sender and receiver in different modes
- sub_80141B4(&gUnknown_80E79E4, 0, 0, 0x101);
+ sub_80141B4(gUnknown_80E79E4, 0, 0, 0x101);
break;
case 5:
// "Communication Error"
- sub_80141B4(&gUnknown_80E7914, 0, 0, 0x101);
+ sub_80141B4(gUnknown_80E7914, 0, 0, 0x101);
break;
case 14:
// "Communication Error"
- sub_80141B4(&gUnknown_80E7914, 0, 0, 0x101);
+ sub_80141B4(gUnknown_80E7914, 0, 0, 0x101);
break;
case 15: // "No response from your friend. Make sure sender and receiver are ready"
- sub_80141B4(&gUnknown_80E7A48, 0, 0, 0x101);
+ sub_80141B4(gUnknown_80E7A48, 0, 0, 0x101);
break;
case 6:
case 7:
case 8:
case 9:
- case COMMUNICATION_ERROR:
+ case 10:
case 11:
case 12:
- case PASSWORD_SUCCESS:
+ case 13:
default:
// "Communication Error"
- sub_80141B4(&gUnknown_80E7914, 0, 0, 0x101);
+ sub_80141B4(gUnknown_80E7914, 0, 0, 0x101);
break;
}
@@ -342,7 +396,7 @@ void HandlePasswordEntryScreen(void)
else {
// Successful password
// Copy the decoded data to another buffer?
- gUnknown_203B3E8->unk3C0 = gUnknown_203B3E8->UNK38.decodedMail;
+ gUnknown_203B3E8->unk3C0.unk0 = gUnknown_203B3E8->UNK38.decodedMail;
gUnknown_203B3E8->unk498 = 1;
SetWonderMailMainMenuState(PASSWORD_SUCCESS);
@@ -390,12 +444,12 @@ void HandlePrepareSaveScreen(void)
}
}
-void sub_8039D88(void)
+void ReturnToGameLinkCableMenu(void)
{
int iVar2;
if(sub_80144A4(&iVar2) == 0)
{
- SetWonderMailMainMenuState(8);
+ SetWonderMailMainMenuState(GAME_LINK_CABLE_MENU);
}
}
@@ -443,3 +497,137 @@ void HandleInvalidPasswordMenu(void)
void nullsub_54(void)
{
}
+
+void WonderMailMainMenuCallback(void)
+{
+ int iVar2;
+ struct unkStruct_803B344 *temp;
+
+ switch(gUnknown_203B3E8->state) {
+ case 0:
+ sub_8014248(gUnknown_80E7AC4,0,1,&gUnknown_80E786C,0,4,0,0,0x101);
+ break;
+ case SEND_WONDER_MAIL_MAIN_SCREEN:
+ sub_8014248(gUnknown_80E7AE0,0,3,&gUnknown_80E7894,0,4,0,0,0x101);
+ break;
+ case 3:
+ ResetUnusedInputStruct();
+ sub_800641C(0,1,1);
+ sub_802EF48();
+ break;
+ case RECEIVE_WONDER_MAIL_MAIN_SCREEN:
+ sub_8014248(gUnknown_80E7B14,0,3,&gUnknown_80E78D8,0,4,0,0,0x101);
+ break;
+ case PASSWORD_SUCCESS:
+ gUnknown_203B3E8->unk474 = gUnknown_203B3E8->unk3C0.unk0;
+ if(gUnknown_203B3E8->unk474.unk2 == 4)
+ {
+ gUnknown_203B3E8->unk488 = &gUnknown_203B3E8->unk3C0.unk14;
+ gUnknown_203B3E8->unk48C = gUnknown_203B3E8->unk3C0.unk3C;
+ }
+ else
+ {
+ gUnknown_203B3E8->unk488 = NULL;
+ gUnknown_203B3E8->unk48C = NULL;
+ }
+ sub_802D098(&gUnknown_203B3E8->unk474);
+ break;
+ case PREPARE_SAVE:
+ if(gUnknown_203B3E8->unk498 != 0)
+ {
+ switch(gUnknown_203B3E8->wonderMailMethod)
+ {
+ case WONDER_MAIL_GAME_LINK:
+ case WONDER_MAIL_PASSWORD:
+ sub_80141B4(gUnknown_80E7B48,0,0,0x101);
+ break;
+ case 4:
+ break;
+ }
+ }
+ else
+ sub_80141B4(gUnknown_80E7B48,0,0,0x101);
+ break;
+ case WONDER_MAIL_SENT:
+ sub_80141B4(gUnknown_80E7B68,0,0,0x101);
+ break;
+ case WONDER_MAIL_ADDED:
+ if (gUnknown_203B3E8->unk498 != '\0') {
+ sub_80141B4(gUnknown_80E7B88,0,0,0x101);
+ }
+ else {
+ // Wonder Mail was refused
+ sub_80141B4(gUnknown_80E7BC8,0,0,0x101);
+ }
+ break;
+ case GAME_LINK_CABLE_MENU:
+ sub_8014248(gUnknown_80E7BEC,0,6,&gUnknown_80E78F8,0,4,0,0,0x101);
+ break;
+ case 6:
+ nullsub_23(0);
+ sub_80141B4(gUnknown_80E7C48,0,0,0);
+ break;
+ case 9:
+ gUnknown_203B3E8->wonderMailStatus = 0;
+ sub_8011830();
+ iVar2 = sub_8037B28(gUnknown_203B3E8->unk24C);
+ gUnknown_203B3E8->wonderMailStatus = iVar2;
+ if (iVar2 == 0) {
+ switch(gUnknown_203B3E8->unk24C)
+ {
+ case 9:
+ MemoryFill8((u8 *)&gUnknown_203B3E8->unk254,0,0xb4);
+ temp = sub_803B344(gUnknown_203B3E8->unk3BC);
+ if(temp->unk14 != NULL){
+ MemoryCopy8((u8 *)&gUnknown_203B3E8->unk254.unk14,temp->unk14,0x28);
+ MemoryCopy8((u8 *)&gUnknown_203B3E8->unk254.unk3C,temp->unk18,0x78);
+ }
+ gUnknown_203B3E8->unk254.unk0 = temp->unk0;
+ gUnknown_203B3E8->wonderMailStatus = sub_8037D64(gUnknown_203B3E8->unk24C,&gUnknown_203B3E8->unk254,&gUnknown_203B3E8->unk308);
+ break;
+ case 10:
+ MemoryFill8((u8 *)&gUnknown_203B3E8->unk254,0,0xb4);
+ MemoryFill8((u8 *)&gUnknown_203B3E8->unk308,0,0xb4);
+ gUnknown_203B3E8->wonderMailStatus = sub_8037D64(gUnknown_203B3E8->unk24C,&gUnknown_203B3E8->unk254,&gUnknown_203B3E8->unk308);
+ break;
+ }
+ if (gUnknown_203B3E8->wonderMailStatus == 0)
+ {
+ switch(gUnknown_203B3E8->unk24C)
+ {
+ case 9:
+ case 10:
+ gUnknown_203B3E8->wonderMailStatus = sub_80381F4(gUnknown_203B3E8->unk24C,&gUnknown_203B3E8->unk254,&gUnknown_203B3E8->unk308);
+ if (sub_800D588() != '\0') {
+ gUnknown_203B3E8->unk3C0 = gUnknown_203B3E8->unk308;
+ }
+ else {
+ gUnknown_203B3E8->unk3C0 = gUnknown_203B3E8->unk254;
+ }
+ break;
+ }
+ }
+ }
+ xxx_call_start_bg_music();
+ break;
+ case PROMPT_PASSWORD_ENTRY:
+ sub_80141B4(gUnknown_80E7C98,0,0,0x101);
+ break;
+ case PASSWORD_ENTRY_SCREEN:
+ sub_8006518(gUnknown_203B3E8->unk1EC);
+ ResetUnusedInputStruct();
+ sub_800641C(0,1,1);
+ sub_80151C0(5,gUnknown_203B3E8->PasswordEntryBuffer);
+ break;
+ case PASSWORD_INVALID:
+ sub_8014248(gUnknown_80E7CC4,0,6,&gUnknown_80E78F8,0,4,0,0,0x101);
+ break;
+ }
+}
+
+void SetWonderMailMainMenuState(u8 newState)
+{
+ gUnknown_203B3E8->state = newState;
+ nullsub_54();
+ WonderMailMainMenuCallback();
+}