summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--asm/code_801C620.s2
-rw-r--r--asm/code_80958E8.s22
-rw-r--r--asm/mailbox.s560
-rw-r--r--asm/pelipper_board.s448
-rw-r--r--asm/wonder_mail_2.s38
-rw-r--r--asm/wonder_mail_3.s3683
-rw-r--r--asm/wonder_mail_3_mid.s1740
-rw-r--r--charmap.txt1
-rw-r--r--data/data_80DED44.s8
-rw-r--r--data/data_80E2068.s313
-rw-r--r--data/data_80F4278.s4
-rw-r--r--include/item.h1
-rw-r--r--include/mailbox.h27
-rw-r--r--include/personality_test.h4
-rw-r--r--include/rescue_team_info.h2
-rw-r--r--include/save.h1
-rw-r--r--include/wonder_mail.h7
-rwxr-xr-xld_script.txt9
-rw-r--r--src/bg_palette_buffer.c4
-rw-r--r--src/code_80958E8.c2
-rw-r--r--src/friend_area.c4
-rw-r--r--src/input.c4
-rw-r--r--src/items.c12
-rw-r--r--src/load_screen.c602
-rw-r--r--src/mailbox.c186
-rw-r--r--src/mailbox_1.c104
-rw-r--r--src/pelipper_board.c184
-rw-r--r--src/pelipper_board_1.c60
-rw-r--r--src/pokemon_mid.c8
-rw-r--r--src/post_office_guide.c4
-rw-r--r--src/rescue_team_info.c2
-rw-r--r--src/save.c18
-rw-r--r--src/wonder_mail_2.c5
-rw-r--r--src/wonder_mail_main_menu.c156
-rw-r--r--sym_ewram2.txt2
35 files changed, 3676 insertions, 4551 deletions
diff --git a/asm/code_801C620.s b/asm/code_801C620.s
index 1f2dd00..367553b 100644
--- a/asm/code_801C620.s
+++ b/asm/code_801C620.s
@@ -1578,7 +1578,7 @@ _0801D4FE:
str r0, [r1, 0x78]
movs r0, 0x9
str r0, [r1, 0x7C]
- bl sub_802C83C
+ bl HasNoAcceptedJobs
lsls r0, 24
cmp r0, 0
beq _0801D532
diff --git a/asm/code_80958E8.s b/asm/code_80958E8.s
index 9928fb0..dd2376c 100644
--- a/asm/code_80958E8.s
+++ b/asm/code_80958E8.s
@@ -602,7 +602,7 @@ sub_8095F8C:
_08095F92:
lsls r0, r4, 24
lsrs r0, 24
- bl sub_8096000
+ bl CheckMailSlot
lsls r0, 24
cmp r0, 0
bne _08095FA2
@@ -666,8 +666,8 @@ sub_8095FE8:
_08095FFC: .4byte gUnknown_203B490
thumb_func_end sub_8095FE8
- thumb_func_start sub_8096000
-sub_8096000:
+ thumb_func_start CheckMailSlot
+CheckMailSlot:
push {lr}
lsls r0, 24
lsrs r0, 24
@@ -689,7 +689,7 @@ _08096020:
_08096022:
pop {r1}
bx r1
- thumb_func_end sub_8096000
+ thumb_func_end CheckMailSlot
thumb_func_start sub_8096028
sub_8096028:
@@ -1994,7 +1994,7 @@ sub_80969AC:
_080969B2:
lsls r0, r4, 24
lsrs r0, 24
- bl sub_8096ACC
+ bl CheckJobSlot
lsls r0, 24
cmp r0, 0
bne _080969C2
@@ -2155,8 +2155,8 @@ sub_8096AB4:
_08096AC8: .4byte gUnknown_203B490
thumb_func_end sub_8096AB4
- thumb_func_start sub_8096ACC
-sub_8096ACC:
+ thumb_func_start CheckJobSlot
+CheckJobSlot:
push {lr}
lsls r0, 24
lsrs r0, 24
@@ -2179,7 +2179,7 @@ _08096AF0:
_08096AF2:
pop {r1}
bx r1
- thumb_func_end sub_8096ACC
+ thumb_func_end CheckJobSlot
thumb_func_start sub_8096AF8
sub_8096AF8:
@@ -2632,8 +2632,8 @@ sub_8096DF8:
_08096E10: .4byte gUnknown_203B490
thumb_func_end sub_8096DF8
- thumb_func_start sub_8096E14
-sub_8096E14:
+ thumb_func_start CheckPKMNNewsSlot
+CheckPKMNNewsSlot:
lsls r0, 24
lsrs r0, 24
ldr r1, _08096E28
@@ -2646,7 +2646,7 @@ sub_8096E14:
bx lr
.align 2, 0
_08096E28: .4byte gUnknown_203B490
- thumb_func_end sub_8096E14
+ thumb_func_end CheckPKMNNewsSlot
thumb_func_start sub_8096E2C
sub_8096E2C:
diff --git a/asm/mailbox.s b/asm/mailbox.s
new file mode 100644
index 0000000..6ddf963
--- /dev/null
+++ b/asm/mailbox.s
@@ -0,0 +1,560 @@
+ .include "constants/gba_constants.inc"
+ .include "asm/macros.inc"
+
+ .syntax unified
+
+ .text
+
+ thumb_func_start CreateMailboxMenu
+CreateMailboxMenu:
+ push {r4-r7,lr}
+ ldr r4, _0802E380
+ ldr r0, [r4]
+ adds r0, 0xFC
+ movs r1, 0
+ movs r2, 0x10
+ bl MemoryFill16
+ ldr r1, [r4]
+ adds r2, r1, 0
+ adds r2, 0xBC
+ ldr r0, _0802E384
+ str r0, [r2]
+ adds r1, 0xC0
+ movs r0, 0x2
+ str r0, [r1]
+ bl HasNoMailinMailbox
+ lsls r0, 24
+ cmp r0, 0
+ beq _0802E2E6
+ ldr r0, [r4]
+ adds r0, 0xFC
+ movs r1, 0x1
+ strh r1, [r0]
+_0802E2E6:
+ movs r5, 0x1
+ ldr r1, [r4]
+ movs r6, 0x1
+ adds r2, r1, 0
+ adds r2, 0xC4
+ ldr r0, _0802E388
+ str r0, [r2]
+ adds r1, 0xC8
+ movs r0, 0x3
+ str r0, [r1]
+ bl HasNoAcceptedJobs
+ lsls r0, 24
+ cmp r0, 0
+ beq _0802E30A
+ ldr r0, [r4]
+ adds r0, 0xFE
+ strh r5, [r0]
+_0802E30A:
+ ldr r1, [r4]
+ adds r2, r1, 0
+ adds r2, 0xCC
+ ldr r0, _0802E38C
+ str r0, [r2]
+ adds r1, 0xD0
+ movs r0, 0x4
+ str r0, [r1]
+ bl HasNoPKMNNews
+ lsls r0, 24
+ cmp r0, 0
+ beq _0802E32E
+ ldr r0, [r4]
+ movs r1, 0x80
+ lsls r1, 1
+ adds r0, r1
+ strh r6, [r0]
+_0802E32E:
+ movs r5, 0x3
+ ldr r2, [r4]
+ adds r0, r2, 0
+ adds r0, 0xD4
+ movs r1, 0
+ str r1, [r0]
+ adds r0, 0x4
+ str r6, [r0]
+ movs r3, 0
+ adds r6, r4, 0
+ mov r12, r2
+ mov r4, r12
+ adds r4, 0xFC
+ adds r2, 0xC0
+_0802E34A:
+ ldrh r0, [r4]
+ cmp r0, 0
+ bne _0802E35A
+ ldr r1, [r2]
+ mov r7, r12
+ ldr r0, [r7, 0x64]
+ cmp r1, r0
+ beq _0802E3B2
+_0802E35A:
+ adds r4, 0x2
+ adds r2, 0x8
+ adds r3, 0x1
+ cmp r3, r5
+ blt _0802E34A
+ movs r3, 0
+ cmp r3, r5
+ bge _0802E3B2
+ ldr r1, [r6]
+ adds r0, r1, 0
+ adds r0, 0xFC
+ ldrh r0, [r0]
+ cmp r0, 0
+ bne _0802E390
+ adds r0, r1, 0
+ adds r0, 0xC0
+ ldr r0, [r0]
+ str r0, [r1, 0x64]
+ b _0802E3B2
+ .align 2, 0
+_0802E380: .4byte gUnknown_203B304
+_0802E384: .4byte gMailboxCheckMail
+_0802E388: .4byte gMailboxJobList
+_0802E38C: .4byte gMailboxPKMNNews
+_0802E390:
+ adds r3, 0x1
+ cmp r3, r5
+ bge _0802E3B2
+ ldr r2, [r6]
+ lsls r0, r3, 1
+ adds r1, r2, 0
+ adds r1, 0xFC
+ adds r1, r0
+ ldrh r0, [r1]
+ cmp r0, 0
+ bne _0802E390
+ lsls r0, r3, 3
+ adds r1, r2, 0
+ adds r1, 0xC0
+ adds r1, r0
+ ldr r0, [r1]
+ str r0, [r2, 0x64]
+_0802E3B2:
+ pop {r4-r7}
+ pop {r0}
+ bx r0
+ thumb_func_end CreateMailboxMenu
+
+ thumb_func_start CreateMailActionMenu
+CreateMailActionMenu:
+ push {r4-r7,lr}
+ movs r5, 0
+ ldr r4, _0802E3F0
+ ldr r0, [r4]
+ ldrb r0, [r0, 0x8]
+ bl sub_8095FE8
+ adds r7, r0, 0
+ ldrb r0, [r7]
+ cmp r0, 0x1
+ bne _0802E3FC
+ ldr r2, [r4]
+ adds r1, r2, 0
+ adds r1, 0xBC
+ ldr r0, _0802E3F4
+ str r0, [r1]
+ adds r1, 0x4
+ movs r0, 0x6
+ str r0, [r1]
+ adds r1, 0x4
+ ldr r0, _0802E3F8
+ str r0, [r1]
+ adds r1, 0x4
+ movs r0, 0x7
+ str r0, [r1]
+ movs r5, 0x2
+ b _0802E44A
+ .align 2, 0
+_0802E3F0: .4byte gUnknown_203B304
+_0802E3F4: .4byte gMailActionStore
+_0802E3F8: .4byte gMailActionRead
+_0802E3FC:
+ ldr r1, [r4]
+ adds r2, r1, 0
+ adds r2, 0xBC
+ ldr r0, _0802E494
+ ldr r0, [r0]
+ str r0, [r2]
+ adds r1, 0xC0
+ movs r0, 0x5
+ str r0, [r1]
+ adds r0, r7, 0
+ bl sub_80968B0
+ lsls r0, 24
+ cmp r0, 0
+ bne _0802E422
+ bl sub_80969AC
+ cmp r0, 0x7
+ ble _0802E42C
+_0802E422:
+ ldr r0, [r4]
+ adds r0, 0xC0
+ movs r1, 0x1
+ negs r1, r1
+ str r1, [r0]
+_0802E42C:
+ adds r5, 0x1
+ ldr r4, _0802E498
+ ldr r2, [r4]
+ lsls r3, r5, 3
+ adds r0, r2, 0
+ adds r0, 0xBC
+ adds r0, r3
+ ldr r1, _0802E49C
+ ldr r1, [r1]
+ str r1, [r0]
+ adds r2, 0xC0
+ adds r2, r3
+ movs r0, 0x8
+ str r0, [r2]
+ adds r5, 0x1
+_0802E44A:
+ mov r12, r4
+ mov r0, r12
+ ldr r4, [r0]
+ lsls r2, r5, 3
+ adds r0, r4, 0
+ adds r0, 0xBC
+ adds r0, r2
+ movs r1, 0
+ str r1, [r0]
+ adds r1, r4, 0
+ adds r1, 0xC0
+ adds r2, r1, r2
+ movs r0, 0x1
+ str r0, [r2]
+ movs r3, 0
+ cmp r3, r5
+ bge _0802E486
+ movs r6, 0x1
+ negs r6, r6
+ adds r2, r1, 0
+_0802E472:
+ ldr r1, [r2]
+ cmp r1, r6
+ beq _0802E47E
+ ldr r0, [r4, 0x68]
+ cmp r1, r0
+ beq _0802E4A8
+_0802E47E:
+ adds r2, 0x8
+ adds r3, 0x1
+ cmp r3, r5
+ blt _0802E472
+_0802E486:
+ ldrb r0, [r7]
+ cmp r0, 0x1
+ bne _0802E4A0
+ mov r0, r12
+ ldr r1, [r0]
+ movs r0, 0x7
+ b _0802E4A6
+ .align 2, 0
+_0802E494: .4byte gUnknown_80D4990
+_0802E498: .4byte gUnknown_203B304
+_0802E49C: .4byte gUnknown_80D4970
+_0802E4A0:
+ mov r0, r12
+ ldr r1, [r0]
+ movs r0, 0x8
+_0802E4A6:
+ str r0, [r1, 0x68]
+_0802E4A8:
+ pop {r4-r7}
+ pop {r0}
+ bx r0
+ thumb_func_end CreateMailActionMenu
+
+ thumb_func_start sub_802E4B0
+sub_802E4B0:
+ push {r4,lr}
+ sub sp, 0x4
+ movs r0, 0
+ str r0, [sp]
+ ldr r4, _0802E4F0
+ ldr r0, [r4]
+ adds r0, 0x6C
+ bl sub_8012FD8
+ lsls r0, 24
+ cmp r0, 0
+ bne _0802E4DC
+ ldr r0, [r4]
+ adds r0, 0x6C
+ mov r1, sp
+ bl sub_8013114
+ ldr r1, [sp]
+ cmp r1, 0x1
+ beq _0802E4DC
+ ldr r0, [r4]
+ str r1, [r0, 0x64]
+_0802E4DC:
+ ldr r0, [sp]
+ subs r0, 0x1
+ cmp r0, 0x7
+ bhi _0802E56E
+ lsls r0, 2
+ ldr r1, _0802E4F4
+ adds r0, r1
+ ldr r0, [r0]
+ mov pc, r0
+ .align 2, 0
+_0802E4F0: .4byte gUnknown_203B304
+_0802E4F4: .4byte _0802E4F8
+ .align 2, 0
+_0802E4F8:
+ .4byte _0802E568
+ .4byte _0802E518
+ .4byte _0802E52A
+ .4byte _0802E53C
+ .4byte _0802E56E
+ .4byte _0802E56E
+ .4byte _0802E56E
+ .4byte _0802E560
+_0802E518:
+ bl HasNoMailinMailbox
+ lsls r0, 24
+ cmp r0, 0
+ bne _0802E54E
+ movs r0, 0x4
+ bl SetMailboxState
+ b _0802E56E
+_0802E52A:
+ bl HasNoAcceptedJobs
+ lsls r0, 24
+ cmp r0, 0
+ bne _0802E54E
+ movs r0, 0x8
+ bl SetMailboxState
+ b _0802E56E
+_0802E53C:
+ bl HasNoPKMNNews
+ lsls r0, 24
+ cmp r0, 0
+ bne _0802E54E
+ movs r0, 0x9
+ bl SetMailboxState
+ b _0802E56E
+_0802E54E:
+ ldr r0, _0802E55C
+ ldr r0, [r0]
+ adds r0, 0x6C
+ movs r1, 0x1
+ bl sub_8012EA4
+ b _0802E56E
+ .align 2, 0
+_0802E55C: .4byte gUnknown_203B304
+_0802E560:
+ movs r0, 0x2
+ bl SetMailboxState
+ b _0802E56E
+_0802E568:
+ movs r0, 0x3
+ bl SetMailboxState
+_0802E56E:
+ add sp, 0x4
+ pop {r4}
+ pop {r0}
+ bx r0
+ thumb_func_end sub_802E4B0
+
+ thumb_func_start sub_802E578
+sub_802E578:
+ push {r4,lr}
+ movs r0, 0x1
+ bl sub_802BDEC
+ cmp r0, 0x4
+ bhi _0802E606
+ lsls r0, 2
+ ldr r1, _0802E590
+ adds r0, r1
+ ldr r0, [r0]
+ mov pc, r0
+ .align 2, 0
+_0802E590: .4byte _0802E594
+ .align 2, 0
+_0802E594:
+ .4byte _0802E606
+ .4byte _0802E606
+ .4byte _0802E5FC
+ .4byte _0802E5A8
+ .4byte _0802E5C0
+_0802E5A8:
+ bl sub_802BE74
+ ldr r1, _0802E5BC
+ ldr r1, [r1]
+ strb r0, [r1, 0x8]
+ movs r0, 0x6
+ bl SetMailboxState
+ b _0802E606
+ .align 2, 0
+_0802E5BC: .4byte gUnknown_203B304
+_0802E5C0:
+ bl sub_802BE74
+ ldr r4, _0802E5F0
+ ldr r1, [r4]
+ strb r0, [r1, 0x8]
+ ldr r0, [r4]
+ ldrb r0, [r0, 0x8]
+ bl sub_8095FE8
+ adds r2, r0, 0
+ ldrb r0, [r2]
+ cmp r0, 0x1
+ bne _0802E5F4
+ ldr r1, [r4]
+ ldrb r0, [r2, 0x5]
+ strb r0, [r1, 0x9]
+ ldr r1, [r4]
+ movs r0, 0x5
+ str r0, [r1, 0x4]
+ movs r0, 0xB
+ bl SetMailboxState
+ b _0802E606
+ .align 2, 0
+_0802E5F0: .4byte gUnknown_203B304
+_0802E5F4:
+ movs r0, 0x7
+ bl SetMailboxState
+ b _0802E606
+_0802E5FC:
+ bl sub_802BEDC
+ movs r0, 0x1
+ bl SetMailboxState
+_0802E606:
+ pop {r4}
+ pop {r0}
+ bx r0
+ thumb_func_end sub_802E578
+
+ thumb_func_start sub_802E60C
+sub_802E60C:
+ push {r4,lr}
+ sub sp, 0x4
+ movs r0, 0
+ str r0, [sp]
+ bl sub_802BDEC
+ ldr r4, _0802E650
+ ldr r0, [r4]
+ adds r0, 0x6C
+ bl sub_8012FD8
+ lsls r0, 24
+ cmp r0, 0
+ bne _0802E63C
+ ldr r0, [r4]
+ adds r0, 0x6C
+ mov r1, sp
+ bl sub_8013114
+ ldr r1, [sp]
+ cmp r1, 0x1
+ beq _0802E63C
+ ldr r0, [r4]
+ str r1, [r0, 0x68]
+_0802E63C:
+ ldr r0, [sp]
+ subs r0, 0x1
+ cmp r0, 0x7
+ bhi _0802E732
+ lsls r0, 2
+ ldr r1, _0802E654
+ adds r0, r1
+ ldr r0, [r0]
+ mov pc, r0
+ .align 2, 0
+_0802E650: .4byte gUnknown_203B304
+_0802E654: .4byte _0802E658
+ .align 2, 0
+_0802E658:
+ .4byte _0802E72C
+ .4byte _0802E732
+ .4byte _0802E732
+ .4byte _0802E732
+ .4byte _0802E678
+ .4byte _0802E6BC
+ .4byte _0802E704
+ .4byte _0802E6B4
+_0802E678:
+ ldr r0, _0802E6AC
+ bl PlaySound
+ ldr r4, _0802E6B0
+ ldr r0, [r4]
+ ldrb r0, [r0, 0x8]
+ bl sub_8095FE8
+ bl sub_8096A78
+ bl sub_8096C80
+ bl sub_8096D24
+ ldr r0, [r4]
+ ldrb r0, [r0, 0x8]
+ bl sub_8096040
+ bl sub_8096078
+ bl HasNoMailinMailbox
+ lsls r0, 24
+ cmp r0, 0
+ bne _0802E6E8
+ b _0802E6FC
+ .align 2, 0
+_0802E6AC: .4byte 0x00000133
+_0802E6B0: .4byte gUnknown_203B304
+_0802E6B4:
+ movs r0, 0x7
+ bl SetMailboxState
+ b _0802E732
+_0802E6BC:
+ ldr r0, _0802E6F4
+ bl PlaySound
+ ldr r4, _0802E6F8
+ ldr r0, [r4]
+ ldrb r0, [r0, 0x8]
+ bl sub_8095FE8
+ ldrb r0, [r0, 0x5]
+ bl sub_8096DF8
+ ldr r0, [r4]
+ ldrb r0, [r0, 0x8]
+ bl sub_8096040
+ bl sub_8096078
+ bl HasNoMailinMailbox
+ lsls r0, 24
+ cmp r0, 0
+ beq _0802E6FC
+_0802E6E8:
+ bl sub_802BEDC
+ movs r0, 0x1
+ bl SetMailboxState
+ b _0802E732
+ .align 2, 0
+_0802E6F4: .4byte 0x00000133
+_0802E6F8: .4byte gUnknown_203B304
+_0802E6FC:
+ movs r0, 0x5
+ bl SetMailboxState
+ b _0802E732
+_0802E704:
+ movs r0, 0
+ bl PlayMenuSoundEffect
+ ldr r4, _0802E728
+ ldr r0, [r4]
+ ldrb r0, [r0, 0x8]
+ bl sub_8095FE8
+ ldr r1, [r4]
+ ldrb r0, [r0, 0x5]
+ strb r0, [r1, 0x9]
+ ldr r1, [r4]
+ movs r0, 0x5
+ str r0, [r1, 0x4]
+ movs r0, 0xB
+ bl SetMailboxState
+ b _0802E732
+ .align 2, 0
+_0802E728: .4byte gUnknown_203B304
+_0802E72C:
+ movs r0, 0x5
+ bl SetMailboxState
+_0802E732:
+ add sp, 0x4
+ pop {r4}
+ pop {r0}
+ bx r0
+ thumb_func_end sub_802E60C
+
+ .align 2,0
diff --git a/asm/pelipper_board.s b/asm/pelipper_board.s
new file mode 100644
index 0000000..679f1de
--- /dev/null
+++ b/asm/pelipper_board.s
@@ -0,0 +1,448 @@
+ .include "constants/gba_constants.inc"
+ .include "asm/macros.inc"
+
+ .syntax unified
+
+ .text
+
+ thumb_func_start CreatePelipperBoardMenu
+CreatePelipperBoardMenu:
+ push {r4-r7,lr}
+ ldr r4, _0802EBDC
+ ldr r0, [r4]
+ adds r0, 0xFC
+ movs r1, 0
+ movs r2, 0x10
+ bl MemoryFill16
+ ldr r1, [r4]
+ adds r2, r1, 0
+ adds r2, 0xBC
+ ldr r0, _0802EBE0
+ str r0, [r2]
+ adds r1, 0xC0
+ movs r0, 0x2
+ str r0, [r1]
+ bl sub_802C4A4
+ lsls r0, 24
+ cmp r0, 0
+ beq _0802EB66
+ ldr r0, [r4]
+ adds r0, 0xFC
+ movs r1, 0x1
+ strh r1, [r0]
+_0802EB66:
+ movs r5, 0x1
+ ldr r1, [r4]
+ adds r2, r1, 0
+ adds r2, 0xC4
+ ldr r0, _0802EBE4
+ str r0, [r2]
+ adds r1, 0xC8
+ movs r0, 0x3
+ str r0, [r1]
+ bl HasNoAcceptedJobs
+ lsls r0, 24
+ cmp r0, 0
+ beq _0802EB88
+ ldr r0, [r4]
+ adds r0, 0xFE
+ strh r5, [r0]
+_0802EB88:
+ movs r5, 0x2
+ ldr r2, [r4]
+ adds r1, r2, 0
+ adds r1, 0xCC
+ movs r0, 0
+ str r0, [r1]
+ adds r1, 0x4
+ movs r0, 0x1
+ str r0, [r1]
+ movs r3, 0
+ adds r6, r4, 0
+ mov r12, r2
+ mov r4, r12
+ adds r4, 0xFC
+ adds r2, 0xC0
+_0802EBA6:
+ ldrh r0, [r4]
+ cmp r0, 0
+ bne _0802EBB6
+ ldr r1, [r2]
+ mov r7, r12
+ ldr r0, [r7, 0x64]
+ cmp r1, r0
+ beq _0802EC0A
+_0802EBB6:
+ adds r4, 0x2
+ adds r2, 0x8
+ adds r3, 0x1
+ cmp r3, r5
+ blt _0802EBA6
+ movs r3, 0
+ cmp r3, r5
+ bge _0802EC0A
+ ldr r1, [r6]
+ adds r0, r1, 0
+ adds r0, 0xFC
+ ldrh r0, [r0]
+ cmp r0, 0
+ bne _0802EBE8
+ adds r0, r1, 0
+ adds r0, 0xC0
+ ldr r0, [r0]
+ str r0, [r1, 0x64]
+ b _0802EC0A
+ .align 2, 0
+_0802EBDC: .4byte gUnknown_203B308
+_0802EBE0: .4byte gPelipperBoard_BulletinBoard
+_0802EBE4: .4byte gPelipperBoard_JobList
+_0802EBE8:
+ adds r3, 0x1
+ cmp r3, r5
+ bge _0802EC0A
+ ldr r2, [r6]
+ lsls r0, r3, 1
+ adds r1, r2, 0
+ adds r1, 0xFC
+ adds r1, r0
+ ldrh r0, [r1]
+ cmp r0, 0
+ bne _0802EBE8
+ lsls r0, r3, 3
+ adds r1, r2, 0
+ adds r1, 0xC0
+ adds r1, r0
+ ldr r0, [r1]
+ str r0, [r2, 0x64]
+_0802EC0A:
+ pop {r4-r7}
+ pop {r0}
+ bx r0
+ thumb_func_end CreatePelipperBoardMenu
+
+ thumb_func_start sub_802EC10
+sub_802EC10:
+ push {r4-r7,lr}
+ movs r6, 0
+ ldr r4, _0802ECA8
+ ldr r2, [r4]
+ adds r1, r2, 0
+ adds r1, 0xBC
+ ldr r0, _0802ECAC
+ ldr r0, [r0]
+ str r0, [r1]
+ adds r1, 0x4
+ movs r0, 0x4
+ str r0, [r1]
+ ldrb r0, [r2, 0x8]
+ bl sub_8096574
+ bl sub_80968B0
+ lsls r0, 24
+ cmp r0, 0
+ bne _0802EC40
+ bl sub_80969AC
+ cmp r0, 0x7
+ ble _0802EC4A
+_0802EC40:
+ ldr r0, [r4]
+ adds r0, 0xC0
+ movs r1, 0x1
+ negs r1, r1
+ str r1, [r0]
+_0802EC4A:
+ adds r6, 0x1
+ ldr r4, _0802ECA8
+ ldr r5, [r4]
+ lsls r1, r6, 3
+ adds r2, r5, 0
+ adds r2, 0xBC
+ adds r3, r2, r1
+ ldr r0, _0802ECB0
+ ldr r0, [r0]
+ str r0, [r3]
+ adds r3, r5, 0
+ adds r3, 0xC0
+ adds r1, r3, r1
+ movs r0, 0x5
+ str r0, [r1]
+ adds r6, 0x1
+ lsls r1, r6, 3
+ adds r2, r1
+ movs r0, 0
+ str r0, [r2]
+ adds r1, r3, r1
+ movs r0, 0x1
+ str r0, [r1]
+ movs r2, 0
+ adds r7, r4, 0
+ cmp r2, r6
+ bge _0802EC9C
+ adds r4, r5, 0
+ movs r5, 0x1
+ negs r5, r5
+ adds r1, r3, 0
+_0802EC88:
+ ldr r3, [r1]
+ cmp r3, r5
+ beq _0802EC94
+ ldr r0, [r4, 0x68]
+ cmp r3, r0
+ beq _0802ECA2
+_0802EC94:
+ adds r1, 0x8
+ adds r2, 0x1
+ cmp r2, r6
+ blt _0802EC88
+_0802EC9C:
+ ldr r1, [r7]
+ movs r0, 0x5
+ str r0, [r1, 0x68]
+_0802ECA2:
+ pop {r4-r7}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_0802ECA8: .4byte gUnknown_203B308
+_0802ECAC: .4byte gUnknown_80D4990
+_0802ECB0: .4byte gUnknown_80D4970
+ thumb_func_end sub_802EC10
+
+ thumb_func_start sub_802ECB4
+sub_802ECB4:
+ push {r4,lr}
+ sub sp, 0x4
+ movs r0, 0
+ str r0, [sp]
+ ldr r4, _0802ECF0
+ ldr r0, [r4]
+ adds r0, 0x6C
+ bl sub_8012FD8
+ lsls r0, 24
+ cmp r0, 0
+ bne _0802ECE0
+ ldr r0, [r4]
+ adds r0, 0x6C
+ mov r1, sp
+ bl sub_8013114
+ ldr r1, [sp]
+ cmp r1, 0x1
+ beq _0802ECE0
+ ldr r0, [r4]
+ str r1, [r0, 0x64]
+_0802ECE0:
+ ldr r0, [sp]
+ cmp r0, 0x2
+ beq _0802ECFE
+ cmp r0, 0x2
+ bgt _0802ECF4
+ cmp r0, 0x1
+ beq _0802ED3C
+ b _0802ED42
+ .align 2, 0
+_0802ECF0: .4byte gUnknown_203B308
+_0802ECF4:
+ cmp r0, 0x3
+ beq _0802ED10
+ cmp r0, 0x5
+ beq _0802ED34
+ b _0802ED42
+_0802ECFE:
+ bl sub_802C4A4
+ lsls r0, 24
+ cmp r0, 0
+ bne _0802ED22
+ movs r0, 0x4
+ bl SetPelipperBoardState
+ b _0802ED42
+_0802ED10:
+ bl HasNoAcceptedJobs
+ lsls r0, 24
+ cmp r0, 0
+ bne _0802ED22
+ movs r0, 0x8
+ bl SetPelipperBoardState
+ b _0802ED42
+_0802ED22:
+ ldr r0, _0802ED30
+ ldr r0, [r0]
+ adds r0, 0x6C
+ movs r1, 0x1
+ bl sub_8012EA4
+ b _0802ED42
+ .align 2, 0
+_0802ED30: .4byte gUnknown_203B308
+_0802ED34:
+ movs r0, 0x2
+ bl SetPelipperBoardState
+ b _0802ED42
+_0802ED3C:
+ movs r0, 0x3
+ bl SetPelipperBoardState
+_0802ED42:
+ add sp, 0x4
+ pop {r4}
+ pop {r0}
+ bx r0
+ thumb_func_end sub_802ECB4
+
+ thumb_func_start sub_802ED4C
+sub_802ED4C:
+ push {lr}
+ movs r0, 0x1
+ bl sub_802C1E4
+ cmp r0, 0x4
+ bhi _0802EDB6
+ lsls r0, 2
+ ldr r1, _0802ED64
+ adds r0, r1
+ ldr r0, [r0]
+ mov pc, r0
+ .align 2, 0
+_0802ED64: .4byte _0802ED68
+ .align 2, 0
+_0802ED68:
+ .4byte _0802EDB6
+ .4byte _0802EDB6
+ .4byte _0802EDAC
+ .4byte _0802ED7C
+ .4byte _0802ED94
+_0802ED7C:
+ bl sub_802C26C
+ ldr r1, _0802ED90
+ ldr r1, [r1]
+ strb r0, [r1, 0x8]
+ movs r0, 0x6
+ bl SetPelipperBoardState
+ b _0802EDB6
+ .align 2, 0
+_0802ED90: .4byte gUnknown_203B308
+_0802ED94:
+ bl sub_802C26C
+ ldr r1, _0802EDA8
+ ldr r1, [r1]
+ strb r0, [r1, 0x8]
+ movs r0, 0x7
+ bl SetPelipperBoardState
+ b _0802EDB6
+ .align 2, 0
+_0802EDA8: .4byte gUnknown_203B308
+_0802EDAC:
+ bl sub_802C2D4
+ movs r0, 0x1
+ bl SetPelipperBoardState
+_0802EDB6:
+ pop {r0}
+ bx r0
+ thumb_func_end sub_802ED4C
+
+ thumb_func_start sub_802EDBC
+sub_802EDBC:
+ push {r4,lr}
+ sub sp, 0x4
+ movs r0, 0
+ str r0, [sp]
+ bl sub_802C1E4
+ ldr r4, _0802EDFC
+ ldr r0, [r4]
+ adds r0, 0x6C
+ bl sub_8012FD8
+ lsls r0, 24
+ cmp r0, 0
+ bne _0802EDEC
+ ldr r0, [r4]
+ adds r0, 0x6C
+ mov r1, sp
+ bl sub_8013114
+ ldr r1, [sp]
+ cmp r1, 0x1
+ beq _0802EDEC
+ ldr r0, [r4]
+ str r1, [r0, 0x68]
+_0802EDEC:
+ ldr r0, [sp]
+ cmp r0, 0x4
+ beq _0802EE06
+ cmp r0, 0x4
+ bgt _0802EE00
+ cmp r0, 0x1
+ beq _0802EE90
+ b _0802EE96
+ .align 2, 0
+_0802EDFC: .4byte gUnknown_203B308
+_0802EE00:
+ cmp r0, 0x5
+ beq _0802EE88
+ b _0802EE96
+_0802EE06:
+ ldr r0, _0802EE28
+ bl PlaySound
+ ldr r4, _0802EE2C
+ ldr r0, [r4]
+ ldrb r0, [r0, 0x8]
+ bl sub_8096574
+ ldrb r1, [r0]
+ cmp r1, 0x3
+ beq _0802EE3C
+ cmp r1, 0x3
+ bgt _0802EE30
+ cmp r1, 0x2
+ beq _0802EE36
+ b _0802EE5E
+ .align 2, 0
+_0802EE28: .4byte 0x00000133
+_0802EE2C: .4byte gUnknown_203B308
+_0802EE30:
+ cmp r1, 0x4
+ beq _0802EE42
+ b _0802EE5E
+_0802EE36:
+ ldr r0, [r4]
+ movs r1, 0x1
+ b _0802EE46
+_0802EE3C:
+ ldr r0, [r4]
+ movs r1, 0x2
+ b _0802EE46
+_0802EE42:
+ ldr r0, [r4]
+ movs r1, 0x3
+_0802EE46:
+ str r1, [r0, 0x4]
+ ldrb r0, [r0, 0x8]
+ bl sub_80965B8
+ bl sub_80965F4
+ bl sub_802C2D4
+ movs r0, 0x3
+ bl SetPelipperBoardState
+ b _0802EE96
+_0802EE5E:
+ bl sub_8096A78
+ bl sub_8096C80
+ bl sub_8096D24
+ bl sub_802C4A4
+ lsls r0, 24
+ cmp r0, 0
+ beq _0802EE80
+ bl sub_802C2D4
+ movs r0, 0x1
+ bl SetPelipperBoardState
+ b _0802EE96
+_0802EE80:
+ movs r0, 0x5
+ bl SetPelipperBoardState
+ b _0802EE96
+_0802EE88:
+ movs r0, 0x7
+ bl SetPelipperBoardState
+ b _0802EE96
+_0802EE90:
+ movs r0, 0x5
+ bl SetPelipperBoardState
+_0802EE96:
+ add sp, 0x4
+ pop {r4}
+ pop {r0}
+ bx r0
+ thumb_func_end sub_802EDBC
+
+ .align 2,0
diff --git a/asm/wonder_mail_2.s b/asm/wonder_mail_2.s
index f1ec9b6..9564a47 100644
--- a/asm/wonder_mail_2.s
+++ b/asm/wonder_mail_2.s
@@ -156,7 +156,7 @@ sub_802B9A8:
_0802B9AE:
lsls r0, r4, 24
lsrs r0, 24
- bl sub_8096E14
+ bl CheckPKMNNewsSlot
lsls r0, 24
cmp r0, 0
beq _0802B9C6
@@ -177,14 +177,14 @@ _0802B9C6:
_0802B9D4: .4byte gUnknown_203B2CC
thumb_func_end sub_802B9A8
- thumb_func_start sub_802B9D8
-sub_802B9D8:
+ thumb_func_start HasNoPKMNNews
+HasNoPKMNNews:
push {r4,lr}
movs r4, 0
_0802B9DC:
lsls r0, r4, 24
lsrs r0, 24
- bl sub_8096E14
+ bl CheckPKMNNewsSlot
lsls r0, 24
cmp r0, 0
beq _0802B9EE
@@ -199,7 +199,7 @@ _0802B9F6:
pop {r4}
pop {r1}
bx r1
- thumb_func_end sub_802B9D8
+ thumb_func_end HasNoPKMNNews
thumb_func_start sub_802B9FC
sub_802B9FC:
@@ -622,7 +622,7 @@ sub_802BD14:
adds r6, r0, 0
adds r4, r1, 0
mov r8, r2
- bl sub_802C0E8
+ bl HasNoMailinMailbox
lsls r0, 24
cmp r0, 0
beq _0802BD2E
@@ -1074,7 +1074,7 @@ sub_802C0B8:
_0802C0BE:
lsls r0, r4, 24
lsrs r0, 24
- bl sub_8096000
+ bl CheckMailSlot
lsls r0, 24
cmp r0, 0
bne _0802C0D6
@@ -1095,14 +1095,14 @@ _0802C0D6:
_0802C0E4: .4byte gUnknown_203B2D8
thumb_func_end sub_802C0B8
- thumb_func_start sub_802C0E8
-sub_802C0E8:
+ thumb_func_start HasNoMailinMailbox
+HasNoMailinMailbox:
push {r4,lr}
movs r4, 0
_0802C0EC:
lsls r0, r4, 24
lsrs r0, 24
- bl sub_8096000
+ bl CheckMailSlot
lsls r0, 24
cmp r0, 0
bne _0802C0FE
@@ -1117,7 +1117,7 @@ _0802C106:
pop {r4}
pop {r1}
bx r1
- thumb_func_end sub_802C0E8
+ thumb_func_end HasNoMailinMailbox
thumb_func_start sub_802C10C
sub_802C10C:
@@ -1605,7 +1605,7 @@ sub_802C4C8:
adds r6, r0, 0
adds r4, r1, 0
mov r8, r2
- bl sub_802C83C
+ bl HasNoAcceptedJobs
lsls r0, 24
cmp r0, 0
beq _0802C4E2
@@ -2013,7 +2013,7 @@ sub_802C80C:
_0802C812:
lsls r0, r4, 24
lsrs r0, 24
- bl sub_8096ACC
+ bl CheckJobSlot
lsls r0, 24
cmp r0, 0
bne _0802C82A
@@ -2034,14 +2034,14 @@ _0802C82A:
_0802C838: .4byte gUnknown_203B2E8
thumb_func_end sub_802C80C
- thumb_func_start sub_802C83C
-sub_802C83C:
+ thumb_func_start HasNoAcceptedJobs
+HasNoAcceptedJobs:
push {r4,lr}
movs r4, 0
_0802C840:
lsls r0, r4, 24
lsrs r0, 24
- bl sub_8096ACC
+ bl CheckJobSlot
lsls r0, 24
cmp r0, 0
bne _0802C852
@@ -2056,13 +2056,13 @@ _0802C85A:
pop {r4}
pop {r1}
bx r1
- thumb_func_end sub_802C83C
+ thumb_func_end HasNoAcceptedJobs
thumb_func_start sub_802C860
sub_802C860:
push {r4-r6,lr}
adds r6, r0, 0
- bl sub_802C83C
+ bl HasNoAcceptedJobs
lsls r0, 24
lsrs r5, r0, 24
cmp r5, 0
@@ -2717,7 +2717,7 @@ _0802CD88:
ldrb r0, [r0, 0xC]
bl sub_8096C3C
bl sub_8096C80
- bl sub_802C83C
+ bl HasNoAcceptedJobs
lsls r0, 24
cmp r0, 0
beq _0802CDAA
diff --git a/asm/wonder_mail_3.s b/asm/wonder_mail_3.s
index 4fc8c85..3d5781b 100644
--- a/asm/wonder_mail_3.s
+++ b/asm/wonder_mail_3.s
@@ -1667,3687 +1667,4 @@ sub_802DF88:
_0802DFAC: .4byte gUnknown_203B300
thumb_func_end sub_802DF88
- thumb_func_start sub_802DFB0
-sub_802DFB0:
- push {r4,lr}
- ldr r4, _0802DFD4
- movs r0, 0xB6
- lsls r0, 1
- movs r1, 0x8
- bl MemoryAlloc
- str r0, [r4]
- movs r1, 0
- str r1, [r0, 0x64]
- str r1, [r0, 0x68]
- movs r0, 0
- bl sub_802E088
- movs r0, 0x1
- pop {r4}
- pop {r1}
- bx r1
- .align 2, 0
-_0802DFD4: .4byte gUnknown_203B304
- thumb_func_end sub_802DFB0
-
- thumb_func_start sub_802DFD8
-sub_802DFD8:
- push {lr}
- ldr r0, _0802DFF0
- ldr r0, [r0]
- ldr r0, [r0]
- cmp r0, 0xB
- bhi _0802E060
- lsls r0, 2
- ldr r1, _0802DFF4
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .align 2, 0
-_0802DFF0: .4byte gUnknown_203B304
-_0802DFF4: .4byte _0802DFF8
- .align 2, 0
-_0802DFF8:
- .4byte _0802E028
- .4byte _0802E030
- .4byte _0802E036
- .4byte _0802E060
- .4byte _0802E03C
- .4byte _0802E03C
- .4byte _0802E042
- .4byte _0802E048
- .4byte _0802E04E
- .4byte _0802E054
- .4byte _0802E054
- .4byte _0802E05A
-_0802E028:
- movs r0, 0x1
- bl sub_802E088
- b _0802E064
-_0802E030:
- bl sub_802E4B0
- b _0802E064
-_0802E036:
- bl nullsub_133
- b _0802E064
-_0802E03C:
- bl sub_802E578
- b _0802E064
-_0802E042:
- bl sub_802E60C
- b _0802E064
-_0802E048:
- bl sub_802E73C
- b _0802E064
-_0802E04E:
- bl sub_802E758
- b _0802E064
-_0802E054:
- bl sub_802E774
- b _0802E064
-_0802E05A:
- bl sub_802E7D0
- b _0802E064
-_0802E060:
- movs r0, 0x3
- b _0802E066
-_0802E064:
- movs r0, 0
-_0802E066:
- pop {r1}
- bx r1
- thumb_func_end sub_802DFD8
-
- thumb_func_start sub_802E06C
-sub_802E06C:
- push {r4,lr}
- ldr r4, _0802E084
- ldr r0, [r4]
- cmp r0, 0
- beq _0802E07E
- bl MemoryFree
- movs r0, 0
- str r0, [r4]
-_0802E07E:
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_0802E084: .4byte gUnknown_203B304
- thumb_func_end sub_802E06C
-
- thumb_func_start sub_802E088
-sub_802E088:
- push {lr}
- ldr r1, _0802E09C
- ldr r1, [r1]
- str r0, [r1]
- bl sub_802E0A0
- bl sub_802E1AC
- pop {r0}
- bx r0
- .align 2, 0
-_0802E09C: .4byte gUnknown_203B304
- thumb_func_end sub_802E088
-
- thumb_func_start sub_802E0A0
-sub_802E0A0:
- push {r4-r7,lr}
- mov r7, r8
- push {r7}
- ldr r4, _0802E0C8
- ldr r0, [r4]
- movs r6, 0x86
- lsls r6, 1
- adds r0, r6
- bl sub_8006518
- ldr r0, [r4]
- ldr r5, [r0]
- cmp r5, 0x1
- beq _0802E0D0
- cmp r5, 0x6
- beq _0802E124
- movs r3, 0
- ldr r2, _0802E0CC
- b _0802E168
- .align 2, 0
-_0802E0C8: .4byte gUnknown_203B304
-_0802E0CC: .4byte gUnknown_80E0284
-_0802E0D0:
- mov r12, r6
- ldr r0, _0802E118
- mov r8, r0
- movs r2, 0
- movs r3, 0x3
-_0802E0DA:
- ldr r1, [r4]
- adds r1, r2
- add r1, r12
- mov r0, r8
- ldm r0!, {r5-r7}
- stm r1!, {r5-r7}
- ldm r0!, {r5-r7}
- stm r1!, {r5-r7}
- adds r2, 0x18
- subs r3, 0x1
- cmp r3, 0
- bge _0802E0DA
- bl CreateMailboxMenu
- ldr r3, _0802E11C
- ldr r2, [r3]
- movs r0, 0x9E
- lsls r0, 1
- adds r2, r0
- ldr r1, _0802E120
- ldm r1!, {r4-r6}
- stm r2!, {r4-r6}
- ldm r1!, {r4,r5,r7}
- stm r2!, {r4,r5,r7}
- ldr r1, [r3]
- adds r0, r1, r0
- adds r1, 0xBC
- bl sub_8012CAC
- b _0802E188
- .align 2, 0
-_0802E118: .4byte gUnknown_80E0284
-_0802E11C: .4byte gUnknown_203B304
-_0802E120: .4byte gUnknown_80E029C
-_0802E124:
- bl CreateMailActionMenu
- ldr r2, [r4]
- movs r0, 0x9E
- lsls r0, 1
- adds r2, r0
- ldr r1, _0802E160
- ldm r1!, {r3,r6,r7}
- stm r2!, {r3,r6,r7}
- ldm r1!, {r3,r6,r7}
- stm r2!, {r3,r6,r7}
- ldr r1, [r4]
- adds r0, r1, r0
- adds r1, 0xBC
- bl sub_8012CAC
- ldr r1, [r4]
- movs r4, 0xA4
- lsls r4, 1
- adds r0, r1, r4
- strh r5, [r0]
- movs r5, 0xAA
- lsls r5, 1
- adds r1, r5
- ldr r0, _0802E164
- ldm r0!, {r2,r6,r7}
- stm r1!, {r2,r6,r7}
- ldm r0!, {r3-r5}
- stm r1!, {r3-r5}
- b _0802E188
- .align 2, 0
-_0802E160: .4byte gUnknown_80E02B4
-_0802E164: .4byte gUnknown_80E02CC
-_0802E168:
- ldr r0, [r4]
- lsls r1, r3, 1
- adds r1, r3
- lsls r1, 3
- adds r0, r1
- movs r6, 0x86
- lsls r6, 1
- adds r0, r6
- adds r1, r2, 0
- ldm r1!, {r5-r7}
- stm r0!, {r5-r7}
- ldm r1!, {r5-r7}
- stm r0!, {r5-r7}
- adds r3, 0x1
- cmp r3, 0x3
- ble _0802E168
-_0802E188:
- bl ResetUnusedInputStruct
- ldr r0, _0802E1A8
- ldr r0, [r0]
- movs r7, 0x86
- lsls r7, 1
- adds r0, r7
- movs r1, 0x1
- movs r2, 0x1
- bl sub_800641C
- pop {r3}
- mov r8, r3
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_0802E1A8: .4byte gUnknown_203B304
- thumb_func_end sub_802E0A0
-
- thumb_func_start sub_802E1AC
-sub_802E1AC:
- push {r4,lr}
- sub sp, 0x8
- ldr r1, _0802E1C8
- ldr r0, [r1]
- ldr r0, [r0]
- adds r4, r1, 0
- cmp r0, 0xB
- bhi _0802E2AA
- lsls r0, 2
- ldr r1, _0802E1CC
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .align 2, 0
-_0802E1C8: .4byte gUnknown_203B304
-_0802E1CC: .4byte _0802E1D0
- .align 2, 0
-_0802E1D0:
- .4byte _0802E2AA
- .4byte _0802E200
- .4byte _0802E2AA
- .4byte _0802E2AA
- .4byte _0802E21E
- .4byte _0802E22A
- .4byte _0802E232
- .4byte _0802E260
- .4byte _0802E286
- .4byte _0802E28E
- .4byte _0802E29A
- .4byte _0802E2A2
-_0802E200:
- ldr r2, [r4]
- adds r0, r2, 0
- adds r0, 0x6C
- adds r1, r2, 0
- adds r1, 0xBC
- adds r3, r2, 0
- adds r3, 0xFC
- ldr r2, [r2, 0x64]
- str r2, [sp]
- movs r2, 0x2
- str r2, [sp, 0x4]
- movs r2, 0
- bl sub_8012D60
- b _0802E2AA
-_0802E21E:
- movs r0, 0
- movs r1, 0
- movs r2, 0x4
- bl sub_802BD14
- b _0802E2AA
-_0802E22A:
- movs r0, 0x1
- bl sub_802BE94
- b _0802E2AA
-_0802E232:
- bl CreateMailMenu
- movs r0, 0x3
- bl CreateMailAcceptedStatusBox
- ldr r0, _0802E25C
- ldr r2, [r0]
- adds r0, r2, 0
- adds r0, 0x6C
- adds r1, r2, 0
- adds r1, 0xBC
- ldr r2, [r2, 0x68]
- str r2, [sp]
- movs r2, 0x2
- str r2, [sp, 0x4]
- movs r2, 0
- movs r3, 0
- bl sub_8012D60
- b _0802E2AA
- .align 2, 0
-_0802E25C: .4byte gUnknown_203B304
-_0802E260:
- ldr r0, [r4]
- ldrb r0, [r0, 0x8]
- bl sub_8095FE8
- ldr r1, [r4]
- adds r1, 0xC
- bl sub_803B35C
- ldr r0, [r4]
- movs r1, 0x3
- str r1, [r0, 0xC]
- adds r0, 0x50
- movs r1, 0
- strb r1, [r0]
- ldr r0, [r4]
- adds r0, 0xC
- bl sub_802DE84
- b _0802E2AA
-_0802E286:
- movs r0, 0
- bl sub_802C860
- b _0802E2AA
-_0802E28E:
- movs r0, 0
- movs r1, 0
- movs r2, 0x8
- bl sub_802B640
- b _0802E2AA
-_0802E29A:
- movs r0, 0x1
- bl sub_802B7D0
- b _0802E2AA
-_0802E2A2:
- ldr r0, [r4]
- ldrb r0, [r0, 0x9]
- bl sub_802B9FC
-_0802E2AA:
- add sp, 0x8
- pop {r4}
- pop {r0}
- bx r0
- thumb_func_end sub_802E1AC
-
- thumb_func_start CreateMailboxMenu
-CreateMailboxMenu:
- push {r4-r7,lr}
- ldr r4, _0802E380
- ldr r0, [r4]
- adds r0, 0xFC
- movs r1, 0
- movs r2, 0x10
- bl MemoryFill16
- ldr r1, [r4]
- adds r2, r1, 0
- adds r2, 0xBC
- ldr r0, _0802E384
- str r0, [r2]
- adds r1, 0xC0
- movs r0, 0x2
- str r0, [r1]
- bl sub_802C0E8
- lsls r0, 24
- cmp r0, 0
- beq _0802E2E6
- ldr r0, [r4]
- adds r0, 0xFC
- movs r1, 0x1
- strh r1, [r0]
-_0802E2E6:
- movs r5, 0x1
- ldr r1, [r4]
- movs r6, 0x1
- adds r2, r1, 0
- adds r2, 0xC4
- ldr r0, _0802E388
- str r0, [r2]
- adds r1, 0xC8
- movs r0, 0x3
- str r0, [r1]
- bl sub_802C83C
- lsls r0, 24
- cmp r0, 0
- beq _0802E30A
- ldr r0, [r4]
- adds r0, 0xFE
- strh r5, [r0]
-_0802E30A:
- ldr r1, [r4]
- adds r2, r1, 0
- adds r2, 0xCC
- ldr r0, _0802E38C
- str r0, [r2]
- adds r1, 0xD0
- movs r0, 0x4
- str r0, [r1]
- bl sub_802B9D8
- lsls r0, 24
- cmp r0, 0
- beq _0802E32E
- ldr r0, [r4]
- movs r1, 0x80
- lsls r1, 1
- adds r0, r1
- strh r6, [r0]
-_0802E32E:
- movs r5, 0x3
- ldr r2, [r4]
- adds r0, r2, 0
- adds r0, 0xD4
- movs r1, 0
- str r1, [r0]
- adds r0, 0x4
- str r6, [r0]
- movs r3, 0
- adds r6, r4, 0
- mov r12, r2
- mov r4, r12
- adds r4, 0xFC
- adds r2, 0xC0
-_0802E34A:
- ldrh r0, [r4]
- cmp r0, 0
- bne _0802E35A
- ldr r1, [r2]
- mov r7, r12
- ldr r0, [r7, 0x64]
- cmp r1, r0
- beq _0802E3B2
-_0802E35A:
- adds r4, 0x2
- adds r2, 0x8
- adds r3, 0x1
- cmp r3, r5
- blt _0802E34A
- movs r3, 0
- cmp r3, r5
- bge _0802E3B2
- ldr r1, [r6]
- adds r0, r1, 0
- adds r0, 0xFC
- ldrh r0, [r0]
- cmp r0, 0
- bne _0802E390
- adds r0, r1, 0
- adds r0, 0xC0
- ldr r0, [r0]
- str r0, [r1, 0x64]
- b _0802E3B2
- .align 2, 0
-_0802E380: .4byte gUnknown_203B304
-_0802E384: .4byte gMailboxCheckMail
-_0802E388: .4byte gMailboxJobList
-_0802E38C: .4byte gMailboxPKMNNews
-_0802E390:
- adds r3, 0x1
- cmp r3, r5
- bge _0802E3B2
- ldr r2, [r6]
- lsls r0, r3, 1
- adds r1, r2, 0
- adds r1, 0xFC
- adds r1, r0
- ldrh r0, [r1]
- cmp r0, 0
- bne _0802E390
- lsls r0, r3, 3
- adds r1, r2, 0
- adds r1, 0xC0
- adds r1, r0
- ldr r0, [r1]
- str r0, [r2, 0x64]
-_0802E3B2:
- pop {r4-r7}
- pop {r0}
- bx r0
- thumb_func_end CreateMailboxMenu
-
- thumb_func_start CreateMailActionMenu
-CreateMailActionMenu:
- push {r4-r7,lr}
- movs r5, 0
- ldr r4, _0802E3F0
- ldr r0, [r4]
- ldrb r0, [r0, 0x8]
- bl sub_8095FE8
- adds r7, r0, 0
- ldrb r0, [r7]
- cmp r0, 0x1
- bne _0802E3FC
- ldr r2, [r4]
- adds r1, r2, 0
- adds r1, 0xBC
- ldr r0, _0802E3F4
- str r0, [r1]
- adds r1, 0x4
- movs r0, 0x6
- str r0, [r1]
- adds r1, 0x4
- ldr r0, _0802E3F8
- str r0, [r1]
- adds r1, 0x4
- movs r0, 0x7
- str r0, [r1]
- movs r5, 0x2
- b _0802E44A
- .align 2, 0
-_0802E3F0: .4byte gUnknown_203B304
-_0802E3F4: .4byte gMailActionStore
-_0802E3F8: .4byte gMailActionRead
-_0802E3FC:
- ldr r1, [r4]
- adds r2, r1, 0
- adds r2, 0xBC
- ldr r0, _0802E494
- ldr r0, [r0]
- str r0, [r2]
- adds r1, 0xC0
- movs r0, 0x5
- str r0, [r1]
- adds r0, r7, 0
- bl sub_80968B0
- lsls r0, 24
- cmp r0, 0
- bne _0802E422
- bl sub_80969AC
- cmp r0, 0x7
- ble _0802E42C
-_0802E422:
- ldr r0, [r4]
- adds r0, 0xC0
- movs r1, 0x1
- negs r1, r1
- str r1, [r0]
-_0802E42C:
- adds r5, 0x1
- ldr r4, _0802E498
- ldr r2, [r4]
- lsls r3, r5, 3
- adds r0, r2, 0
- adds r0, 0xBC
- adds r0, r3
- ldr r1, _0802E49C
- ldr r1, [r1]
- str r1, [r0]
- adds r2, 0xC0
- adds r2, r3
- movs r0, 0x8
- str r0, [r2]
- adds r5, 0x1
-_0802E44A:
- mov r12, r4
- mov r0, r12
- ldr r4, [r0]
- lsls r2, r5, 3
- adds r0, r4, 0
- adds r0, 0xBC
- adds r0, r2
- movs r1, 0
- str r1, [r0]
- adds r1, r4, 0
- adds r1, 0xC0
- adds r2, r1, r2
- movs r0, 0x1
- str r0, [r2]
- movs r3, 0
- cmp r3, r5
- bge _0802E486
- movs r6, 0x1
- negs r6, r6
- adds r2, r1, 0
-_0802E472:
- ldr r1, [r2]
- cmp r1, r6
- beq _0802E47E
- ldr r0, [r4, 0x68]
- cmp r1, r0
- beq _0802E4A8
-_0802E47E:
- adds r2, 0x8
- adds r3, 0x1
- cmp r3, r5
- blt _0802E472
-_0802E486:
- ldrb r0, [r7]
- cmp r0, 0x1
- bne _0802E4A0
- mov r0, r12
- ldr r1, [r0]
- movs r0, 0x7
- b _0802E4A6
- .align 2, 0
-_0802E494: .4byte gUnknown_80D4990
-_0802E498: .4byte gUnknown_203B304
-_0802E49C: .4byte gUnknown_80D4970
-_0802E4A0:
- mov r0, r12
- ldr r1, [r0]
- movs r0, 0x8
-_0802E4A6:
- str r0, [r1, 0x68]
-_0802E4A8:
- pop {r4-r7}
- pop {r0}
- bx r0
- thumb_func_end CreateMailActionMenu
-
- thumb_func_start sub_802E4B0
-sub_802E4B0:
- push {r4,lr}
- sub sp, 0x4
- movs r0, 0
- str r0, [sp]
- ldr r4, _0802E4F0
- ldr r0, [r4]
- adds r0, 0x6C
- bl sub_8012FD8
- lsls r0, 24
- cmp r0, 0
- bne _0802E4DC
- ldr r0, [r4]
- adds r0, 0x6C
- mov r1, sp
- bl sub_8013114
- ldr r1, [sp]
- cmp r1, 0x1
- beq _0802E4DC
- ldr r0, [r4]
- str r1, [r0, 0x64]
-_0802E4DC:
- ldr r0, [sp]
- subs r0, 0x1
- cmp r0, 0x7
- bhi _0802E56E
- lsls r0, 2
- ldr r1, _0802E4F4
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .align 2, 0
-_0802E4F0: .4byte gUnknown_203B304
-_0802E4F4: .4byte _0802E4F8
- .align 2, 0
-_0802E4F8:
- .4byte _0802E568
- .4byte _0802E518
- .4byte _0802E52A
- .4byte _0802E53C
- .4byte _0802E56E
- .4byte _0802E56E
- .4byte _0802E56E
- .4byte _0802E560
-_0802E518:
- bl sub_802C0E8
- lsls r0, 24
- cmp r0, 0
- bne _0802E54E
- movs r0, 0x4
- bl sub_802E088
- b _0802E56E
-_0802E52A:
- bl sub_802C83C
- lsls r0, 24
- cmp r0, 0
- bne _0802E54E
- movs r0, 0x8
- bl sub_802E088
- b _0802E56E
-_0802E53C:
- bl sub_802B9D8
- lsls r0, 24
- cmp r0, 0
- bne _0802E54E
- movs r0, 0x9
- bl sub_802E088
- b _0802E56E
-_0802E54E:
- ldr r0, _0802E55C
- ldr r0, [r0]
- adds r0, 0x6C
- movs r1, 0x1
- bl sub_8012EA4
- b _0802E56E
- .align 2, 0
-_0802E55C: .4byte gUnknown_203B304
-_0802E560:
- movs r0, 0x2
- bl sub_802E088
- b _0802E56E
-_0802E568:
- movs r0, 0x3
- bl sub_802E088
-_0802E56E:
- add sp, 0x4
- pop {r4}
- pop {r0}
- bx r0
- thumb_func_end sub_802E4B0
-
- thumb_func_start sub_802E578
-sub_802E578:
- push {r4,lr}
- movs r0, 0x1
- bl sub_802BDEC
- cmp r0, 0x4
- bhi _0802E606
- lsls r0, 2
- ldr r1, _0802E590
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .align 2, 0
-_0802E590: .4byte _0802E594
- .align 2, 0
-_0802E594:
- .4byte _0802E606
- .4byte _0802E606
- .4byte _0802E5FC
- .4byte _0802E5A8
- .4byte _0802E5C0
-_0802E5A8:
- bl sub_802BE74
- ldr r1, _0802E5BC
- ldr r1, [r1]
- strb r0, [r1, 0x8]
- movs r0, 0x6
- bl sub_802E088
- b _0802E606
- .align 2, 0
-_0802E5BC: .4byte gUnknown_203B304
-_0802E5C0:
- bl sub_802BE74
- ldr r4, _0802E5F0
- ldr r1, [r4]
- strb r0, [r1, 0x8]
- ldr r0, [r4]
- ldrb r0, [r0, 0x8]
- bl sub_8095FE8
- adds r2, r0, 0
- ldrb r0, [r2]
- cmp r0, 0x1
- bne _0802E5F4
- ldr r1, [r4]
- ldrb r0, [r2, 0x5]
- strb r0, [r1, 0x9]
- ldr r1, [r4]
- movs r0, 0x5
- str r0, [r1, 0x4]
- movs r0, 0xB
- bl sub_802E088
- b _0802E606
- .align 2, 0
-_0802E5F0: .4byte gUnknown_203B304
-_0802E5F4:
- movs r0, 0x7
- bl sub_802E088
- b _0802E606
-_0802E5FC:
- bl sub_802BEDC
- movs r0, 0x1
- bl sub_802E088
-_0802E606:
- pop {r4}
- pop {r0}
- bx r0
- thumb_func_end sub_802E578
-
- thumb_func_start sub_802E60C
-sub_802E60C:
- push {r4,lr}
- sub sp, 0x4
- movs r0, 0
- str r0, [sp]
- bl sub_802BDEC
- ldr r4, _0802E650
- ldr r0, [r4]
- adds r0, 0x6C
- bl sub_8012FD8
- lsls r0, 24
- cmp r0, 0
- bne _0802E63C
- ldr r0, [r4]
- adds r0, 0x6C
- mov r1, sp
- bl sub_8013114
- ldr r1, [sp]
- cmp r1, 0x1
- beq _0802E63C
- ldr r0, [r4]
- str r1, [r0, 0x68]
-_0802E63C:
- ldr r0, [sp]
- subs r0, 0x1
- cmp r0, 0x7
- bhi _0802E732
- lsls r0, 2
- ldr r1, _0802E654
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .align 2, 0
-_0802E650: .4byte gUnknown_203B304
-_0802E654: .4byte _0802E658
- .align 2, 0
-_0802E658:
- .4byte _0802E72C
- .4byte _0802E732
- .4byte _0802E732
- .4byte _0802E732
- .4byte _0802E678
- .4byte _0802E6BC
- .4byte _0802E704
- .4byte _0802E6B4
-_0802E678:
- ldr r0, _0802E6AC
- bl PlaySound
- ldr r4, _0802E6B0
- ldr r0, [r4]
- ldrb r0, [r0, 0x8]
- bl sub_8095FE8
- bl sub_8096A78
- bl sub_8096C80
- bl sub_8096D24
- ldr r0, [r4]
- ldrb r0, [r0, 0x8]
- bl sub_8096040
- bl sub_8096078
- bl sub_802C0E8
- lsls r0, 24
- cmp r0, 0
- bne _0802E6E8
- b _0802E6FC
- .align 2, 0
-_0802E6AC: .4byte 0x00000133
-_0802E6B0: .4byte gUnknown_203B304
-_0802E6B4:
- movs r0, 0x7
- bl sub_802E088
- b _0802E732
-_0802E6BC:
- ldr r0, _0802E6F4
- bl PlaySound
- ldr r4, _0802E6F8
- ldr r0, [r4]
- ldrb r0, [r0, 0x8]
- bl sub_8095FE8
- ldrb r0, [r0, 0x5]
- bl sub_8096DF8
- ldr r0, [r4]
- ldrb r0, [r0, 0x8]
- bl sub_8096040
- bl sub_8096078
- bl sub_802C0E8
- lsls r0, 24
- cmp r0, 0
- beq _0802E6FC
-_0802E6E8:
- bl sub_802BEDC
- movs r0, 0x1
- bl sub_802E088
- b _0802E732
- .align 2, 0
-_0802E6F4: .4byte 0x00000133
-_0802E6F8: .4byte gUnknown_203B304
-_0802E6FC:
- movs r0, 0x5
- bl sub_802E088
- b _0802E732
-_0802E704:
- movs r0, 0
- bl PlayMenuSoundEffect
- ldr r4, _0802E728
- ldr r0, [r4]
- ldrb r0, [r0, 0x8]
- bl sub_8095FE8
- ldr r1, [r4]
- ldrb r0, [r0, 0x5]
- strb r0, [r1, 0x9]
- ldr r1, [r4]
- movs r0, 0x5
- str r0, [r1, 0x4]
- movs r0, 0xB
- bl sub_802E088
- b _0802E732
- .align 2, 0
-_0802E728: .4byte gUnknown_203B304
-_0802E72C:
- movs r0, 0x5
- bl sub_802E088
-_0802E732:
- add sp, 0x4
- pop {r4}
- pop {r0}
- bx r0
- thumb_func_end sub_802E60C
-
- thumb_func_start sub_802E73C
-sub_802E73C:
- push {lr}
- bl sub_802DEE0
- cmp r0, 0x1
- bls _0802E754
- cmp r0, 0x3
- bhi _0802E754
- bl sub_802DF24
- movs r0, 0x5
- bl sub_802E088
-_0802E754:
- pop {r0}
- bx r0
- thumb_func_end sub_802E73C
-
- thumb_func_start sub_802E758
-sub_802E758:
- push {lr}
- bl sub_802C898
- cmp r0, 0x1
- bls _0802E770
- cmp r0, 0x3
- bhi _0802E770
- bl sub_802C8F4
- movs r0, 0x1
- bl sub_802E088
-_0802E770:
- pop {r0}
- bx r0
- thumb_func_end sub_802E758
-
- thumb_func_start sub_802E774
-sub_802E774:
- push {lr}
- movs r0, 0x1
- bl sub_802B720
- cmp r0, 0x4
- bhi _0802E7CA
- lsls r0, 2
- ldr r1, _0802E78C
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .align 2, 0
-_0802E78C: .4byte _0802E790
- .align 2, 0
-_0802E790:
- .4byte _0802E7CA
- .4byte _0802E7CA
- .4byte _0802E7C0
- .4byte _0802E7A4
- .4byte _0802E7A4
-_0802E7A4:
- bl sub_802B7A8
- ldr r2, _0802E7BC
- ldr r1, [r2]
- strb r0, [r1, 0x9]
- ldr r1, [r2]
- movs r0, 0xA
- str r0, [r1, 0x4]
- movs r0, 0xB
- bl sub_802E088
- b _0802E7CA
- .align 2, 0
-_0802E7BC: .4byte gUnknown_203B304
-_0802E7C0:
- bl sub_802B81C
- movs r0, 0x1
- bl sub_802E088
-_0802E7CA:
- pop {r0}
- bx r0
- thumb_func_end sub_802E774
-
- thumb_func_start sub_802E7D0
-sub_802E7D0:
- push {lr}
- bl sub_802BA8C
- cmp r0, 0x1
- bls _0802E7EC
- cmp r0, 0x3
- bhi _0802E7EC
- bl sub_802BACC
- ldr r0, _0802E7F0
- ldr r0, [r0]
- ldr r0, [r0, 0x4]
- bl sub_802E088
-_0802E7EC:
- pop {r0}
- bx r0
- .align 2, 0
-_0802E7F0: .4byte gUnknown_203B304
- thumb_func_end sub_802E7D0
-
- thumb_func_start nullsub_133
-nullsub_133:
- bx lr
- thumb_func_end nullsub_133
-
- thumb_func_start CreateMailAcceptedStatusBox
-CreateMailAcceptedStatusBox:
- push {r4-r6,lr}
- sub sp, 0x8
- adds r4, r0, 0
- bl sub_8008C54
- adds r0, r4, 0
- bl sub_80073B8
- ldr r2, _0802E85C
- movs r6, 0
- str r6, [sp]
- movs r0, 0x3
- movs r1, 0
- adds r3, r4, 0
- bl xxx_call_draw_string
- bl sub_80969AC
- adds r2, r0, 0
- movs r5, 0x7
- str r5, [sp]
- str r4, [sp, 0x4]
- movs r0, 0x12
- movs r1, 0xD
- movs r3, 0x2
- bl sub_8012BC4
- ldr r2, _0802E860
- str r6, [sp]
- movs r0, 0x16
- movs r1, 0xD
- adds r3, r4, 0
- bl xxx_call_draw_string
- str r5, [sp]
- str r4, [sp, 0x4]
- movs r0, 0x23
- movs r1, 0xD
- movs r2, 0x8
- movs r3, 0x2
- bl sub_8012BC4
- adds r0, r4, 0
- bl sub_80073E0
- add sp, 0x8
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_0802E85C: .4byte gMailAccepted
-_0802E860: .4byte gUnknown_80E0324
- thumb_func_end CreateMailAcceptedStatusBox
-
- thumb_func_start sub_802E864
-sub_802E864:
- push {r4,lr}
- ldr r4, _0802E88C
- movs r0, 0xB6
- lsls r0, 1
- movs r1, 0x8
- bl MemoryAlloc
- str r0, [r4]
- movs r1, 0
- str r1, [r0, 0x64]
- str r1, [r0, 0x68]
- str r1, [r0, 0x4]
- movs r0, 0
- bl sub_802E934
- movs r0, 0x1
- pop {r4}
- pop {r1}
- bx r1
- .align 2, 0
-_0802E88C: .4byte gUnknown_203B308
- thumb_func_end sub_802E864
-
- thumb_func_start sub_802E890
-sub_802E890:
- push {lr}
- ldr r0, _0802E8A8
- ldr r0, [r0]
- ldr r0, [r0]
- cmp r0, 0x8
- bhi _0802E900
- lsls r0, 2
- ldr r1, _0802E8AC
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .align 2, 0
-_0802E8A8: .4byte gUnknown_203B308
-_0802E8AC: .4byte _0802E8B0
- .align 2, 0
-_0802E8B0:
- .4byte _0802E8D4
- .4byte _0802E8DC
- .4byte _0802E8E2
- .4byte _0802E900
- .4byte _0802E8E8
- .4byte _0802E8E8
- .4byte _0802E8EE
- .4byte _0802E8F4
- .4byte _0802E8FA
-_0802E8D4:
- movs r0, 0x1
- bl sub_802E934
- b _0802E904
-_0802E8DC:
- bl sub_802ECB4
- b _0802E904
-_0802E8E2:
- bl nullsub_134
- b _0802E904
-_0802E8E8:
- bl sub_802ED4C
- b _0802E904
-_0802E8EE:
- bl sub_802EDBC
- b _0802E904
-_0802E8F4:
- bl sub_802EEA0
- b _0802E904
-_0802E8FA:
- bl sub_802EEBC
- b _0802E904
-_0802E900:
- movs r0, 0x3
- b _0802E906
-_0802E904:
- movs r0, 0
-_0802E906:
- pop {r1}
- bx r1
- thumb_func_end sub_802E890
-
- thumb_func_start sub_802E90C
-sub_802E90C:
- ldr r0, _0802E914
- ldr r0, [r0]
- ldr r0, [r0, 0x4]
- bx lr
- .align 2, 0
-_0802E914: .4byte gUnknown_203B308
- thumb_func_end sub_802E90C
-
- thumb_func_start sub_802E918
-sub_802E918:
- push {r4,lr}
- ldr r4, _0802E930
- ldr r0, [r4]
- cmp r0, 0
- beq _0802E92A
- bl MemoryFree
- movs r0, 0
- str r0, [r4]
-_0802E92A:
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_0802E930: .4byte gUnknown_203B308
- thumb_func_end sub_802E918
-
- thumb_func_start sub_802E934
-sub_802E934:
- push {lr}
- ldr r1, _0802E948
- ldr r1, [r1]
- str r0, [r1]
- bl sub_802E94C
- bl sub_802EA58
- pop {r0}
- bx r0
- .align 2, 0
-_0802E948: .4byte gUnknown_203B308
- thumb_func_end sub_802E934
-
- thumb_func_start sub_802E94C
-sub_802E94C:
- push {r4-r7,lr}
- mov r7, r8
- push {r7}
- ldr r4, _0802E974
- ldr r0, [r4]
- movs r6, 0x86
- lsls r6, 1
- adds r0, r6
- bl sub_8006518
- ldr r0, [r4]
- ldr r5, [r0]
- cmp r5, 0x1
- beq _0802E97C
- cmp r5, 0x6
- beq _0802E9D0
- movs r3, 0
- ldr r2, _0802E978
- b _0802EA14
- .align 2, 0
-_0802E974: .4byte gUnknown_203B308
-_0802E978: .4byte gUnknown_80E0330
-_0802E97C:
- mov r12, r6
- ldr r0, _0802E9C4
- mov r8, r0
- movs r2, 0
- movs r3, 0x3
-_0802E986:
- ldr r1, [r4]
- adds r1, r2
- add r1, r12
- mov r0, r8
- ldm r0!, {r5-r7}
- stm r1!, {r5-r7}
- ldm r0!, {r5-r7}
- stm r1!, {r5-r7}
- adds r2, 0x18
- subs r3, 0x1
- cmp r3, 0
- bge _0802E986
- bl CreatePelliperBoardMenu
- ldr r3, _0802E9C8
- ldr r2, [r3]
- movs r0, 0x9E
- lsls r0, 1
- adds r2, r0
- ldr r1, _0802E9CC
- ldm r1!, {r4-r6}
- stm r2!, {r4-r6}
- ldm r1!, {r4,r5,r7}
- stm r2!, {r4,r5,r7}
- ldr r1, [r3]
- adds r0, r1, r0
- adds r1, 0xBC
- bl sub_8012CAC
- b _0802EA34
- .align 2, 0
-_0802E9C4: .4byte gUnknown_80E0330
-_0802E9C8: .4byte gUnknown_203B308
-_0802E9CC: .4byte gUnknown_80E0348
-_0802E9D0:
- bl sub_802EC10
- ldr r2, [r4]
- movs r0, 0x9E
- lsls r0, 1
- adds r2, r0
- ldr r1, _0802EA0C
- ldm r1!, {r3,r6,r7}
- stm r2!, {r3,r6,r7}
- ldm r1!, {r3,r6,r7}
- stm r2!, {r3,r6,r7}
- ldr r1, [r4]
- adds r0, r1, r0
- adds r1, 0xBC
- bl sub_8012CAC
- ldr r1, [r4]
- movs r4, 0xA4
- lsls r4, 1
- adds r0, r1, r4
- strh r5, [r0]
- movs r5, 0xAA
- lsls r5, 1
- adds r1, r5
- ldr r0, _0802EA10
- ldm r0!, {r2,r6,r7}
- stm r1!, {r2,r6,r7}
- ldm r0!, {r3-r5}
- stm r1!, {r3-r5}
- b _0802EA34
- .align 2, 0
-_0802EA0C: .4byte gUnknown_80E0360
-_0802EA10: .4byte gUnknown_80E0378
-_0802EA14:
- ldr r0, [r4]
- lsls r1, r3, 1
- adds r1, r3
- lsls r1, 3
- adds r0, r1
- movs r6, 0x86
- lsls r6, 1
- adds r0, r6
- adds r1, r2, 0
- ldm r1!, {r5-r7}
- stm r0!, {r5-r7}
- ldm r1!, {r5-r7}
- stm r0!, {r5-r7}
- adds r3, 0x1
- cmp r3, 0x3
- ble _0802EA14
-_0802EA34:
- bl ResetUnusedInputStruct
- ldr r0, _0802EA54
- ldr r0, [r0]
- movs r7, 0x86
- lsls r7, 1
- adds r0, r7
- movs r1, 0x1
- movs r2, 0x1
- bl sub_800641C
- pop {r3}
- mov r8, r3
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_0802EA54: .4byte gUnknown_203B308
- thumb_func_end sub_802E94C
-
- thumb_func_start sub_802EA58
-sub_802EA58:
- push {r4,lr}
- sub sp, 0x8
- ldr r1, _0802EA74
- ldr r0, [r1]
- ldr r0, [r0]
- adds r4, r1, 0
- cmp r0, 0x8
- bhi _0802EB2C
- lsls r0, 2
- ldr r1, _0802EA78
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .align 2, 0
-_0802EA74: .4byte gUnknown_203B308
-_0802EA78: .4byte _0802EA7C
- .align 2, 0
-_0802EA7C:
- .4byte _0802EB2C
- .4byte _0802EAA0
- .4byte _0802EB2C
- .4byte _0802EB2C
- .4byte _0802EABE
- .4byte _0802EACA
- .4byte _0802EAD2
- .4byte _0802EB00
- .4byte _0802EB26
-_0802EAA0:
- ldr r2, [r4]
- adds r0, r2, 0
- adds r0, 0x6C
- adds r1, r2, 0
- adds r1, 0xBC
- adds r3, r2, 0
- adds r3, 0xFC
- ldr r2, [r2, 0x64]
- str r2, [sp]
- movs r2, 0x2
- str r2, [sp, 0x4]
- movs r2, 0
- bl sub_8012D60
- b _0802EB2C
-_0802EABE:
- movs r0, 0
- movs r1, 0
- movs r2, 0x4
- bl sub_802C10C
- b _0802EB2C
-_0802EACA:
- movs r0, 0x1
- bl sub_802C28C
- b _0802EB2C
-_0802EAD2:
- bl sub_802C39C
- movs r0, 0x3
- bl CreatePelliperAcceptedStatusBox
- ldr r0, _0802EAFC
- ldr r2, [r0]
- adds r0, r2, 0
- adds r0, 0x6C
- adds r1, r2, 0
- adds r1, 0xBC
- ldr r2, [r2, 0x68]
- str r2, [sp]
- movs r2, 0x2
- str r2, [sp, 0x4]
- movs r2, 0
- movs r3, 0
- bl sub_8012D60
- b _0802EB2C
- .align 2, 0
-_0802EAFC: .4byte gUnknown_203B308
-_0802EB00:
- ldr r0, [r4]
- ldrb r0, [r0, 0x8]
- bl sub_8096574
- ldr r1, [r4]
- adds r1, 0xC
- bl sub_803B35C
- ldr r0, [r4]
- movs r1, 0x3
- str r1, [r0, 0xC]
- adds r0, 0x50
- movs r1, 0
- strb r1, [r0]
- ldr r0, [r4]
- adds r0, 0xC
- bl sub_802DE84
- b _0802EB2C
-_0802EB26:
- movs r0, 0
- bl sub_802C860
-_0802EB2C:
- add sp, 0x8
- pop {r4}
- pop {r0}
- bx r0
- thumb_func_end sub_802EA58
-
- thumb_func_start CreatePelliperBoardMenu
-CreatePelliperBoardMenu:
- push {r4-r7,lr}
- ldr r4, _0802EBDC
- ldr r0, [r4]
- adds r0, 0xFC
- movs r1, 0
- movs r2, 0x10
- bl MemoryFill16
- ldr r1, [r4]
- adds r2, r1, 0
- adds r2, 0xBC
- ldr r0, _0802EBE0
- str r0, [r2]
- adds r1, 0xC0
- movs r0, 0x2
- str r0, [r1]
- bl sub_802C4A4
- lsls r0, 24
- cmp r0, 0
- beq _0802EB66
- ldr r0, [r4]
- adds r0, 0xFC
- movs r1, 0x1
- strh r1, [r0]
-_0802EB66:
- movs r5, 0x1
- ldr r1, [r4]
- adds r2, r1, 0
- adds r2, 0xC4
- ldr r0, _0802EBE4
- str r0, [r2]
- adds r1, 0xC8
- movs r0, 0x3
- str r0, [r1]
- bl sub_802C83C
- lsls r0, 24
- cmp r0, 0
- beq _0802EB88
- ldr r0, [r4]
- adds r0, 0xFE
- strh r5, [r0]
-_0802EB88:
- movs r5, 0x2
- ldr r2, [r4]
- adds r1, r2, 0
- adds r1, 0xCC
- movs r0, 0
- str r0, [r1]
- adds r1, 0x4
- movs r0, 0x1
- str r0, [r1]
- movs r3, 0
- adds r6, r4, 0
- mov r12, r2
- mov r4, r12
- adds r4, 0xFC
- adds r2, 0xC0
-_0802EBA6:
- ldrh r0, [r4]
- cmp r0, 0
- bne _0802EBB6
- ldr r1, [r2]
- mov r7, r12
- ldr r0, [r7, 0x64]
- cmp r1, r0
- beq _0802EC0A
-_0802EBB6:
- adds r4, 0x2
- adds r2, 0x8
- adds r3, 0x1
- cmp r3, r5
- blt _0802EBA6
- movs r3, 0
- cmp r3, r5
- bge _0802EC0A
- ldr r1, [r6]
- adds r0, r1, 0
- adds r0, 0xFC
- ldrh r0, [r0]
- cmp r0, 0
- bne _0802EBE8
- adds r0, r1, 0
- adds r0, 0xC0
- ldr r0, [r0]
- str r0, [r1, 0x64]
- b _0802EC0A
- .align 2, 0
-_0802EBDC: .4byte gUnknown_203B308
-_0802EBE0: .4byte gPelliperBoard_BulletinBoard
-_0802EBE4: .4byte gPelliperBoard_JobList
-_0802EBE8:
- adds r3, 0x1
- cmp r3, r5
- bge _0802EC0A
- ldr r2, [r6]
- lsls r0, r3, 1
- adds r1, r2, 0
- adds r1, 0xFC
- adds r1, r0
- ldrh r0, [r1]
- cmp r0, 0
- bne _0802EBE8
- lsls r0, r3, 3
- adds r1, r2, 0
- adds r1, 0xC0
- adds r1, r0
- ldr r0, [r1]
- str r0, [r2, 0x64]
-_0802EC0A:
- pop {r4-r7}
- pop {r0}
- bx r0
- thumb_func_end CreatePelliperBoardMenu
-
- thumb_func_start sub_802EC10
-sub_802EC10:
- push {r4-r7,lr}
- movs r6, 0
- ldr r4, _0802ECA8
- ldr r2, [r4]
- adds r1, r2, 0
- adds r1, 0xBC
- ldr r0, _0802ECAC
- ldr r0, [r0]
- str r0, [r1]
- adds r1, 0x4
- movs r0, 0x4
- str r0, [r1]
- ldrb r0, [r2, 0x8]
- bl sub_8096574
- bl sub_80968B0
- lsls r0, 24
- cmp r0, 0
- bne _0802EC40
- bl sub_80969AC
- cmp r0, 0x7
- ble _0802EC4A
-_0802EC40:
- ldr r0, [r4]
- adds r0, 0xC0
- movs r1, 0x1
- negs r1, r1
- str r1, [r0]
-_0802EC4A:
- adds r6, 0x1
- ldr r4, _0802ECA8
- ldr r5, [r4]
- lsls r1, r6, 3
- adds r2, r5, 0
- adds r2, 0xBC
- adds r3, r2, r1
- ldr r0, _0802ECB0
- ldr r0, [r0]
- str r0, [r3]
- adds r3, r5, 0
- adds r3, 0xC0
- adds r1, r3, r1
- movs r0, 0x5
- str r0, [r1]
- adds r6, 0x1
- lsls r1, r6, 3
- adds r2, r1
- movs r0, 0
- str r0, [r2]
- adds r1, r3, r1
- movs r0, 0x1
- str r0, [r1]
- movs r2, 0
- adds r7, r4, 0
- cmp r2, r6
- bge _0802EC9C
- adds r4, r5, 0
- movs r5, 0x1
- negs r5, r5
- adds r1, r3, 0
-_0802EC88:
- ldr r3, [r1]
- cmp r3, r5
- beq _0802EC94
- ldr r0, [r4, 0x68]
- cmp r3, r0
- beq _0802ECA2
-_0802EC94:
- adds r1, 0x8
- adds r2, 0x1
- cmp r2, r6
- blt _0802EC88
-_0802EC9C:
- ldr r1, [r7]
- movs r0, 0x5
- str r0, [r1, 0x68]
-_0802ECA2:
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_0802ECA8: .4byte gUnknown_203B308
-_0802ECAC: .4byte gUnknown_80D4990
-_0802ECB0: .4byte gUnknown_80D4970
- thumb_func_end sub_802EC10
-
- thumb_func_start sub_802ECB4
-sub_802ECB4:
- push {r4,lr}
- sub sp, 0x4
- movs r0, 0
- str r0, [sp]
- ldr r4, _0802ECF0
- ldr r0, [r4]
- adds r0, 0x6C
- bl sub_8012FD8
- lsls r0, 24
- cmp r0, 0
- bne _0802ECE0
- ldr r0, [r4]
- adds r0, 0x6C
- mov r1, sp
- bl sub_8013114
- ldr r1, [sp]
- cmp r1, 0x1
- beq _0802ECE0
- ldr r0, [r4]
- str r1, [r0, 0x64]
-_0802ECE0:
- ldr r0, [sp]
- cmp r0, 0x2
- beq _0802ECFE
- cmp r0, 0x2
- bgt _0802ECF4
- cmp r0, 0x1
- beq _0802ED3C
- b _0802ED42
- .align 2, 0
-_0802ECF0: .4byte gUnknown_203B308
-_0802ECF4:
- cmp r0, 0x3
- beq _0802ED10
- cmp r0, 0x5
- beq _0802ED34
- b _0802ED42
-_0802ECFE:
- bl sub_802C4A4
- lsls r0, 24
- cmp r0, 0
- bne _0802ED22
- movs r0, 0x4
- bl sub_802E934
- b _0802ED42
-_0802ED10:
- bl sub_802C83C
- lsls r0, 24
- cmp r0, 0
- bne _0802ED22
- movs r0, 0x8
- bl sub_802E934
- b _0802ED42
-_0802ED22:
- ldr r0, _0802ED30
- ldr r0, [r0]
- adds r0, 0x6C
- movs r1, 0x1
- bl sub_8012EA4
- b _0802ED42
- .align 2, 0
-_0802ED30: .4byte gUnknown_203B308
-_0802ED34:
- movs r0, 0x2
- bl sub_802E934
- b _0802ED42
-_0802ED3C:
- movs r0, 0x3
- bl sub_802E934
-_0802ED42:
- add sp, 0x4
- pop {r4}
- pop {r0}
- bx r0
- thumb_func_end sub_802ECB4
-
- thumb_func_start sub_802ED4C
-sub_802ED4C:
- push {lr}
- movs r0, 0x1
- bl sub_802C1E4
- cmp r0, 0x4
- bhi _0802EDB6
- lsls r0, 2
- ldr r1, _0802ED64
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .align 2, 0
-_0802ED64: .4byte _0802ED68
- .align 2, 0
-_0802ED68:
- .4byte _0802EDB6
- .4byte _0802EDB6
- .4byte _0802EDAC
- .4byte _0802ED7C
- .4byte _0802ED94
-_0802ED7C:
- bl sub_802C26C
- ldr r1, _0802ED90
- ldr r1, [r1]
- strb r0, [r1, 0x8]
- movs r0, 0x6
- bl sub_802E934
- b _0802EDB6
- .align 2, 0
-_0802ED90: .4byte gUnknown_203B308
-_0802ED94:
- bl sub_802C26C
- ldr r1, _0802EDA8
- ldr r1, [r1]
- strb r0, [r1, 0x8]
- movs r0, 0x7
- bl sub_802E934
- b _0802EDB6
- .align 2, 0
-_0802EDA8: .4byte gUnknown_203B308
-_0802EDAC:
- bl sub_802C2D4
- movs r0, 0x1
- bl sub_802E934
-_0802EDB6:
- pop {r0}
- bx r0
- thumb_func_end sub_802ED4C
-
- thumb_func_start sub_802EDBC
-sub_802EDBC:
- push {r4,lr}
- sub sp, 0x4
- movs r0, 0
- str r0, [sp]
- bl sub_802C1E4
- ldr r4, _0802EDFC
- ldr r0, [r4]
- adds r0, 0x6C
- bl sub_8012FD8
- lsls r0, 24
- cmp r0, 0
- bne _0802EDEC
- ldr r0, [r4]
- adds r0, 0x6C
- mov r1, sp
- bl sub_8013114
- ldr r1, [sp]
- cmp r1, 0x1
- beq _0802EDEC
- ldr r0, [r4]
- str r1, [r0, 0x68]
-_0802EDEC:
- ldr r0, [sp]
- cmp r0, 0x4
- beq _0802EE06
- cmp r0, 0x4
- bgt _0802EE00
- cmp r0, 0x1
- beq _0802EE90
- b _0802EE96
- .align 2, 0
-_0802EDFC: .4byte gUnknown_203B308
-_0802EE00:
- cmp r0, 0x5
- beq _0802EE88
- b _0802EE96
-_0802EE06:
- ldr r0, _0802EE28
- bl PlaySound
- ldr r4, _0802EE2C
- ldr r0, [r4]
- ldrb r0, [r0, 0x8]
- bl sub_8096574
- ldrb r1, [r0]
- cmp r1, 0x3
- beq _0802EE3C
- cmp r1, 0x3
- bgt _0802EE30
- cmp r1, 0x2
- beq _0802EE36
- b _0802EE5E
- .align 2, 0
-_0802EE28: .4byte 0x00000133
-_0802EE2C: .4byte gUnknown_203B308
-_0802EE30:
- cmp r1, 0x4
- beq _0802EE42
- b _0802EE5E
-_0802EE36:
- ldr r0, [r4]
- movs r1, 0x1
- b _0802EE46
-_0802EE3C:
- ldr r0, [r4]
- movs r1, 0x2
- b _0802EE46
-_0802EE42:
- ldr r0, [r4]
- movs r1, 0x3
-_0802EE46:
- str r1, [r0, 0x4]
- ldrb r0, [r0, 0x8]
- bl sub_80965B8
- bl sub_80965F4
- bl sub_802C2D4
- movs r0, 0x3
- bl sub_802E934
- b _0802EE96
-_0802EE5E:
- bl sub_8096A78
- bl sub_8096C80
- bl sub_8096D24
- bl sub_802C4A4
- lsls r0, 24
- cmp r0, 0
- beq _0802EE80
- bl sub_802C2D4
- movs r0, 0x1
- bl sub_802E934
- b _0802EE96
-_0802EE80:
- movs r0, 0x5
- bl sub_802E934
- b _0802EE96
-_0802EE88:
- movs r0, 0x7
- bl sub_802E934
- b _0802EE96
-_0802EE90:
- movs r0, 0x5
- bl sub_802E934
-_0802EE96:
- add sp, 0x4
- pop {r4}
- pop {r0}
- bx r0
- thumb_func_end sub_802EDBC
-
- thumb_func_start sub_802EEA0
-sub_802EEA0:
- push {lr}
- bl sub_802DEE0
- cmp r0, 0x1
- bls _0802EEB8
- cmp r0, 0x3
- bhi _0802EEB8
- bl sub_802DF24
- movs r0, 0x5
- bl sub_802E934
-_0802EEB8:
- pop {r0}
- bx r0
- thumb_func_end sub_802EEA0
-
- thumb_func_start sub_802EEBC
-sub_802EEBC:
- push {lr}
- bl sub_802C898
- cmp r0, 0x1
- bls _0802EED4
- cmp r0, 0x3
- bhi _0802EED4
- bl sub_802C8F4
- movs r0, 0x1
- bl sub_802E934
-_0802EED4:
- pop {r0}
- bx r0
- thumb_func_end sub_802EEBC
-
- thumb_func_start nullsub_134
-nullsub_134:
- bx lr
- thumb_func_end nullsub_134
-
- thumb_func_start CreatePelliperAccepedStatusBox
-CreatePelliperAcceptedStatusBox:
- push {r4-r6,lr}
- sub sp, 0x8
- adds r4, r0, 0
- bl sub_8008C54
- adds r0, r4, 0
- bl sub_80073B8
- ldr r2, _0802EF40
- movs r6, 0
- str r6, [sp]
- movs r0, 0x3
- movs r1, 0
- adds r3, r4, 0
- bl xxx_call_draw_string
- bl sub_80969AC
- adds r2, r0, 0
- movs r5, 0x7
- str r5, [sp]
- str r4, [sp, 0x4]
- movs r0, 0x12
- movs r1, 0xD
- movs r3, 0x2
- bl sub_8012BC4
- ldr r2, _0802EF44
- str r6, [sp]
- movs r0, 0x16
- movs r1, 0xD
- adds r3, r4, 0
- bl xxx_call_draw_string
- str r5, [sp]
- str r4, [sp, 0x4]
- movs r0, 0x23
- movs r1, 0xD
- movs r2, 0x8
- movs r3, 0x2
- bl sub_8012BC4
- adds r0, r4, 0
- bl sub_80073E0
- add sp, 0x8
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_0802EF40: .4byte gUnknown_80E03AC
-_0802EF44: .4byte gUnknown_80E03B8
- thumb_func_end CreatePelliperAcceptedStatusBox
-
- thumb_func_start sub_802EF48
-sub_802EF48:
- push {r4,lr}
- ldr r4, _0802EF68
- movs r0, 0xA8
- lsls r0, 1
- movs r1, 0x8
- bl MemoryAlloc
- str r0, [r4]
- movs r0, 0
- bl sub_802EFEC
- movs r0, 0x1
- pop {r4}
- pop {r1}
- bx r1
- .align 2, 0
-_0802EF68: .4byte gUnknown_203B30C
- thumb_func_end sub_802EF48
-
- thumb_func_start sub_802EF6C
-sub_802EF6C:
- push {lr}
- ldr r0, _0802EF84
- ldr r0, [r0]
- ldr r0, [r0]
- cmp r0, 0x5
- bhi _0802EFBA
- lsls r0, 2
- ldr r1, _0802EF88
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .align 2, 0
-_0802EF84: .4byte gUnknown_203B30C
-_0802EF88: .4byte _0802EF8C
- .align 2, 0
-_0802EF8C:
- .4byte _0802EFA4
- .4byte _0802EFA4
- .4byte _0802EFAA
- .4byte _0802EFB0
- .4byte _0802EFB6
- .4byte _0802EFBA
-_0802EFA4:
- bl sub_802F148
- b _0802EFBE
-_0802EFAA:
- bl sub_802F184
- b _0802EFBE
-_0802EFB0:
- bl sub_802F1E8
- b _0802EFBE
-_0802EFB6:
- movs r0, 0x3
- b _0802EFC0
-_0802EFBA:
- movs r0, 0x2
- b _0802EFC0
-_0802EFBE:
- movs r0, 0
-_0802EFC0:
- pop {r1}
- bx r1
- thumb_func_end sub_802EF6C
-
- thumb_func_start sub_802EFC4
-sub_802EFC4:
- ldr r0, _0802EFCC
- ldr r0, [r0]
- ldrb r0, [r0, 0x4]
- bx lr
- .align 2, 0
-_0802EFCC: .4byte gUnknown_203B30C
- thumb_func_end sub_802EFC4
-
- thumb_func_start sub_802EFD0
-sub_802EFD0:
- push {r4,lr}
- ldr r4, _0802EFE8
- ldr r0, [r4]
- cmp r0, 0
- beq _0802EFE2
- bl MemoryFree
- movs r0, 0
- str r0, [r4]
-_0802EFE2:
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_0802EFE8: .4byte gUnknown_203B30C
- thumb_func_end sub_802EFD0
-
- thumb_func_start sub_802EFEC
-sub_802EFEC:
- push {lr}
- ldr r1, _0802F000
- ldr r1, [r1]
- str r0, [r1]
- bl sub_802F004
- bl sub_802F088
- pop {r0}
- bx r0
- .align 2, 0
-_0802F000: .4byte gUnknown_203B30C
- thumb_func_end sub_802EFEC
-
- thumb_func_start sub_802F004
-sub_802F004:
- push {r4-r7,lr}
- ldr r4, _0802F03C
- ldr r0, [r4]
- adds r0, 0xF0
- bl sub_8006518
- ldr r0, [r4]
- ldr r0, [r0]
- cmp r0, 0x2
- bne _0802F044
- bl sub_802F108
- ldr r2, [r4]
- movs r0, 0x90
- lsls r0, 1
- adds r2, r0
- ldr r1, _0802F040
- ldm r1!, {r3,r5,r6}
- stm r2!, {r3,r5,r6}
- ldm r1!, {r3,r5,r7}
- stm r2!, {r3,r5,r7}
- ldr r1, [r4]
- adds r0, r1, r0
- adds r1, 0xB0
- bl sub_8012CAC
- b _0802F066
- .align 2, 0
-_0802F03C: .4byte gUnknown_203B30C
-_0802F040: .4byte gUnknown_80E03F4
-_0802F044:
- mov r12, r4
- ldr r4, _0802F080
- movs r2, 0
- movs r3, 0x3
-_0802F04C:
- mov r6, r12
- ldr r1, [r6]
- adds r1, r2
- adds r1, 0xF0
- adds r0, r4, 0
- ldm r0!, {r5-r7}
- stm r1!, {r5-r7}
- ldm r0!, {r5-r7}
- stm r1!, {r5-r7}
- adds r2, 0x18
- subs r3, 0x1
- cmp r3, 0
- bge _0802F04C
-_0802F066:
- bl ResetUnusedInputStruct
- ldr r0, _0802F084
- ldr r0, [r0]
- adds r0, 0xF0
- movs r1, 0x1
- movs r2, 0x1
- bl sub_800641C
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_0802F080: .4byte gUnknown_80E03C4
-_0802F084: .4byte gUnknown_203B30C
- thumb_func_end sub_802F004
-
- thumb_func_start sub_802F088
-sub_802F088:
- push {r4-r6,lr}
- sub sp, 0x8
- ldr r6, _0802F0A0
- ldr r0, [r6]
- ldr r5, [r0]
- cmp r5, 0x1
- beq _0802F0B6
- cmp r5, 0x1
- bgt _0802F0A4
- cmp r5, 0
- beq _0802F0AE
- b _0802F100
- .align 2, 0
-_0802F0A0: .4byte gUnknown_203B30C
-_0802F0A4:
- cmp r5, 0x2
- beq _0802F0BE
- cmp r5, 0x3
- beq _0802F0DA
- b _0802F100
-_0802F0AE:
- movs r0, 0
- bl sub_802CDD4
- b _0802F100
-_0802F0B6:
- movs r0, 0x1
- bl sub_802CED8
- b _0802F100
-_0802F0BE:
- bl sub_802CFD0
- ldr r1, [r6]
- adds r0, r1, 0
- adds r0, 0x60
- adds r1, 0xB0
- movs r2, 0x3
- str r2, [sp]
- str r5, [sp, 0x4]
- movs r2, 0
- movs r3, 0
- bl sub_8012D60
- b _0802F100
-_0802F0DA:
- ldrb r0, [r0, 0x4]
- bl sub_803B344
- adds r4, r0, 0
- ldr r1, [r6]
- adds r1, 0x8
- bl sub_803B35C
- ldr r0, [r6]
- str r5, [r0, 0x8]
- adds r0, 0x4C
- movs r1, 0
- strb r1, [r0]
- ldr r0, [r6]
- ldr r1, [r4, 0x18]
- str r1, [r0, 0x58]
- adds r0, 0x8
- bl sub_802DE84
-_0802F100:
- add sp, 0x8
- pop {r4-r6}
- pop {r0}
- bx r0
- thumb_func_end sub_802F088
-
- thumb_func_start sub_802F108
-sub_802F108:
- ldr r0, _0802F13C
- ldr r0, [r0]
- mov r12, r0
- movs r3, 0
- mov r1, r12
- adds r1, 0xB0
- ldr r0, _0802F140
- str r0, [r1]
- adds r1, 0x4
- movs r0, 0x2
- str r0, [r1]
- movs r2, 0x1
- adds r1, 0x4
- ldr r0, _0802F144
- ldr r0, [r0]
- str r0, [r1]
- adds r1, 0x4
- movs r0, 0x3
- str r0, [r1]
- mov r0, r12
- adds r0, 0xC0
- str r3, [r0]
- adds r0, 0x4
- str r2, [r0]
- bx lr
- .align 2, 0
-_0802F13C: .4byte gUnknown_203B30C
-_0802F140: .4byte gUnknown_80E040C
-_0802F144: .4byte gUnknown_80D4970
- thumb_func_end sub_802F108
-
- thumb_func_start sub_802F148
-sub_802F148:
- push {lr}
- movs r0, 0x1
- bl sub_802CE5C
- cmp r0, 0x2
- beq _0802F174
- cmp r0, 0x2
- bcc _0802F17E
- cmp r0, 0x3
- bne _0802F17E
- bl sub_802CEBC
- ldr r1, _0802F170
- ldr r1, [r1]
- strb r0, [r1, 0x4]
- movs r0, 0x2
- bl sub_802EFEC
- b _0802F17E
- .align 2, 0
-_0802F170: .4byte gUnknown_203B30C
-_0802F174:
- bl sub_802CF14
- movs r0, 0x5
- bl sub_802EFEC
-_0802F17E:
- pop {r0}
- bx r0
- thumb_func_end sub_802F148
-
- thumb_func_start sub_802F184
-sub_802F184:
- push {r4,lr}
- sub sp, 0x4
- movs r0, 0
- str r0, [sp]
- bl sub_802CE5C
- ldr r4, _0802F1BC
- ldr r0, [r4]
- adds r0, 0x60
- bl sub_8012FD8
- lsls r0, 24
- cmp r0, 0
- bne _0802F1AA
- ldr r0, [r4]
- adds r0, 0x60
- mov r1, sp
- bl sub_8013114
-_0802F1AA:
- ldr r0, [sp]
- cmp r0, 0x2
- beq _0802F1C6
- cmp r0, 0x2
- bgt _0802F1C0
- cmp r0, 0x1
- beq _0802F1DA
- b _0802F1E0
- .align 2, 0
-_0802F1BC: .4byte gUnknown_203B30C
-_0802F1C0:
- cmp r0, 0x3
- beq _0802F1D2
- b _0802F1E0
-_0802F1C6:
- bl sub_802CF14
- movs r0, 0x4
- bl sub_802EFEC
- b _0802F1E0
-_0802F1D2:
- movs r0, 0x3
- bl sub_802EFEC
- b _0802F1E0
-_0802F1DA:
- movs r0, 0x1
- bl sub_802EFEC
-_0802F1E0:
- add sp, 0x4
- pop {r4}
- pop {r0}
- bx r0
- thumb_func_end sub_802F184
-
- thumb_func_start sub_802F1E8
-sub_802F1E8:
- push {lr}
- bl sub_802DEE0
- cmp r0, 0x1
- bls _0802F200
- cmp r0, 0x3
- bhi _0802F200
- bl sub_802DF24
- movs r0, 0x1
- bl sub_802EFEC
-_0802F200:
- pop {r0}
- bx r0
- thumb_func_end sub_802F1E8
-
- thumb_func_start sub_802F204
-sub_802F204:
- push {r4-r6,lr}
- adds r6, r0, 0
- lsls r4, r1, 24
- lsrs r4, 24
- bl ResetUnusedInputStruct
- movs r0, 0
- movs r1, 0x1
- movs r2, 0x1
- bl sub_800641C
- ldr r5, _0802F28C
- movs r0, 0x84
- movs r1, 0x8
- bl MemoryAlloc
- str r0, [r5]
- str r6, [r0, 0x10]
- movs r6, 0
- str r6, [r0, 0xC]
- strb r4, [r0, 0x8]
- ldr r1, [r5]
- ldr r0, _0802F290
- ldr r1, [r1, 0x10]
- bl strcpy
- ldr r4, _0802F294
- bl sub_808D33C
- adds r1, r0, 0
- adds r0, r4, 0
- bl sub_808DA34
- ldr r0, [r5]
- ldr r0, [r0, 0x10]
- movs r1, 0x14
- ldrsh r0, [r0, r1]
- bl GetDialogueSpriteDataPtr
- ldr r1, [r5]
- str r0, [r1, 0x14]
- str r6, [r1, 0x18]
- adds r1, 0x20
- strb r6, [r1]
- ldr r0, [r5]
- adds r0, 0x21
- strb r6, [r0]
- ldr r0, [r5]
- adds r0, 0x22
- strb r6, [r0]
- ldr r5, [r5]
- movs r0, 0x2
- strh r0, [r5, 0x1C]
- movs r0, 0x8
- strh r0, [r5, 0x1E]
- ldr r0, [r5, 0x14]
- cmp r0, 0
- beq _0802F27C
- ldr r0, [r0, 0x4]
- str r0, [r5, 0x18]
-_0802F27C:
- movs r0, 0
- bl sub_802F2E8
- movs r0, 0x1
- pop {r4-r6}
- pop {r1}
- bx r1
- .align 2, 0
-_0802F28C: .4byte gUnknown_203B310
-_0802F290: .4byte gUnknown_202E5D8
-_0802F294: .4byte gAvailablePokemonNames
- thumb_func_end sub_802F204
-
- thumb_func_start sub_802F298
-sub_802F298:
- push {lr}
- ldr r0, _0802F2AC
- ldr r0, [r0]
- ldr r0, [r0]
- cmp r0, 0x5
- beq _0802F2B0
- cmp r0, 0x9
- bne _0802F2B6
- movs r0, 0x3
- b _0802F2BC
- .align 2, 0
-_0802F2AC: .4byte gUnknown_203B310
-_0802F2B0:
- bl sub_802F6FC
- b _0802F2BA
-_0802F2B6:
- bl sub_802F718
-_0802F2BA:
- movs r0, 0
-_0802F2BC:
- pop {r1}
- bx r1
- thumb_func_end sub_802F298
-
- thumb_func_start sub_802F2C0
-sub_802F2C0:
- push {r4,lr}
- ldr r4, _0802F2E4
- ldr r0, [r4]
- cmp r0, 0
- beq _0802F2DE
- ldr r0, [r0, 0x14]
- cmp r0, 0
- beq _0802F2D4
- bl CloseFile
-_0802F2D4:
- ldr r0, [r4]
- bl MemoryFree
- movs r0, 0
- str r0, [r4]
-_0802F2DE:
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_0802F2E4: .4byte gUnknown_203B310
- thumb_func_end sub_802F2C0
-
- thumb_func_start sub_802F2E8
-sub_802F2E8:
- push {lr}
- ldr r1, _0802F2FC
- ldr r1, [r1]
- str r0, [r1]
- bl sub_802F300
- bl HandleMissionReward
- pop {r0}
- bx r0
- .align 2, 0
-_0802F2FC: .4byte gUnknown_203B310
- thumb_func_end sub_802F2E8
-
- thumb_func_start sub_802F300
-sub_802F300:
- push {r4-r7,lr}
- ldr r4, _0802F350
- ldr r1, [r4]
- ldr r0, [r1]
- cmp r0, 0
- bne _0802F348
- adds r0, r1, 0
- adds r0, 0x24
- bl sub_8006518
- mov r12, r4
- ldr r4, _0802F354
- movs r3, 0
- movs r2, 0x3
-_0802F31C:
- mov r0, r12
- ldr r1, [r0]
- adds r1, r3
- adds r1, 0x24
- adds r0, r4, 0
- ldm r0!, {r5-r7}
- stm r1!, {r5-r7}
- ldm r0!, {r5-r7}
- stm r1!, {r5-r7}
- adds r3, 0x18
- subs r2, 0x1
- cmp r2, 0
- bge _0802F31C
- bl ResetUnusedInputStruct
- ldr r0, _0802F350
- ldr r0, [r0]
- adds r0, 0x24
- movs r1, 0x1
- movs r2, 0x1
- bl sub_800641C
-_0802F348:
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_0802F350: .4byte gUnknown_203B310
-_0802F354: .4byte gUnknown_80E041C
- thumb_func_end sub_802F300
-
- thumb_func_start HandleMissionReward
-HandleMissionReward:
- push {r4-r6,lr}
- sub sp, 0x10
- ldr r1, _0802F374
- ldr r0, [r1]
- ldr r0, [r0]
- adds r6, r1, 0
- cmp r0, 0x9
- bls _0802F36A
- b _0802F6E4
-_0802F36A:
- lsls r0, 2
- ldr r1, _0802F378
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .align 2, 0
-_0802F374: .4byte gUnknown_203B310
-_0802F378: .4byte _0802F37C
- .align 2, 0
-_0802F37C:
- .4byte _0802F3A4
- .4byte _0802F3E8
- .4byte _0802F444
- .4byte _0802F494
- .4byte _0802F524
- .4byte _0802F5CC
- .4byte _0802F614
- .4byte _0802F630
- .4byte _0802F6A4
- .4byte _0802F6E4
-_0802F3A4:
- ldr r2, [r6]
- ldr r0, [r2, 0x10]
- ldr r1, [r0, 0x18]
- cmp r1, 0
- bne _0802F3B6
- movs r0, 0x2
- bl sub_802F2E8
- b _0802F6E4
-_0802F3B6:
- ldr r0, _0802F3D4
- str r1, [r0]
- ldrb r0, [r2, 0x8]
- cmp r0, 0
- beq _0802F3E0
- ldr r0, _0802F3D8
- adds r2, 0x14
- ldr r3, _0802F3DC
- movs r1, 0
- bl sub_80141B4
- ldr r1, [r6]
- movs r0, 0x1
- str r0, [r1, 0x4]
- b _0802F6E4
- .align 2, 0
-_0802F3D4: .4byte gUnknown_202DE30
-_0802F3D8: .4byte gUnknown_80E0434
-_0802F3DC: .4byte 0x0000010d
-_0802F3E0:
- movs r0, 0x1
- bl sub_802F2E8
- b _0802F6E4
-_0802F3E8:
- movs r0, 0xCB
- bl PlaySound
- ldr r0, _0802F414
- ldr r0, [r0]
- ldr r0, [r0, 0x10]
- ldr r0, [r0, 0x18]
- bl AddToTeamMoney
- movs r0, 0
- bl sub_808D544
- cmp r0, 0x1
- bgt _0802F420
- ldr r0, _0802F418
- ldr r3, _0802F41C
- movs r1, 0
- movs r2, 0
- bl sub_80141B4
- b _0802F42C
- .align 2, 0
-_0802F414: .4byte gUnknown_203B310
-_0802F418: .4byte gUnknown_80E045C
-_0802F41C: .4byte 0x00000101
-_0802F420:
- ldr r0, _0802F438
- ldr r3, _0802F43C
- movs r1, 0
- movs r2, 0
- bl sub_80141B4
-_0802F42C:
- ldr r0, _0802F440
- ldr r1, [r0]
- movs r0, 0x2
- str r0, [r1, 0x4]
- b _0802F6E4
- .align 2, 0
-_0802F438: .4byte gUnknown_80E0484
-_0802F43C: .4byte 0x00000101
-_0802F440: .4byte gUnknown_203B310
-_0802F444:
- ldr r0, [r6]
- ldr r0, [r0, 0x10]
- adds r1, r0, 0
- adds r1, 0x20
- ldrb r0, [r1]
- cmp r0, 0
- bne _0802F45A
- movs r0, 0x4
- bl sub_802F2E8
- b _0802F6E4
-_0802F45A:
- ldr r0, _0802F480
- ldrb r1, [r1]
- movs r2, 0
- bl sub_8092578
- ldr r2, [r6]
- ldrb r0, [r2, 0x8]
- cmp r0, 0
- beq _0802F48C
- ldr r0, _0802F484
- adds r2, 0x14
- ldr r3, _0802F488
- movs r1, 0
- bl sub_80141B4
- ldr r1, [r6]
- movs r0, 0x3
- str r0, [r1, 0x4]
- b _0802F6E4
- .align 2, 0
-_0802F480: .4byte gUnknown_202E628
-_0802F484: .4byte gUnknown_80E04B4
-_0802F488: .4byte 0x0000010d
-_0802F48C:
- movs r0, 0x3
- bl sub_802F2E8
- b _0802F6E4
-_0802F494:
- ldr r4, _0802F4B4
- ldr r0, [r4]
- ldr r0, [r0, 0x10]
- adds r0, 0x20
- ldrb r0, [r0]
- bl GetFriendAreaStatus
- lsls r0, 24
- cmp r0, 0
- beq _0802F4BC
- movs r0, 0xFA
- lsls r0, 2
- bl AddToTeamMoney
- ldr r0, _0802F4B8
- b _0802F4DA
- .align 2, 0
-_0802F4B4: .4byte gUnknown_203B310
-_0802F4B8: .4byte gUnknown_80E04F4
-_0802F4BC:
- movs r0, 0
- bl sub_808D544
- cmp r0, 0x1
- bgt _0802F4F0
- ldr r0, [r4]
- ldr r0, [r0, 0x10]
- adds r0, 0x20
- ldrb r0, [r0]
- bl UnlockFriendArea
- movs r0, 0xCE
- bl PlaySound
- ldr r0, _0802F4E8
-_0802F4DA:
- ldr r3, _0802F4EC
- movs r1, 0
- movs r2, 0
- bl sub_80141B4
- b _0802F50E
- .align 2, 0
-_0802F4E8: .4byte gUnknown_80E05C0
-_0802F4EC: .4byte 0x00000101
-_0802F4F0:
- ldr r0, [r4]
- ldr r0, [r0, 0x10]
- adds r0, 0x20
- ldrb r0, [r0]
- bl UnlockFriendArea
- movs r0, 0xCE
- bl PlaySound
- ldr r0, _0802F518
- ldr r3, _0802F51C
- movs r1, 0
- movs r2, 0
- bl sub_80141B4
-_0802F50E:
- ldr r0, _0802F520
- ldr r1, [r0]
- movs r0, 0x4
- str r0, [r1, 0x4]
- b _0802F6E4
- .align 2, 0
-_0802F518: .4byte gUnknown_80E05FC
-_0802F51C: .4byte 0x00000101
-_0802F520: .4byte gUnknown_203B310
-_0802F524:
- ldr r0, [r6]
- ldr r0, [r0, 0x10]
- ldrb r2, [r0, 0x1C]
- cmp r2, 0
- beq _0802F628
- ldr r0, [r0, 0x18]
- cmp r0, 0
- bne _0802F620
- lsls r2, 16
- ldr r1, _0802F564
- ldr r0, [sp, 0xC]
- ands r0, r1
- orrs r0, r2
- str r0, [sp, 0xC]
- lsrs r0, 16
- lsls r0, 24
- lsrs r0, 24
- bl IsThrowableItem
- lsls r0, 24
- cmp r0, 0
- beq _0802F56C
- ldr r0, [r6]
- ldr r0, [r0, 0x10]
- ldrb r1, [r0, 0x1F]
- lsls r1, 8
- ldr r2, _0802F568
- ldr r0, [sp, 0xC]
- ands r0, r2
- orrs r0, r1
- b _0802F572
- .align 2, 0
-_0802F564: .4byte 0xff00ffff
-_0802F568: .4byte 0xffff00ff
-_0802F56C:
- ldr r1, _0802F5B4
- ldr r0, [sp, 0xC]
- ands r0, r1
-_0802F572:
- str r0, [sp, 0xC]
- ldr r1, _0802F5B8
- ldr r0, [sp, 0xC]
- ands r0, r1
- movs r2, 0x1
- orrs r0, r2
- str r0, [sp, 0xC]
- movs r1, 0
- str r1, [sp]
- mov r0, sp
- strb r1, [r0, 0x4]
- strb r2, [r0, 0x8]
- ldr r0, _0802F5BC
- add r1, sp, 0xC
- mov r2, sp
- bl sub_8090E14
- ldr r4, _0802F5C0
- ldr r2, [r4]
- ldrb r0, [r2, 0x8]
- cmp r0, 0
- beq _0802F620
- ldr r0, _0802F5C4
- adds r2, 0x14
- ldr r3, _0802F5C8
- movs r1, 0
- bl sub_80141B4
- ldr r1, [r4]
- movs r0, 0x5
- str r0, [r1, 0x4]
- b _0802F6E4
- .align 2, 0
-_0802F5B4: .4byte 0xffff00ff
-_0802F5B8: .4byte 0xffffff00
-_0802F5BC: .4byte gUnknown_202DEA8
-_0802F5C0: .4byte gUnknown_203B310
-_0802F5C4: .4byte gUnknown_80E0640
-_0802F5C8: .4byte 0x0000010d
-_0802F5CC:
- ldr r0, [r6]
- ldr r2, [r0, 0x10]
- adds r1, r2, 0
- adds r1, 0x1C
- ldr r3, [r0, 0xC]
- adds r1, r3
- ldrb r0, [r1]
- cmp r0, 0
- bne _0802F5E6
- movs r0, 0x6
- bl sub_802F2E8
- b _0802F6E4
-_0802F5E6:
- cmp r3, 0
- bne _0802F5FC
- ldr r0, [r2, 0x18]
- cmp r0, 0
- bne _0802F5FC
- ldrb r1, [r2, 0x1C]
- ldrb r2, [r2, 0x1F]
- movs r0, 0
- bl sub_801B60C
- b _0802F6E4
-_0802F5FC:
- ldr r1, [r6]
- ldr r2, [r1, 0x10]
- adds r0, r2, 0
- adds r0, 0x1C
- ldr r1, [r1, 0xC]
- adds r0, r1
- ldrb r1, [r0]
- ldrb r2, [r2, 0x1F]
- movs r0, 0x1
- bl sub_801B60C
- b _0802F6E4
-_0802F614:
- ldr r1, [r6]
- ldr r0, [r1, 0xC]
- adds r0, 0x1
- str r0, [r1, 0xC]
- cmp r0, 0x2
- bgt _0802F628
-_0802F620:
- movs r0, 0x5
- bl sub_802F2E8
- b _0802F6E4
-_0802F628:
- movs r0, 0x7
- bl sub_802F2E8
- b _0802F6E4
-_0802F630:
- adds r5, r6, 0
- ldr r0, [r5]
- ldr r0, [r0, 0x10]
- ldr r0, [r0, 0x24]
- cmp r0, 0
- bne _0802F644
- movs r0, 0x9
- bl sub_802F2E8
- b _0802F6E4
-_0802F644:
- bl GetRescueTeamRank
- ldr r1, [r5]
- strb r0, [r1, 0x9]
- ldr r0, [r5]
- ldr r0, [r0, 0x10]
- ldr r0, [r0, 0x24]
- bl AddToTeamRankPts
- movs r0, 0xCB
- bl PlaySound
- ldr r4, [r5]
- bl GetRescueTeamRank
- ldrb r1, [r4, 0x9]
- lsls r0, 24
- lsrs r0, 24
- cmp r1, r0
- beq _0802F672
- ldr r1, [r5]
- movs r0, 0x8
- b _0802F676
-_0802F672:
- ldr r1, [r6]
- movs r0, 0x9
-_0802F676:
- str r0, [r1, 0x4]
- ldr r1, _0802F694
- ldr r0, _0802F698
- ldr r0, [r0]
- ldr r0, [r0, 0x10]
- ldr r0, [r0, 0x24]
- str r0, [r1]
- ldr r0, _0802F69C
- ldr r3, _0802F6A0
- movs r1, 0
- movs r2, 0
- bl sub_80141B4
- b _0802F6E4
- .align 2, 0
-_0802F694: .4byte gUnknown_202DE30
-_0802F698: .4byte gUnknown_203B310
-_0802F69C: .4byte gUnknown_80E0670
-_0802F6A0: .4byte 0x00000101
-_0802F6A4:
- movs r0, 0xC9
- bl PlaySound
- ldr r0, _0802F6EC
- ldr r1, [r0]
- movs r0, 0x9
- str r0, [r1, 0x4]
- ldrb r0, [r1, 0x9]
- bl GetTeamRankString
- adds r1, r0, 0
- ldr r4, _0802F6F0
- adds r0, r4, 0
- bl strcpy
- bl GetRescueTeamRank
- lsls r0, 24
- lsrs r0, 24
- bl GetTeamRankString
- adds r1, r0, 0
- adds r4, 0x50
- adds r0, r4, 0
- bl strcpy
- ldr r0, _0802F6F4
- ldr r3, _0802F6F8
- movs r1, 0
- movs r2, 0
- bl sub_80141B4
-_0802F6E4:
- add sp, 0x10
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_0802F6EC: .4byte gUnknown_203B310
-_0802F6F0: .4byte gUnknown_202E038
-_0802F6F4: .4byte gUnknown_80E06A8
-_0802F6F8: .4byte 0x00000101
- thumb_func_end HandleMissionReward
-
- thumb_func_start sub_802F6FC
-sub_802F6FC:
- push {lr}
- bl sub_801B6AC
- cmp r0, 0x1
- bls _0802F714
- cmp r0, 0x3
- bhi _0802F714
- bl sub_801B72C
- movs r0, 0x6
- bl sub_802F2E8
-_0802F714:
- pop {r0}
- bx r0
- thumb_func_end sub_802F6FC
-
- thumb_func_start sub_802F718
-sub_802F718:
- push {lr}
- sub sp, 0x4
- mov r0, sp
- bl sub_80144A4
- cmp r0, 0
- bne _0802F730
- ldr r0, _0802F738
- ldr r0, [r0]
- ldr r0, [r0, 0x4]
- bl sub_802F2E8
-_0802F730:
- add sp, 0x4
- pop {r0}
- bx r0
- .align 2, 0
-_0802F738: .4byte gUnknown_203B310
- thumb_func_end sub_802F718
-
- thumb_func_start sub_802F73C
-sub_802F73C:
- push {r4-r7,lr}
- mov r7, r8
- push {r7}
- adds r5, r0, 0
- adds r7, r1, 0
- mov r8, r2
- lsls r3, 24
- lsrs r6, r3, 24
- bl sub_802FCF0
- lsls r0, 24
- cmp r0, 0
- beq _0802F75A
- movs r0, 0
- b _0802F836
-_0802F75A:
- ldr r4, _0802F7AC
- ldr r0, [r4]
- cmp r0, 0
- bne _0802F76E
- movs r0, 0xAE
- lsls r0, 1
- movs r1, 0x8
- bl MemoryAlloc
- str r0, [r4]
-_0802F76E:
- ldr r0, [r4]
- adds r0, 0xB8
- strb r6, [r0]
- ldr r0, [r4]
- adds r1, r0, 0
- adds r1, 0xF0
- str r5, [r1]
- adds r2, r0, 0
- adds r2, 0xF4
- lsls r1, r5, 1
- adds r1, r5
- lsls r1, 3
- adds r1, 0xF8
- adds r1, r0, r1
- str r1, [r2]
- adds r0, 0xF8
- bl sub_8006518
- cmp r6, 0
- beq _0802F7B4
- ldr r1, [r4]
- adds r0, r1, 0
- adds r0, 0xF0
- ldr r2, [r0]
- lsls r0, r2, 1
- adds r0, r2
- lsls r0, 3
- adds r1, r0
- adds r1, 0xF8
- ldr r0, _0802F7B0
- b _0802F7C8
- .align 2, 0
-_0802F7AC: .4byte gUnknown_203B314
-_0802F7B0: .4byte gUnknown_80E072C
-_0802F7B4:
- ldr r1, [r4]
- adds r0, r1, 0
- adds r0, 0xF0
- ldr r2, [r0]
- lsls r0, r2, 1
- adds r0, r2
- lsls r0, 3
- adds r1, r0
- adds r1, 0xF8
- ldr r0, _0802F840
-_0802F7C8:
- ldm r0!, {r2-r4}
- stm r1!, {r2-r4}
- ldm r0!, {r2-r4}
- stm r1!, {r2-r4}
- ldr r4, _0802F844
- ldr r2, [r4]
- adds r0, r2, 0
- adds r0, 0xF4
- ldr r1, [r0]
- movs r3, 0xAC
- lsls r3, 1
- adds r0, r2, r3
- str r0, [r1, 0x14]
- cmp r7, 0
- beq _0802F7FC
- adds r0, r2, 0
- adds r0, 0xF0
- ldr r1, [r0]
- lsls r0, r1, 1
- adds r0, r1
- lsls r0, 3
- subs r3, 0x58
- adds r1, r2, r3
- adds r1, r0
- ldr r0, [r7]
- str r0, [r1]
-_0802F7FC:
- ldr r0, [r4]
- adds r0, 0xF4
- ldr r0, [r0]
- mov r1, r8
- bl sub_8012D08
- bl ResetUnusedInputStruct
- ldr r0, [r4]
- adds r0, 0xF8
- movs r1, 0x1
- movs r2, 0x1
- bl sub_800641C
- ldr r4, [r4]
- adds r4, 0xBC
- bl sub_802FBF4
- adds r1, r0, 0
- adds r0, r4, 0
- mov r2, r8
- adds r3, r5, 0
- bl sub_8013818
- bl sub_802F9C0
- bl sub_802FA50
- movs r0, 0x1
-_0802F836:
- pop {r3}
- mov r8, r3
- pop {r4-r7}
- pop {r1}
- bx r1
- .align 2, 0
-_0802F840: .4byte gUnknown_80E0714
-_0802F844: .4byte gUnknown_203B314
- thumb_func_end sub_802F73C
-
- thumb_func_start sub_802F848
-sub_802F848:
- push {r4,r5,lr}
- lsls r0, 16
- asrs r4, r0, 16
- movs r3, 0
- ldr r1, _0802F858
- ldr r0, [r1]
- b _0802F884
- .align 2, 0
-_0802F858: .4byte gUnknown_203B314
-_0802F85C:
- ldr r2, [r1]
- lsls r0, r3, 1
- adds r0, r2, r0
- movs r5, 0
- ldrsh r0, [r0, r5]
- cmp r0, r4
- bne _0802F880
- adds r0, r2, 0
- adds r0, 0xBC
- adds r1, r3, 0
- bl sub_8013878
- bl sub_802F9C0
- bl sub_802FA50
- movs r0, 0x1
- b _0802F89A
-_0802F880:
- adds r3, 0x1
- adds r0, r2, 0
-_0802F884:
- adds r0, 0xDE
- movs r2, 0
- ldrsh r0, [r0, r2]
- cmp r3, r0
- blt _0802F85C
- ldr r0, [r1]
- adds r0, 0xBC
- movs r1, 0
- bl sub_8013878
- movs r0, 0
-_0802F89A:
- pop {r4,r5}
- pop {r1}
- bx r1
- thumb_func_end sub_802F848
-
- thumb_func_start sub_802F8A0
-sub_802F8A0:
- push {r4,lr}
- lsls r0, 24
- cmp r0, 0
- bne _0802F8BC
- ldr r0, _0802F8B8
- ldr r0, [r0]
- adds r0, 0xBC
- bl sub_8013660
- movs r0, 0
- b _0802F904
- .align 2, 0
-_0802F8B8: .4byte gUnknown_203B314
-_0802F8BC:
- ldr r4, _0802F8D8
- ldr r0, [r4]
- adds r0, 0xBC
- bl GetKeyPress
- cmp r0, 0x1
- beq _0802F8DC
- cmp r0, 0x2
- bne _0802F8E6
- movs r0, 0x1
- bl PlayMenuSoundEffect
- movs r0, 0x2
- b _0802F904
- .align 2, 0
-_0802F8D8: .4byte gUnknown_203B314
-_0802F8DC:
- movs r0, 0
- bl PlayMenuSoundEffect
- movs r0, 0x3
- b _0802F904
-_0802F8E6:
- ldr r0, [r4]
- adds r0, 0xBC
- movs r1, 0x1
- bl sub_80138B8
- lsls r0, 24
- cmp r0, 0
- bne _0802F8FA
- movs r0, 0
- b _0802F904
-_0802F8FA:
- bl sub_802F9C0
- bl sub_802FA50
- movs r0, 0x1
-_0802F904:
- pop {r4}
- pop {r1}
- bx r1
- thumb_func_end sub_802F8A0
-
- thumb_func_start sub_802F90C
-sub_802F90C:
- ldr r0, _0802F934
- ldr r2, [r0]
- adds r0, r2, 0
- adds r0, 0xDA
- movs r3, 0
- ldrsh r1, [r0, r3]
- subs r0, 0x2
- movs r3, 0
- ldrsh r0, [r0, r3]
- muls r0, r1
- adds r1, r2, 0
- adds r1, 0xD4
- movs r3, 0
- ldrsh r1, [r1, r3]
- adds r0, r1
- lsls r0, 1
- adds r0, r2, r0
- movs r1, 0
- ldrsh r0, [r0, r1]
- bx lr
- .align 2, 0
-_0802F934: .4byte gUnknown_203B314
- thumb_func_end sub_802F90C
-
- thumb_func_start sub_802F938
-sub_802F938:
- push {r4,r5,lr}
- adds r4, r0, 0
- lsls r4, 24
- lsrs r4, 24
- bl sub_802FBF4
- adds r1, r0, 0
- ldr r5, _0802F970
- ldr r0, [r5]
- adds r2, r0, 0
- adds r2, 0xDE
- strh r1, [r2]
- adds r0, 0xBC
- bl sub_8013984
- bl sub_802F9C0
- bl sub_802FA50
- cmp r4, 0
- beq _0802F96A
- ldr r0, [r5]
- adds r0, 0xBC
- bl AddMenuCursorSprite
-_0802F96A:
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_0802F970: .4byte gUnknown_203B314
- thumb_func_end sub_802F938
-
- thumb_func_start sub_802F974
-sub_802F974:
- push {r4,r5,lr}
- ldr r4, _0802F9B8
- ldr r2, [r4]
- cmp r2, 0
- beq _0802F9B2
- adds r0, r2, 0
- adds r0, 0xF0
- ldr r0, [r0]
- lsls r1, r0, 1
- adds r1, r0
- lsls r1, 3
- adds r1, r2, r1
- adds r1, 0xF8
- ldr r0, _0802F9BC
- ldm r0!, {r2,r3,r5}
- stm r1!, {r2,r3,r5}
- ldm r0!, {r2,r3,r5}
- stm r1!, {r2,r3,r5}
- bl ResetUnusedInputStruct
- ldr r0, [r4]
- adds r0, 0xF8
- movs r1, 0x1
- movs r2, 0x1
- bl sub_800641C
- ldr r0, [r4]
- bl MemoryFree
- movs r0, 0
- str r0, [r4]
-_0802F9B2:
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_0802F9B8: .4byte gUnknown_203B314
-_0802F9BC: .4byte gUnknown_80E06FC
- thumb_func_end sub_802F974
-
- thumb_func_start sub_802F9C0
-sub_802F9C0:
- push {r4,r5,lr}
- ldr r4, _0802FA44
- ldr r0, [r4]
- movs r1, 0xAC
- lsls r1, 1
- adds r0, r1
- movs r2, 0
- movs r1, 0x1
- strb r1, [r0]
- ldr r0, [r4]
- ldr r3, _0802FA48
- adds r0, r3
- strb r2, [r0]
- ldr r0, [r4]
- adds r3, 0x1
- adds r1, r0, r3
- movs r0, 0x8
- strb r0, [r1]
- ldr r0, [r4]
- ldr r1, _0802FA4C
- adds r0, r1
- strb r2, [r0]
- ldr r0, [r4]
- adds r0, 0xD6
- movs r2, 0
- ldrsh r0, [r0, r2]
- movs r1, 0xC
- bl sub_80095E4
- adds r0, 0x2
- lsls r0, 16
- ldr r3, [r4]
- adds r5, r3, 0
- adds r5, 0xF0
- ldr r2, [r5]
- lsls r1, r2, 1
- adds r1, r2
- lsls r1, 3
- adds r1, r3, r1
- movs r2, 0x83
- lsls r2, 1
- adds r1, r2
- asrs r2, r0, 16
- lsrs r0, 16
- strh r0, [r1]
- ldr r1, [r5]
- lsls r0, r1, 1
- adds r0, r1
- lsls r0, 3
- adds r3, r0
- adds r2, 0x2
- movs r0, 0x84
- lsls r0, 1
- adds r3, r0
- strh r2, [r3]
- bl ResetUnusedInputStruct
- ldr r0, [r4]
- adds r0, 0xF8
- movs r1, 0x1
- movs r2, 0x1
- bl sub_800641C
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_0802FA44: .4byte gUnknown_203B314
-_0802FA48: .4byte 0x00000159
-_0802FA4C: .4byte 0x0000015b
- thumb_func_end sub_802F9C0
-
- thumb_func_start sub_802FA50
-sub_802FA50:
- push {r4-r7,lr}
- mov r7, r8
- push {r7}
- sub sp, 0x8
- ldr r4, _0802FB1C
- ldr r0, [r4]
- adds r0, 0xF0
- ldr r0, [r0]
- bl sub_8008C54
- ldr r0, [r4]
- adds r0, 0xF0
- ldr r0, [r0]
- bl sub_80073B8
- ldr r2, _0802FB20
- ldr r0, [r4]
- adds r0, 0xF0
- ldr r3, [r0]
- movs r0, 0
- str r0, [sp]
- movs r0, 0xA
- movs r1, 0
- bl xxx_call_draw_string
- ldr r3, [r4]
- movs r1, 0xAD
- lsls r1, 1
- adds r0, r3, r1
- ldrb r0, [r0]
- lsls r0, 3
- adds r0, 0x4
- adds r1, r3, 0
- adds r1, 0xDA
- movs r5, 0
- ldrsh r2, [r1, r5]
- adds r2, 0x1
- movs r1, 0x7
- str r1, [sp]
- adds r1, r3, 0
- adds r1, 0xF0
- ldr r1, [r1]
- str r1, [sp, 0x4]
- movs r1, 0
- movs r3, 0x2
- bl sub_8012BC4
- ldr r1, [r4]
- adds r0, r1, 0
- adds r0, 0xB8
- ldrb r0, [r0]
- cmp r0, 0
- beq _0802FB78
- movs r6, 0
- adds r0, r1, 0
- adds r0, 0xD6
- movs r1, 0
- ldrsh r0, [r0, r1]
- cmp r6, r0
- blt _0802FACA
- b _0802FBD6
-_0802FACA:
- mov r8, r4
-_0802FACC:
- mov r2, r8
- ldr r0, [r2]
- adds r0, 0xBC
- adds r1, r6, 0
- bl sub_8013800
- adds r5, r0, 0
- mov r3, r8
- ldr r2, [r3]
- adds r0, r2, 0
- adds r0, 0xDA
- movs r3, 0
- ldrsh r1, [r0, r3]
- subs r0, 0x2
- movs r3, 0
- ldrsh r0, [r0, r3]
- muls r0, r1
- adds r1, r0, r6
- lsls r0, r1, 1
- adds r0, r2, r0
- movs r3, 0
- ldrsh r7, [r0, r3]
- adds r0, r2, 0
- adds r0, 0x5C
- adds r0, r1
- ldrb r4, [r0]
- cmp r4, 0
- beq _0802FB28
- adds r0, r2, 0
- adds r0, 0xF0
- ldr r3, [r0]
- movs r0, 0
- str r0, [sp]
- movs r0, 0xA
- adds r1, r5, 0
- ldr r2, _0802FB24
- bl xxx_call_draw_string
- b _0802FB46
- .align 2, 0
-_0802FB1C: .4byte gUnknown_203B314
-_0802FB20: .4byte gUnknown_80E0744
-_0802FB24: .4byte gUnknown_80E0750
-_0802FB28:
- adds r0, r2, 0
- adds r0, 0x8A
- adds r0, r1
- ldrb r0, [r0]
- cmp r0, 0
- beq _0802FB46
- adds r0, r2, 0
- adds r0, 0xF0
- ldr r3, [r0]
- str r4, [sp]
- movs r0, 0xA
- adds r1, r5, 0
- ldr r2, _0802FB74
- bl xxx_call_draw_string
-_0802FB46:
- adds r0, r7, 0
- bl sub_80974A0
- adds r2, r0, 0
- mov r1, r8
- ldr r0, [r1]
- adds r0, 0xF0
- ldr r3, [r0]
- movs r0, 0
- str r0, [sp]
- movs r0, 0x18
- adds r1, r5, 0
- bl xxx_call_draw_string
- adds r6, 0x1
- mov r2, r8
- ldr r0, [r2]
- adds r0, 0xD6
- movs r3, 0
- ldrsh r0, [r0, r3]
- cmp r6, r0
- blt _0802FACC
- b _0802FBD6
- .align 2, 0
-_0802FB74: .4byte gUnknown_80E0754
-_0802FB78:
- movs r6, 0
- adds r0, r1, 0
- adds r0, 0xD6
- movs r5, 0
- ldrsh r0, [r0, r5]
- cmp r6, r0
- bge _0802FBD6
- adds r5, r4, 0
-_0802FB88:
- ldr r0, [r5]
- adds r0, 0xBC
- adds r1, r6, 0
- bl sub_8013800
- adds r4, r0, 0
- ldr r1, [r5]
- adds r0, r1, 0
- adds r0, 0xDA
- movs r3, 0
- ldrsh r2, [r0, r3]
- subs r0, 0x2
- movs r3, 0
- ldrsh r0, [r0, r3]
- muls r0, r2
- adds r0, r6
- lsls r0, 1
- adds r1, r0
- movs r2, 0
- ldrsh r0, [r1, r2]
- bl sub_80974A0
- adds r2, r0, 0
- ldr r0, [r5]
- adds r0, 0xF0
- ldr r3, [r0]
- movs r0, 0
- str r0, [sp]
- movs r0, 0x8
- adds r1, r4, 0
- bl xxx_call_draw_string
- adds r6, 0x1
- ldr r0, [r5]
- adds r0, 0xD6
- movs r3, 0
- ldrsh r0, [r0, r3]
- cmp r6, r0
- blt _0802FB88
-_0802FBD6:
- ldr r0, _0802FBF0
- ldr r0, [r0]
- adds r0, 0xF0
- ldr r0, [r0]
- bl sub_80073E0
- add sp, 0x8
- pop {r3}
- mov r8, r3
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_0802FBF0: .4byte gUnknown_203B314
- thumb_func_end sub_802FA50
-
- thumb_func_start sub_802FBF4
-sub_802FBF4:
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- sub sp, 0x4
- movs r0, 0
- mov r8, r0
- movs r1, 0
- str r1, [sp]
-_0802FC08:
- ldr r1, [sp]
- lsls r0, r1, 16
- asrs r4, r0, 16
- mov r10, r4
- adds r0, r4, 0
- bl sub_80A27CC
- lsls r0, 24
- cmp r0, 0
- beq _0802FCCE
- cmp r4, 0x13
- beq _0802FCCE
- cmp r4, 0x1D
- beq _0802FCCE
- ldr r7, _0802FC88
- ldr r1, [r7]
- mov r0, r8
- lsls r6, r0, 1
- adds r0, r1, r6
- strh r4, [r0]
- adds r1, 0x5C
- add r1, r8
- movs r0, 0
- strb r0, [r1]
- ldr r0, [r7]
- adds r0, 0x8A
- add r0, r8
- movs r1, 0
- strb r1, [r0]
- ldr r0, [r7]
- adds r0, 0xB8
- ldrb r0, [r0]
- cmp r0, 0
- beq _0802FCCA
- cmp r4, 0xD
- beq _0802FCCA
- adds r0, r4, 0
- bl sub_80A270C
- lsls r0, 24
- lsrs r0, 24
- mov r9, r0
- movs r5, 0
- cmp r4, 0x1E
- bgt _0802FCA8
- adds r0, r4, 0
- bl sub_8097384
- lsls r0, 24
- cmp r0, 0
- bne _0802FCA6
- cmp r4, 0x6
- bne _0802FC8C
- movs r0, 0x13
- bl sub_8097384
- lsls r0, 24
- cmp r0, 0
- beq _0802FCA8
- ldr r0, [r7]
- adds r0, r6
- movs r1, 0x13
- b _0802FCA4
- .align 2, 0
-_0802FC88: .4byte gUnknown_203B314
-_0802FC8C:
- mov r0, r10
- cmp r0, 0xA
- bne _0802FCA8
- movs r0, 0x1D
- bl sub_8097384
- lsls r0, 24
- cmp r0, 0
- beq _0802FCA8
- ldr r0, [r7]
- adds r0, r6
- movs r1, 0x1D
-_0802FCA4:
- strh r1, [r0]
-_0802FCA6:
- movs r5, 0x1
-_0802FCA8:
- ldr r4, _0802FCEC
- ldr r0, [r4]
- adds r0, 0x5C
- add r0, r8
- strb r5, [r0]
- cmp r5, 0
- bne _0802FCCA
- mov r0, r9
- bl sub_80969D0
- cmp r0, 0
- ble _0802FCCA
- ldr r0, [r4]
- adds r0, 0x8A
- add r0, r8
- movs r1, 0x1
- strb r1, [r0]
-_0802FCCA:
- movs r1, 0x1
- add r8, r1
-_0802FCCE:
- ldr r0, [sp]
- adds r0, 0x1
- str r0, [sp]
- cmp r0, 0x2D
- ble _0802FC08
- mov r0, r8
- add sp, 0x4
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r1}
- bx r1
- .align 2, 0
-_0802FCEC: .4byte gUnknown_203B314
- thumb_func_end sub_802FBF4
-
.align 2,0
diff --git a/asm/wonder_mail_3_mid.s b/asm/wonder_mail_3_mid.s
new file mode 100644
index 0000000..208805c
--- /dev/null
+++ b/asm/wonder_mail_3_mid.s
@@ -0,0 +1,1740 @@
+ .include "constants/gba_constants.inc"
+ .include "asm/macros.inc"
+
+ .syntax unified
+
+ .text
+
+ thumb_func_start sub_802EF48
+sub_802EF48:
+ push {r4,lr}
+ ldr r4, _0802EF68
+ movs r0, 0xA8
+ lsls r0, 1
+ movs r1, 0x8
+ bl MemoryAlloc
+ str r0, [r4]
+ movs r0, 0
+ bl sub_802EFEC
+ movs r0, 0x1
+ pop {r4}
+ pop {r1}
+ bx r1
+ .align 2, 0
+_0802EF68: .4byte gUnknown_203B30C
+ thumb_func_end sub_802EF48
+
+ thumb_func_start sub_802EF6C
+sub_802EF6C:
+ push {lr}
+ ldr r0, _0802EF84
+ ldr r0, [r0]
+ ldr r0, [r0]
+ cmp r0, 0x5
+ bhi _0802EFBA
+ lsls r0, 2
+ ldr r1, _0802EF88
+ adds r0, r1
+ ldr r0, [r0]
+ mov pc, r0
+ .align 2, 0
+_0802EF84: .4byte gUnknown_203B30C
+_0802EF88: .4byte _0802EF8C
+ .align 2, 0
+_0802EF8C:
+ .4byte _0802EFA4
+ .4byte _0802EFA4
+ .4byte _0802EFAA
+ .4byte _0802EFB0
+ .4byte _0802EFB6
+ .4byte _0802EFBA
+_0802EFA4:
+ bl sub_802F148
+ b _0802EFBE
+_0802EFAA:
+ bl sub_802F184
+ b _0802EFBE
+_0802EFB0:
+ bl sub_802F1E8
+ b _0802EFBE
+_0802EFB6:
+ movs r0, 0x3
+ b _0802EFC0
+_0802EFBA:
+ movs r0, 0x2
+ b _0802EFC0
+_0802EFBE:
+ movs r0, 0
+_0802EFC0:
+ pop {r1}
+ bx r1
+ thumb_func_end sub_802EF6C
+
+ thumb_func_start sub_802EFC4
+sub_802EFC4:
+ ldr r0, _0802EFCC
+ ldr r0, [r0]
+ ldrb r0, [r0, 0x4]
+ bx lr
+ .align 2, 0
+_0802EFCC: .4byte gUnknown_203B30C
+ thumb_func_end sub_802EFC4
+
+ thumb_func_start sub_802EFD0
+sub_802EFD0:
+ push {r4,lr}
+ ldr r4, _0802EFE8
+ ldr r0, [r4]
+ cmp r0, 0
+ beq _0802EFE2
+ bl MemoryFree
+ movs r0, 0
+ str r0, [r4]
+_0802EFE2:
+ pop {r4}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_0802EFE8: .4byte gUnknown_203B30C
+ thumb_func_end sub_802EFD0
+
+ thumb_func_start sub_802EFEC
+sub_802EFEC:
+ push {lr}
+ ldr r1, _0802F000
+ ldr r1, [r1]
+ str r0, [r1]
+ bl sub_802F004
+ bl sub_802F088
+ pop {r0}
+ bx r0
+ .align 2, 0
+_0802F000: .4byte gUnknown_203B30C
+ thumb_func_end sub_802EFEC
+
+ thumb_func_start sub_802F004
+sub_802F004:
+ push {r4-r7,lr}
+ ldr r4, _0802F03C
+ ldr r0, [r4]
+ adds r0, 0xF0
+ bl sub_8006518
+ ldr r0, [r4]
+ ldr r0, [r0]
+ cmp r0, 0x2
+ bne _0802F044
+ bl sub_802F108
+ ldr r2, [r4]
+ movs r0, 0x90
+ lsls r0, 1
+ adds r2, r0
+ ldr r1, _0802F040
+ ldm r1!, {r3,r5,r6}
+ stm r2!, {r3,r5,r6}
+ ldm r1!, {r3,r5,r7}
+ stm r2!, {r3,r5,r7}
+ ldr r1, [r4]
+ adds r0, r1, r0
+ adds r1, 0xB0
+ bl sub_8012CAC
+ b _0802F066
+ .align 2, 0
+_0802F03C: .4byte gUnknown_203B30C
+_0802F040: .4byte gUnknown_80E03F4
+_0802F044:
+ mov r12, r4
+ ldr r4, _0802F080
+ movs r2, 0
+ movs r3, 0x3
+_0802F04C:
+ mov r6, r12
+ ldr r1, [r6]
+ adds r1, r2
+ adds r1, 0xF0
+ adds r0, r4, 0
+ ldm r0!, {r5-r7}
+ stm r1!, {r5-r7}
+ ldm r0!, {r5-r7}
+ stm r1!, {r5-r7}
+ adds r2, 0x18
+ subs r3, 0x1
+ cmp r3, 0
+ bge _0802F04C
+_0802F066:
+ bl ResetUnusedInputStruct
+ ldr r0, _0802F084
+ ldr r0, [r0]
+ adds r0, 0xF0
+ movs r1, 0x1
+ movs r2, 0x1
+ bl sub_800641C
+ pop {r4-r7}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_0802F080: .4byte gUnknown_80E03C4
+_0802F084: .4byte gUnknown_203B30C
+ thumb_func_end sub_802F004
+
+ thumb_func_start sub_802F088
+sub_802F088:
+ push {r4-r6,lr}
+ sub sp, 0x8
+ ldr r6, _0802F0A0
+ ldr r0, [r6]
+ ldr r5, [r0]
+ cmp r5, 0x1
+ beq _0802F0B6
+ cmp r5, 0x1
+ bgt _0802F0A4
+ cmp r5, 0
+ beq _0802F0AE
+ b _0802F100
+ .align 2, 0
+_0802F0A0: .4byte gUnknown_203B30C
+_0802F0A4:
+ cmp r5, 0x2
+ beq _0802F0BE
+ cmp r5, 0x3
+ beq _0802F0DA
+ b _0802F100
+_0802F0AE:
+ movs r0, 0
+ bl sub_802CDD4
+ b _0802F100
+_0802F0B6:
+ movs r0, 0x1
+ bl sub_802CED8
+ b _0802F100
+_0802F0BE:
+ bl sub_802CFD0
+ ldr r1, [r6]
+ adds r0, r1, 0
+ adds r0, 0x60
+ adds r1, 0xB0
+ movs r2, 0x3
+ str r2, [sp]
+ str r5, [sp, 0x4]
+ movs r2, 0
+ movs r3, 0
+ bl sub_8012D60
+ b _0802F100
+_0802F0DA:
+ ldrb r0, [r0, 0x4]
+ bl sub_803B344
+ adds r4, r0, 0
+ ldr r1, [r6]
+ adds r1, 0x8
+ bl sub_803B35C
+ ldr r0, [r6]
+ str r5, [r0, 0x8]
+ adds r0, 0x4C
+ movs r1, 0
+ strb r1, [r0]
+ ldr r0, [r6]
+ ldr r1, [r4, 0x18]
+ str r1, [r0, 0x58]
+ adds r0, 0x8
+ bl sub_802DE84
+_0802F100:
+ add sp, 0x8
+ pop {r4-r6}
+ pop {r0}
+ bx r0
+ thumb_func_end sub_802F088
+
+ thumb_func_start sub_802F108
+sub_802F108:
+ ldr r0, _0802F13C
+ ldr r0, [r0]
+ mov r12, r0
+ movs r3, 0
+ mov r1, r12
+ adds r1, 0xB0
+ ldr r0, _0802F140
+ str r0, [r1]
+ adds r1, 0x4
+ movs r0, 0x2
+ str r0, [r1]
+ movs r2, 0x1
+ adds r1, 0x4
+ ldr r0, _0802F144
+ ldr r0, [r0]
+ str r0, [r1]
+ adds r1, 0x4
+ movs r0, 0x3
+ str r0, [r1]
+ mov r0, r12
+ adds r0, 0xC0
+ str r3, [r0]
+ adds r0, 0x4
+ str r2, [r0]
+ bx lr
+ .align 2, 0
+_0802F13C: .4byte gUnknown_203B30C
+_0802F140: .4byte gUnknown_80E040C
+_0802F144: .4byte gUnknown_80D4970
+ thumb_func_end sub_802F108
+
+ thumb_func_start sub_802F148
+sub_802F148:
+ push {lr}
+ movs r0, 0x1
+ bl sub_802CE5C
+ cmp r0, 0x2
+ beq _0802F174
+ cmp r0, 0x2
+ bcc _0802F17E
+ cmp r0, 0x3
+ bne _0802F17E
+ bl sub_802CEBC
+ ldr r1, _0802F170
+ ldr r1, [r1]
+ strb r0, [r1, 0x4]
+ movs r0, 0x2
+ bl sub_802EFEC
+ b _0802F17E
+ .align 2, 0
+_0802F170: .4byte gUnknown_203B30C
+_0802F174:
+ bl sub_802CF14
+ movs r0, 0x5
+ bl sub_802EFEC
+_0802F17E:
+ pop {r0}
+ bx r0
+ thumb_func_end sub_802F148
+
+ thumb_func_start sub_802F184
+sub_802F184:
+ push {r4,lr}
+ sub sp, 0x4
+ movs r0, 0
+ str r0, [sp]
+ bl sub_802CE5C
+ ldr r4, _0802F1BC
+ ldr r0, [r4]
+ adds r0, 0x60
+ bl sub_8012FD8
+ lsls r0, 24
+ cmp r0, 0
+ bne _0802F1AA
+ ldr r0, [r4]
+ adds r0, 0x60
+ mov r1, sp
+ bl sub_8013114
+_0802F1AA:
+ ldr r0, [sp]
+ cmp r0, 0x2
+ beq _0802F1C6
+ cmp r0, 0x2
+ bgt _0802F1C0
+ cmp r0, 0x1
+ beq _0802F1DA
+ b _0802F1E0
+ .align 2, 0
+_0802F1BC: .4byte gUnknown_203B30C
+_0802F1C0:
+ cmp r0, 0x3
+ beq _0802F1D2
+ b _0802F1E0
+_0802F1C6:
+ bl sub_802CF14
+ movs r0, 0x4
+ bl sub_802EFEC
+ b _0802F1E0
+_0802F1D2:
+ movs r0, 0x3
+ bl sub_802EFEC
+ b _0802F1E0
+_0802F1DA:
+ movs r0, 0x1
+ bl sub_802EFEC
+_0802F1E0:
+ add sp, 0x4
+ pop {r4}
+ pop {r0}
+ bx r0
+ thumb_func_end sub_802F184
+
+ thumb_func_start sub_802F1E8
+sub_802F1E8:
+ push {lr}
+ bl sub_802DEE0
+ cmp r0, 0x1
+ bls _0802F200
+ cmp r0, 0x3
+ bhi _0802F200
+ bl sub_802DF24
+ movs r0, 0x1
+ bl sub_802EFEC
+_0802F200:
+ pop {r0}
+ bx r0
+ thumb_func_end sub_802F1E8
+
+ thumb_func_start sub_802F204
+sub_802F204:
+ push {r4-r6,lr}
+ adds r6, r0, 0
+ lsls r4, r1, 24
+ lsrs r4, 24
+ bl ResetUnusedInputStruct
+ movs r0, 0
+ movs r1, 0x1
+ movs r2, 0x1
+ bl sub_800641C
+ ldr r5, _0802F28C
+ movs r0, 0x84
+ movs r1, 0x8
+ bl MemoryAlloc
+ str r0, [r5]
+ str r6, [r0, 0x10]
+ movs r6, 0
+ str r6, [r0, 0xC]
+ strb r4, [r0, 0x8]
+ ldr r1, [r5]
+ ldr r0, _0802F290
+ ldr r1, [r1, 0x10]
+ bl strcpy
+ ldr r4, _0802F294
+ bl sub_808D33C
+ adds r1, r0, 0
+ adds r0, r4, 0
+ bl sub_808DA34
+ ldr r0, [r5]
+ ldr r0, [r0, 0x10]
+ movs r1, 0x14
+ ldrsh r0, [r0, r1]
+ bl GetDialogueSpriteDataPtr
+ ldr r1, [r5]
+ str r0, [r1, 0x14]
+ str r6, [r1, 0x18]
+ adds r1, 0x20
+ strb r6, [r1]
+ ldr r0, [r5]
+ adds r0, 0x21
+ strb r6, [r0]
+ ldr r0, [r5]
+ adds r0, 0x22
+ strb r6, [r0]
+ ldr r5, [r5]
+ movs r0, 0x2
+ strh r0, [r5, 0x1C]
+ movs r0, 0x8
+ strh r0, [r5, 0x1E]
+ ldr r0, [r5, 0x14]
+ cmp r0, 0
+ beq _0802F27C
+ ldr r0, [r0, 0x4]
+ str r0, [r5, 0x18]
+_0802F27C:
+ movs r0, 0
+ bl sub_802F2E8
+ movs r0, 0x1
+ pop {r4-r6}
+ pop {r1}
+ bx r1
+ .align 2, 0
+_0802F28C: .4byte gUnknown_203B310
+_0802F290: .4byte gUnknown_202E5D8
+_0802F294: .4byte gAvailablePokemonNames
+ thumb_func_end sub_802F204
+
+ thumb_func_start sub_802F298
+sub_802F298:
+ push {lr}
+ ldr r0, _0802F2AC
+ ldr r0, [r0]
+ ldr r0, [r0]
+ cmp r0, 0x5
+ beq _0802F2B0
+ cmp r0, 0x9
+ bne _0802F2B6
+ movs r0, 0x3
+ b _0802F2BC
+ .align 2, 0
+_0802F2AC: .4byte gUnknown_203B310
+_0802F2B0:
+ bl sub_802F6FC
+ b _0802F2BA
+_0802F2B6:
+ bl sub_802F718
+_0802F2BA:
+ movs r0, 0
+_0802F2BC:
+ pop {r1}
+ bx r1
+ thumb_func_end sub_802F298
+
+ thumb_func_start sub_802F2C0
+sub_802F2C0:
+ push {r4,lr}
+ ldr r4, _0802F2E4
+ ldr r0, [r4]
+ cmp r0, 0
+ beq _0802F2DE
+ ldr r0, [r0, 0x14]
+ cmp r0, 0
+ beq _0802F2D4
+ bl CloseFile
+_0802F2D4:
+ ldr r0, [r4]
+ bl MemoryFree
+ movs r0, 0
+ str r0, [r4]
+_0802F2DE:
+ pop {r4}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_0802F2E4: .4byte gUnknown_203B310
+ thumb_func_end sub_802F2C0
+
+ thumb_func_start sub_802F2E8
+sub_802F2E8:
+ push {lr}
+ ldr r1, _0802F2FC
+ ldr r1, [r1]
+ str r0, [r1]
+ bl sub_802F300
+ bl HandleMissionReward
+ pop {r0}
+ bx r0
+ .align 2, 0
+_0802F2FC: .4byte gUnknown_203B310
+ thumb_func_end sub_802F2E8
+
+ thumb_func_start sub_802F300
+sub_802F300:
+ push {r4-r7,lr}
+ ldr r4, _0802F350
+ ldr r1, [r4]
+ ldr r0, [r1]
+ cmp r0, 0
+ bne _0802F348
+ adds r0, r1, 0
+ adds r0, 0x24
+ bl sub_8006518
+ mov r12, r4
+ ldr r4, _0802F354
+ movs r3, 0
+ movs r2, 0x3
+_0802F31C:
+ mov r0, r12
+ ldr r1, [r0]
+ adds r1, r3
+ adds r1, 0x24
+ adds r0, r4, 0
+ ldm r0!, {r5-r7}
+ stm r1!, {r5-r7}
+ ldm r0!, {r5-r7}
+ stm r1!, {r5-r7}
+ adds r3, 0x18
+ subs r2, 0x1
+ cmp r2, 0
+ bge _0802F31C
+ bl ResetUnusedInputStruct
+ ldr r0, _0802F350
+ ldr r0, [r0]
+ adds r0, 0x24
+ movs r1, 0x1
+ movs r2, 0x1
+ bl sub_800641C
+_0802F348:
+ pop {r4-r7}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_0802F350: .4byte gUnknown_203B310
+_0802F354: .4byte gUnknown_80E041C
+ thumb_func_end sub_802F300
+
+ thumb_func_start HandleMissionReward
+HandleMissionReward:
+ push {r4-r6,lr}
+ sub sp, 0x10
+ ldr r1, _0802F374
+ ldr r0, [r1]
+ ldr r0, [r0]
+ adds r6, r1, 0
+ cmp r0, 0x9
+ bls _0802F36A
+ b _0802F6E4
+_0802F36A:
+ lsls r0, 2
+ ldr r1, _0802F378
+ adds r0, r1
+ ldr r0, [r0]
+ mov pc, r0
+ .align 2, 0
+_0802F374: .4byte gUnknown_203B310
+_0802F378: .4byte _0802F37C
+ .align 2, 0
+_0802F37C:
+ .4byte _0802F3A4
+ .4byte _0802F3E8
+ .4byte _0802F444
+ .4byte _0802F494
+ .4byte _0802F524
+ .4byte _0802F5CC
+ .4byte _0802F614
+ .4byte _0802F630
+ .4byte _0802F6A4
+ .4byte _0802F6E4
+_0802F3A4:
+ ldr r2, [r6]
+ ldr r0, [r2, 0x10]
+ ldr r1, [r0, 0x18]
+ cmp r1, 0
+ bne _0802F3B6
+ movs r0, 0x2
+ bl sub_802F2E8
+ b _0802F6E4
+_0802F3B6:
+ ldr r0, _0802F3D4
+ str r1, [r0]
+ ldrb r0, [r2, 0x8]
+ cmp r0, 0
+ beq _0802F3E0
+ ldr r0, _0802F3D8
+ adds r2, 0x14
+ ldr r3, _0802F3DC
+ movs r1, 0
+ bl sub_80141B4
+ ldr r1, [r6]
+ movs r0, 0x1
+ str r0, [r1, 0x4]
+ b _0802F6E4
+ .align 2, 0
+_0802F3D4: .4byte gUnknown_202DE30
+_0802F3D8: .4byte gUnknown_80E0434
+_0802F3DC: .4byte 0x0000010d
+_0802F3E0:
+ movs r0, 0x1
+ bl sub_802F2E8
+ b _0802F6E4
+_0802F3E8:
+ movs r0, 0xCB
+ bl PlaySound
+ ldr r0, _0802F414
+ ldr r0, [r0]
+ ldr r0, [r0, 0x10]
+ ldr r0, [r0, 0x18]
+ bl AddToTeamMoney
+ movs r0, 0
+ bl sub_808D544
+ cmp r0, 0x1
+ bgt _0802F420
+ ldr r0, _0802F418
+ ldr r3, _0802F41C
+ movs r1, 0
+ movs r2, 0
+ bl sub_80141B4
+ b _0802F42C
+ .align 2, 0
+_0802F414: .4byte gUnknown_203B310
+_0802F418: .4byte gUnknown_80E045C
+_0802F41C: .4byte 0x00000101
+_0802F420:
+ ldr r0, _0802F438
+ ldr r3, _0802F43C
+ movs r1, 0
+ movs r2, 0
+ bl sub_80141B4
+_0802F42C:
+ ldr r0, _0802F440
+ ldr r1, [r0]
+ movs r0, 0x2
+ str r0, [r1, 0x4]
+ b _0802F6E4
+ .align 2, 0
+_0802F438: .4byte gUnknown_80E0484
+_0802F43C: .4byte 0x00000101
+_0802F440: .4byte gUnknown_203B310
+_0802F444:
+ ldr r0, [r6]
+ ldr r0, [r0, 0x10]
+ adds r1, r0, 0
+ adds r1, 0x20
+ ldrb r0, [r1]
+ cmp r0, 0
+ bne _0802F45A
+ movs r0, 0x4
+ bl sub_802F2E8
+ b _0802F6E4
+_0802F45A:
+ ldr r0, _0802F480
+ ldrb r1, [r1]
+ movs r2, 0
+ bl sub_8092578
+ ldr r2, [r6]
+ ldrb r0, [r2, 0x8]
+ cmp r0, 0
+ beq _0802F48C
+ ldr r0, _0802F484
+ adds r2, 0x14
+ ldr r3, _0802F488
+ movs r1, 0
+ bl sub_80141B4
+ ldr r1, [r6]
+ movs r0, 0x3
+ str r0, [r1, 0x4]
+ b _0802F6E4
+ .align 2, 0
+_0802F480: .4byte gUnknown_202E628
+_0802F484: .4byte gUnknown_80E04B4
+_0802F488: .4byte 0x0000010d
+_0802F48C:
+ movs r0, 0x3
+ bl sub_802F2E8
+ b _0802F6E4
+_0802F494:
+ ldr r4, _0802F4B4
+ ldr r0, [r4]
+ ldr r0, [r0, 0x10]
+ adds r0, 0x20
+ ldrb r0, [r0]
+ bl GetFriendAreaStatus
+ lsls r0, 24
+ cmp r0, 0
+ beq _0802F4BC
+ movs r0, 0xFA
+ lsls r0, 2
+ bl AddToTeamMoney
+ ldr r0, _0802F4B8
+ b _0802F4DA
+ .align 2, 0
+_0802F4B4: .4byte gUnknown_203B310
+_0802F4B8: .4byte gUnknown_80E04F4
+_0802F4BC:
+ movs r0, 0
+ bl sub_808D544
+ cmp r0, 0x1
+ bgt _0802F4F0
+ ldr r0, [r4]
+ ldr r0, [r0, 0x10]
+ adds r0, 0x20
+ ldrb r0, [r0]
+ bl UnlockFriendArea
+ movs r0, 0xCE
+ bl PlaySound
+ ldr r0, _0802F4E8
+_0802F4DA:
+ ldr r3, _0802F4EC
+ movs r1, 0
+ movs r2, 0
+ bl sub_80141B4
+ b _0802F50E
+ .align 2, 0
+_0802F4E8: .4byte gUnknown_80E05C0
+_0802F4EC: .4byte 0x00000101
+_0802F4F0:
+ ldr r0, [r4]
+ ldr r0, [r0, 0x10]
+ adds r0, 0x20
+ ldrb r0, [r0]
+ bl UnlockFriendArea
+ movs r0, 0xCE
+ bl PlaySound
+ ldr r0, _0802F518
+ ldr r3, _0802F51C
+ movs r1, 0
+ movs r2, 0
+ bl sub_80141B4
+_0802F50E:
+ ldr r0, _0802F520
+ ldr r1, [r0]
+ movs r0, 0x4
+ str r0, [r1, 0x4]
+ b _0802F6E4
+ .align 2, 0
+_0802F518: .4byte gUnknown_80E05FC
+_0802F51C: .4byte 0x00000101
+_0802F520: .4byte gUnknown_203B310
+_0802F524:
+ ldr r0, [r6]
+ ldr r0, [r0, 0x10]
+ ldrb r2, [r0, 0x1C]
+ cmp r2, 0
+ beq _0802F628
+ ldr r0, [r0, 0x18]
+ cmp r0, 0
+ bne _0802F620
+ lsls r2, 16
+ ldr r1, _0802F564
+ ldr r0, [sp, 0xC]
+ ands r0, r1
+ orrs r0, r2
+ str r0, [sp, 0xC]
+ lsrs r0, 16
+ lsls r0, 24
+ lsrs r0, 24
+ bl IsThrowableItem
+ lsls r0, 24
+ cmp r0, 0
+ beq _0802F56C
+ ldr r0, [r6]
+ ldr r0, [r0, 0x10]
+ ldrb r1, [r0, 0x1F]
+ lsls r1, 8
+ ldr r2, _0802F568
+ ldr r0, [sp, 0xC]
+ ands r0, r2
+ orrs r0, r1
+ b _0802F572
+ .align 2, 0
+_0802F564: .4byte 0xff00ffff
+_0802F568: .4byte 0xffff00ff
+_0802F56C:
+ ldr r1, _0802F5B4
+ ldr r0, [sp, 0xC]
+ ands r0, r1
+_0802F572:
+ str r0, [sp, 0xC]
+ ldr r1, _0802F5B8
+ ldr r0, [sp, 0xC]
+ ands r0, r1
+ movs r2, 0x1
+ orrs r0, r2
+ str r0, [sp, 0xC]
+ movs r1, 0
+ str r1, [sp]
+ mov r0, sp
+ strb r1, [r0, 0x4]
+ strb r2, [r0, 0x8]
+ ldr r0, _0802F5BC
+ add r1, sp, 0xC
+ mov r2, sp
+ bl sub_8090E14
+ ldr r4, _0802F5C0
+ ldr r2, [r4]
+ ldrb r0, [r2, 0x8]
+ cmp r0, 0
+ beq _0802F620
+ ldr r0, _0802F5C4
+ adds r2, 0x14
+ ldr r3, _0802F5C8
+ movs r1, 0
+ bl sub_80141B4
+ ldr r1, [r4]
+ movs r0, 0x5
+ str r0, [r1, 0x4]
+ b _0802F6E4
+ .align 2, 0
+_0802F5B4: .4byte 0xffff00ff
+_0802F5B8: .4byte 0xffffff00
+_0802F5BC: .4byte gUnknown_202DEA8
+_0802F5C0: .4byte gUnknown_203B310
+_0802F5C4: .4byte gUnknown_80E0640
+_0802F5C8: .4byte 0x0000010d
+_0802F5CC:
+ ldr r0, [r6]
+ ldr r2, [r0, 0x10]
+ adds r1, r2, 0
+ adds r1, 0x1C
+ ldr r3, [r0, 0xC]
+ adds r1, r3
+ ldrb r0, [r1]
+ cmp r0, 0
+ bne _0802F5E6
+ movs r0, 0x6
+ bl sub_802F2E8
+ b _0802F6E4
+_0802F5E6:
+ cmp r3, 0
+ bne _0802F5FC
+ ldr r0, [r2, 0x18]
+ cmp r0, 0
+ bne _0802F5FC
+ ldrb r1, [r2, 0x1C]
+ ldrb r2, [r2, 0x1F]
+ movs r0, 0
+ bl sub_801B60C
+ b _0802F6E4
+_0802F5FC:
+ ldr r1, [r6]
+ ldr r2, [r1, 0x10]
+ adds r0, r2, 0
+ adds r0, 0x1C
+ ldr r1, [r1, 0xC]
+ adds r0, r1
+ ldrb r1, [r0]
+ ldrb r2, [r2, 0x1F]
+ movs r0, 0x1
+ bl sub_801B60C
+ b _0802F6E4
+_0802F614:
+ ldr r1, [r6]
+ ldr r0, [r1, 0xC]
+ adds r0, 0x1
+ str r0, [r1, 0xC]
+ cmp r0, 0x2
+ bgt _0802F628
+_0802F620:
+ movs r0, 0x5
+ bl sub_802F2E8
+ b _0802F6E4
+_0802F628:
+ movs r0, 0x7
+ bl sub_802F2E8
+ b _0802F6E4
+_0802F630:
+ adds r5, r6, 0
+ ldr r0, [r5]
+ ldr r0, [r0, 0x10]
+ ldr r0, [r0, 0x24]
+ cmp r0, 0
+ bne _0802F644
+ movs r0, 0x9
+ bl sub_802F2E8
+ b _0802F6E4
+_0802F644:
+ bl GetRescueTeamRank
+ ldr r1, [r5]
+ strb r0, [r1, 0x9]
+ ldr r0, [r5]
+ ldr r0, [r0, 0x10]
+ ldr r0, [r0, 0x24]
+ bl AddToTeamRankPts
+ movs r0, 0xCB
+ bl PlaySound
+ ldr r4, [r5]
+ bl GetRescueTeamRank
+ ldrb r1, [r4, 0x9]
+ lsls r0, 24
+ lsrs r0, 24
+ cmp r1, r0
+ beq _0802F672
+ ldr r1, [r5]
+ movs r0, 0x8
+ b _0802F676
+_0802F672:
+ ldr r1, [r6]
+ movs r0, 0x9
+_0802F676:
+ str r0, [r1, 0x4]
+ ldr r1, _0802F694
+ ldr r0, _0802F698
+ ldr r0, [r0]
+ ldr r0, [r0, 0x10]
+ ldr r0, [r0, 0x24]
+ str r0, [r1]
+ ldr r0, _0802F69C
+ ldr r3, _0802F6A0
+ movs r1, 0
+ movs r2, 0
+ bl sub_80141B4
+ b _0802F6E4
+ .align 2, 0
+_0802F694: .4byte gUnknown_202DE30
+_0802F698: .4byte gUnknown_203B310
+_0802F69C: .4byte gUnknown_80E0670
+_0802F6A0: .4byte 0x00000101
+_0802F6A4:
+ movs r0, 0xC9
+ bl PlaySound
+ ldr r0, _0802F6EC
+ ldr r1, [r0]
+ movs r0, 0x9
+ str r0, [r1, 0x4]
+ ldrb r0, [r1, 0x9]
+ bl GetTeamRankString
+ adds r1, r0, 0
+ ldr r4, _0802F6F0
+ adds r0, r4, 0
+ bl strcpy
+ bl GetRescueTeamRank
+ lsls r0, 24
+ lsrs r0, 24
+ bl GetTeamRankString
+ adds r1, r0, 0
+ adds r4, 0x50
+ adds r0, r4, 0
+ bl strcpy
+ ldr r0, _0802F6F4
+ ldr r3, _0802F6F8
+ movs r1, 0
+ movs r2, 0
+ bl sub_80141B4
+_0802F6E4:
+ add sp, 0x10
+ pop {r4-r6}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_0802F6EC: .4byte gUnknown_203B310
+_0802F6F0: .4byte gUnknown_202E038
+_0802F6F4: .4byte gUnknown_80E06A8
+_0802F6F8: .4byte 0x00000101
+ thumb_func_end HandleMissionReward
+
+ thumb_func_start sub_802F6FC
+sub_802F6FC:
+ push {lr}
+ bl sub_801B6AC
+ cmp r0, 0x1
+ bls _0802F714
+ cmp r0, 0x3
+ bhi _0802F714
+ bl sub_801B72C
+ movs r0, 0x6
+ bl sub_802F2E8
+_0802F714:
+ pop {r0}
+ bx r0
+ thumb_func_end sub_802F6FC
+
+ thumb_func_start sub_802F718
+sub_802F718:
+ push {lr}
+ sub sp, 0x4
+ mov r0, sp
+ bl sub_80144A4
+ cmp r0, 0
+ bne _0802F730
+ ldr r0, _0802F738
+ ldr r0, [r0]
+ ldr r0, [r0, 0x4]
+ bl sub_802F2E8
+_0802F730:
+ add sp, 0x4
+ pop {r0}
+ bx r0
+ .align 2, 0
+_0802F738: .4byte gUnknown_203B310
+ thumb_func_end sub_802F718
+
+ thumb_func_start sub_802F73C
+sub_802F73C:
+ push {r4-r7,lr}
+ mov r7, r8
+ push {r7}
+ adds r5, r0, 0
+ adds r7, r1, 0
+ mov r8, r2
+ lsls r3, 24
+ lsrs r6, r3, 24
+ bl sub_802FCF0
+ lsls r0, 24
+ cmp r0, 0
+ beq _0802F75A
+ movs r0, 0
+ b _0802F836
+_0802F75A:
+ ldr r4, _0802F7AC
+ ldr r0, [r4]
+ cmp r0, 0
+ bne _0802F76E
+ movs r0, 0xAE
+ lsls r0, 1
+ movs r1, 0x8
+ bl MemoryAlloc
+ str r0, [r4]
+_0802F76E:
+ ldr r0, [r4]
+ adds r0, 0xB8
+ strb r6, [r0]
+ ldr r0, [r4]
+ adds r1, r0, 0
+ adds r1, 0xF0
+ str r5, [r1]
+ adds r2, r0, 0
+ adds r2, 0xF4
+ lsls r1, r5, 1
+ adds r1, r5
+ lsls r1, 3
+ adds r1, 0xF8
+ adds r1, r0, r1
+ str r1, [r2]
+ adds r0, 0xF8
+ bl sub_8006518
+ cmp r6, 0
+ beq _0802F7B4
+ ldr r1, [r4]
+ adds r0, r1, 0
+ adds r0, 0xF0
+ ldr r2, [r0]
+ lsls r0, r2, 1
+ adds r0, r2
+ lsls r0, 3
+ adds r1, r0
+ adds r1, 0xF8
+ ldr r0, _0802F7B0
+ b _0802F7C8
+ .align 2, 0
+_0802F7AC: .4byte gUnknown_203B314
+_0802F7B0: .4byte gUnknown_80E072C
+_0802F7B4:
+ ldr r1, [r4]
+ adds r0, r1, 0
+ adds r0, 0xF0
+ ldr r2, [r0]
+ lsls r0, r2, 1
+ adds r0, r2
+ lsls r0, 3
+ adds r1, r0
+ adds r1, 0xF8
+ ldr r0, _0802F840
+_0802F7C8:
+ ldm r0!, {r2-r4}
+ stm r1!, {r2-r4}
+ ldm r0!, {r2-r4}
+ stm r1!, {r2-r4}
+ ldr r4, _0802F844
+ ldr r2, [r4]
+ adds r0, r2, 0
+ adds r0, 0xF4
+ ldr r1, [r0]
+ movs r3, 0xAC
+ lsls r3, 1
+ adds r0, r2, r3
+ str r0, [r1, 0x14]
+ cmp r7, 0
+ beq _0802F7FC
+ adds r0, r2, 0
+ adds r0, 0xF0
+ ldr r1, [r0]
+ lsls r0, r1, 1
+ adds r0, r1
+ lsls r0, 3
+ subs r3, 0x58
+ adds r1, r2, r3
+ adds r1, r0
+ ldr r0, [r7]
+ str r0, [r1]
+_0802F7FC:
+ ldr r0, [r4]
+ adds r0, 0xF4
+ ldr r0, [r0]
+ mov r1, r8
+ bl sub_8012D08
+ bl ResetUnusedInputStruct
+ ldr r0, [r4]
+ adds r0, 0xF8
+ movs r1, 0x1
+ movs r2, 0x1
+ bl sub_800641C
+ ldr r4, [r4]
+ adds r4, 0xBC
+ bl sub_802FBF4
+ adds r1, r0, 0
+ adds r0, r4, 0
+ mov r2, r8
+ adds r3, r5, 0
+ bl sub_8013818
+ bl sub_802F9C0
+ bl sub_802FA50
+ movs r0, 0x1
+_0802F836:
+ pop {r3}
+ mov r8, r3
+ pop {r4-r7}
+ pop {r1}
+ bx r1
+ .align 2, 0
+_0802F840: .4byte gUnknown_80E0714
+_0802F844: .4byte gUnknown_203B314
+ thumb_func_end sub_802F73C
+
+ thumb_func_start sub_802F848
+sub_802F848:
+ push {r4,r5,lr}
+ lsls r0, 16
+ asrs r4, r0, 16
+ movs r3, 0
+ ldr r1, _0802F858
+ ldr r0, [r1]
+ b _0802F884
+ .align 2, 0
+_0802F858: .4byte gUnknown_203B314
+_0802F85C:
+ ldr r2, [r1]
+ lsls r0, r3, 1
+ adds r0, r2, r0
+ movs r5, 0
+ ldrsh r0, [r0, r5]
+ cmp r0, r4
+ bne _0802F880
+ adds r0, r2, 0
+ adds r0, 0xBC
+ adds r1, r3, 0
+ bl sub_8013878
+ bl sub_802F9C0
+ bl sub_802FA50
+ movs r0, 0x1
+ b _0802F89A
+_0802F880:
+ adds r3, 0x1
+ adds r0, r2, 0
+_0802F884:
+ adds r0, 0xDE
+ movs r2, 0
+ ldrsh r0, [r0, r2]
+ cmp r3, r0
+ blt _0802F85C
+ ldr r0, [r1]
+ adds r0, 0xBC
+ movs r1, 0
+ bl sub_8013878
+ movs r0, 0
+_0802F89A:
+ pop {r4,r5}
+ pop {r1}
+ bx r1
+ thumb_func_end sub_802F848
+
+ thumb_func_start sub_802F8A0
+sub_802F8A0:
+ push {r4,lr}
+ lsls r0, 24
+ cmp r0, 0
+ bne _0802F8BC
+ ldr r0, _0802F8B8
+ ldr r0, [r0]
+ adds r0, 0xBC
+ bl sub_8013660
+ movs r0, 0
+ b _0802F904
+ .align 2, 0
+_0802F8B8: .4byte gUnknown_203B314
+_0802F8BC:
+ ldr r4, _0802F8D8
+ ldr r0, [r4]
+ adds r0, 0xBC
+ bl GetKeyPress
+ cmp r0, 0x1
+ beq _0802F8DC
+ cmp r0, 0x2
+ bne _0802F8E6
+ movs r0, 0x1
+ bl PlayMenuSoundEffect
+ movs r0, 0x2
+ b _0802F904
+ .align 2, 0
+_0802F8D8: .4byte gUnknown_203B314
+_0802F8DC:
+ movs r0, 0
+ bl PlayMenuSoundEffect
+ movs r0, 0x3
+ b _0802F904
+_0802F8E6:
+ ldr r0, [r4]
+ adds r0, 0xBC
+ movs r1, 0x1
+ bl sub_80138B8
+ lsls r0, 24
+ cmp r0, 0
+ bne _0802F8FA
+ movs r0, 0
+ b _0802F904
+_0802F8FA:
+ bl sub_802F9C0
+ bl sub_802FA50
+ movs r0, 0x1
+_0802F904:
+ pop {r4}
+ pop {r1}
+ bx r1
+ thumb_func_end sub_802F8A0
+
+ thumb_func_start sub_802F90C
+sub_802F90C:
+ ldr r0, _0802F934
+ ldr r2, [r0]
+ adds r0, r2, 0
+ adds r0, 0xDA
+ movs r3, 0
+ ldrsh r1, [r0, r3]
+ subs r0, 0x2
+ movs r3, 0
+ ldrsh r0, [r0, r3]
+ muls r0, r1
+ adds r1, r2, 0
+ adds r1, 0xD4
+ movs r3, 0
+ ldrsh r1, [r1, r3]
+ adds r0, r1
+ lsls r0, 1
+ adds r0, r2, r0
+ movs r1, 0
+ ldrsh r0, [r0, r1]
+ bx lr
+ .align 2, 0
+_0802F934: .4byte gUnknown_203B314
+ thumb_func_end sub_802F90C
+
+ thumb_func_start sub_802F938
+sub_802F938:
+ push {r4,r5,lr}
+ adds r4, r0, 0
+ lsls r4, 24
+ lsrs r4, 24
+ bl sub_802FBF4
+ adds r1, r0, 0
+ ldr r5, _0802F970
+ ldr r0, [r5]
+ adds r2, r0, 0
+ adds r2, 0xDE
+ strh r1, [r2]
+ adds r0, 0xBC
+ bl sub_8013984
+ bl sub_802F9C0
+ bl sub_802FA50
+ cmp r4, 0
+ beq _0802F96A
+ ldr r0, [r5]
+ adds r0, 0xBC
+ bl AddMenuCursorSprite
+_0802F96A:
+ pop {r4,r5}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_0802F970: .4byte gUnknown_203B314
+ thumb_func_end sub_802F938
+
+ thumb_func_start sub_802F974
+sub_802F974:
+ push {r4,r5,lr}
+ ldr r4, _0802F9B8
+ ldr r2, [r4]
+ cmp r2, 0
+ beq _0802F9B2
+ adds r0, r2, 0
+ adds r0, 0xF0
+ ldr r0, [r0]
+ lsls r1, r0, 1
+ adds r1, r0
+ lsls r1, 3
+ adds r1, r2, r1
+ adds r1, 0xF8
+ ldr r0, _0802F9BC
+ ldm r0!, {r2,r3,r5}
+ stm r1!, {r2,r3,r5}
+ ldm r0!, {r2,r3,r5}
+ stm r1!, {r2,r3,r5}
+ bl ResetUnusedInputStruct
+ ldr r0, [r4]
+ adds r0, 0xF8
+ movs r1, 0x1
+ movs r2, 0x1
+ bl sub_800641C
+ ldr r0, [r4]
+ bl MemoryFree
+ movs r0, 0
+ str r0, [r4]
+_0802F9B2:
+ pop {r4,r5}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_0802F9B8: .4byte gUnknown_203B314
+_0802F9BC: .4byte gUnknown_80E06FC
+ thumb_func_end sub_802F974
+
+ thumb_func_start sub_802F9C0
+sub_802F9C0:
+ push {r4,r5,lr}
+ ldr r4, _0802FA44
+ ldr r0, [r4]
+ movs r1, 0xAC
+ lsls r1, 1
+ adds r0, r1
+ movs r2, 0
+ movs r1, 0x1
+ strb r1, [r0]
+ ldr r0, [r4]
+ ldr r3, _0802FA48
+ adds r0, r3
+ strb r2, [r0]
+ ldr r0, [r4]
+ adds r3, 0x1
+ adds r1, r0, r3
+ movs r0, 0x8
+ strb r0, [r1]
+ ldr r0, [r4]
+ ldr r1, _0802FA4C
+ adds r0, r1
+ strb r2, [r0]
+ ldr r0, [r4]
+ adds r0, 0xD6
+ movs r2, 0
+ ldrsh r0, [r0, r2]
+ movs r1, 0xC
+ bl sub_80095E4
+ adds r0, 0x2
+ lsls r0, 16
+ ldr r3, [r4]
+ adds r5, r3, 0
+ adds r5, 0xF0
+ ldr r2, [r5]
+ lsls r1, r2, 1
+ adds r1, r2
+ lsls r1, 3
+ adds r1, r3, r1
+ movs r2, 0x83
+ lsls r2, 1
+ adds r1, r2
+ asrs r2, r0, 16
+ lsrs r0, 16
+ strh r0, [r1]
+ ldr r1, [r5]
+ lsls r0, r1, 1
+ adds r0, r1
+ lsls r0, 3
+ adds r3, r0
+ adds r2, 0x2
+ movs r0, 0x84
+ lsls r0, 1
+ adds r3, r0
+ strh r2, [r3]
+ bl ResetUnusedInputStruct
+ ldr r0, [r4]
+ adds r0, 0xF8
+ movs r1, 0x1
+ movs r2, 0x1
+ bl sub_800641C
+ pop {r4,r5}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_0802FA44: .4byte gUnknown_203B314
+_0802FA48: .4byte 0x00000159
+_0802FA4C: .4byte 0x0000015b
+ thumb_func_end sub_802F9C0
+
+ thumb_func_start sub_802FA50
+sub_802FA50:
+ push {r4-r7,lr}
+ mov r7, r8
+ push {r7}
+ sub sp, 0x8
+ ldr r4, _0802FB1C
+ ldr r0, [r4]
+ adds r0, 0xF0
+ ldr r0, [r0]
+ bl sub_8008C54
+ ldr r0, [r4]
+ adds r0, 0xF0
+ ldr r0, [r0]
+ bl sub_80073B8
+ ldr r2, _0802FB20
+ ldr r0, [r4]
+ adds r0, 0xF0
+ ldr r3, [r0]
+ movs r0, 0
+ str r0, [sp]
+ movs r0, 0xA
+ movs r1, 0
+ bl xxx_call_draw_string
+ ldr r3, [r4]
+ movs r1, 0xAD
+ lsls r1, 1
+ adds r0, r3, r1
+ ldrb r0, [r0]
+ lsls r0, 3
+ adds r0, 0x4
+ adds r1, r3, 0
+ adds r1, 0xDA
+ movs r5, 0
+ ldrsh r2, [r1, r5]
+ adds r2, 0x1
+ movs r1, 0x7
+ str r1, [sp]
+ adds r1, r3, 0
+ adds r1, 0xF0
+ ldr r1, [r1]
+ str r1, [sp, 0x4]
+ movs r1, 0
+ movs r3, 0x2
+ bl sub_8012BC4
+ ldr r1, [r4]
+ adds r0, r1, 0
+ adds r0, 0xB8
+ ldrb r0, [r0]
+ cmp r0, 0
+ beq _0802FB78
+ movs r6, 0
+ adds r0, r1, 0
+ adds r0, 0xD6
+ movs r1, 0
+ ldrsh r0, [r0, r1]
+ cmp r6, r0
+ blt _0802FACA
+ b _0802FBD6
+_0802FACA:
+ mov r8, r4
+_0802FACC:
+ mov r2, r8
+ ldr r0, [r2]
+ adds r0, 0xBC
+ adds r1, r6, 0
+ bl sub_8013800
+ adds r5, r0, 0
+ mov r3, r8
+ ldr r2, [r3]
+ adds r0, r2, 0
+ adds r0, 0xDA
+ movs r3, 0
+ ldrsh r1, [r0, r3]
+ subs r0, 0x2
+ movs r3, 0
+ ldrsh r0, [r0, r3]
+ muls r0, r1
+ adds r1, r0, r6
+ lsls r0, r1, 1
+ adds r0, r2, r0
+ movs r3, 0
+ ldrsh r7, [r0, r3]
+ adds r0, r2, 0
+ adds r0, 0x5C
+ adds r0, r1
+ ldrb r4, [r0]
+ cmp r4, 0
+ beq _0802FB28
+ adds r0, r2, 0
+ adds r0, 0xF0
+ ldr r3, [r0]
+ movs r0, 0
+ str r0, [sp]
+ movs r0, 0xA
+ adds r1, r5, 0
+ ldr r2, _0802FB24
+ bl xxx_call_draw_string
+ b _0802FB46
+ .align 2, 0
+_0802FB1C: .4byte gUnknown_203B314
+_0802FB20: .4byte gUnknown_80E0744
+_0802FB24: .4byte gUnknown_80E0750
+_0802FB28:
+ adds r0, r2, 0
+ adds r0, 0x8A
+ adds r0, r1
+ ldrb r0, [r0]
+ cmp r0, 0
+ beq _0802FB46
+ adds r0, r2, 0
+ adds r0, 0xF0
+ ldr r3, [r0]
+ str r4, [sp]
+ movs r0, 0xA
+ adds r1, r5, 0
+ ldr r2, _0802FB74
+ bl xxx_call_draw_string
+_0802FB46:
+ adds r0, r7, 0
+ bl sub_80974A0
+ adds r2, r0, 0
+ mov r1, r8
+ ldr r0, [r1]
+ adds r0, 0xF0
+ ldr r3, [r0]
+ movs r0, 0
+ str r0, [sp]
+ movs r0, 0x18
+ adds r1, r5, 0
+ bl xxx_call_draw_string
+ adds r6, 0x1
+ mov r2, r8
+ ldr r0, [r2]
+ adds r0, 0xD6
+ movs r3, 0
+ ldrsh r0, [r0, r3]
+ cmp r6, r0
+ blt _0802FACC
+ b _0802FBD6
+ .align 2, 0
+_0802FB74: .4byte gUnknown_80E0754
+_0802FB78:
+ movs r6, 0
+ adds r0, r1, 0
+ adds r0, 0xD6
+ movs r5, 0
+ ldrsh r0, [r0, r5]
+ cmp r6, r0
+ bge _0802FBD6
+ adds r5, r4, 0
+_0802FB88:
+ ldr r0, [r5]
+ adds r0, 0xBC
+ adds r1, r6, 0
+ bl sub_8013800
+ adds r4, r0, 0
+ ldr r1, [r5]
+ adds r0, r1, 0
+ adds r0, 0xDA
+ movs r3, 0
+ ldrsh r2, [r0, r3]
+ subs r0, 0x2
+ movs r3, 0
+ ldrsh r0, [r0, r3]
+ muls r0, r2
+ adds r0, r6
+ lsls r0, 1
+ adds r1, r0
+ movs r2, 0
+ ldrsh r0, [r1, r2]
+ bl sub_80974A0
+ adds r2, r0, 0
+ ldr r0, [r5]
+ adds r0, 0xF0
+ ldr r3, [r0]
+ movs r0, 0
+ str r0, [sp]
+ movs r0, 0x8
+ adds r1, r4, 0
+ bl xxx_call_draw_string
+ adds r6, 0x1
+ ldr r0, [r5]
+ adds r0, 0xD6
+ movs r3, 0
+ ldrsh r0, [r0, r3]
+ cmp r6, r0
+ blt _0802FB88
+_0802FBD6:
+ ldr r0, _0802FBF0
+ ldr r0, [r0]
+ adds r0, 0xF0
+ ldr r0, [r0]
+ bl sub_80073E0
+ add sp, 0x8
+ pop {r3}
+ mov r8, r3
+ pop {r4-r7}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_0802FBF0: .4byte gUnknown_203B314
+ thumb_func_end sub_802FA50
+
+ thumb_func_start sub_802FBF4
+sub_802FBF4:
+ push {r4-r7,lr}
+ mov r7, r10
+ mov r6, r9
+ mov r5, r8
+ push {r5-r7}
+ sub sp, 0x4
+ movs r0, 0
+ mov r8, r0
+ movs r1, 0
+ str r1, [sp]
+_0802FC08:
+ ldr r1, [sp]
+ lsls r0, r1, 16
+ asrs r4, r0, 16
+ mov r10, r4
+ adds r0, r4, 0
+ bl sub_80A27CC
+ lsls r0, 24
+ cmp r0, 0
+ beq _0802FCCE
+ cmp r4, 0x13
+ beq _0802FCCE
+ cmp r4, 0x1D
+ beq _0802FCCE
+ ldr r7, _0802FC88
+ ldr r1, [r7]
+ mov r0, r8
+ lsls r6, r0, 1
+ adds r0, r1, r6
+ strh r4, [r0]
+ adds r1, 0x5C
+ add r1, r8
+ movs r0, 0
+ strb r0, [r1]
+ ldr r0, [r7]
+ adds r0, 0x8A
+ add r0, r8
+ movs r1, 0
+ strb r1, [r0]
+ ldr r0, [r7]
+ adds r0, 0xB8
+ ldrb r0, [r0]
+ cmp r0, 0
+ beq _0802FCCA
+ cmp r4, 0xD
+ beq _0802FCCA
+ adds r0, r4, 0
+ bl sub_80A270C
+ lsls r0, 24
+ lsrs r0, 24
+ mov r9, r0
+ movs r5, 0
+ cmp r4, 0x1E
+ bgt _0802FCA8
+ adds r0, r4, 0
+ bl sub_8097384
+ lsls r0, 24
+ cmp r0, 0
+ bne _0802FCA6
+ cmp r4, 0x6
+ bne _0802FC8C
+ movs r0, 0x13
+ bl sub_8097384
+ lsls r0, 24
+ cmp r0, 0
+ beq _0802FCA8
+ ldr r0, [r7]
+ adds r0, r6
+ movs r1, 0x13
+ b _0802FCA4
+ .align 2, 0
+_0802FC88: .4byte gUnknown_203B314
+_0802FC8C:
+ mov r0, r10
+ cmp r0, 0xA
+ bne _0802FCA8
+ movs r0, 0x1D
+ bl sub_8097384
+ lsls r0, 24
+ cmp r0, 0
+ beq _0802FCA8
+ ldr r0, [r7]
+ adds r0, r6
+ movs r1, 0x1D
+_0802FCA4:
+ strh r1, [r0]
+_0802FCA6:
+ movs r5, 0x1
+_0802FCA8:
+ ldr r4, _0802FCEC
+ ldr r0, [r4]
+ adds r0, 0x5C
+ add r0, r8
+ strb r5, [r0]
+ cmp r5, 0
+ bne _0802FCCA
+ mov r0, r9
+ bl sub_80969D0
+ cmp r0, 0
+ ble _0802FCCA
+ ldr r0, [r4]
+ adds r0, 0x8A
+ add r0, r8
+ movs r1, 0x1
+ strb r1, [r0]
+_0802FCCA:
+ movs r1, 0x1
+ add r8, r1
+_0802FCCE:
+ ldr r0, [sp]
+ adds r0, 0x1
+ str r0, [sp]
+ cmp r0, 0x2D
+ ble _0802FC08
+ mov r0, r8
+ add sp, 0x4
+ pop {r3-r5}
+ mov r8, r3
+ mov r9, r4
+ mov r10, r5
+ pop {r4-r7}
+ pop {r1}
+ bx r1
+ .align 2, 0
+_0802FCEC: .4byte gUnknown_203B314
+ thumb_func_end sub_802FBF4
+
+ .align 2,0
diff --git a/charmap.txt b/charmap.txt
index b45c14b..afc50a7 100644
--- a/charmap.txt
+++ b/charmap.txt
@@ -209,6 +209,7 @@
'þ' = FE
'ÿ' = FF
+'?' = 81 48
'♪' = 81 F4
'し' = 82 B5
diff --git a/data/data_80DED44.s b/data/data_80DED44.s
index 5f992f8..74161c7 100644
--- a/data/data_80DED44.s
+++ b/data/data_80DED44.s
@@ -399,13 +399,13 @@ gUnknown_80E0378: @ 80E0378
.byte 0x03, 0x00, 0x00, 0x00
.byte 0x00, 0x00, 0x00, 0x00
- .global gPelliperBoard_BulletinBoard
-gPelliperBoard_BulletinBoard: @ 80E0390
+ .global gPelipperBoard_BulletinBoard
+gPelipperBoard_BulletinBoard: @ 80E0390
.string "Bulletin Board\0"
.align 2,0
- .global gPelliperBoard_JobList
-gPelliperBoard_JobList: @ 80E03A0
+ .global gPelipperBoard_JobList
+gPelipperBoard_JobList: @ 80E03A0
.string "Job List\0"
.align 2,0
diff --git a/data/data_80E2068.s b/data/data_80E2068.s
index c2b9b2b..70b5242 100644
--- a/data/data_80E2068.s
+++ b/data/data_80E2068.s
@@ -2251,8 +2251,8 @@ gUnknown_80E762C: @ 80E762C
.byte 0x03, 0x00, 0x00, 0x00
.byte 0x00, 0x00, 0x00, 0x00
- .global gUnknown_80E7644
-gUnknown_80E7644: @ 80E7644
+ .global gResumeQuicksaveMenuItems
+gResumeQuicksaveMenuItems: @ 80E7644
.4byte ResumeQuicksave_80E7668
.byte 0x05, 0x00, 0x00, 0x00
.4byte IsThatOK_80E765C
@@ -2268,8 +2268,8 @@ gUnknown_80E7644: @ 80E7644
.string "Resuming from quicksave.\0"
.align 2,0
- .global gUnknown_80E7684
-gUnknown_80E7684: @ 80E7684
+ .global gResumeAdventureMenuItems
+gResumeAdventureMenuItems: @ 80E7684
.4byte ResumeAdventure_80E769C
.byte 0x05, 0x00, 0x00, 0x00
.4byte IsThatOK_80E765C
@@ -2281,21 +2281,21 @@ gUnknown_80E7684: @ 80E7684
.string "Resuming saved adventure.\0"
.align 2,0
- .global gUnknown_80E76B8
-gUnknown_80E76B8: @ 80E76B8
- .4byte QuitAwaitingResuce_80E76D0
+ .global gQuitWaitingRescueMenuItems
+gQuitWaitingRescueMenuItems: @ 80E76B8
+ .4byte QuitAwaitingRescue_80E76D0
.byte 0x05, 0x00, 0x00, 0x00
.4byte IsThatOK_80E765C
.byte 0x05, 0x00, 0x00, 0x00
.byte 0x00, 0x00, 0x00, 0x00
.byte 0x03, 0x00, 0x00, 0x00
- QuitAwaitingResuce_80E76D0:
+ QuitAwaitingRescue_80E76D0:
.string "Quit awaiting rescue?\0"
.align 2,0
- .global gUnknown_80E76E8
-gUnknown_80E76E8: @ 80E76E8
+ .global gDeleteSavePromptMenuItems
+gDeleteSavePromptMenuItems: @ 80E76E8
.4byte Deleted_80E7718
.byte 0x05, 0x00, 0x00, 0x00
.4byte Deleted_80E7700
@@ -2311,8 +2311,8 @@ gUnknown_80E76E8: @ 80E76E8
.string "Your saved data will be\0"
.align 2,0
- .global gUnknown_80E7730
-gUnknown_80E7730: @ 80E7730
+ .global gDeleteSaveConfirmMenuItems
+gDeleteSaveConfirmMenuItems: @ 80E7730
.4byte Deleted_80E7768
.byte 0x05, 0x00, 0x00, 0x00
.4byte Deleted_80E7748
@@ -2337,292 +2337,3 @@ gUnknown_80E7784: @ 80E7784
.byte 0x05, 0x00, 0x03, 0x00
.byte 0x03, 0x00, 0x00, 0x00
.byte 0x00, 0x00, 0x00, 0x00
-
- .global gUnknown_80E779C
-gUnknown_80E779C: @ 80E779C
- .4byte Yes_80E77B8
- .4byte 1
- .4byte No_80E77B4
- .4byte 2
- .4byte 0
- .4byte 3
-
- .global No_80E77B4
- No_80E77B4:
- .asciz "No"
- .align 2,0
-
- .global Yes_80E77B8
- Yes_80E77B8:
- .asciz "Yes"
- .align 2,0
-
- .global gUnknown_80E77BC
-gUnknown_80E77BC: @ 80E77BC
- .string "Team:\0"
- .align 2,0
-
- .global gUnknown_80E77C4
-gUnknown_80E77C4: @ 80E77C4
- .string "Name:\0"
- .align 2,0
-
- .global gUnknown_80E77CC
-gUnknown_80E77CC: @ 80E77CC
- .string "Location:\0"
- .align 2,0
-
- .global gUnknown_80E77D8
-gUnknown_80E77D8: @ 80E77D8
- .string "Play time:\0"
- .align 2,0
-
- .global gUnknown_80E77E4
-gUnknown_80E77E4: @ 80E77E4
- .string "Adventures:\0"
- .align 2,0
-
- .global gUnknown_80E77F0
-gUnknown_80E77F0: @ 80E77F0
- .string "Helper:\0"
- .align 2,0
-
- .global gUnknown_80E77F8
-gUnknown_80E77F8: @ 80E77F8
- .byte 0x81, 0x48
- .byte 0x81, 0x48
- .byte 0x81, 0x48
- .byte 0x81, 0x48
- .byte 0x00, 0x00, 0x00, 0x00
-
- .global gUnknown_80E7804
-gUnknown_80E7804: @ 80E7804
- .string "%s \0"
- .align 2,0
-
- .global gUnknown_80E7808
-gUnknown_80E7808: @ 80E7808
- .string "???\0"
- .align 2,0
-
- .global gUnknown_80E780C
-gUnknown_80E780C: @ 80E780C
- .string "Quicksave data deleted.\0"
- .align 2,0
-
- .global gUnknown_80E7824
-gUnknown_80E7824: @ 80E7824
- .string "Location unknown.\0"
- .align 2,0
-
- .global gUnknown_80E7838
-gUnknown_80E7838: @ 80E7838
- .string "%d:%02d:%02d \0"
- .align 2,0
-
- .global gUnknown_80E7848
-gUnknown_80E7848: @ 80E7848
- .string "%d\0"
- .align 2,0
-
- .global gUnknown_80E784C
-gUnknown_80E784C: @ 80E784C
- .string "%s (%s)\0"
- .align 2,0
-
- .global gUnknown_80E7854
-gUnknown_80E7854: @ 80E7854
- .string "-----\0"
- .align 2,0
-
- .global gUnknown_80E785C
-gUnknown_80E785C: @ 80E785C
- .string "clmkpat\0"
- .align 2,0
- .string "pksdir0\0"
- .align 2,0
-
- .global gUnknown_80E786C
-gUnknown_80E786C: @ 80E786C
- .4byte Send_80E788C
- .4byte 1
- .4byte Receive_80E7884
- .4byte 2
- .4byte 0
- .4byte 0
-
- .global Receive_80E7884
- Receive_80E7884:
- .asciz "Receive"
- .align 2,0
-
- .global Send_80E788C
- Send_80E788C:
- .asciz "Send"
- .align 2,0
-
- .global gUnknown_80E7894
-gUnknown_80E7894: @ 80E7894
- .4byte GameLinkCable_80E78C8
- .4byte 3
- .4byte Password_80E78BC
- .4byte -1
- .4byte Cancel_80E78B4
- .4byte 8
- .4byte 0
- .4byte 0
-
- .global Cancel_80E78B4
- Cancel_80E78B4:
- .asciz "Cancel"
- .align 2,0
-
- .global Password_80E78BC
- Password_80E78BC:
- .asciz "Password"
- .align 2,0
-
- .global GameLinkCable_80E78C8
- GameLinkCable_80E78C8:
- .asciz "Game Link cable"
- .align 2,0
-
- .global gUnknown_80E78D8
-gUnknown_80E78D8: @ 80E78D8
- .4byte GameLinkCable_80E78C8
- .4byte 3
- .4byte Password_80E78BC
- .4byte 5
- .4byte Cancel_80E78B4
- .4byte 8
- .4byte 0
- .4byte 0
-
- .global gUnknown_80E78F8
-gUnknown_80E78F8: @ 80E78F8
- .4byte Yes_80E7910
- .4byte 6
- .4byte Cancel_80E78B4
- .4byte 0
- .4byte 0
- .4byte 0
-
- .global Yes_80E7910
- Yes_80E7910:
- .asciz "Yes"
- .align 2,0
-
- .global gUnknown_80E7914
-gUnknown_80E7914: @ 80E7914
- .asciz "There was a communication error."
- .align 2,0
-
- .global gUnknown_80E7938
-gUnknown_80E7938: @ 80E7938
- .string "An incorrect number of GBA systems are\n"
- .string "connected.\n"
- .asciz "Please redo this process from the start."
- .align 2,0
-
- .global gUnknown_80E7994
-gUnknown_80E7994: @ 80E7994
- .string "There is no response from your friend.\n"
- .asciz "Please redo this process from the start."
- .align 2,0
-
- .global gUnknown_80E79E4
-gUnknown_80E79E4: @ 80E79E4
- .string "The sender and receiver appear to be\n"
- .string "in different modes.\n"
- .asciz "Please redo the process from the start."
- .align 2,0
-
- .global gUnknown_80E7A48
-gUnknown_80E7A48: @ 80E7A48
- .string "There is no response from your friend.\n"
- .string "Please make sure the sender and receiver\n"
- .string "are ready~2c then redo this from the start.\0"
- .align 2,0
-
- .global gUnknown_80E7AC4
-gUnknown_80E7AC4: @ 80E7AC4
- .asciz "What would you like to do?"
- .align 2,0
-
- .global gUnknown_80E7AE0
-gUnknown_80E7AE0: @ 80E7AE0
- .string "How would you like to send your\n"
- .asciz "#CGWonder Mail#R?"
- .align 2,0
-
- .global gUnknown_80E7B14
-gUnknown_80E7B14: @ 80E7B14
- .string "How would you like to receive the\n"
- .asciz "#CGWonder Mail#R?"
- .align 2,0
-
- .global gUnknown_80E7B48
-gUnknown_80E7B48: @ 80E7B48
- .asciz "Your adventure will be saved."
- .align 2,0
-
- .global gUnknown_80E7B68
-gUnknown_80E7B68: @ 80E7B68
- .asciz "Your #CGWonder Mail#R was sent."
- .align 2,0
-
- .global gUnknown_80E7B88
-gUnknown_80E7B88: @ 80E7B88
- .string "The received #CGWonder Mail#R was\n"
- .string "added to the #CGJob List#R.\0"
- .align 2,0
-
- .global gUnknown_80E7BC8
-gUnknown_80E7BC8: @ 80E7BC8
- .asciz "The #CGWonder Mail#R was refused."
- .align 2,0
-
- .global gUnknown_80E7BEC
-gUnknown_80E7BEC: @ 80E7BEC
- .string "Connect a #CGGame Link cable#R.\n"
- .string "When you and your friend are ready~2c\n"
- .string "you may communicate. \0"
- .align 2,0
-
- .global gUnknown_80E7C48
-gUnknown_80E7C48: @ 80E7C48
- .string "#+In communication...\n"
- .string "#+Please wait with the power on.\n"
- .string "#+To cancel~2c press {B_BUTTON}.\0"
- .align 2,0
-
- .global gUnknown_80E7C98
-gUnknown_80E7C98: @ 80E7C98
- .string "Please enter the\n"
- .string "#CGWonder Mail password#R.\0"
- .align 2,0
-
- .global gUnknown_80E7CC4
-gUnknown_80E7CC4: @ 80E7CC4
- .string "This password is incorrect.\n"
- .string "Would you like to enter it again?\0"
- .align 2,0
- .string "pksdir0\0"
- .4byte Yes_80E7D2C
- .byte 0x01, 0x00, 0x00, 0x00
- .4byte Cancel_80E7D24
- .byte 0x00, 0x00, 0x00, 0x00
- .byte 0x00, 0x00, 0x00, 0x00
- .byte 0x00, 0x00, 0x00, 0x00
-
- .global Cancel_80E7D24
- Cancel_80E7D24:
- .string "Cancel\0"
- .align 2,0
- .global Yes_80E7D2C
- Yes_80E7D2C:
- .string "Yes\0"
- .align 2,0
- .string "pksdir0\0"
- .string "pksdir0\0"
-
diff --git a/data/data_80F4278.s b/data/data_80F4278.s
index d2d3fde..d4e0f27 100644
--- a/data/data_80F4278.s
+++ b/data/data_80F4278.s
@@ -8092,8 +8092,8 @@ gUnknown_8108F50: @ 8108F50
gUnknown_8108F64: @ 8108F64
.incbin "baserom.gba", 0x108F64, 0x800
- .global gUnknown_8109764
-gUnknown_8109764: @ 8109764
+ .global gItemParaFileName
+gItemParaFileName: @ 8109764
.string "itempara\0"
.align 2,0
diff --git a/include/item.h b/include/item.h
index 1d81116..6c7b09f 100644
--- a/include/item.h
+++ b/include/item.h
@@ -342,6 +342,7 @@ enum ItemID {
#define NUMBER_OF_GUMMIS 18
#define INVENTORY_SIZE 20
+#define STORAGE_SIZE NUMBER_OF_ITEM_IDS
void LoadItemParameters(void);
struct TeamInventory *GetMoneyItemsInfo(void);
diff --git a/include/mailbox.h b/include/mailbox.h
new file mode 100644
index 0000000..2c08a08
--- /dev/null
+++ b/include/mailbox.h
@@ -0,0 +1,27 @@
+#ifndef GUARD_MAILBOX_H
+#define GUARD_MAILBOX_H
+
+struct unkStruct_203B304
+{
+ // size: 0xB6 << 1
+ u32 state;
+ u32 unk4;
+ u8 unk8;
+ u8 unk9;
+ u8 fillA[0xC - 0xA];
+ u32 unkC;
+ u8 fill10[0x50 - 0x10];
+ u8 unk50;
+ u8 fill51[0x64 - 0x51];
+ u32 unk64;
+ u32 unk68;
+ u32 unk6C;
+ u8 fill70[0xBC - 0x70];
+ struct MenuItem unkBC[8];
+ u16 unkFC[8];
+ struct UnkTextStruct2 unk10C[4];
+};
+
+extern void SetMailboxState(u32);
+
+#endif // GUARD_MAILBOX_H
diff --git a/include/personality_test.h b/include/personality_test.h
index d1cc2c6..71d7bf9 100644
--- a/include/personality_test.h
+++ b/include/personality_test.h
@@ -42,7 +42,7 @@ struct PersonalityStruct_203B400
u32 unkb8;
u32 unkbc;
};
-extern struct PersonalityStruct_203B400 *gUnknown_203B400;
+EWRAM_DATA struct PersonalityStruct_203B400 *gUnknown_203B400;
struct PersonalityStruct_203B404
{
@@ -62,7 +62,7 @@ struct PersonalityStruct_203B404
/* 0x54 */ struct UnkTextStruct2 unk54[4];
/* 0xB4 */ u8 unkb4[4];
};
-extern struct PersonalityStruct_203B404 *gUnknown_203B404;
+EWRAM_DATA struct PersonalityStruct_203B404 *gUnknown_203B404;
void InitializeTestStats(void);
void GenerateNewQuestionOrGender(void);
diff --git a/include/rescue_team_info.h b/include/rescue_team_info.h
index 563b781..76976c4 100644
--- a/include/rescue_team_info.h
+++ b/include/rescue_team_info.h
@@ -22,7 +22,7 @@ struct RescueTeamData
void LoadRescueTeamInfo(void);
struct RescueTeamData *GetRescueTeamInfo(void);
-void InitializeResuceTeamInfo(void);
+void InitializeRescueTeamInfo(void);
void sub_80920B8(u8 *buffer);
void sub_80920D8(u8 *buffer);
void SetRescueTeamName(u8 *buffer);
diff --git a/include/save.h b/include/save.h
index 69109b8..a0c7b66 100644
--- a/include/save.h
+++ b/include/save.h
@@ -78,6 +78,7 @@ char *sub_8011C4C(void);
void sub_8011CA8(u32 *out, s32 size);
u32 ReadSaveFromPak(u32 *a);
u32 sub_8011F9C(s32 *r0, u8 *dest, s32 size);
+u32 sub_8011FA8(void);
bool8 IsSaveCorrupted(void);
void sub_8012284(void);
void sub_8012298(void);
diff --git a/include/wonder_mail.h b/include/wonder_mail.h
index ae4c701..2879f1f 100644
--- a/include/wonder_mail.h
+++ b/include/wonder_mail.h
@@ -120,6 +120,13 @@ enum WonderMailMethod {
WONDER_MAIL_PASSWORD = 5,
};
+enum WonderMailTypes {
+ WONDER_MAIL_TYPE_SOS = 1,
+ WONDER_MAIL_TYPE_AOK = 4,
+ WONDER_MAIL_TYPE_THANK_YOU = 5,
+ WONDER_MAIL_TYPE_WONDER = 5,
+};
+
#endif
diff --git a/ld_script.txt b/ld_script.txt
index 7fb46f6..6aca15d 100755
--- a/ld_script.txt
+++ b/ld_script.txt
@@ -127,6 +127,13 @@ SECTIONS {
asm/wonder_mail_2.o(.text);
src/wonder_mail_3.o(.text);
asm/wonder_mail_3.o(.text);
+ src/mailbox.o(.text);
+ asm/mailbox.o(.text);
+ src/mailbox_1.o(.text);
+ src/pelipper_board.o(.text);
+ asm/pelipper_board.o(.text);
+ src/pelipper_board_1.o(.text);
+ asm/wonder_mail_3_mid.o(.text);
src/wonder_mail_3_1.o(.text);
src/makuhita_dojo.o(.text);
asm/makuhita_dojo.o(.text);
@@ -316,6 +323,8 @@ SECTIONS {
data/data_80E1F30.o(.rodata);
src/adventure_log.o(.rodata);
data/data_80E2068.o(.rodata);
+ src/load_screen.o(.rodata);
+ src/wonder_mail_main_menu.o(.rodata);
src/debug_menu.o(.rodata);
data/data_80E7D40.o(.rodata);
data/pokemon_mail.o(.rodata);
diff --git a/src/bg_palette_buffer.c b/src/bg_palette_buffer.c
index 9917adf..6a19362 100644
--- a/src/bg_palette_buffer.c
+++ b/src/bg_palette_buffer.c
@@ -3,8 +3,8 @@
#define BG_PALETTE_BUFFER_SIZE 512
#define BG_PALETTE_BUFFER_CHUNK_SIZE 16
-extern u16 gBGPaletteBuffer[BG_PALETTE_BUFFER_SIZE];
-extern bool8 gBGPaletteUsed[BG_PALETTE_BUFFER_SIZE / BG_PALETTE_BUFFER_CHUNK_SIZE];
+EWRAM_DATA u16 gBGPaletteBuffer[BG_PALETTE_BUFFER_SIZE];
+EWRAM_DATA bool8 gBGPaletteUsed[BG_PALETTE_BUFFER_SIZE / BG_PALETTE_BUFFER_CHUNK_SIZE];
extern void CpuCopy(void* src, void* dest, u32 size);
diff --git a/src/code_80958E8.c b/src/code_80958E8.c
index f32a41b..7674ed4 100644
--- a/src/code_80958E8.c
+++ b/src/code_80958E8.c
@@ -94,7 +94,7 @@ bool8 IsValidWonderMail(struct WonderMail *WonderMailData)
// Has to equal 5 for Wonder Mail
// https://web.archive.org/web/20080913124416/http://www.upokecenter.com/games/dungeon/guides/passwords.html
//
- if(WonderMailData->mailType != 5)
+ if(WonderMailData->mailType != WONDER_MAIL_TYPE_WONDER)
{
return FALSE;
}
diff --git a/src/friend_area.c b/src/friend_area.c
index 329670e..034b783 100644
--- a/src/friend_area.c
+++ b/src/friend_area.c
@@ -3,8 +3,8 @@
#include "friend_area.h"
#include "pokemon.h"
-EWRAM_DATA bool8 gBoughtFriendAreas[NUM_FRIEND_AREAS];
-extern bool8 *gFriendAreas;
+bool8 gBoughtFriendAreas[NUM_FRIEND_AREAS];
+EWRAM_DATA bool8 *gFriendAreas;
extern struct unkStruct_203B45C *gRecruitedPokemonRef;
diff --git a/src/input.c b/src/input.c
index e13bb7d..d1fca00 100644
--- a/src/input.c
+++ b/src/input.c
@@ -1,13 +1,13 @@
#include "global.h"
#include "input.h"
-EWRAM_DATA struct UnusedInputStruct gUnusedInputsRelated;
EWRAM_DATA struct Inputs gRealInputs;
+EWRAM_DATA struct UnusedInputStruct gUnusedInputsRelated;
+EWRAM_DATA u32 gUnusedScrambledInputJunk;
EWRAM_DATA struct Inputs gBufferedInputs;
EWRAM_DATA struct Inputs gCurrentInputs;
EWRAM_DATA struct Inputs gLastInputs;
EWRAM_DATA struct InputTimers gInputTimers;
-EWRAM_DATA u32 gUnusedScrambledInputJunk;
void ReadKeyInput(struct Inputs *r0);
diff --git a/src/items.c b/src/items.c
index f4f7170..5f6a626 100644
--- a/src/items.c
+++ b/src/items.c
@@ -12,7 +12,7 @@ extern struct TeamInventory *gTeamInventory_203B460;
extern struct TeamInventory gUnknown_20389A8;
extern struct FileArchive gSystemFileArchive;
extern struct unkStruct_203B45C *gRecruitedPokemonRef;
-extern const char gUnknown_8109764;
+extern const char gItemParaFileName[];
extern const char gUnknown_8109794[];
extern const char gUnknown_81097A4[];
extern s32 gUnknown_81097B0[];
@@ -52,7 +52,7 @@ bool8 xxx_insert_unk250_8091C1C(u8);
void LoadItemParameters(void)
{
gTeamInventory_203B460 = &gUnknown_20389A8;
- gItemParametersFile = OpenFileAndGetFileDataPtr(&gUnknown_8109764,&gSystemFileArchive);
+ gItemParametersFile = OpenFileAndGetFileDataPtr(gItemParaFileName,&gSystemFileArchive);
gItemParametersData = (struct Item *) gItemParametersFile->data;
}
@@ -70,7 +70,7 @@ void InitializeMoneyItems(void)
gTeamInventory_203B460->teamItems[i].itemFlags = 0;
}
- for(i = 0; i < 0xF0; i++)
+ for(i = 0; i < STORAGE_SIZE; i++)
{
gTeamInventory_203B460->teamStorage[i] = 0;
}
@@ -1169,7 +1169,7 @@ s32 SaveTeamInventory(u8* unk0, u32 size)
for (i = 0; i < INVENTORY_SIZE; i++) {
SaveItemSlot(&unk, &gTeamInventory_203B460->teamItems[i]);
}
- for (i = 0; i < NUMBER_OF_ITEM_IDS; i++) {
+ for (i = 0; i < STORAGE_SIZE; i++) {
SaveIntegerBits(&unk, &gTeamInventory_203B460->teamStorage[i], 10);
}
for (i = 0; i < 8; i++) {
@@ -1190,10 +1190,10 @@ s32 RestoreTeamInventory(u8 *unk0, u32 size)
s32 i;
xxx_init_struct_8094924_restore_809485C(&unk, unk0, size);
- for (i = 0; i < 20; i++) {
+ for (i = 0; i < INVENTORY_SIZE; i++) {
RestoreItemSlot(&unk, &gTeamInventory_203B460->teamItems[i]);
}
- for (i = 0; i < 240; i++) {
+ for (i = 0; i < STORAGE_SIZE; i++) {
RestoreIntegerBits(&unk, &gTeamInventory_203B460->teamStorage[i], 10);
}
for (i = 0; i < 8; i++) {
diff --git a/src/load_screen.c b/src/load_screen.c
index c0ff22d..cad8049 100644
--- a/src/load_screen.c
+++ b/src/load_screen.c
@@ -4,28 +4,25 @@
#include "play_time.h"
#include "file_system.h"
#include "memory.h"
+#include "menu.h"
#include "text.h"
+#include "pokemon.h"
+#include "save.h"
extern struct PlayTimeStruct *gPlayTimeRef;
extern struct PlayTimeStruct gPlayTime;
extern const struct FileArchive gTitleMenuFileArchive;
-struct unkStruct_808D33C
-{
- u8 fill0[0x4C];
- u8 unk4C;
-};
-
struct unkStruct_203B484
{
u8 fill0[0xC];
- s16 speciesIndex;
+ /* 0xC */ s16 speciesIndex;
u8 fillE[0x50 - 0xE];
- u32 unk50;
+ /* 0x50 */ u8 helperName[10];
};
-struct unkStruct_203B374
+struct LoadScreen
{
// size: 0x27c
u32 currMenu;
@@ -44,65 +41,78 @@ struct unkStruct_203B374
/* 0x258 */ u8 formattedHelperInfo[0x24];
};
-extern struct unkStruct_203B374 *gUnknown_203B374;
-extern u32 gUnknown_203B378;
-extern u32 gUnknown_203B3B8[];
-extern u32 gUnknown_203B388[];
+EWRAM_DATA struct LoadScreen *gLoadScreen;
+EWRAM_DATA struct MenuItem gUnknown_203B378[2];
+EWRAM_DATA u32 gUnknown_203B388[12];
+EWRAM_DATA u32 gUnknown_203B3B8[12];
+
extern struct unkStruct_203B484 *gUnknown_203B484;
extern struct UnkTextStruct2 gUnknown_80E75F8;
extern struct UnkTextStruct2 gUnknown_80E7610;
extern struct UnkTextStruct2 gUnknown_80E762C;
-extern u32 gUnknown_80E7644;
-extern u32 gUnknown_80E7684;
-extern u32 gUnknown_80E76B8;
-extern u32 gUnknown_80E76E8;
-extern u32 gUnknown_80E7730;
+extern struct MenuItem gResumeQuicksaveMenuItems[];
+extern struct MenuItem gResumeAdventureMenuItems[];
+extern struct MenuItem gQuitWaitingRescueMenuItems[];
+extern struct MenuItem gDeleteSavePromptMenuItems[];
+extern struct MenuItem gDeleteSaveConfirmMenuItems[];
extern struct UnkTextStruct2 gUnknown_80E7784;
-extern u32 gUnknown_80E779C;
-extern u8 gUnknown_80E77BC;
-extern u8 gUnknown_80E77C4;
-extern u8 gUnknown_80E77CC;
-extern u8 gUnknown_80E77D8;
-extern u8 gUnknown_80E77E4;
-extern u8 gUnknown_80E77F0;
-extern u8 gUnknown_80E77F8;
-extern u8 gUnknown_80E7804;
-extern u8 gUnknown_80E7808;
-extern u8 gUnknown_80E780C;
-extern u8 gUnknown_80E7824;
-extern u8 gUnknown_80E7838;
-extern u8 gUnknown_80E7848;
-extern u8 gUnknown_80E784C;
-extern u8 gUnknown_80E7854;
-extern const char gUnknown_80E785C[]; // clmkpat
+
+extern const char No_80E77B4[];
+extern const char Yes_80E77B8[];
+
+const struct MenuItem gLoadScreenYesNoMenu[3] =
+{
+ {Yes_80E77B8, 1},
+ {No_80E77B4, 2},
+ {NULL, 3},
+};
+
+ALIGNED(4) const char No_80E77B4[] = "No";
+ALIGNED(4) const char Yes_80E77B8[] = "Yes";
+
+ALIGNED(4) const char gTeamHeadingText[] = "Team:";
+ALIGNED(4) const char gNameHeadingText[] = "Name:";
+ALIGNED(4) const char gLocationHeadingText[] = "Location:";
+ALIGNED(4) const char gPlayTimeHeadingText[] = "Play time:";
+ALIGNED(4) const char gAdventuresHeadingText[] = "Adventures:";
+ALIGNED(4) const char gHelperHeadingText[] = "Helper:";
+ALIGNED(4) const char gNoTeamNamePlaceholder[] = _("????");
+ALIGNED(4) const char gUnknown_80E7804[] = "%s ";
+ALIGNED(4) const char gNoNamePlaceholder[] = "???";
+ALIGNED(4) const char gQuicksaveDataDeletedText[] = "Quicksave data deleted.";
+ALIGNED(4) const char gLocationUnknownText[] = "Location unknown.";
+ALIGNED(4) const char gPlayTimePlaceholder[] = "%d:%02d:%02d ";
+ALIGNED(4) const char gNumAdventurePlaceholder[] = "%d";
+ALIGNED(4) const char gHelperInfoPlaceholder[] = "%s (%s)";
+ALIGNED(4) const char gNoHelperText[] = "-----";
+ALIGNED(4) const char gClmkpatFileName[] = "clmkpat"; // clmkpat
+ALIGNED(4) const char load_screen_fill[] = "pksdir0";
u8 IsQuickSave(void);
void DrawLoadScreenText(void);
+void sub_80397B4(void);
+
extern void sub_8035CF4(u32 *, u32, u32);
-extern void SetMenuItems(u32 *, struct UnkTextStruct2 *, u32, struct UnkTextStruct2 *, u32 *, u32, u32, u32);
+extern void SetMenuItems(u32 *, struct UnkTextStruct2 *, u32, struct UnkTextStruct2 *, const struct MenuItem *, u32, u32, u32);
extern u8 sub_8012FD8(u32 *);
extern void sub_8013114(u32 *, u32 *);
extern void sub_8095240(u32);
-extern void sub_80122A8(void);
extern void sub_80920D8(u8 *);
-extern struct unkStruct_808D33C *sub_808D33C(void);
+extern struct PokemonStruct *sub_808D33C(void);
extern u8 sub_80023E4(u32);
extern u8 *sub_8098FB4();
-extern void ExpandPlaceholdersBuffer(u8 *buffer, u8 *text, ...);
-extern s32 sub_8011C1C(void);
+extern void ExpandPlaceholdersBuffer(u8 *buffer, const u8 *text, ...);
extern u8 *GetDungeonLocationInfo(void);
extern u32 GetNumAdventures(void);
-extern void xxx_call_draw_string(u32 x, u32 y, u8 *, u32, u32);
+extern void xxx_call_draw_string(u32 x, u32 y, const u8 *, u32, u32);
extern void PrintDungeonLocationtoBuffer(u8 *, u8 *);
-extern void sub_80922B4(u8 *, u8 *, u32);
+extern void sub_80922B4(u8 *, const u8 *, u32);
extern s32 sub_8095324(u32);
extern u32 sub_8001658(u32, u32);
-void sub_80397B4(void);
extern void sub_80073E0(u32);
-extern s32 sub_8011FA8(void);
extern void sub_8008C54(u32);
extern void sub_80073B8(u32);
@@ -117,38 +127,38 @@ void CreateLoadScreen(u32 currMenu)
{
int iVar8;
- if (gUnknown_203B374 == NULL) {
- gUnknown_203B374 = MemoryAlloc(sizeof(struct unkStruct_203B374),8);
- MemoryFill8((u8 *)gUnknown_203B374,0,sizeof(struct unkStruct_203B374));
+ if (gLoadScreen == NULL) {
+ gLoadScreen = MemoryAlloc(sizeof(struct LoadScreen),8);
+ MemoryFill8((u8 *)gLoadScreen,0,sizeof(struct LoadScreen));
}
- gUnknown_203B374->currMenu = currMenu;
+ gLoadScreen->currMenu = currMenu;
for(iVar8 = 0; iVar8 < 4; iVar8++){
- gUnknown_203B374->unk144[iVar8] = gUnknown_80E75F8;
+ gLoadScreen->unk144[iVar8] = gUnknown_80E75F8;
}
ResetUnusedInputStruct();
- sub_800641C(gUnknown_203B374->unk144,1,1);
- SetMenuItems(&gUnknown_203B374->unk4,gUnknown_203B374->unk144,0,&gUnknown_80E7610,&gUnknown_203B378,0,6,0);
- switch(gUnknown_203B374->currMenu){
+ sub_800641C(gLoadScreen->unk144,1,1);
+ SetMenuItems(&gLoadScreen->unk4,gLoadScreen->unk144,0,&gUnknown_80E7610,gUnknown_203B378,0,6,0);
+ switch(gLoadScreen->currMenu){
case MENU_CONTINUE:
if (IsQuickSave())
- SetMenuItems(&gUnknown_203B374->unk4,gUnknown_203B374->unk144,1,&gUnknown_80E762C,&gUnknown_80E7644,0,6,0);
+ SetMenuItems(&gLoadScreen->unk4,gLoadScreen->unk144,1,&gUnknown_80E762C,gResumeQuicksaveMenuItems,0,6,0);
else
- SetMenuItems(&gUnknown_203B374->unk4,gUnknown_203B374->unk144,1,&gUnknown_80E762C,&gUnknown_80E7684,0,6,0);
+ SetMenuItems(&gLoadScreen->unk4,gLoadScreen->unk144,1,&gUnknown_80E762C,gResumeAdventureMenuItems,0,6,0);
break;
case MENU_AWAITING_RESCUE:
- SetMenuItems(&gUnknown_203B374->unk4,gUnknown_203B374->unk144,1,&gUnknown_80E762C,&gUnknown_80E76B8,0,6,0);
+ SetMenuItems(&gLoadScreen->unk4,gLoadScreen->unk144,1,&gUnknown_80E762C,gQuitWaitingRescueMenuItems,0,6,0);
break;
case MENU_DELETE_SAVE_PROMPT:
- SetMenuItems(&gUnknown_203B374->unk4,gUnknown_203B374->unk144,1,&gUnknown_80E762C,&gUnknown_80E76E8,0,6,0);
+ SetMenuItems(&gLoadScreen->unk4,gLoadScreen->unk144,1,&gUnknown_80E762C,gDeleteSavePromptMenuItems,0,6,0);
break;
case MENU_DELETE_SAVE_CONFIRM:
- SetMenuItems(&gUnknown_203B374->unk4,gUnknown_203B374->unk144,1,&gUnknown_80E762C, &gUnknown_80E7730,0,6,0);
+ SetMenuItems(&gLoadScreen->unk4,gLoadScreen->unk144,1,&gUnknown_80E762C, gDeleteSaveConfirmMenuItems,0,6,0);
break;
}
- SetMenuItems(&gUnknown_203B374->unk4,gUnknown_203B374->unk144,2,&gUnknown_80E7784,&gUnknown_80E779C,1,2,0);
- sub_8035CF4(&gUnknown_203B374->unk4,0,0);
- sub_8035CF4(&gUnknown_203B374->unk4,1,0);
- sub_8035CF4(&gUnknown_203B374->unk4,2,1);
+ SetMenuItems(&gLoadScreen->unk4,gLoadScreen->unk144,2,&gUnknown_80E7784,gLoadScreenYesNoMenu,1,2,0);
+ sub_8035CF4(&gLoadScreen->unk4,0,0);
+ sub_8035CF4(&gLoadScreen->unk4,1,0);
+ sub_8035CF4(&gLoadScreen->unk4,2,1);
DrawLoadScreenText();
}
@@ -156,10 +166,10 @@ void CleanLoadScreen(void)
{
ResetUnusedInputStruct();
sub_800641C(NULL, 1, 1);
- if(gUnknown_203B374 != NULL)
+ if(gLoadScreen != NULL)
{
- MemoryFree(gUnknown_203B374);
- gUnknown_203B374 = NULL;
+ MemoryFree(gLoadScreen);
+ gLoadScreen = NULL;
}
}
@@ -170,9 +180,9 @@ u32 UpdateLoadScreenMenu(void)
nextMenu = MENU_NO_SCREEN_CHANGE;
menuAction = 4;
- sub_8012FD8(&gUnknown_203B374->unk54);
- if (sub_8012FD8(&gUnknown_203B374->unkA4) == '\0') {
- sub_8013114(&gUnknown_203B374->unkA4,&menuAction);
+ sub_8012FD8(&gLoadScreen->unk54);
+ if (sub_8012FD8(&gLoadScreen->unkA4) == '\0') {
+ sub_8013114(&gLoadScreen->unkA4,&menuAction);
}
switch(menuAction)
@@ -182,7 +192,7 @@ u32 UpdateLoadScreenMenu(void)
nextMenu = MENU_MAIN_SCREEN;
break;
case 1:
- switch(gUnknown_203B374->currMenu)
+ switch(gLoadScreen->currMenu)
{
case MENU_CONTINUE:
nextMenu = 2; // MENU_???
@@ -207,7 +217,11 @@ u32 UpdateLoadScreenMenu(void)
return nextMenu;
}
-#ifdef NONMATCHING
+static inline u8 *DrawLoadScreenTextSub(u8 *teamNameBuffer) {
+ strcpy(teamNameBuffer,gNoTeamNamePlaceholder);
+ return teamNameBuffer;
+}
+
void DrawLoadScreenText(void)
{
int iVar2;
@@ -220,48 +234,48 @@ void DrawLoadScreenText(void)
u32 hours;
u32 minutes;
u32 seconds;
- struct unkStruct_808D33C *playerInfo;
+ struct PokemonStruct *playerInfo;
+ struct unkStruct_203B484 *temp2;
+ u8 *r2;
iVar2 = sub_8011FA8();
sub_8008C54(0);
sub_80073B8(0);
- xxx_call_draw_string(8,0, &gUnknown_80E77BC,0,0); // Team:
- xxx_call_draw_string(8,12,&gUnknown_80E77C4,0,0); // Name:
- xxx_call_draw_string(8,24,&gUnknown_80E77CC,0,0); // Location:
- xxx_call_draw_string(8,36,&gUnknown_80E77D8,0,0); // Play time:
- xxx_call_draw_string(8,48,&gUnknown_80E77E4,0,0); // Adventures:
- xxx_call_draw_string(8,60,&gUnknown_80E77F0,0,0); // Helper:
+ xxx_call_draw_string(8,0, gTeamHeadingText,0,0); // Team:
+ xxx_call_draw_string(8,12,gNameHeadingText,0,0); // Name:
+ xxx_call_draw_string(8,24,gLocationHeadingText,0,0); // Location:
+ xxx_call_draw_string(8,36,gPlayTimeHeadingText,0,0); // Play time:
+ xxx_call_draw_string(8,48,gAdventuresHeadingText,0,0); // Adventures:
+ xxx_call_draw_string(8,60,gHelperHeadingText,0,0); // Helper:
// Draw Team Name
if (sub_80023E4(0) != '\0') {
sub_80920D8(teamNameBuffer);
+ r2 = teamNameBuffer;
}
else {
- strcpy(teamNameBuffer,&gUnknown_80E77F8);
+ // NOTE: static inline was needed here to match -jiang
+ r2 = DrawLoadScreenTextSub(teamNameBuffer);
}
- ExpandPlaceholdersBuffer(gUnknown_203B374->formattedTeamName,&gUnknown_80E7804,teamNameBuffer);
- xxx_call_draw_string(64,0,gUnknown_203B374->formattedTeamName,0,0);
+
+ ExpandPlaceholdersBuffer(gLoadScreen->formattedTeamName,gUnknown_80E7804,r2);
+ xxx_call_draw_string(64,0,gLoadScreen->formattedTeamName,0,0);
// Draw Player Name
playerInfo = sub_808D33C();
- if (playerInfo == NULL) {
- sub_80922B4(playerName,&gUnknown_80E7808,10);
- }
- else {
- sub_80922B4(playerName,&playerInfo->unk4C,10);
- }
- ExpandPlaceholdersBuffer(gUnknown_203B374->formattedPlayerName,&gUnknown_80E7804,playerName);
- xxx_call_draw_string(64,12,gUnknown_203B374->formattedPlayerName,0,0);
+ if (playerInfo == NULL)
+ sub_80922B4(playerName, gNoNamePlaceholder, POKEMON_NAME_LENGTH);
+ else
+ sub_80922B4(playerName, playerInfo->name, POKEMON_NAME_LENGTH);
+ ExpandPlaceholdersBuffer(gLoadScreen->formattedPlayerName,gUnknown_80E7804,playerName);
+ xxx_call_draw_string(64,12,gLoadScreen->formattedPlayerName,0,0);
// Draw Location Info
- // TODO: fix these branches.. correct logic but branching isn't right
if ((sub_8095324(1) != 0) || (sub_8095324(7) != 0)) {
- if (iVar2 == 0xf1207) {
- PrintDungeonLocationtoBuffer(gUnknown_203B374->formattedLocation,GetDungeonLocationInfo());
- }
- else {
- ExpandPlaceholdersBuffer(gUnknown_203B374->formattedLocation,&gUnknown_80E780C); // Quicksave data deleted
- }
+ if (iVar2 == 0xf1207)
+ PrintDungeonLocationtoBuffer(gLoadScreen->formattedLocation,GetDungeonLocationInfo());
+ else
+ ExpandPlaceholdersBuffer(gLoadScreen->formattedLocation,gQuicksaveDataDeletedText); // Quicksave data deleted
}
else {
switch(sub_8011C1C())
@@ -270,405 +284,59 @@ void DrawLoadScreenText(void)
switch(sub_8001658(0,24))
{
default:
- ExpandPlaceholdersBuffer(auStack356,&gUnknown_80E7804,sub_8098FB4());
- xxx_format_string(auStack356,gUnknown_203B374->formattedLocation,gUnknown_203B374->formattedPlayTime,0);
+ ExpandPlaceholdersBuffer(auStack356,gUnknown_80E7804,sub_8098FB4());
+ xxx_format_string(auStack356,gLoadScreen->formattedLocation,gLoadScreen->formattedPlayTime,0);
break;
case 0x7:
case 0xB:
- ExpandPlaceholdersBuffer(gUnknown_203B374->formattedLocation,&gUnknown_80E780C); // Quicksave data deleted
+ ExpandPlaceholdersBuffer(gLoadScreen->formattedLocation,gQuicksaveDataDeletedText); // Quicksave data deleted
break;
}
break;
case 2:
if (iVar2 == 0xf1207)
- {
- PrintDungeonLocationtoBuffer(gUnknown_203B374->formattedLocation,GetDungeonLocationInfo());
- } else {
- ExpandPlaceholdersBuffer(gUnknown_203B374->formattedLocation,&gUnknown_80E780C); // Quicksave data deleted
- }
+ PrintDungeonLocationtoBuffer(gLoadScreen->formattedLocation,GetDungeonLocationInfo());
+ else
+ ExpandPlaceholdersBuffer(gLoadScreen->formattedLocation,gQuicksaveDataDeletedText); // Quicksave data deleted
break;
default:
- ExpandPlaceholdersBuffer(gUnknown_203B374->formattedLocation,&gUnknown_80E7824); // Location unknown
+ ExpandPlaceholdersBuffer(gLoadScreen->formattedLocation,gLocationUnknownText); // Location unknown
break;
}
}
- xxx_call_draw_string(64,24,gUnknown_203B374->formattedLocation,0,0);
+ xxx_call_draw_string(64,24,gLoadScreen->formattedLocation,0,0);
// Draw Play Time
DeconstructPlayTime(gPlayTimeRef,&hours,&minutes,&seconds);
- ExpandPlaceholdersBuffer(gUnknown_203B374->formattedPlayTime,&gUnknown_80E7838,hours,minutes,seconds);
- xxx_call_draw_string(64,36,gUnknown_203B374->formattedPlayTime,0,0);
+ ExpandPlaceholdersBuffer(gLoadScreen->formattedPlayTime,gPlayTimePlaceholder,hours,minutes,seconds);
+ xxx_call_draw_string(64,36,gLoadScreen->formattedPlayTime,0,0);
// Draw Adventures Info
numAdventures = GetNumAdventures();
- ExpandPlaceholdersBuffer(gUnknown_203B374->formattedAdventures,&gUnknown_80E7848,numAdventures); // %d
- xxx_call_draw_string(64,48,gUnknown_203B374->formattedAdventures,0,0);
+ ExpandPlaceholdersBuffer(gLoadScreen->formattedAdventures,gNumAdventurePlaceholder,numAdventures); // %d
+ xxx_call_draw_string(64,48,gLoadScreen->formattedAdventures,0,0);
// Draw Helper Info
- if ((iVar2 == 0xf1207) && (gUnknown_203B484->speciesIndex != 0)) {
- sub_808D930(speciesHelper,gUnknown_203B484->speciesIndex);
- // TODO very hacky match here
- sub_80922B4(nameHelper,(u8 *)(&gUnknown_203B484 + 0x14),10);
- ExpandPlaceholdersBuffer(gUnknown_203B374->formattedHelperInfo,&gUnknown_80E784C,nameHelper,speciesHelper); // %s (%s)
+ if (iVar2 == 0xf1207){
+ // NOTE: very hacky match here but needed var here to match
+ temp2 = gUnknown_203B484;
+ if(temp2->speciesIndex != SPECIES_NONE) {
+ sub_808D930(speciesHelper,temp2->speciesIndex);
+ sub_80922B4(nameHelper,temp2->helperName,POKEMON_NAME_LENGTH);
+ ExpandPlaceholdersBuffer(gLoadScreen->formattedHelperInfo,gHelperInfoPlaceholder,nameHelper,speciesHelper); // %s (%s)
+ }
+ else
+ goto print_helper_placeholder;
}
else {
- ExpandPlaceholdersBuffer(gUnknown_203B374->formattedHelperInfo,&gUnknown_80E7854); // -----
+ print_helper_placeholder:
+ ExpandPlaceholdersBuffer(gLoadScreen->formattedHelperInfo,gNoHelperText); // -----
}
- xxx_call_draw_string(64,60,gUnknown_203B374->formattedHelperInfo,0,0);
+ xxx_call_draw_string(64,60,gLoadScreen->formattedHelperInfo,0,0);
sub_80397B4(); // Draw event icons??
sub_80073E0(0);
}
-#else
-NAKED
-void DrawLoadScreenText(void)
-{
- asm_unified("\tpush {r4-r7,lr}\n"
- "\tmov r7, r8\n"
- "\tpush {r7}\n"
- "\tsub sp, 0x150\n"
- "\tbl sub_8011FA8\n"
- "\tmov r8, r0\n"
- "\tmovs r0, 0\n"
- "\tbl sub_8008C54\n"
- "\tmovs r0, 0\n"
- "\tbl sub_80073B8\n"
- "\tldr r2, _0803952C\n"
- "\tmovs r4, 0\n"
- "\tstr r4, [sp]\n"
- "\tmovs r0, 0x8\n"
- "\tmovs r1, 0\n"
- "\tmovs r3, 0\n"
- "\tbl xxx_call_draw_string\n"
- "\tldr r2, _08039530\n"
- "\tstr r4, [sp]\n"
- "\tmovs r0, 0x8\n"
- "\tmovs r1, 0xC\n"
- "\tmovs r3, 0\n"
- "\tbl xxx_call_draw_string\n"
- "\tldr r2, _08039534\n"
- "\tstr r4, [sp]\n"
- "\tmovs r0, 0x8\n"
- "\tmovs r1, 0x18\n"
- "\tmovs r3, 0\n"
- "\tbl xxx_call_draw_string\n"
- "\tldr r2, _08039538\n"
- "\tstr r4, [sp]\n"
- "\tmovs r0, 0x8\n"
- "\tmovs r1, 0x24\n"
- "\tmovs r3, 0\n"
- "\tbl xxx_call_draw_string\n"
- "\tldr r2, _0803953C\n"
- "\tstr r4, [sp]\n"
- "\tmovs r0, 0x8\n"
- "\tmovs r1, 0x30\n"
- "\tmovs r3, 0\n"
- "\tbl xxx_call_draw_string\n"
- "\tldr r2, _08039540\n"
- "\tstr r4, [sp]\n"
- "\tmovs r0, 0x8\n"
- "\tmovs r1, 0x3C\n"
- "\tmovs r3, 0\n"
- "\tbl xxx_call_draw_string\n"
- "\tmovs r0, 0\n"
- "\tbl sub_80023E4\n"
- "\tlsls r0, 24\n"
- "\tcmp r0, 0\n"
- "\tbeq _08039544\n"
- "\tadd r4, sp, 0x68\n"
- "\tadds r0, r4, 0\n"
- "\tbl sub_80920D8\n"
- "\tadds r2, r4, 0\n"
- "\tb _0803954E\n"
- "\t.align 2, 0\n"
-"_0803952C: .4byte gUnknown_80E77BC\n"
-"_08039530: .4byte gUnknown_80E77C4\n"
-"_08039534: .4byte gUnknown_80E77CC\n"
-"_08039538: .4byte gUnknown_80E77D8\n"
-"_0803953C: .4byte gUnknown_80E77E4\n"
-"_08039540: .4byte gUnknown_80E77F0\n"
-"_08039544:\n"
- "\tldr r1, _08039588\n"
- "\tadd r0, sp, 0x68\n"
- "\tbl strcpy\n"
- "\tadd r2, sp, 0x68\n"
-"_0803954E:\n"
- "\tldr r5, _0803958C\n"
- "\tldr r0, [r5]\n"
- "\tmovs r4, 0xD2\n"
- "\tlsls r4, 1\n"
- "\tadds r0, r4\n"
- "\tldr r1, _08039590\n"
- "\tbl ExpandPlaceholdersBuffer\n"
- "\tldr r2, [r5]\n"
- "\tadds r2, r4\n"
- "\tmovs r0, 0\n"
- "\tstr r0, [sp]\n"
- "\tmovs r0, 0x40\n"
- "\tmovs r1, 0\n"
- "\tmovs r3, 0\n"
- "\tbl xxx_call_draw_string\n"
- "\tbl sub_808D33C\n"
- "\tcmp r0, 0\n"
- "\tbne _08039598\n"
- "\tadd r4, sp, 0x90\n"
- "\tldr r1, _08039594\n"
- "\tadds r0, r4, 0\n"
- "\tmovs r2, 0xA\n"
- "\tbl sub_80922B4\n"
- "\tb _080395A6\n"
- "\t.align 2, 0\n"
-"_08039588: .4byte gUnknown_80E77F8\n"
-"_0803958C: .4byte gUnknown_203B374\n"
-"_08039590: .4byte gUnknown_80E7804\n"
-"_08039594: .4byte gUnknown_80E7808\n"
-"_08039598:\n"
- "\tadd r4, sp, 0x90\n"
- "\tadds r1, r0, 0\n"
- "\tadds r1, 0x4C\n"
- "\tadds r0, r4, 0\n"
- "\tmovs r2, 0xA\n"
- "\tbl sub_80922B4\n"
-"_080395A6:\n"
- "\tadds r2, r4, 0\n"
- "\tldr r5, _080395F0\n"
- "\tldr r0, [r5]\n"
- "\tmovs r4, 0xE4\n"
- "\tlsls r4, 1\n"
- "\tadds r0, r4\n"
- "\tldr r6, _080395F4\n"
- "\tadds r1, r6, 0\n"
- "\tbl ExpandPlaceholdersBuffer\n"
- "\tldr r2, [r5]\n"
- "\tadds r2, r4\n"
- "\tmovs r0, 0\n"
- "\tstr r0, [sp]\n"
- "\tmovs r0, 0x40\n"
- "\tmovs r1, 0xC\n"
- "\tmovs r3, 0\n"
- "\tbl xxx_call_draw_string\n"
- "\tmovs r0, 0x1\n"
- "\tbl sub_8095324\n"
- "\tcmp r0, 0\n"
- "\tbne _080395E0\n"
- "\tmovs r0, 0x7\n"
- "\tbl sub_8095324\n"
- "\tcmp r0, 0\n"
- "\tbeq _08039606\n"
-"_080395E0:\n"
- "\tldr r0, _080395F8\n"
- "\tcmp r8, r0\n"
- "\tbne _080395FC\n"
- "\tldr r4, [r5]\n"
- "\tmovs r0, 0xF6\n"
- "\tlsls r0, 1\n"
- "\tadds r4, r0\n"
- "\tb _08039676\n"
- "\t.align 2, 0\n"
-"_080395F0: .4byte gUnknown_203B374\n"
-"_080395F4: .4byte gUnknown_80E7804\n"
-"_080395F8: .4byte 0x000f1207\n"
-"_080395FC:\n"
- "\tldr r0, [r5]\n"
- "\tmovs r1, 0xF6\n"
- "\tlsls r1, 1\n"
- "\tadds r0, r1\n"
- "\tb _08039690\n"
-"_08039606:\n"
- "\tbl sub_8011C1C\n"
- "\tcmp r0, 0x1\n"
- "\tbeq _08039624\n"
- "\tcmp r0, 0x2\n"
- "\tbeq _08039668\n"
- "\tldr r0, [r5]\n"
- "\tmovs r2, 0xF6\n"
- "\tlsls r2, 1\n"
- "\tadds r0, r2\n"
- "\tldr r1, _08039620\n"
- "\tb _08039692\n"
- "\t.align 2, 0\n"
-"_08039620: .4byte gUnknown_80E7824\n"
-"_08039624:\n"
- "\tmovs r0, 0\n"
- "\tmovs r1, 0x18\n"
- "\tbl sub_8001658\n"
- "\tcmp r0, 0x7\n"
- "\tbeq _08039658\n"
- "\tcmp r0, 0xB\n"
- "\tbeq _08039658\n"
- "\tbl sub_8098FB4\n"
- "\tadds r2, r0, 0\n"
- "\tadd r0, sp, 0x4\n"
- "\tadds r1, r6, 0\n"
- "\tbl ExpandPlaceholdersBuffer\n"
- "\tldr r0, [r5]\n"
- "\tmovs r3, 0xF6\n"
- "\tlsls r3, 1\n"
- "\tadds r1, r0, r3\n"
- "\tadds r3, 0x24\n"
- "\tadds r2, r0, r3\n"
- "\tadd r0, sp, 0x4\n"
- "\tmovs r3, 0\n"
- "\tbl xxx_format_string\n"
- "\tb _08039696\n"
-"_08039658:\n"
- "\tldr r0, _08039664\n"
- "\tldr r0, [r0]\n"
- "\tmovs r1, 0xF6\n"
- "\tlsls r1, 1\n"
- "\tadds r0, r1\n"
- "\tb _08039690\n"
- "\t.align 2, 0\n"
-"_08039664: .4byte gUnknown_203B374\n"
-"_08039668:\n"
- "\tldr r0, _08039684\n"
- "\tcmp r8, r0\n"
- "\tbne _08039688\n"
- "\tldr r4, [r5]\n"
- "\tmovs r2, 0xF6\n"
- "\tlsls r2, 1\n"
- "\tadds r4, r2\n"
-"_08039676:\n"
- "\tbl GetDungeonLocationInfo\n"
- "\tadds r1, r0, 0\n"
- "\tadds r0, r4, 0\n"
- "\tbl PrintDungeonLocationtoBuffer\n"
- "\tb _08039696\n"
- "\t.align 2, 0\n"
-"_08039684: .4byte 0x000f1207\n"
-"_08039688:\n"
- "\tldr r0, [r5]\n"
- "\tmovs r3, 0xF6\n"
- "\tlsls r3, 1\n"
- "\tadds r0, r3\n"
-"_08039690:\n"
- "\tldr r1, _0803974C\n"
-"_08039692:\n"
- "\tbl ExpandPlaceholdersBuffer\n"
-"_08039696:\n"
- "\tldr r7, _08039750\n"
- "\tldr r2, [r7]\n"
- "\tmovs r0, 0xF6\n"
- "\tlsls r0, 1\n"
- "\tadds r2, r0\n"
- "\tmovs r6, 0\n"
- "\tstr r6, [sp]\n"
- "\tmovs r0, 0x40\n"
- "\tmovs r1, 0x18\n"
- "\tmovs r3, 0\n"
- "\tbl xxx_call_draw_string\n"
- "\tldr r0, _08039754\n"
- "\tldr r0, [r0]\n"
- "\tadd r1, sp, 0x144\n"
- "\tadd r2, sp, 0x148\n"
- "\tadd r3, sp, 0x14C\n"
- "\tbl DeconstructPlayTime\n"
- "\tldr r0, [r7]\n"
- "\tmovs r5, 0x84\n"
- "\tlsls r5, 2\n"
- "\tadds r0, r5\n"
- "\tldr r1, _08039758\n"
- "\tadd r2, sp, 0x144\n"
- "\tldr r2, [r2]\n"
- "\tadd r3, sp, 0x148\n"
- "\tldr r3, [r3]\n"
- "\tadd r4, sp, 0x14C\n"
- "\tldr r4, [r4]\n"
- "\tstr r4, [sp]\n"
- "\tbl ExpandPlaceholdersBuffer\n"
- "\tldr r2, [r7]\n"
- "\tadds r2, r5\n"
- "\tstr r6, [sp]\n"
- "\tmovs r0, 0x40\n"
- "\tmovs r1, 0x24\n"
- "\tmovs r3, 0\n"
- "\tbl xxx_call_draw_string\n"
- "\tbl GetNumAdventures\n"
- "\tadds r2, r0, 0\n"
- "\tldr r0, [r7]\n"
- "\tmovs r4, 0x8D\n"
- "\tlsls r4, 2\n"
- "\tadds r0, r4\n"
- "\tldr r1, _0803975C\n"
- "\tbl ExpandPlaceholdersBuffer\n"
- "\tldr r2, [r7]\n"
- "\tadds r2, r4\n"
- "\tstr r6, [sp]\n"
- "\tmovs r0, 0x40\n"
- "\tmovs r1, 0x30\n"
- "\tmovs r3, 0\n"
- "\tbl xxx_call_draw_string\n"
- "\tldr r0, _08039760\n"
- "\tcmp r8, r0\n"
- "\tbne _0803976C\n"
- "\tldr r0, _08039764\n"
- "\tldr r6, [r0]\n"
- "\tmovs r1, 0xC\n"
- "\tldrsh r0, [r6, r1]\n"
- "\tcmp r0, 0\n"
- "\tbeq _0803976C\n"
- "\tadd r5, sp, 0x130\n"
- "\tadds r1, r0, 0\n"
- "\tadds r0, r5, 0\n"
- "\tbl sub_808D930\n"
- "\tadd r4, sp, 0xE0\n"
- "\tadds r1, r6, 0\n"
- "\tadds r1, 0x50\n"
- "\tadds r0, r4, 0\n"
- "\tmovs r2, 0xA\n"
- "\tbl sub_80922B4\n"
- "\tldr r0, [r7]\n"
- "\tmovs r3, 0x96\n"
- "\tlsls r3, 2\n"
- "\tadds r0, r3\n"
- "\tldr r1, _08039768\n"
- "\tadds r2, r4, 0\n"
- "\tadds r3, r5, 0\n"
- "\tbl ExpandPlaceholdersBuffer\n"
- "\tb _0803977C\n"
- "\t.align 2, 0\n"
-"_0803974C: .4byte gUnknown_80E780C\n"
-"_08039750: .4byte gUnknown_203B374\n"
-"_08039754: .4byte gPlayTimeRef\n"
-"_08039758: .4byte gUnknown_80E7838\n"
-"_0803975C: .4byte gUnknown_80E7848\n"
-"_08039760: .4byte 0x000f1207\n"
-"_08039764: .4byte gUnknown_203B484\n"
-"_08039768: .4byte gUnknown_80E784C\n"
-"_0803976C:\n"
- "\tldr r0, _080397AC\n"
- "\tldr r0, [r0]\n"
- "\tmovs r1, 0x96\n"
- "\tlsls r1, 2\n"
- "\tadds r0, r1\n"
- "\tldr r1, _080397B0\n"
- "\tbl ExpandPlaceholdersBuffer\n"
-"_0803977C:\n"
- "\tldr r0, _080397AC\n"
- "\tldr r2, [r0]\n"
- "\tmovs r3, 0x96\n"
- "\tlsls r3, 2\n"
- "\tadds r2, r3\n"
- "\tmovs r0, 0\n"
- "\tstr r0, [sp]\n"
- "\tmovs r0, 0x40\n"
- "\tmovs r1, 0x3C\n"
- "\tmovs r3, 0\n"
- "\tbl xxx_call_draw_string\n"
- "\tbl sub_80397B4\n"
- "\tmovs r0, 0\n"
- "\tbl sub_80073E0\n"
- "\tadd sp, 0x150\n"
- "\tpop {r3}\n"
- "\tmov r8, r3\n"
- "\tpop {r4-r7}\n"
- "\tpop {r0}\n"
- "\tbx r0\n"
- "\t.align 2, 0\n"
-"_080397AC: .4byte gUnknown_203B374\n"
-"_080397B0: .4byte gUnknown_80E7854");
-}
-#endif
// Think structure of clmkFile is like Team Rank Badges except each pic has a diff pallete
// TODO clean up but it matches so yea
@@ -679,7 +347,7 @@ void sub_80397B4(void)
int iVar4;
s32 other_arg;
- clmkFile = OpenFileAndGetFileDataPtr(gUnknown_80E785C,&gTitleMenuFileArchive); // clmkpat
+ clmkFile = OpenFileAndGetFileDataPtr(gClmkpatFileName,&gTitleMenuFileArchive); // clmkpat
for(iVar3 = 0; iVar3 < 64; iVar3++)
{
@@ -688,6 +356,8 @@ void sub_80397B4(void)
iVar4 = 8;
other_arg = 0x49;
+
+ // Draw the 12 legendary icons
for(iVar3 = 0; iVar3 < 12; iVar3++)
{
if (sub_80023E4(gUnknown_203B3B8[iVar3]) != 0) {
diff --git a/src/mailbox.c b/src/mailbox.c
new file mode 100644
index 0000000..d7301db
--- /dev/null
+++ b/src/mailbox.c
@@ -0,0 +1,186 @@
+#include "global.h"
+#include "memory.h"
+#include "text.h"
+#include "menu.h"
+#include "input.h"
+#include "mailbox.h"
+
+
+extern void sub_802E4B0(void);
+extern void nullsub_133(void);
+extern void sub_802E578(void);
+extern void sub_802E60C(void);
+extern void sub_802E73C(void);
+extern void sub_802E758(void);
+extern void sub_802E774(void);
+extern void sub_802E7D0(void);
+
+
+extern void sub_802E0A0(void);
+extern void sub_802E1AC(void);
+
+extern struct UnkTextStruct2 gUnknown_80E0284;
+extern struct UnkTextStruct2 gUnknown_80E029C;
+extern struct UnkTextStruct2 gUnknown_80E02B4;
+extern struct UnkTextStruct2 gUnknown_80E02CC;
+
+
+extern struct unkStruct_203B304 *gUnknown_203B304;
+extern void sub_802E088(u32);
+extern void sub_8012CAC(struct UnkTextStruct2 *, struct MenuItem *);
+extern void CreateMailboxMenu(void);
+extern void CreateMailActionMenu(void);
+
+extern void sub_8012D60(u32 *, struct MenuItem *, u32, u16 *, u32, u32);
+extern void sub_802BD14(u32, u32, u32);
+extern void sub_802BE94(u32);
+extern void CreateMailMenu(void);
+extern void CreateMailAcceptedStatusBox(u32);
+extern u32 sub_8095FE8(u32);
+extern void sub_803B35C(u32, u32 *);
+extern void sub_802DE84(u32 *);
+extern void sub_802C860(u32);
+extern void sub_802B640(u32, u32, u32);
+extern void sub_802B7D0(u32);
+extern void sub_802B9FC(u8);
+
+u32 sub_802DFB0(void)
+{
+ gUnknown_203B304 = MemoryAlloc(sizeof(struct unkStruct_203B304), 8);
+ gUnknown_203B304->unk64 = 0;
+ gUnknown_203B304->unk68 = 0;
+ SetMailboxState(0);
+ return 1;
+}
+
+u32 sub_802DFD8(void)
+{
+ switch(gUnknown_203B304->state)
+ {
+ case 0:
+ SetMailboxState(1);
+ break;
+ case 1:
+ sub_802E4B0();
+ break;
+ case 2:
+ nullsub_133();
+ break;
+ case 4:
+ case 5:
+ sub_802E578();
+ break;
+ case 6:
+ sub_802E60C();
+ break;
+ case 7:
+ sub_802E73C();
+ break;
+ case 8:
+ sub_802E758();
+ break;
+ case 9:
+ case 0xA:
+ sub_802E774();
+ break;
+ case 0xB:
+ sub_802E7D0();
+ break;
+ case 3:
+ default:
+ return 3;
+ }
+ return 0;
+}
+
+void sub_802E06C(void)
+{
+ if(gUnknown_203B304 != NULL)
+ {
+ MemoryFree(gUnknown_203B304);
+ gUnknown_203B304 = NULL;
+ }
+}
+
+void SetMailboxState(u32 newState)
+{
+ gUnknown_203B304->state = newState;
+ sub_802E0A0();
+ sub_802E1AC();
+}
+
+void sub_802E0A0(void)
+{
+ s32 iVar1;
+ sub_8006518(gUnknown_203B304->unk10C);
+ switch(gUnknown_203B304->state)
+ {
+ case 1:
+ for(iVar1 = 0; iVar1 < 4; iVar1++)
+ {
+ gUnknown_203B304->unk10C[iVar1] = gUnknown_80E0284;
+ }
+ CreateMailboxMenu();
+ gUnknown_203B304->unk10C[2] = gUnknown_80E029C;
+ sub_8012CAC(&gUnknown_203B304->unk10C[2], gUnknown_203B304->unkBC);
+ break;
+ case 6:
+ CreateMailActionMenu();
+ gUnknown_203B304->unk10C[2] = gUnknown_80E02B4;
+ sub_8012CAC(&gUnknown_203B304->unk10C[2], gUnknown_203B304->unkBC);
+ gUnknown_203B304->unk10C[2].unk0c = 6;
+ gUnknown_203B304->unk10C[3] = gUnknown_80E02CC;
+ break;
+ default:
+ for(iVar1 = 0; iVar1 < 4; iVar1++)
+ {
+ gUnknown_203B304->unk10C[iVar1] = gUnknown_80E0284;
+ }
+ break;
+ }
+ ResetUnusedInputStruct();
+ sub_800641C(gUnknown_203B304->unk10C, 1, 1);
+}
+
+void sub_802E1AC(void)
+{
+ switch(gUnknown_203B304->state)
+ {
+ case 1:
+ sub_8012D60(&gUnknown_203B304->unk6C, gUnknown_203B304->unkBC, 0, gUnknown_203B304->unkFC, gUnknown_203B304->unk64, 2);
+ break;
+ case 4:
+ sub_802BD14(0, 0, 4);
+ break;
+ case 5:
+ sub_802BE94(1);
+ break;
+ case 6:
+ CreateMailMenu();
+ CreateMailAcceptedStatusBox(3);
+ sub_8012D60(&gUnknown_203B304->unk6C, gUnknown_203B304->unkBC, 0, 0, gUnknown_203B304->unk68, 2);
+ break;
+ case 7:
+ sub_803B35C(sub_8095FE8(gUnknown_203B304->unk8), &gUnknown_203B304->unkC);
+ gUnknown_203B304->unkC = 3;
+ gUnknown_203B304->unk50 = 0;
+ sub_802DE84(&gUnknown_203B304->unkC);
+ break;
+ case 8:
+ sub_802C860(0);
+ break;
+ case 9:
+ sub_802B640(0, 0, 8);
+ break;
+ case 0xA:
+ sub_802B7D0(1);
+ break;
+ case 0xB:
+ sub_802B9FC(gUnknown_203B304->unk9);
+ break;
+ case 0:
+ case 2:
+ case 3:
+ break;
+ }
+}
diff --git a/src/mailbox_1.c b/src/mailbox_1.c
new file mode 100644
index 0000000..ee212ae
--- /dev/null
+++ b/src/mailbox_1.c
@@ -0,0 +1,104 @@
+#include "global.h"
+#include "memory.h"
+#include "text.h"
+#include "menu.h"
+#include "input.h"
+#include "mailbox.h"
+
+extern u8 gMailAccepted[];
+extern u8 gUnknown_80E0324[];
+extern void xxx_call_draw_string(s32 x, u32 y, u8 *, u32 , u32);
+extern void sub_8012BC4(u32 x, u32 y, u32, u32, u32, u32);
+extern u32 sub_80969AC(void);
+extern void sub_8008C54(u32);
+extern void sub_80073B8(u32);
+extern void sub_80073E0(u32);
+extern u32 sub_802BA8C(void);
+extern void sub_802BACC(void);
+extern u8 sub_802B7A8(void);
+extern void sub_802B81C(void);
+extern u32 sub_802B720(u32);
+extern u32 sub_802C898(void);
+extern void sub_802C8F4(void);
+extern u32 sub_802DEE0(void);
+extern void sub_802DF24(void);
+
+extern struct unkStruct_203B304 *gUnknown_203B304;
+
+
+void sub_802E73C(void)
+{
+ switch(sub_802DEE0())
+ {
+ case 2:
+ case 3:
+ sub_802DF24();
+ SetMailboxState(5);
+ case 0:
+ case 1:
+ break;
+ }
+}
+
+void sub_802E758(void)
+{
+ switch(sub_802C898())
+ {
+ case 2:
+ case 3:
+ sub_802C8F4();
+ SetMailboxState(1);
+ case 0:
+ case 1:
+ break;
+ }
+}
+
+void sub_802E774(void)
+{
+ switch(sub_802B720(1))
+ {
+ case 0:
+ case 1:
+ break;
+ case 3:
+ case 4:
+ gUnknown_203B304->unk9 = sub_802B7A8();
+ gUnknown_203B304->unk4 = 0xA;
+ SetMailboxState(0xB);
+ break;
+ case 2:
+ sub_802B81C();
+ SetMailboxState(0x1);
+ break;
+ }
+}
+
+void sub_802E7D0(void)
+{
+ switch(sub_802BA8C())
+ {
+ case 2:
+ case 3:
+ sub_802BACC();
+ SetMailboxState(gUnknown_203B304->unk4);
+ case 0:
+ case 1:
+ break;
+ }
+}
+
+void nullsub_133(void)
+{
+}
+
+void CreateMailAcceptedStatusBox(u32 r0)
+{
+ sub_8008C54(r0);
+ sub_80073B8(r0);
+ xxx_call_draw_string(3, 0, gMailAccepted, r0, 0);
+ sub_8012BC4(0x12, 0xD, sub_80969AC(), 2, 7, r0);
+ xxx_call_draw_string(0x16, 0xD, gUnknown_80E0324, r0, 0);
+ sub_8012BC4(0x23, 0xD, 0x8, 0x2, 7, r0);
+ sub_80073E0(r0);
+}
diff --git a/src/pelipper_board.c b/src/pelipper_board.c
new file mode 100644
index 0000000..41bb023
--- /dev/null
+++ b/src/pelipper_board.c
@@ -0,0 +1,184 @@
+#include "global.h"
+#include "memory.h"
+#include "text.h"
+#include "menu.h"
+#include "input.h"
+
+// Guessing based off of 203B304
+struct unkStruct_203B308
+{
+ // size: 0xB6 << 1
+ u32 state;
+ u32 unk4;
+ u8 unk8;
+ u8 fill9[0xC - 9];
+ u32 unkC;
+ u8 fill10[0x50 - 0x10];
+ u8 unk50;
+ u8 fill51[0x64 - 0x51];
+ u32 unk64;
+ u32 unk68;
+ u32 unk6C;
+ u8 fill70[0xBC - 0x70];
+ struct MenuItem unkBC[8];
+ u16 unkFC[8];
+ struct UnkTextStruct2 unk10C[4];
+};
+extern struct unkStruct_203B308 *gUnknown_203B308;
+extern void SetPelipperBoardState(u32);
+extern struct UnkTextStruct2 gUnknown_80E0330;
+extern struct UnkTextStruct2 gUnknown_80E0348;
+extern struct UnkTextStruct2 gUnknown_80E0360;
+extern struct UnkTextStruct2 gUnknown_80E0378;
+extern void sub_8012CAC(struct UnkTextStruct2 *, struct MenuItem *);
+extern void sub_802ECB4(void);
+extern void nullsub_134(void);
+extern void sub_802ED4C(void);
+extern void sub_802EDBC(void);
+extern void sub_802EEA0(void);
+extern void sub_802EEBC(void);
+extern void sub_802E94C(void);
+extern void sub_802EA58(void);
+extern void CreatePelipperBoardMenu(void);
+extern void sub_802EC10(void);
+
+extern void sub_8012D60(u32 *, struct MenuItem *, u32, u16 *, u32, u32);
+extern void sub_802C10C(u32, u32, u32);
+extern void sub_802C28C(u32);
+extern void sub_802C39C(void);
+extern void CreatePelipperAcceptedStatusBox(u32);
+extern u32 sub_8096574(u32);
+extern void sub_803B35C(u32, u32 *);
+extern void sub_802DE84(u32 *);
+extern void sub_802C860(u32);
+
+u32 sub_802E864(void)
+{
+ gUnknown_203B308 = MemoryAlloc(sizeof(struct unkStruct_203B308), 8);
+ gUnknown_203B308->unk64 = 0;
+ gUnknown_203B308->unk68 = 0;
+ gUnknown_203B308->unk4 = 0;
+ SetPelipperBoardState(0);
+ return 1;
+}
+
+u32 sub_802E890(void)
+{
+ switch(gUnknown_203B308->state)
+ {
+ case 0:
+ SetPelipperBoardState(1);
+ break;
+ case 1:
+ sub_802ECB4();
+ break;
+ case 2:
+ nullsub_134();
+ break;
+ case 4:
+ case 5:
+ sub_802ED4C();
+ break;
+ case 6:
+ sub_802EDBC();
+ break;
+ case 7:
+ sub_802EEA0();
+ break;
+ case 8:
+ sub_802EEBC();
+ break;
+ case 3:
+ default:
+ return 3;
+ }
+ return 0;
+}
+
+u32 sub_802E90C(void)
+{
+ return gUnknown_203B308->unk4;
+}
+
+void sub_802E918(void)
+{
+ if(gUnknown_203B308 != NULL)
+ {
+ MemoryFree(gUnknown_203B308);
+ gUnknown_203B308 = NULL;
+ }
+}
+
+void SetPelipperBoardState(u32 newState)
+{
+ gUnknown_203B308->state = newState;
+ sub_802E94C();
+ sub_802EA58();
+}
+
+void sub_802E94C(void)
+{
+ s32 iVar1;
+ sub_8006518(gUnknown_203B308->unk10C);
+ switch(gUnknown_203B308->state)
+ {
+ case 1:
+ for(iVar1 = 0; iVar1 < 4; iVar1++)
+ {
+ gUnknown_203B308->unk10C[iVar1] = gUnknown_80E0330;
+ }
+ CreatePelipperBoardMenu();
+ gUnknown_203B308->unk10C[2] = gUnknown_80E0348;
+ sub_8012CAC(&gUnknown_203B308->unk10C[2], gUnknown_203B308->unkBC);
+ break;
+ case 6:
+ sub_802EC10();
+ gUnknown_203B308->unk10C[2] = gUnknown_80E0360;
+ sub_8012CAC(&gUnknown_203B308->unk10C[2], gUnknown_203B308->unkBC);
+ gUnknown_203B308->unk10C[2].unk0c = 6;
+ gUnknown_203B308->unk10C[3] = gUnknown_80E0378;
+ break;
+ default:
+ for(iVar1 = 0; iVar1 < 4; iVar1++)
+ {
+ gUnknown_203B308->unk10C[iVar1] = gUnknown_80E0330;
+ }
+ break;
+ }
+ ResetUnusedInputStruct();
+ sub_800641C(gUnknown_203B308->unk10C, 1, 1);
+}
+
+void sub_802EA58(void)
+{
+ switch(gUnknown_203B308->state)
+ {
+ case 1:
+ sub_8012D60(&gUnknown_203B308->unk6C, gUnknown_203B308->unkBC, 0, gUnknown_203B308->unkFC, gUnknown_203B308->unk64, 2);
+ break;
+ case 4:
+ sub_802C10C(0, 0, 4);
+ break;
+ case 5:
+ sub_802C28C(1);
+ break;
+ case 6:
+ sub_802C39C();
+ CreatePelipperAcceptedStatusBox(3);
+ sub_8012D60(&gUnknown_203B308->unk6C, gUnknown_203B308->unkBC, 0, 0, gUnknown_203B308->unk68, 2);
+ break;
+ case 7:
+ sub_803B35C(sub_8096574(gUnknown_203B308->unk8), &gUnknown_203B308->unkC);
+ gUnknown_203B308->unkC = 3;
+ gUnknown_203B308->unk50 = 0;
+ sub_802DE84(&gUnknown_203B308->unkC);
+ break;
+ case 8:
+ sub_802C860(0);
+ break;
+ case 0:
+ case 2:
+ case 3:
+ break;
+ }
+}
diff --git a/src/pelipper_board_1.c b/src/pelipper_board_1.c
new file mode 100644
index 0000000..b8fabd0
--- /dev/null
+++ b/src/pelipper_board_1.c
@@ -0,0 +1,60 @@
+#include "global.h"
+
+extern u8 gUnknown_80E03AC[];
+extern u8 gUnknown_80E03B8[];
+extern void xxx_call_draw_string(s32 x, u32 y, u8 *, u32 , u32);
+extern void sub_8012BC4(u32 x, u32 y, u32, u32, u32, u32);
+extern u32 sub_80969AC(void);
+extern void sub_8008C54(u32);
+extern void sub_80073B8(u32);
+extern void sub_80073E0(u32);
+extern u32 sub_802C898(void);
+extern void sub_802C8F4(void);
+extern void SetPelipperBoardState(u32);
+extern u32 sub_802DEE0(void);
+extern void sub_802DF24(void);
+
+
+void sub_802EEA0(void)
+{
+ switch(sub_802DEE0())
+ {
+ case 2:
+ case 3:
+ sub_802DF24();
+ SetPelipperBoardState(5);
+ case 0:
+ case 1:
+ break;
+ }
+}
+
+void sub_802EEBC(void)
+{
+ switch(sub_802C898())
+ {
+ case 2:
+ case 3:
+ sub_802C8F4();
+ SetPelipperBoardState(1);
+ case 0:
+ case 1:
+ break;
+ }
+}
+
+
+void nullsub_134(void)
+{
+}
+
+void CreatePelipperAcceptedStatusBox(u32 r0)
+{
+ sub_8008C54(r0);
+ sub_80073B8(r0);
+ xxx_call_draw_string(3, 0, gUnknown_80E03AC, r0, 0);
+ sub_8012BC4(0x12, 0xD, sub_80969AC(), 2, 7, r0);
+ xxx_call_draw_string(0x16, 0xD, gUnknown_80E03B8, r0, 0);
+ sub_8012BC4(0x23, 0xD, 0x8, 0x2, 7, r0);
+ sub_80073E0(r0);
+}
diff --git a/src/pokemon_mid.c b/src/pokemon_mid.c
index 0af12d0..2c875ef 100644
--- a/src/pokemon_mid.c
+++ b/src/pokemon_mid.c
@@ -198,7 +198,7 @@ bool8 IsPokemonRenamed(struct PokemonStruct* pokemon) {
char* species = GetMonSpecies(pokemon->speciesNum);
s32 i;
CopyStringtoBuffer(species_name, species);
- for (i = 0; i < 10; i++) {
+ for (i = 0; i < POKEMON_NAME_LENGTH; i++) {
if (pokemon->name[i] != species_name[i]) {
return FALSE;
}
@@ -216,7 +216,7 @@ bool8 ComparePokemonNames(s16 a1, s16 a2) {
u8* name2 = gRecruitedPokemonRef->pokemon[index2].name;
s32 i;
- for (i = 0; i < 10; i++) {
+ for (i = 0; i < POKEMON_NAME_LENGTH; i++) {
s32 c1 = ReturnIntFromChar(*name1);
s32 c2 = ReturnIntFromChar(*name2);
if (c1 > c2) {
@@ -544,7 +544,7 @@ void xxx_pokemonstruct_to_pokemon2_808DE50(struct PokemonStruct2 * a1, struct Po
a1->unk18 = pokemon->unk1C;
sub_8093F50(&a1->unk1C, &pokemon->unk2C);
- for (i = 0; i < 10; i++) {
+ for (i = 0; i < POKEMON_NAME_LENGTH; i++) {
a1->name[i] = pokemon->name[i];
}
@@ -595,7 +595,7 @@ void xxx_pokemon2_to_pokemonstruct_808DF44(struct PokemonStruct* pokemon, struct
pokemon->unk1C = a2->unk18;
sub_8093FA8(pokemon->unk2C, a2->unk1C);
- for (i = 0; i < 10; i++) {
+ for (i = 0; i < POKEMON_NAME_LENGTH; i++) {
pokemon->name[i] = a2->name[i];
}
diff --git a/src/post_office_guide.c b/src/post_office_guide.c
index 063d0fa..9c96472 100644
--- a/src/post_office_guide.c
+++ b/src/post_office_guide.c
@@ -20,7 +20,7 @@ struct PostOfficeHelper
u8 unk16;
};
-extern struct PostOfficeHelper *gPostOfficeHelper;
+EWRAM_DATA struct PostOfficeHelper *gPostOfficeHelper;
struct unkStruct_203B330
@@ -35,7 +35,7 @@ struct unkStruct_203B330
struct UnkTextStruct2 *unk14;
struct UnkTextStruct2 unk18[4];
};
-extern struct unkStruct_203B330 *gUnknown_203B330;
+EWRAM_DATA struct unkStruct_203B330 *gUnknown_203B330;
extern const char DeletingMailInfo_Text[];
diff --git a/src/rescue_team_info.c b/src/rescue_team_info.c
index ccae32c..9de46ad 100644
--- a/src/rescue_team_info.c
+++ b/src/rescue_team_info.c
@@ -42,7 +42,7 @@ struct RescueTeamData *GetRescueTeamInfo(void)
return &gRescueTeamInfo;
}
-void InitializeResuceTeamInfo(void)
+void InitializeRescueTeamInfo(void)
{
BoundedCopyStringtoBuffer(gRescueTeamInfoRef->teamName, gTeamNamePlaceholder, TEAM_NAME_LENGTH);
gRescueTeamInfoRef->teamRankPts = 0;
diff --git a/src/save.c b/src/save.c
index cef5b27..bdc3d3a 100644
--- a/src/save.c
+++ b/src/save.c
@@ -8,6 +8,11 @@
#include "save.h"
#include "exclusive_pokemon.h"
+
+EWRAM_DATA u32 gUnknown_203B17C;
+EWRAM_DATA char *gUnknown_203B180;
+EWRAM_DATA struct UnkStruct_203B184 *gUnknown_203B184;
+
struct unk_struct
{
// size: 0x800
@@ -26,7 +31,7 @@ struct SavePakRead
u32 readStatus;
};
-extern struct SavePakRead *gSavePakRead;
+EWRAM_DATA struct SavePakRead *gSavePakRead;
struct SavePakWrite
{
@@ -44,7 +49,7 @@ struct SavePakWrite
u16 pokeID;
};
-extern struct SavePakWrite *gSavePakWrite;
+EWRAM_DATA struct SavePakWrite *gSavePakWrite;
struct QuickSaveRead
{
@@ -53,7 +58,7 @@ struct QuickSaveRead
u32 size;
bool8 saveValid;
};
-extern struct QuickSaveRead *gQuickSaveRead;
+EWRAM_DATA struct QuickSaveRead *gQuickSaveRead;
struct QuickSaveWrite
{
@@ -63,12 +68,10 @@ struct QuickSaveWrite
u8 unkC;
u32 quickSaveStatus;
};
-extern struct QuickSaveWrite *gQuickSaveWrite;
+EWRAM_DATA struct QuickSaveWrite *gQuickSaveWrite;
extern s32 gUnknown_202DE28;
-extern u32 gUnknown_203B17C;
-extern char *gUnknown_203B180;
extern struct unkStruct_203B45C *gRecruitedPokemonRef;
extern struct TeamInventory *gTeamInventory_203B460;
extern struct RescueTeamData *gRescueTeamInfoRef;
@@ -141,7 +144,6 @@ ALIGNED(4) const char gSaveNotWritten2[] = _("{CENTER_ALIGN}The data could not b
ALIGNED(4) const char gSaveFailed2[] = _("{CENTER_ALIGN}Save failed.");
ALIGNED(4) const char fill_save7[] = _("pksdir0");
-extern volatile struct UnkStruct_203B184 *gUnknown_203B184;
extern bool8 sub_800DAB0(u16, u8*, s32);
extern bool8 sub_800DAB4(u16, u8*, s32);
@@ -601,7 +603,7 @@ void InitializePlayerData(void)
InitializeFriendAreas();
InitializeRecruitedPokemon();
InitializeMoneyItems();
- InitializeResuceTeamInfo();
+ InitializeRescueTeamInfo();
sub_80972F4();
sub_8095118();
sub_8095900();
diff --git a/src/wonder_mail_2.c b/src/wonder_mail_2.c
index cca9794..285c0d0 100644
--- a/src/wonder_mail_2.c
+++ b/src/wonder_mail_2.c
@@ -72,7 +72,7 @@ extern void sub_802B8D4(void);
extern void sub_8013818(void *, u32, u32, u32);
extern void sub_8012D08(struct UnkTextStruct2 *, s32);
extern void sub_8013984(u32 *);
-extern u8 sub_802B9D8(void);
+extern u8 HasNoPKMNNews(void);
extern u16 gUnknown_203B2D0;
extern u16 gUnknown_203B2D2;
@@ -330,10 +330,11 @@ void sub_802B624(void)
}
}
+// Start of some Pokemon News related stuff
u32 sub_802B640(u32 r0, struct UnkTextStruct2_sub *r1, u32 r2)
{
- if(sub_802B9D8())
+ if(HasNoPKMNNews())
{
return 0;
}
diff --git a/src/wonder_mail_main_menu.c b/src/wonder_mail_main_menu.c
index 87166b9..84c0d25 100644
--- a/src/wonder_mail_main_menu.c
+++ b/src/wonder_mail_main_menu.c
@@ -5,7 +5,9 @@
#include "input.h"
#include "sub_8095228.h"
#include "wonder_mail.h"
+#include "menu.h"
+#define SELECT_WONDER_MAIL_MODE_MAIN_SCREEN 0
#define SEND_WONDER_MAIL_MAIN_SCREEN 1
#define SEND_GAME_LINK_CABLE 2
#define RECEIVE_WONDER_MAIL_MAIN_SCREEN 4
@@ -22,6 +24,120 @@
#define PASSWORD_INVALID 19
#define PASSWORD_ENTRY_SCREEN 18
+extern const char Cancel_80E7D24[];
+extern const char Cancel_80E78B4[];
+extern const char Yes_80E7D2C[];
+extern const char Yes_80E7910[];
+extern const char GameLinkCable_80E78C8[];
+extern const char Password_80E78BC[];
+
+extern const char Receive_80E7884[];
+extern const char Send_80E788C[];
+
+const struct MenuItem gSelectWonderMailModeMainMenuItems[3] =
+{
+ {Send_80E788C, WONDER_MAIL_MODE_SEND},
+ {Receive_80E7884, WONDER_MAIL_MODE_RECEIVE},
+ {NULL, 0}
+};
+
+ALIGNED(4) const char Receive_80E7884[] = "Receive";
+ALIGNED(4) const char Send_80E788C[] = "Send";
+
+
+const struct MenuItem gSendWonderMailMainMenuItems[4] =
+{
+ {GameLinkCable_80E78C8, WONDER_MAIL_GAME_LINK},
+ {Password_80E78BC, -1},
+ {Cancel_80E78B4, 8},
+ {NULL, 0}
+
+};
+
+ALIGNED(4) const char Cancel_80E78B4[] = "Cancel";
+ALIGNED(4) const char Password_80E78BC[] = "Password";
+ALIGNED(4) const char GameLinkCable_80E78C8[] = "Game Link cable";
+
+const struct MenuItem gReceiveWonderMailMainMenuItems[4] =
+{
+ {GameLinkCable_80E78C8, WONDER_MAIL_GAME_LINK},
+ {Password_80E78BC, WONDER_MAIL_PASSWORD},
+ {Cancel_80E78B4, 8},
+ {NULL, 0}
+};
+
+const struct MenuItem gUnknown_80E78F8[3] =
+{
+ {Yes_80E7910, 6},
+ {Cancel_80E78B4, 0},
+ {NULL, 0}
+};
+
+ALIGNED(4) const char Yes_80E7910[] = "Yes";
+
+ALIGNED(4) const char gUnknown_80E7914[] = "There was a communication error.";
+
+ALIGNED(4) const char gUnknown_80E7938[] = "An incorrect number of GBA systems are\n"
+ "connected.\n"
+ "Please redo this process from the start.";
+
+ALIGNED(4) const char gUnknown_80E7994[] = "There is no response from your friend.\n"
+ "Please redo this process from the start.";
+
+ALIGNED(4) const char gUnknown_80E79E4[] = "The sender and receiver appear to be\n"
+ "in different modes.\n"
+ "Please redo the process from the start.";
+
+ALIGNED(4) const char gUnknown_80E7A48[] = "There is no response from your friend.\n"
+ "Please make sure the sender and receiver\n"
+ "are ready~2c then redo this from the start.";
+
+ALIGNED(4) const char gUnknown_80E7AC4[] = "What would you like to do?";
+
+ALIGNED(4) const char gUnknown_80E7AE0[] = "How would you like to send your\n"
+ "#CGWonder Mail#R?";
+
+ALIGNED(4) const char gUnknown_80E7B14[] = "How would you like to receive the\n"
+ "#CGWonder Mail#R?";
+
+ALIGNED(4) const char gUnknown_80E7B48[] = "Your adventure will be saved.";
+
+ALIGNED(4) const char gUnknown_80E7B68[] = "Your #CGWonder Mail#R was sent.";
+
+ALIGNED(4) const char gUnknown_80E7B88[] = "The received #CGWonder Mail#R was\n"
+ "added to the #CGJob List#R.";
+
+ALIGNED(4) const char gUnknown_80E7BC8[] = "The #CGWonder Mail#R was refused.";
+
+ALIGNED(4) const char gUnknown_80E7BEC[] = _("Connect a #CGGame Link cable#R.\n"
+ "When you and your friend are ready~2c\n"
+ "you may communicate. ");
+
+ALIGNED(4) const char gUnknown_80E7C48[] = _("#+In communication...\n"
+ "#+Please wait with the power on.\n"
+ "#+To cancel~2c press {B_BUTTON}.");
+
+ALIGNED(4) const char gUnknown_80E7C98[] = "Please enter the\n"
+ "#CGWonder Mail password#R.";
+
+ALIGNED(4) const char gUnknown_80E7CC4[] = "This password is incorrect.\n"
+ "Would you like to enter it again?";
+
+ALIGNED(4) const char wonder_mail_main_fill0[] = "pksdir0";
+
+const struct MenuItem WonderMailMainUnused[3] =
+{
+ {Yes_80E7D2C, 1},
+ {Cancel_80E7D24, 0},
+ {NULL, 0},
+};
+
+ALIGNED(4) const char Cancel_80E7D24[] = "Cancel";
+ALIGNED(4) const char Yes_80E7D2C[] = "Yes";
+
+ALIGNED(4) const char wonder_mail_main_fill1[] = "pksdir0";
+ALIGNED(4) const char wonder_mail_main_fill2[] = "pksdir0";
+
struct unkStruct_803B344
{
@@ -64,10 +180,11 @@ struct unkStruct_203B3E8
u8 unk498;
};
+EWRAM_DATA struct unkStruct_203B3E8 *gUnknown_203B3E8;
+
extern u32 sub_8095324(u32);
extern u32 sub_80144A4(s32 *);
extern u32 sub_8011C1C(void);
-extern struct unkStruct_203B3E8 *gUnknown_203B3E8;
extern void SetWonderMailMainMenuState(u8);
extern void sub_8030DE4(void);
extern void sub_801B450(void);
@@ -82,7 +199,7 @@ 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 sub_8014248(const char *, u32, u32, const struct MenuItem *, u32, u32, u32, u32, u32);
extern void nullsub_23(u32);
extern void sub_802EF48(void);
extern void sub_802D098(struct WonderMail *);
@@ -92,21 +209,6 @@ 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();
@@ -116,7 +218,7 @@ extern void sub_802D184();
extern s32 sub_80154F0();
extern bool8 DecodeWonderMailPassword(u8 *, struct WonderMail *);
extern bool8 IsValidWonderMail(struct WonderMail *WonderMailData);
-extern void sub_80141B4(u8 *r0, u32, u32 *r1, u32);
+extern void sub_80141B4(const char *r0, u32, u32 *r1, u32);
void PrintWonderMailMainMenuError(u32);
void HandleWonderMailMainScreen(void);
@@ -135,12 +237,6 @@ void HandlePasswordEntryScreen(void);
void HandleInvalidPasswordMenu(void);
-extern u8 gUnknown_80E7914[];
-extern u8 gUnknown_80E7938[];
-extern u8 gUnknown_80E7994[];
-extern u8 gUnknown_80E79E4[];
-extern u8 gUnknown_80E7A48[];
-
bool8 sub_8039880(void)
{
return (sub_8095324(1) != 0 || sub_8095324(7) != 0 || sub_8011C1C() == 2);
@@ -504,11 +600,11 @@ void WonderMailMainMenuCallback(void)
struct unkStruct_803B344 *temp;
switch(gUnknown_203B3E8->state) {
- case 0:
- sub_8014248(gUnknown_80E7AC4,0,1,&gUnknown_80E786C,0,4,0,0,0x101);
+ case SELECT_WONDER_MAIL_MODE_MAIN_SCREEN:
+ sub_8014248(gUnknown_80E7AC4,0,1,gSelectWonderMailModeMainMenuItems,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);
+ sub_8014248(gUnknown_80E7AE0,0,3,gSendWonderMailMainMenuItems,0,4,0,0,0x101);
break;
case 3:
ResetUnusedInputStruct();
@@ -516,7 +612,7 @@ void WonderMailMainMenuCallback(void)
sub_802EF48();
break;
case RECEIVE_WONDER_MAIL_MAIN_SCREEN:
- sub_8014248(gUnknown_80E7B14,0,3,&gUnknown_80E78D8,0,4,0,0,0x101);
+ sub_8014248(gUnknown_80E7B14,0,3,gReceiveWonderMailMainMenuItems,0,4,0,0,0x101);
break;
case PASSWORD_SUCCESS:
gUnknown_203B3E8->unk474 = gUnknown_203B3E8->unk3C0.unk0;
@@ -561,7 +657,7 @@ void WonderMailMainMenuCallback(void)
}
break;
case GAME_LINK_CABLE_MENU:
- sub_8014248(gUnknown_80E7BEC,0,6,&gUnknown_80E78F8,0,4,0,0,0x101);
+ sub_8014248(gUnknown_80E7BEC,0,6,gUnknown_80E78F8,0,4,0,0,0x101);
break;
case 6:
nullsub_23(0);
@@ -620,7 +716,7 @@ void WonderMailMainMenuCallback(void)
sub_80151C0(5,gUnknown_203B3E8->PasswordEntryBuffer);
break;
case PASSWORD_INVALID:
- sub_8014248(gUnknown_80E7CC4,0,6,&gUnknown_80E78F8,0,4,0,0,0x101);
+ sub_8014248(gUnknown_80E7CC4,0,6,gUnknown_80E78F8,0,4,0,0,0x101);
break;
}
}
diff --git a/sym_ewram2.txt b/sym_ewram2.txt
index 61444a8..60e3cfb 100644
--- a/sym_ewram2.txt
+++ b/sym_ewram2.txt
@@ -494,7 +494,7 @@ gUnknown_203B36C = .; /* 203B36C */
gRescuePasswordMenu = .; /* 203B370 */
. += 0x4;
-gUnknown_203B374 = .; /* 203B374 */
+gLoadScreen = .; /* 203B374 */
. += 0x4;
gUnknown_203B378 = .; /* 203B378 */