summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--asm/code_8031D70.s266
-rw-r--r--asm/code_803B050.s2
-rw-r--r--asm/code_806CD90.s4
-rw-r--r--asm/code_809447C.s2
-rw-r--r--asm/dungeon.s (renamed from asm/code_809017C.s)29
-rw-r--r--asm/dungeon_2.s (renamed from asm/code_8090208.s)104
-rw-r--r--asm/friend_area_action_menu.s262
-rw-r--r--asm/friend_list_menu.s6
-rw-r--r--asm/kangaskhan_storage_1.s4
-rw-r--r--asm/kecleon_items.s476
-rw-r--r--asm/makuhita_dojo.s2
-rw-r--r--asm/pokemon_3.s2
-rw-r--r--asm/wonder_mail_5.s265
-rw-r--r--include/constants/dungeon.h3
-rw-r--r--include/friend_area_action_menu.h2
-rw-r--r--include/item.h4
-rw-r--r--include/kecleon_items.h2
-rw-r--r--include/pokemon.h5
-rwxr-xr-xld_script.txt7
-rw-r--r--src/code_8090208.c34
-rw-r--r--src/code_8095824.c4
-rw-r--r--src/dungeon_2.c83
-rw-r--r--src/friend_area_action_menu_1.c126
-rw-r--r--src/friend_list_menu.c8
-rw-r--r--src/items.c4
-rw-r--r--src/kangaskhan_storage_3.c6
-rw-r--r--src/kecleon_items_1.c213
-rw-r--r--src/luminous_cave.c1
-rw-r--r--src/pokemon_3.c12
-rw-r--r--src/pokemon_mid.c4
-rw-r--r--src/post_office_guide.c4
31 files changed, 728 insertions, 1218 deletions
diff --git a/asm/code_8031D70.s b/asm/code_8031D70.s
new file mode 100644
index 0000000..b889571
--- /dev/null
+++ b/asm/code_8031D70.s
@@ -0,0 +1,266 @@
+ #include "asm/constants/gba_constants.inc"
+ #include "asm/macros.inc"
+
+ .syntax unified
+
+ .text
+
+ thumb_func_start sub_8031D70
+sub_8031D70:
+ push {r4-r6,lr}
+ adds r6, r0, 0
+ adds r4, r1, 0
+ ldr r5, _08031DC4
+ movs r0, 0x7C
+ movs r1, 0x8
+ bl MemoryAlloc
+ str r0, [r5]
+ stm r0!, {r6}
+ bl sub_801317C
+ ldr r0, [r5]
+ str r4, [r0, 0x10]
+ lsls r1, r4, 1
+ adds r1, r4
+ lsls r1, 3
+ adds r1, 0x18
+ adds r1, r0, r1
+ str r1, [r0, 0x14]
+ adds r0, 0x18
+ bl sub_8006518
+ ldr r1, [r5]
+ ldr r2, [r1, 0x10]
+ lsls r0, r2, 1
+ adds r0, r2
+ lsls r0, 3
+ adds r1, r0
+ adds r1, 0x18
+ ldr r0, _08031DC8
+ ldm r0!, {r2-r4}
+ stm r1!, {r2-r4}
+ ldm r0!, {r2-r4}
+ stm r1!, {r2-r4}
+ bl sub_8031E00
+ movs r0, 0x1
+ pop {r4-r6}
+ pop {r1}
+ bx r1
+ .align 2, 0
+_08031DC4: .4byte gUnknown_203B334
+_08031DC8: .4byte gUnknown_80E1FC4
+ thumb_func_end sub_8031D70
+
+ thumb_func_start sub_8031DCC
+sub_8031DCC:
+ push {lr}
+ ldr r0, _08031DEC
+ ldr r1, [r0]
+ adds r0, r1, 0x4
+ ldr r1, [r1, 0x10]
+ bl sub_8012A64
+ cmp r0, 0x1
+ beq _08031DF0
+ cmp r0, 0x2
+ bne _08031DFA
+ movs r0, 0x1
+ bl PlayMenuSoundEffect
+ movs r0, 0x2
+ b _08031DFC
+ .align 2, 0
+_08031DEC: .4byte gUnknown_203B334
+_08031DF0:
+ movs r0, 0
+ bl PlayMenuSoundEffect
+ movs r0, 0x3
+ b _08031DFC
+_08031DFA:
+ movs r0, 0
+_08031DFC:
+ pop {r1}
+ bx r1
+ thumb_func_end sub_8031DCC
+
+ thumb_func_start sub_8031E00
+sub_8031E00:
+ push {lr}
+ bl sub_8031E58
+ bl sub_8031E74
+ pop {r0}
+ bx r0
+ thumb_func_end sub_8031E00
+
+ thumb_func_start sub_8031E10
+sub_8031E10:
+ push {r4,r5,lr}
+ ldr r4, _08031E50
+ ldr r2, [r4]
+ cmp r2, 0
+ beq _08031E4A
+ ldr r0, [r2, 0x10]
+ lsls r1, r0, 1
+ adds r1, r0
+ lsls r1, 3
+ adds r1, r2, r1
+ adds r1, 0x18
+ ldr r0, _08031E54
+ 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, 0x18
+ movs r1, 0x1
+ movs r2, 0x1
+ bl sub_800641C
+ ldr r0, [r4]
+ bl MemoryFree
+ movs r0, 0
+ str r0, [r4]
+_08031E4A:
+ pop {r4,r5}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_08031E50: .4byte gUnknown_203B334
+_08031E54: .4byte gUnknown_80E1FA8
+ thumb_func_end sub_8031E10
+
+ thumb_func_start sub_8031E58
+sub_8031E58:
+ push {lr}
+ bl ResetUnusedInputStruct
+ ldr r0, _08031E70
+ ldr r0, [r0]
+ adds r0, 0x18
+ movs r1, 0x1
+ movs r2, 0x1
+ bl sub_800641C
+ pop {r0}
+ bx r0
+ .align 2, 0
+_08031E70: .4byte gUnknown_203B334
+ thumb_func_end sub_8031E58
+
+ thumb_func_start sub_8031E74
+sub_8031E74:
+ push {r4-r7,lr}
+ mov r7, r8
+ push {r7}
+ sub sp, 0x3C
+ ldr r3, _08031EC0
+ ldr r5, _08031EC4
+ ldr r2, [r5]
+ ldr r1, [r2]
+ lsls r0, r1, 1
+ adds r0, r1
+ lsls r0, 4
+ ldr r4, [r3]
+ adds r4, r0
+ ldr r0, [r2, 0x10]
+ bl sub_80073B8
+ ldr r2, _08031EC8
+ ldr r0, [r5]
+ ldr r3, [r0, 0x10]
+ movs r0, 0
+ str r0, [sp]
+ movs r0, 0x14
+ movs r1, 0
+ bl xxx_call_draw_string
+ add r0, sp, 0x4
+ adds r1, r4, 0
+ bl sub_803D2C0
+ movs r7, 0
+ mov r8, r5
+_08031EB2:
+ cmp r7, 0x4
+ ble _08031ED0
+ cmp r7, 0xC
+ bgt _08031ECC
+ movs r6, 0x6
+ movs r5, 0x16
+ b _08031F00
+ .align 2, 0
+_08031EC0: .4byte gUnknown_203B480
+_08031EC4: .4byte gUnknown_203B334
+_08031EC8: .4byte gUnknown_80E1FDC
+_08031ECC:
+ cmp r7, 0x11
+ bgt _08031ED6
+_08031ED0:
+ movs r6, 0x7
+ movs r5, 0x15
+ b _08031F00
+_08031ED6:
+ cmp r7, 0x16
+ ble _08031EE8
+ cmp r7, 0x1E
+ bgt _08031EE4
+ movs r6, 0x6
+ movs r5, 0x25
+ b _08031F00
+_08031EE4:
+ cmp r7, 0x23
+ bgt _08031EEE
+_08031EE8:
+ movs r6, 0x7
+ movs r5, 0x24
+ b _08031F00
+_08031EEE:
+ cmp r7, 0x28
+ ble _08031EFC
+ cmp r7, 0x30
+ bgt _08031EFC
+ movs r6, 0x6
+ movs r5, 0x34
+ b _08031F00
+_08031EFC:
+ movs r6, 0x7
+ movs r5, 0x33
+_08031F00:
+ adds r0, r7, 0
+ movs r1, 0x12
+ bl __modsi3
+ movs r1, 0xB
+ adds r4, r0, 0
+ muls r4, r1
+ adds r4, 0x6
+ mov r0, sp
+ adds r0, r7
+ adds r0, 0x4
+ ldrb r2, [r0]
+ mov r1, r8
+ ldr r0, [r1]
+ ldr r0, [r0, 0x10]
+ str r0, [sp]
+ adds r0, r4, 0
+ adds r1, r5, 0
+ adds r3, r6, 0
+ bl sub_8012C60
+ mov r1, r8
+ ldr r0, [r1]
+ ldr r0, [r0, 0x10]
+ adds r2, r5, 0
+ adds r2, 0xA
+ movs r1, 0x5
+ str r1, [sp]
+ adds r1, r4, 0
+ movs r3, 0xA
+ bl sub_80078A4
+ adds r7, 0x1
+ cmp r7, 0x35
+ ble _08031EB2
+ ldr r0, _08031F5C
+ ldr r0, [r0]
+ ldr r0, [r0, 0x10]
+ bl sub_80073E0
+ add sp, 0x3C
+ pop {r3}
+ mov r8, r3
+ pop {r4-r7}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_08031F5C: .4byte gUnknown_203B334
+ thumb_func_end sub_8031E74
+
+ .align 2,0
diff --git a/asm/code_803B050.s b/asm/code_803B050.s
index 1dcdaab..2fc580b 100644
--- a/asm/code_803B050.s
+++ b/asm/code_803B050.s
@@ -949,7 +949,7 @@ _0803B75C: .4byte gMedichamMission
_0803B760:
ldr r1, [r7, 0x8]
add r0, sp, 0x4
- bl sub_8090208
+ bl PrintYellowDungeonNametoBuffer
b _0803B850
_0803B76A:
ldr r4, _0803B780
diff --git a/asm/code_806CD90.s b/asm/code_806CD90.s
index 34b2572..c304730 100644
--- a/asm/code_806CD90.s
+++ b/asm/code_806CD90.s
@@ -2225,7 +2225,7 @@ _0806E040:
ldr r1, _0806E0C0
adds r0, r1
ldrb r0, [r0]
- bl sub_809033C
+ bl GetDungeonUnk1
lsls r0, 24
cmp r0, 0
beq _0806E066
@@ -2969,4 +2969,4 @@ _0806E64C: .4byte 0x00000177
_0806E650: .4byte gUnknown_8106F0C
thumb_func_end sub_806E100
- .align 2, 0 \ No newline at end of file
+ .align 2, 0
diff --git a/asm/code_809447C.s b/asm/code_809447C.s
index 281962b..3d03a7a 100644
--- a/asm/code_809447C.s
+++ b/asm/code_809447C.s
@@ -26,7 +26,7 @@ sub_8094558:
adds r1, r6, 0
adds r1, 0x18
adds r0, r4, 0
- bl sub_8090208
+ bl PrintYellowDungeonNametoBuffer
ldr r0, _080945D4
ldr r2, [r0]
str r5, [sp]
diff --git a/asm/code_809017C.s b/asm/dungeon.s
index fefed28..2e786f9 100644
--- a/asm/code_809017C.s
+++ b/asm/dungeon.s
@@ -57,33 +57,4 @@ _080901D0: .4byte 0x000003e6
_080901D4: .4byte gUnknown_8107828
thumb_func_end sub_809017C
- thumb_func_start sub_80901D8
-sub_80901D8:
- push {lr}
- adds r3, r0, 0
- adds r2, r1, 0
- ldrb r0, [r2]
- subs r0, 0x4B
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x16
- bhi _080901FE
- movs r0, 0x34
- strb r0, [r3]
- ldrb r1, [r2]
- subs r1, 0x4B
- lsls r0, r1, 1
- adds r0, r1
- ldrb r2, [r2, 0x1]
- adds r0, r2
- strb r0, [r3, 0x1]
- b _08090202
-_080901FE:
- ldr r0, [r2]
- str r0, [r3]
-_08090202:
- pop {r0}
- bx r0
- thumb_func_end sub_80901D8
-
.align 2, 0 @ Don't pad with nop.
diff --git a/asm/code_8090208.s b/asm/dungeon_2.s
index 5b097fe..2086666 100644
--- a/asm/code_8090208.s
+++ b/asm/dungeon_2.s
@@ -5,110 +5,6 @@
.text
- thumb_func_start sub_8090298
-sub_8090298:
- push {lr}
- lsls r0, 24
- lsrs r0, 24
- adds r1, r0, 0
- subs r0, 0x4B
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x16
- bhi _080902AE
- movs r0, 0x4
- b _080902C2
-_080902AE:
- cmp r1, 0x3E
- bhi _080902C0
- ldr r0, _080902BC
- adds r0, r1, r0
- ldrb r0, [r0]
- b _080902C2
- .align 2, 0
-_080902BC: .4byte gUnknown_81077A8
-_080902C0:
- movs r0, 0x1
-_080902C2:
- pop {r1}
- bx r1
- thumb_func_end sub_8090298
-
- thumb_func_start sub_80902C8
-sub_80902C8:
- push {lr}
- lsls r0, 24
- lsrs r0, 24
- adds r1, r0, 0
- subs r0, 0x4B
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x16
- bls _080902EC
- cmp r1, 0x3E
- bhi _080902EC
- ldr r0, _080902E8
- adds r0, r1, r0
- ldrb r0, [r0]
- b _080902EE
- .align 2, 0
-_080902E8: .4byte gUnknown_81077E8
-_080902EC:
- movs r0, 0
-_080902EE:
- pop {r1}
- bx r1
- thumb_func_end sub_80902C8
-
- thumb_func_start xxx_save_poke_sub_4_80902F4
-xxx_save_poke_sub_4_80902F4:
- push {r4,r5,lr}
- adds r5, r0, 0
- adds r4, r1, 0
- movs r2, 0x7
- bl SaveIntegerBits
- adds r4, 0x1
- adds r0, r5, 0
- adds r1, r4, 0
- movs r2, 0x7
- bl SaveIntegerBits
- pop {r4,r5}
- pop {r0}
- bx r0
- thumb_func_end xxx_save_poke_sub_4_80902F4
-
- thumb_func_start xxx_restore_poke_sub_4_8090314
-xxx_restore_poke_sub_4_8090314:
- push {r4,r5,lr}
- adds r5, r0, 0
- adds r4, r1, 0
- movs r0, 0
- strb r0, [r4]
- strb r0, [r4, 0x1]
- adds r0, r5, 0
- movs r2, 0x7
- bl RestoreIntegerBits
- adds r4, 0x1
- adds r0, r5, 0
- adds r1, r4, 0
- movs r2, 0x7
- bl RestoreIntegerBits
- pop {r4,r5}
- pop {r0}
- bx r0
- thumb_func_end xxx_restore_poke_sub_4_8090314
-
- thumb_func_start sub_809033C
-sub_809033C:
- lsls r0, 24
- ldr r1, _08090348
- lsrs r0, 20
- adds r0, r1
- ldrb r0, [r0, 0x1]
- bx lr
- .align 2, 0
-_08090348: .4byte gDungeons
- thumb_func_end sub_809033C
thumb_func_start sub_809034C
sub_809034C:
diff --git a/asm/friend_area_action_menu.s b/asm/friend_area_action_menu.s
index 75d3dd2..0defc5d 100644
--- a/asm/friend_area_action_menu.s
+++ b/asm/friend_area_action_menu.s
@@ -472,266 +472,4 @@ _080277F4: .4byte gUnknown_80D4920
_080277F8: .4byte gUnknown_80D4928
thumb_func_end sub_8027794
- thumb_func_start sub_80277FC
-sub_80277FC:
- push {r4,lr}
- movs r0, 0x1
- bl sub_8023A94
- cmp r0, 0x4
- bhi _080278AE
- lsls r0, 2
- ldr r1, _08027814
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .align 2, 0
-_08027814: .4byte _08027818
- .align 2, 0
-_08027818:
- .4byte _080278AE
- .4byte _080278AE
- .4byte _080278A4
- .4byte _0802782C
- .4byte _08027868
-_0802782C:
- bl sub_8023B44
- ldr r4, _08027860
- ldr r1, [r4]
- strh r0, [r1, 0x8]
- ldr r3, _08027864
- movs r0, 0x8
- ldrsh r2, [r1, r0]
- movs r0, 0x58
- muls r2, r0
- ldr r0, [r3]
- adds r0, r2
- str r0, [r1, 0x18]
- ldrb r0, [r0, 0x2]
- strb r0, [r1, 0x1C]
- ldr r1, [r4]
- movs r2, 0x8
- ldrsh r0, [r1, r2]
- adds r1, 0x14
- bl PeekPokemonItem
- movs r0, 0x3
- bl SetFriendAreaActionMenuState
- b _080278AE
- .align 2, 0
-_08027860: .4byte gUnknown_203B2BC
-_08027864: .4byte gRecruitedPokemonRef
-_08027868:
- bl sub_8023B44
- ldr r4, _0802789C
- ldr r1, [r4]
- strh r0, [r1, 0x8]
- ldr r3, _080278A0
- movs r0, 0x8
- ldrsh r2, [r1, r0]
- movs r0, 0x58
- muls r2, r0
- ldr r0, [r3]
- adds r0, r2
- str r0, [r1, 0x18]
- ldrb r0, [r0, 0x2]
- strb r0, [r1, 0x1C]
- ldr r1, [r4]
- movs r2, 0x8
- ldrsh r0, [r1, r2]
- adds r1, 0x14
- bl PeekPokemonItem
- movs r0, 0x4
- bl SetFriendAreaActionMenuState
- b _080278AE
- .align 2, 0
-_0802789C: .4byte gUnknown_203B2BC
-_080278A0: .4byte gRecruitedPokemonRef
-_080278A4:
- bl sub_8023C60
- movs r0, 0x11
- bl SetFriendAreaActionMenuState
-_080278AE:
- pop {r4}
- pop {r0}
- bx r0
- thumb_func_end sub_80277FC
-
- thumb_func_start sub_80278B4
-sub_80278B4:
- push {r4,lr}
- sub sp, 0x4
- movs r0, 0
- str r0, [sp]
- bl sub_8023A94
- ldr r4, _080278F8
- ldr r0, [r4]
- adds r0, 0x7C
- bl sub_8012FD8
- lsls r0, 24
- cmp r0, 0
- bne _080278E4
- ldr r0, [r4]
- adds r0, 0x7C
- mov r1, sp
- bl sub_8013114
- ldr r1, [sp]
- cmp r1, 0x1
- beq _080278E4
- ldr r0, [r4]
- str r1, [r0, 0x70]
-_080278E4:
- ldr r0, [sp]
- subs r0, 0x1
- cmp r0, 0xB
- bls _080278EE
- b _08027A36
-_080278EE:
- lsls r0, 2
- ldr r1, _080278FC
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .align 2, 0
-_080278F8: .4byte gUnknown_203B2BC
-_080278FC: .4byte _08027900
- .align 2, 0
-_08027900:
- .4byte _08027A30
- .4byte _08027A36
- .4byte _08027A36
- .4byte _08027A20
- .4byte _08027A28
- .4byte _08027930
- .4byte _0802796C
- .4byte _0802798C
- .4byte _080279C0
- .4byte _080279D0
- .4byte _080279D8
- .4byte _080279C8
-_08027930:
- ldr r4, _08027964
- ldr r0, [r4]
- movs r1, 0x8
- ldrsh r0, [r0, r1]
- bl sub_808D750
- lsls r0, 24
- cmp r0, 0
- beq _0802795E
- ldr r0, [r4]
- movs r2, 0x8
- ldrsh r1, [r0, r2]
- movs r0, 0x58
- muls r1, r0
- ldr r0, _08027968
- ldr r0, [r0]
- adds r1, r0
- ldrh r2, [r1]
- movs r0, 0x2
- orrs r0, r2
- strh r0, [r1]
- bl nullsub_104
-_0802795E:
- bl sub_808ED00
- b _08027A0E
- .align 2, 0
-_08027964: .4byte gUnknown_203B2BC
-_08027968: .4byte gRecruitedPokemonRef
-_0802796C:
- ldr r0, _08027984
- ldr r0, [r0]
- ldr r2, [r0, 0x18]
- ldrh r1, [r2]
- ldr r0, _08027988
- ands r0, r1
- strh r0, [r2]
- bl nullsub_104
- bl sub_808ED00
- b _08027A0E
- .align 2, 0
-_08027984: .4byte gUnknown_203B2BC
-_08027988: .4byte 0x0000fffd
-_0802798C:
- ldr r2, _080279B8
- ldr r0, _080279BC
- ldr r0, [r0]
- movs r3, 0x8
- ldrsh r1, [r0, r3]
- movs r0, 0x58
- muls r1, r0
- ldr r0, [r2]
- adds r4, r0, r1
- bl GetPlayerPokemonStruct
- ldrb r1, [r4, 0x2]
- cmp r1, 0
- bne _080279B2
- strb r1, [r0, 0x2]
- movs r0, 0x1
- strb r0, [r4, 0x2]
- bl nullsub_104
-_080279B2:
- bl sub_808ED00
- b _08027A0E
- .align 2, 0
-_080279B8: .4byte gRecruitedPokemonRef
-_080279BC: .4byte gUnknown_203B2BC
-_080279C0:
- movs r0, 0x8
- bl SetFriendAreaActionMenuState
- b _08027A36
-_080279C8:
- movs r0, 0xE
- bl SetFriendAreaActionMenuState
- b _08027A36
-_080279D0:
- movs r0, 0xA
- bl SetFriendAreaActionMenuState
- b _08027A36
-_080279D8:
- ldr r0, _08027A18
- bl PlaySound
- ldr r4, _08027A1C
- ldr r1, [r4]
- ldrb r0, [r1, 0x14]
- cmp r0, 0
- beq _080279F0
- adds r0, r1, 0
- adds r0, 0x14
- bl sub_8091274
-_080279F0:
- bl FillInventoryGaps
- ldr r0, [r4]
- movs r1, 0
- strb r1, [r0, 0x14]
- ldr r0, [r4]
- strb r1, [r0, 0x15]
- ldr r1, [r4]
- movs r2, 0x8
- ldrsh r0, [r1, r2]
- adds r1, 0x14
- bl GivePokemonItem
- bl nullsub_104
-_08027A0E:
- movs r0, 0x2
- bl SetFriendAreaActionMenuState
- b _08027A36
- .align 2, 0
-_08027A18: .4byte 0x0000014d
-_08027A1C: .4byte gUnknown_203B2BC
-_08027A20:
- movs r0, 0x4
- bl SetFriendAreaActionMenuState
- b _08027A36
-_08027A28:
- movs r0, 0x5
- bl SetFriendAreaActionMenuState
- b _08027A36
-_08027A30:
- movs r0, 0x2
- bl SetFriendAreaActionMenuState
-_08027A36:
- add sp, 0x4
- pop {r4}
- pop {r0}
- bx r0
- thumb_func_end sub_80278B4
-
.align 2,0
diff --git a/asm/friend_list_menu.s b/asm/friend_list_menu.s
index 98a68a4..8ce78db 100644
--- a/asm/friend_list_menu.s
+++ b/asm/friend_list_menu.s
@@ -1032,7 +1032,7 @@ _08025B28:
beq _08025B40
adds r0, r1, 0
adds r0, 0x18
- bl sub_8091274
+ bl AddHeldItemToInventory
_08025B40:
bl FillInventoryGaps
ldr r0, [r4]
@@ -1259,7 +1259,7 @@ _08025CF8:
beq _08025D24
adds r0, r1, 0
adds r0, 0x18
- bl sub_8091274
+ bl AddHeldItemToInventory
movs r6, 0x9
_08025D24:
add r4, sp, 0x10
@@ -2858,7 +2858,7 @@ _08026A10:
beq _08026A28
adds r0, r1, 0
adds r0, 0x14
- bl sub_8091274
+ bl AddHeldItemToInventory
_08026A28:
bl FillInventoryGaps
ldr r0, [r4]
diff --git a/asm/kangaskhan_storage_1.s b/asm/kangaskhan_storage_1.s
index 9890fe4..63990e9 100644
--- a/asm/kangaskhan_storage_1.s
+++ b/asm/kangaskhan_storage_1.s
@@ -470,7 +470,7 @@ _0801794C:
orrs r0, r1
str r0, [sp, 0x4]
add r0, sp, 0x4
- bl sub_8091274
+ bl AddHeldItemToInventory
movs r0, 0x1D
bl UpdateKangaskhanStorageState
b _080179A2
@@ -638,7 +638,7 @@ _08017AB0:
ldrh r2, [r3]
subs r2, r1
strh r2, [r3]
- bl sub_8091274
+ bl AddHeldItemToInventory
_08017ACE:
adds r5, 0x1
cmp r5, 0xEF
diff --git a/asm/kecleon_items.s b/asm/kecleon_items.s
index 87f2bdd..2d0fb02 100644
--- a/asm/kecleon_items.s
+++ b/asm/kecleon_items.s
@@ -1051,480 +1051,4 @@ _08019728: .4byte gUnknown_80D4920
_0801972C: .4byte gUnknown_80D4928
thumb_func_end sub_8019700
- thumb_func_start sub_8019730
-sub_8019730:
- push {lr}
- sub sp, 0x4
- mov r0, sp
- bl sub_80144A4
- cmp r0, 0
- beq _08019740
- b _0801984A
-_08019740:
- ldr r1, [sp]
- cmp r1, 0x1
- beq _0801974C
- ldr r0, _08019760
- ldr r0, [r0]
- str r1, [r0, 0x28]
-_0801974C:
- ldr r0, [sp]
- subs r0, 0x1
- cmp r0, 0x6
- bls _08019756
- b _0801984A
-_08019756:
- lsls r0, 2
- ldr r1, _08019764
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .align 2, 0
-_08019760: .4byte gUnknown_203B210
-_08019764: .4byte _08019768
- .align 2, 0
-_08019768:
- .4byte _08019844
- .4byte _08019784
- .4byte _080197AC
- .4byte _080197E4
- .4byte _0801984A
- .4byte _0801984A
- .4byte _0801983C
-_08019784:
- bl sub_8019D8C
- cmp r0, 0
- bne _08019794
- movs r0, 0x5
- bl UpdateKecleonStoreState
- b _0801984A
-_08019794:
- bl GetNumberOfFilledInventorySlots
- cmp r0, 0x13
- ble _080197A4
- movs r0, 0xA
- bl UpdateKecleonStoreState
- b _0801984A
-_080197A4:
- movs r0, 0xF
- bl UpdateKecleonStoreState
- b _0801984A
-_080197AC:
- bl GetNumberOfFilledInventorySlots
- cmp r0, 0
- beq _080197EC
- ldr r0, _080197D8
- ldr r0, [r0]
- ldr r0, [r0, 0x14]
- cmp r0, 0
- beq _080197FE
- ldr r0, _080197DC
- ldr r0, [r0]
- movs r1, 0x98
- lsls r1, 2
- adds r0, r1
- ldr r1, [r0]
- ldr r0, _080197E0
- cmp r1, r0
- bgt _08019822
- movs r0, 0x17
- bl UpdateKecleonStoreState
- b _0801984A
- .align 2, 0
-_080197D8: .4byte gUnknown_203B210
-_080197DC: .4byte gTeamInventory_203B460
-_080197E0: .4byte 0x0001869e
-_080197E4:
- bl GetNumberOfFilledInventorySlots
- cmp r0, 0
- bne _080197F4
-_080197EC:
- movs r0, 0x9
- bl UpdateKecleonStoreState
- b _0801984A
-_080197F4:
- ldr r0, _08019808
- ldr r1, [r0]
- ldr r0, [r1, 0x14]
- cmp r0, 0
- bne _0801980C
-_080197FE:
- movs r0, 0x8
- bl UpdateKecleonStoreState
- b _0801984A
- .align 2, 0
-_08019808: .4byte gUnknown_203B210
-_0801980C:
- ldr r0, _0801982C
- ldr r0, [r0]
- movs r2, 0x98
- lsls r2, 2
- adds r0, r2
- ldr r1, [r1, 0x18]
- ldr r0, [r0]
- adds r1, r0
- ldr r0, _08019830
- cmp r1, r0
- ble _08019834
-_08019822:
- movs r0, 0x7
- bl UpdateKecleonStoreState
- b _0801984A
- .align 2, 0
-_0801982C: .4byte gTeamInventory_203B460
-_08019830: .4byte 0x0001869f
-_08019834:
- movs r0, 0x1F
- bl UpdateKecleonStoreState
- b _0801984A
-_0801983C:
- movs r0, 0x2
- bl UpdateKecleonStoreState
- b _0801984A
-_08019844:
- movs r0, 0x3
- bl UpdateKecleonStoreState
-_0801984A:
- add sp, 0x4
- pop {r0}
- bx r0
- thumb_func_end sub_8019730
-
- thumb_func_start sub_8019850
-sub_8019850:
- push {r4,lr}
- sub sp, 0x4
- mov r0, sp
- bl sub_80144A4
- cmp r0, 0
- bne _080198DE
- ldr r0, [sp]
- cmp r0, 0x5
- beq _08019874
- cmp r0, 0x5
- bgt _0801986E
- cmp r0, 0x1
- beq _080198D8
- b _080198DE
-_0801986E:
- cmp r0, 0x6
- beq _080198D8
- b _080198DE
-_08019874:
- ldr r4, _080198A8
- ldr r0, [r4]
- ldr r0, [r0, 0x10]
- negs r0, r0
- bl AddToTeamMoney
- ldr r1, [r4]
- ldrb r0, [r1, 0x4]
- cmp r0, 0
- beq _080198AC
- adds r0, r1, 0
- adds r0, 0x20
- ldrb r0, [r0]
- bl xxx_get_inv_unk230_at_809185C
- bl sub_8091274
- ldr r0, [r4]
- adds r0, 0x20
- ldrb r0, [r0]
- bl xxx_init_unk230_substruct
- bl xxx_fill_unk230_gaps
- b _080198C8
- .align 2, 0
-_080198A8: .4byte gUnknown_203B210
-_080198AC:
- adds r0, r1, 0
- adds r0, 0x21
- ldrb r0, [r0]
- bl xxx_get_unk250_at_8091A90
- bl sub_8091274
- ldr r0, [r4]
- adds r0, 0x21
- ldrb r0, [r0]
- bl xxx_init_inv_unk250_at_8091A74
- bl xxx_fill_inv_unk250_gaps_8091AA8
-_080198C8:
- movs r0, 0xA6
- lsls r0, 1
- bl PlaySound
- movs r0, 0x11
- bl UpdateKecleonStoreState
- b _080198DE
-_080198D8:
- movs r0, 0x10
- bl UpdateKecleonStoreState
-_080198DE:
- add sp, 0x4
- pop {r4}
- pop {r0}
- bx r0
- thumb_func_end sub_8019850
-
- thumb_func_start sub_80198E8
-sub_80198E8:
- push {r4,lr}
- sub sp, 0x4
- mov r0, sp
- bl sub_80144A4
- cmp r0, 0
- bne _0801993A
- ldr r0, [sp]
- cmp r0, 0x5
- beq _0801990C
- cmp r0, 0x5
- bgt _08019906
- cmp r0, 0x1
- beq _08019934
- b _0801993A
-_08019906:
- cmp r0, 0x6
- beq _08019934
- b _0801993A
-_0801990C:
- ldr r4, _08019930
- ldr r0, [r4]
- ldr r0, [r0, 0x10]
- bl AddToTeamMoney
- ldr r0, [r4]
- ldr r0, [r0, 0x24]
- bl ShiftItemsDownFrom
- movs r0, 0xA6
- lsls r0, 1
- bl PlaySound
- movs r0, 0x19
- bl UpdateKecleonStoreState
- b _0801993A
- .align 2, 0
-_08019930: .4byte gUnknown_203B210
-_08019934:
- movs r0, 0x18
- bl UpdateKecleonStoreState
-_0801993A:
- add sp, 0x4
- pop {r4}
- pop {r0}
- bx r0
- thumb_func_end sub_80198E8
-
- thumb_func_start sub_8019944
-sub_8019944:
- push {r4,r5,lr}
- sub sp, 0x4
- mov r0, sp
- bl sub_80144A4
- cmp r0, 0
- bne _080199C2
- ldr r0, [sp]
- cmp r0, 0x5
- beq _08019968
- cmp r0, 0x5
- bgt _08019962
- cmp r0, 0x1
- beq _080199BC
- b _080199C2
-_08019962:
- cmp r0, 0x6
- beq _080199BC
- b _080199C2
-_08019968:
- movs r4, 0
- ldr r5, _080199B4
-_0801996C:
- lsls r1, r4, 2
- ldr r0, [r5]
- adds r2, r0, r1
- ldrb r1, [r2]
- movs r0, 0x1
- ands r0, r1
- cmp r0, 0
- beq _0801998E
- ldrb r0, [r2, 0x2]
- bl CanSellItem
- lsls r0, 24
- cmp r0, 0
- beq _0801998E
- adds r0, r4, 0
- bl ClearItemSlotAt
-_0801998E:
- adds r4, 0x1
- cmp r4, 0x13
- ble _0801996C
- bl FillInventoryGaps
- ldr r0, _080199B8
- ldr r0, [r0]
- ldr r0, [r0, 0x18]
- bl AddToTeamMoney
- movs r0, 0xA6
- lsls r0, 1
- bl PlaySound
- movs r0, 0x20
- bl UpdateKecleonStoreState
- b _080199C2
- .align 2, 0
-_080199B4: .4byte gTeamInventory_203B460
-_080199B8: .4byte gUnknown_203B210
-_080199BC:
- movs r0, 0x1
- bl UpdateKecleonStoreState
-_080199C2:
- add sp, 0x4
- pop {r4,r5}
- pop {r0}
- bx r0
- thumb_func_end sub_8019944
-
- thumb_func_start sub_80199CC
-sub_80199CC:
- push {r4,r5,lr}
- ldr r0, _080199E0
- ldr r0, [r0]
- ldrb r0, [r0, 0x4]
- cmp r0, 0
- beq _080199E4
- movs r0, 0x1
- bl sub_8019EDC
- b _080199EA
- .align 2, 0
-_080199E0: .4byte gUnknown_203B210
-_080199E4:
- movs r0, 0x1
- bl sub_801A2A8
-_080199EA:
- cmp r0, 0x2
- beq _08019AD4
- cmp r0, 0x2
- bhi _080199FA
- cmp r0, 0x1
- bne _080199F8
- b _08019AF4
-_080199F8:
- b _08019B00
-_080199FA:
- cmp r0, 0x3
- beq _08019A04
- cmp r0, 0x4
- beq _08019A6C
- b _08019B00
-_08019A04:
- ldr r4, _08019A24
- ldr r0, [r4]
- ldrb r0, [r0, 0x4]
- cmp r0, 0
- beq _08019A28
- bl sub_8019FB0
- ldr r1, [r4]
- adds r1, 0x20
- strb r0, [r1]
- ldr r0, [r4]
- adds r0, 0x20
- ldrb r0, [r0]
- bl xxx_get_inv_unk230_at_809185C
- b _08019A3C
- .align 2, 0
-_08019A24: .4byte gUnknown_203B210
-_08019A28:
- bl sub_801A37C
- ldr r1, [r4]
- adds r1, 0x21
- strb r0, [r1]
- ldr r0, [r4]
- adds r0, 0x21
- ldrb r0, [r0]
- bl xxx_get_unk250_at_8091A90
-_08019A3C:
- adds r5, r0, 0
- ldr r4, _08019A68
- ldr r0, [r4]
- adds r0, 0x1C
- ldrb r1, [r5]
- movs r2, 0
- bl xxx_init_itemslot_8090A8C
- ldr r1, [r4]
- ldrb r0, [r5, 0x1]
- strb r0, [r1, 0x1D]
- ldr r0, [r4]
- adds r0, 0x1C
- bl GetStackBuyPrice
- ldr r1, [r4]
- str r0, [r1, 0x10]
- movs r0, 0x14
- bl UpdateKecleonStoreState
- b _08019B00
- .align 2, 0
-_08019A68: .4byte gUnknown_203B210
-_08019A6C:
- ldr r4, _08019A8C
- ldr r0, [r4]
- ldrb r0, [r0, 0x4]
- cmp r0, 0
- beq _08019A90
- bl sub_8019FB0
- ldr r1, [r4]
- adds r1, 0x20
- strb r0, [r1]
- ldr r0, [r4]
- adds r0, 0x20
- ldrb r0, [r0]
- bl xxx_get_inv_unk230_at_809185C
- b _08019AA4
- .align 2, 0
-_08019A8C: .4byte gUnknown_203B210
-_08019A90:
- bl sub_801A37C
- ldr r1, [r4]
- adds r1, 0x21
- strb r0, [r1]
- ldr r0, [r4]
- adds r0, 0x21
- ldrb r0, [r0]
- bl xxx_get_unk250_at_8091A90
-_08019AA4:
- adds r5, r0, 0
- ldr r4, _08019AD0
- ldr r0, [r4]
- adds r0, 0x1C
- ldrb r1, [r5]
- movs r2, 0
- bl xxx_init_itemslot_8090A8C
- ldr r1, [r4]
- ldrb r0, [r5, 0x1]
- strb r0, [r1, 0x1D]
- ldr r0, [r4]
- adds r0, 0x1C
- bl GetStackBuyPrice
- ldr r1, [r4]
- str r0, [r1, 0x10]
- movs r0, 0x15
- bl UpdateKecleonStoreState
- b _08019B00
- .align 2, 0
-_08019AD0: .4byte gUnknown_203B210
-_08019AD4:
- ldr r0, _08019AE4
- ldr r0, [r0]
- ldrb r0, [r0, 0x4]
- cmp r0, 0
- beq _08019AE8
- bl sub_801A010
- b _08019AEC
- .align 2, 0
-_08019AE4: .4byte gUnknown_203B210
-_08019AE8:
- bl sub_801A3DC
-_08019AEC:
- movs r0, 0x1
- bl UpdateKecleonStoreState
- b _08019B00
-_08019AF4:
- movs r0, 0
- bl sub_801AD34
- movs r0, 0x1
- bl DrawTeamMoneyBox
-_08019B00:
- pop {r4,r5}
- pop {r0}
- bx r0
- thumb_func_end sub_80199CC
-
.align 2,0
diff --git a/asm/makuhita_dojo.s b/asm/makuhita_dojo.s
index 7d7680e..e19ef0c 100644
--- a/asm/makuhita_dojo.s
+++ b/asm/makuhita_dojo.s
@@ -135,7 +135,7 @@ _08030074:
str r1, [sp, 0x14]
ldr r0, _080300BC
add r1, sp, 0x14
- bl sub_8090208
+ bl PrintYellowDungeonNametoBuffer
ldr r2, _080300C0
ldr r3, [r5]
ldr r1, [r3, 0x4]
diff --git a/asm/pokemon_3.s b/asm/pokemon_3.s
index 43173ec..99129d1 100644
--- a/asm/pokemon_3.s
+++ b/asm/pokemon_3.s
@@ -1252,7 +1252,7 @@ _0808FDB0:
mov r1, r10
adds r1, 0x1C
adds r0, r4, 0
- bl sub_8090208
+ bl PrintYellowDungeonNametoBuffer
ldr r0, _0808FF0C
ldr r2, [r0]
str r5, [sp]
diff --git a/asm/wonder_mail_5.s b/asm/wonder_mail_5.s
index aa081ae..86b83e0 100644
--- a/asm/wonder_mail_5.s
+++ b/asm/wonder_mail_5.s
@@ -5,9 +5,8 @@
.text
-
- thumb_func_start sub_8031AE8
-sub_8031AE8:
+ thumb_func_start DisplayMissionObjectives
+DisplayMissionObjectives:
push {r4-r7,lr}
mov r7, r10
mov r6, r9
@@ -308,264 +307,6 @@ _08031D4E:
.align 2, 0
_08031D68: .4byte gUnknown_80E1F94
_08031D6C: .4byte gUnknown_203B330
- thumb_func_end sub_8031AE8
-
- thumb_func_start sub_8031D70
-sub_8031D70:
- push {r4-r6,lr}
- adds r6, r0, 0
- adds r4, r1, 0
- ldr r5, _08031DC4
- movs r0, 0x7C
- movs r1, 0x8
- bl MemoryAlloc
- str r0, [r5]
- stm r0!, {r6}
- bl sub_801317C
- ldr r0, [r5]
- str r4, [r0, 0x10]
- lsls r1, r4, 1
- adds r1, r4
- lsls r1, 3
- adds r1, 0x18
- adds r1, r0, r1
- str r1, [r0, 0x14]
- adds r0, 0x18
- bl sub_8006518
- ldr r1, [r5]
- ldr r2, [r1, 0x10]
- lsls r0, r2, 1
- adds r0, r2
- lsls r0, 3
- adds r1, r0
- adds r1, 0x18
- ldr r0, _08031DC8
- ldm r0!, {r2-r4}
- stm r1!, {r2-r4}
- ldm r0!, {r2-r4}
- stm r1!, {r2-r4}
- bl sub_8031E00
- movs r0, 0x1
- pop {r4-r6}
- pop {r1}
- bx r1
- .align 2, 0
-_08031DC4: .4byte gUnknown_203B334
-_08031DC8: .4byte gUnknown_80E1FC4
- thumb_func_end sub_8031D70
-
- thumb_func_start sub_8031DCC
-sub_8031DCC:
- push {lr}
- ldr r0, _08031DEC
- ldr r1, [r0]
- adds r0, r1, 0x4
- ldr r1, [r1, 0x10]
- bl sub_8012A64
- cmp r0, 0x1
- beq _08031DF0
- cmp r0, 0x2
- bne _08031DFA
- movs r0, 0x1
- bl PlayMenuSoundEffect
- movs r0, 0x2
- b _08031DFC
- .align 2, 0
-_08031DEC: .4byte gUnknown_203B334
-_08031DF0:
- movs r0, 0
- bl PlayMenuSoundEffect
- movs r0, 0x3
- b _08031DFC
-_08031DFA:
- movs r0, 0
-_08031DFC:
- pop {r1}
- bx r1
- thumb_func_end sub_8031DCC
-
- thumb_func_start sub_8031E00
-sub_8031E00:
- push {lr}
- bl sub_8031E58
- bl sub_8031E74
- pop {r0}
- bx r0
- thumb_func_end sub_8031E00
-
- thumb_func_start sub_8031E10
-sub_8031E10:
- push {r4,r5,lr}
- ldr r4, _08031E50
- ldr r2, [r4]
- cmp r2, 0
- beq _08031E4A
- ldr r0, [r2, 0x10]
- lsls r1, r0, 1
- adds r1, r0
- lsls r1, 3
- adds r1, r2, r1
- adds r1, 0x18
- ldr r0, _08031E54
- 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, 0x18
- movs r1, 0x1
- movs r2, 0x1
- bl sub_800641C
- ldr r0, [r4]
- bl MemoryFree
- movs r0, 0
- str r0, [r4]
-_08031E4A:
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_08031E50: .4byte gUnknown_203B334
-_08031E54: .4byte gUnknown_80E1FA8
- thumb_func_end sub_8031E10
-
- thumb_func_start sub_8031E58
-sub_8031E58:
- push {lr}
- bl ResetUnusedInputStruct
- ldr r0, _08031E70
- ldr r0, [r0]
- adds r0, 0x18
- movs r1, 0x1
- movs r2, 0x1
- bl sub_800641C
- pop {r0}
- bx r0
- .align 2, 0
-_08031E70: .4byte gUnknown_203B334
- thumb_func_end sub_8031E58
-
- thumb_func_start sub_8031E74
-sub_8031E74:
- push {r4-r7,lr}
- mov r7, r8
- push {r7}
- sub sp, 0x3C
- ldr r3, _08031EC0
- ldr r5, _08031EC4
- ldr r2, [r5]
- ldr r1, [r2]
- lsls r0, r1, 1
- adds r0, r1
- lsls r0, 4
- ldr r4, [r3]
- adds r4, r0
- ldr r0, [r2, 0x10]
- bl sub_80073B8
- ldr r2, _08031EC8
- ldr r0, [r5]
- ldr r3, [r0, 0x10]
- movs r0, 0
- str r0, [sp]
- movs r0, 0x14
- movs r1, 0
- bl xxx_call_draw_string
- add r0, sp, 0x4
- adds r1, r4, 0
- bl sub_803D2C0
- movs r7, 0
- mov r8, r5
-_08031EB2:
- cmp r7, 0x4
- ble _08031ED0
- cmp r7, 0xC
- bgt _08031ECC
- movs r6, 0x6
- movs r5, 0x16
- b _08031F00
- .align 2, 0
-_08031EC0: .4byte gUnknown_203B480
-_08031EC4: .4byte gUnknown_203B334
-_08031EC8: .4byte gUnknown_80E1FDC
-_08031ECC:
- cmp r7, 0x11
- bgt _08031ED6
-_08031ED0:
- movs r6, 0x7
- movs r5, 0x15
- b _08031F00
-_08031ED6:
- cmp r7, 0x16
- ble _08031EE8
- cmp r7, 0x1E
- bgt _08031EE4
- movs r6, 0x6
- movs r5, 0x25
- b _08031F00
-_08031EE4:
- cmp r7, 0x23
- bgt _08031EEE
-_08031EE8:
- movs r6, 0x7
- movs r5, 0x24
- b _08031F00
-_08031EEE:
- cmp r7, 0x28
- ble _08031EFC
- cmp r7, 0x30
- bgt _08031EFC
- movs r6, 0x6
- movs r5, 0x34
- b _08031F00
-_08031EFC:
- movs r6, 0x7
- movs r5, 0x33
-_08031F00:
- adds r0, r7, 0
- movs r1, 0x12
- bl __modsi3
- movs r1, 0xB
- adds r4, r0, 0
- muls r4, r1
- adds r4, 0x6
- mov r0, sp
- adds r0, r7
- adds r0, 0x4
- ldrb r2, [r0]
- mov r1, r8
- ldr r0, [r1]
- ldr r0, [r0, 0x10]
- str r0, [sp]
- adds r0, r4, 0
- adds r1, r5, 0
- adds r3, r6, 0
- bl sub_8012C60
- mov r1, r8
- ldr r0, [r1]
- ldr r0, [r0, 0x10]
- adds r2, r5, 0
- adds r2, 0xA
- movs r1, 0x5
- str r1, [sp]
- adds r1, r4, 0
- movs r3, 0xA
- bl sub_80078A4
- adds r7, 0x1
- cmp r7, 0x35
- ble _08031EB2
- ldr r0, _08031F5C
- ldr r0, [r0]
- ldr r0, [r0, 0x10]
- bl sub_80073E0
- add sp, 0x3C
- pop {r3}
- mov r8, r3
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_08031F5C: .4byte gUnknown_203B334
- thumb_func_end sub_8031E74
+ thumb_func_end DisplayMissionObjectives
.align 2,0
diff --git a/include/constants/dungeon.h b/include/constants/dungeon.h
index 19f5340..6987c61 100644
--- a/include/constants/dungeon.h
+++ b/include/constants/dungeon.h
@@ -1,6 +1,8 @@
#ifndef GUARD_CONSTANTS_DUNGEON_H
#define GUARD_CONSTANTS_DUNGEON_H
+#define NUM_DUNGEON_MAZE (NUM_DUNGEONS - DUNGEON_NORMAL_MAZE_2)
+
enum Dungeon
{
DUNGEON_TINY_WOODS = 0,
@@ -101,6 +103,7 @@ enum Dungeon
DUNGEON_TEAM_RUMBLEROCK = 95,
DUNGEON_RESCUE_TEAM_2 = 96,
DUNGEON_RESCUE_TEAM_MAZE = 97,
+ NUM_DUNGEONS
};
#endif
diff --git a/include/friend_area_action_menu.h b/include/friend_area_action_menu.h
index dfddc22..1080679 100644
--- a/include/friend_area_action_menu.h
+++ b/include/friend_area_action_menu.h
@@ -12,7 +12,7 @@ struct unkStruct_203B2BC
struct HeldItem itemToGive;
struct HeldItem unk14;
struct PokemonStruct *unk18;
- u32 unk1C;
+ u8 unk1C;
u32 unk20;
u16 unk24;
struct PokemonMove unk28[8];
diff --git a/include/item.h b/include/item.h
index 5da4c67..6ac6847 100644
--- a/include/item.h
+++ b/include/item.h
@@ -104,15 +104,17 @@ bool8 IsGummiItem(u8);
void xxx_init_unk230_substruct(u8);
bool8 xxx_insert_unk230_80919FC(u8);
struct HeldItem *xxx_get_inv_unk230_at_809185C(u8);
+void xxx_fill_unk230_gaps();
struct HeldItem* xxx_get_unk250_at_8091A90(u8);
s32 xxx_count_inv_unk230();
u32 xxx_count_non_empty_inv_unk250_8091A48();
void sub_8091BB4(u8);
void sub_8090F58(void*, u8 *, struct ItemSlot *, struct unkStruct_8090F58*);
void ShiftItemsDownFrom(s32 start);
+void ClearItemSlotAt(u32 index);
void MoveToStorage(struct ItemSlot* slot);
void FillInventoryGaps();
-bool8 sub_8091274(struct HeldItem* slot);
+bool8 AddHeldItemToInventory(struct HeldItem* slot);
bool8 IsNotMoneyOrUsedTMItem(u8 id);
s32 FindItemInInventory(u8 itemIndex);
diff --git a/include/kecleon_items.h b/include/kecleon_items.h
index 11cb0a7..0719804 100644
--- a/include/kecleon_items.h
+++ b/include/kecleon_items.h
@@ -15,7 +15,7 @@ struct unkStruct_203B210
u32 unkC;
s32 itemSellPrice;
u32 unk14;
- u32 unk18;
+ s32 unk18;
struct ItemSlot unk1C;
u8 unk20;
u8 unk21;
diff --git a/include/pokemon.h b/include/pokemon.h
index af6c103..c50dc75 100644
--- a/include/pokemon.h
+++ b/include/pokemon.h
@@ -22,7 +22,6 @@ struct Offense {
struct unkPokeSubStruct_4 {
u8 dungeonIndex;
u8 dungeonFloor;
- u16 fill6;
};
struct unkPokeSubStruct_C
@@ -35,7 +34,7 @@ struct PokemonStruct
{
// size: 0x58
/* 0x0 */ u16 unk0; // recruited??
- /* 0x1 */ u8 unk2;
+ /* 0x1 */ bool8 isLeader;
/* 0x3 */ u8 unkHasNextStage; // set to a random value?
/* 0x4 */ struct unkPokeSubStruct_4 unk4;
/* 0x8 */ s16 speciesNum; // species #
@@ -76,7 +75,7 @@ struct PokemonStruct2
{
// size 0x68
u16 unk0; // corresponds to unk0 inPokemonStruct
- u8 unk2; // unk2
+ bool8 isLeader; // unk2
u8 unkHasNextStage; // unk3
struct unkPokeSubStruct_4 unk4; // unk4
u16 IQ; // IQ (other offset)
diff --git a/ld_script.txt b/ld_script.txt
index b9db591..13ffffd 100755
--- a/ld_script.txt
+++ b/ld_script.txt
@@ -144,6 +144,7 @@ SECTIONS {
asm/wonder_mail_4.o(.text);
src/post_office_guide.o(.text);
asm/wonder_mail_5.o(.text);
+ asm/code_8031D70.o(.text);
src/adventure_log.o(.text);
src/friend_rescue.o(.text);
asm/friend_rescue.o(.text);
@@ -277,9 +278,9 @@ SECTIONS {
src/pokemon_3.o(.text);
asm/pokemon_3.o(.text);
src/dungeon.o(.text);
- asm/code_809017C.o(.text);
- src/code_8090208.o(.text);
- asm/code_8090208.o(.text);
+ asm/dungeon.o(.text);
+ src/dungeon_2.o(.text);
+ asm/dungeon_2.o(.text);
src/items.o(.text);
src/rescue_team_info.o(.text);
src/text_util.o(.text);
diff --git a/src/code_8090208.c b/src/code_8090208.c
deleted file mode 100644
index 8322ffc..0000000
--- a/src/code_8090208.c
+++ /dev/null
@@ -1,34 +0,0 @@
-#include "global.h"
-#include "dungeon.h"
-#include "code_800D090.h"
-
-extern const char gUnknown_8108F10[];
-extern const char gUnknown_8108F18[];
-extern const char gUnknown_8108F2C[];
-
-struct unkDungeonStruct
-{
- u8 index;
- u8 floor;
-};
-
-void sub_8090208(u8 *buffer, struct unkDungeonStruct *dungeonLocation)
-{
- sprintf_2(buffer, gUnknown_8108F10, gDungeonNames[dungeonLocation->index].name1); // {COLOR_2 YELLOW_4}%s{END_COLOR_TEXT_2} (normal floor print (no B)
-}
-
-void PrintDungeonLocationtoBuffer(u8 *buffer, struct unkDungeonStruct *dungeonLocation)
-{
- if(gDungeons[dungeonLocation->index].stairDirection != 0){
- sprintf_2(buffer, gUnknown_8108F18, gDungeonNames[dungeonLocation->index].name1, dungeonLocation->floor); //_F
- }
- else
- {
- sprintf_2(buffer, gUnknown_8108F2C, gDungeonNames[dungeonLocation->index].name1, dungeonLocation->floor); // B _F
- }
-}
-
-void CopyDungeonName1toBuffer(u8 *buffer, struct unkDungeonStruct *dungeonLocation)
-{
- strncpy(buffer, gDungeonNames[dungeonLocation->index].name1, 0x50);
-}
diff --git a/src/code_8095824.c b/src/code_8095824.c
index b366574..8792545 100644
--- a/src/code_8095824.c
+++ b/src/code_8095824.c
@@ -40,7 +40,7 @@ u32 sub_80954CC(u8 *a, u32 b)
temp = &gUnknown_203B484->unk4;
memset(temp, 0, sizeof(struct PokemonStruct));
RestoreIntegerBits(&backup, &temp->unk0, 2);
- RestoreIntegerBits(&backup, &temp->unk2, 1);
+ RestoreIntegerBits(&backup, &temp->isLeader, 1);
RestoreIntegerBits(&backup, &temp->unkHasNextStage, 7);
xxx_restore_poke_sub_4_8090314(&backup, &temp->unk4);
RestoreIntegerBits(&backup, &temp->speciesNum, 9);
@@ -82,7 +82,7 @@ u32 sub_8095624(u8 *a, u32 b)
SaveIntegerBits(&backup, &gUnknown_203B484->unk0, 0x20);
temp = &gUnknown_203B484->unk4;
SaveIntegerBits(&backup, &temp->unk0, 2);
- SaveIntegerBits(&backup, &temp->unk2, 1);
+ SaveIntegerBits(&backup, &temp->isLeader, 1);
SaveIntegerBits(&backup, &temp->unkHasNextStage, 7);
xxx_save_poke_sub_4_80902F4(&backup, &temp->unk4);
SaveIntegerBits(&backup, &temp->speciesNum, 9);
diff --git a/src/dungeon_2.c b/src/dungeon_2.c
new file mode 100644
index 0000000..18b6fe5
--- /dev/null
+++ b/src/dungeon_2.c
@@ -0,0 +1,83 @@
+#include "global.h"
+#include "dungeon.h"
+#include "code_800D090.h"
+#include "pokemon.h"
+#include "code_8092334.h"
+#include "constants/dungeon.h"
+
+extern const char gUnknown_8108F10[];
+extern const char gUnknown_8108F18[];
+extern const char gUnknown_8108F2C[];
+extern u8 gUnknown_81077A8[];
+extern u8 gUnknown_81077E8[];
+
+void sub_80901D8(struct unkPokeSubStruct_4 *param_1,struct unkPokeSubStruct_4 *param_2)
+{
+ if ((u8)(param_2->dungeonIndex - DUNGEON_NORMAL_MAZE_2) < NUM_DUNGEON_MAZE) {
+ param_1->dungeonIndex = DUNGEON_NORMAL_MAZE;
+ param_1->dungeonFloor = (param_2->dungeonIndex - DUNGEON_NORMAL_MAZE_2) * 3 + param_2->dungeonFloor;
+ }
+ else {
+ *param_1 = *param_2;
+ }
+}
+
+void PrintYellowDungeonNametoBuffer(u8 *buffer, struct unkPokeSubStruct_4 *dungeonLocation)
+{
+ sprintf_2(buffer, gUnknown_8108F10, gDungeonNames[dungeonLocation->dungeonIndex].name1); // {COLOR_2 YELLOW_4}%s{END_COLOR_TEXT_2} (normal floor print (no B)
+}
+
+void PrintDungeonLocationtoBuffer(u8 *buffer, struct unkPokeSubStruct_4 *dungeonLocation)
+{
+ if(gDungeons[dungeonLocation->dungeonIndex].stairDirection != 0){
+ sprintf_2(buffer, gUnknown_8108F18, gDungeonNames[dungeonLocation->dungeonIndex].name1, dungeonLocation->dungeonFloor); //_F
+ }
+ else
+ {
+ sprintf_2(buffer, gUnknown_8108F2C, gDungeonNames[dungeonLocation->dungeonIndex].name1, dungeonLocation->dungeonFloor); // B _F
+ }
+}
+
+void CopyDungeonName1toBuffer(u8 *buffer, struct unkPokeSubStruct_4 *dungeonLocation)
+{
+ strncpy(buffer, gDungeonNames[dungeonLocation->dungeonIndex].name1, 0x50);
+}
+
+u8 sub_8090298(u8 dungeon)
+{
+ if ((u8)(dungeon - DUNGEON_NORMAL_MAZE_2) < NUM_DUNGEON_MAZE)
+ return 4;
+ else if(dungeon > DUNGEON_PURITY_FOREST)
+ return 1;
+ else
+ return gUnknown_81077A8[dungeon];
+}
+
+u8 sub_80902C8(u8 dungeon)
+{
+ if ((u8)(dungeon - DUNGEON_NORMAL_MAZE_2) < NUM_DUNGEON_MAZE)
+ return 0;
+ else if(dungeon > DUNGEON_PURITY_FOREST)
+ return 0;
+ else
+ return gUnknown_81077E8[dungeon];
+}
+
+void xxx_save_poke_sub_4_80902F4(struct unkStruct_8094924* r0, struct unkPokeSubStruct_4* r1)
+{
+ SaveIntegerBits(r0, &r1->dungeonIndex, 0x7);
+ SaveIntegerBits(r0, &r1->dungeonFloor, 0x7);
+}
+
+void xxx_restore_poke_sub_4_8090314(struct unkStruct_8094924* r0, struct unkPokeSubStruct_4* r1)
+{
+ r1->dungeonIndex = 0;
+ r1->dungeonFloor = 0;
+ RestoreIntegerBits(r0, &r1->dungeonIndex, 0x7);
+ RestoreIntegerBits(r0, &r1->dungeonFloor, 0x7);
+}
+
+u8 GetDungeonUnk1(u8 dungeon)
+{
+ return gDungeons[dungeon].unk1;
+}
diff --git a/src/friend_area_action_menu_1.c b/src/friend_area_action_menu_1.c
index 3f1bb5f..38650d0 100644
--- a/src/friend_area_action_menu_1.c
+++ b/src/friend_area_action_menu_1.c
@@ -43,11 +43,129 @@ extern u32 sub_801F194(void);
u32 sub_8027E18(struct PokemonStruct *);
u8 sub_8027E4C(struct PokemonStruct *r0);
+
extern u32 sub_801BF48(void);
extern void sub_801BF98(void);
extern u32 sub_80244E4(void);
extern void sub_802453C(void);
+extern u32 sub_8023A94(u32);
+extern bool8 sub_808D750(s16 index_);
+extern struct PokemonStruct *GetPlayerPokemonStruct(void);
+extern void sub_808ED00();
+extern s16 sub_8023B44(void);
+extern void sub_8023C60(void);
+
+void sub_80277FC(void)
+{
+ struct PokemonStruct *iVar4;
+
+ switch(sub_8023A94(1)) {
+ case 0:
+ case 1:
+ break;
+ case 3:
+ gUnknown_203B2BC->targetPoke = sub_8023B44();
+ iVar4 = &gRecruitedPokemonRef->pokemon[gUnknown_203B2BC->targetPoke];
+ gUnknown_203B2BC->unk18 = iVar4;
+ gUnknown_203B2BC->unk1C = iVar4->isLeader;
+ PeekPokemonItem(gUnknown_203B2BC->targetPoke,&gUnknown_203B2BC->unk14);
+ SetFriendAreaActionMenuState(3);
+ break;
+ case 4:
+ gUnknown_203B2BC->targetPoke = sub_8023B44();
+ iVar4 = &gRecruitedPokemonRef->pokemon[gUnknown_203B2BC->targetPoke];
+ gUnknown_203B2BC->unk18 = iVar4;
+ gUnknown_203B2BC->unk1C = iVar4->isLeader;
+ PeekPokemonItem(gUnknown_203B2BC->targetPoke,&gUnknown_203B2BC->unk14);
+ SetFriendAreaActionMenuState(4);
+ break;
+ case 2:
+ sub_8023C60();
+ SetFriendAreaActionMenuState(0x11);
+ break;
+ }
+}
+
+void sub_80278B4(void)
+{
+ struct PokemonStruct *playerStruct;
+ struct PokemonStruct *puVar3;
+ struct PokemonStruct *iVar4;
+ int local_c;
+
+ local_c = 0;
+ sub_8023A94(0);
+ if ((sub_8012FD8(&gUnknown_203B2BC->unk7C) == '\0') && (sub_8013114(&gUnknown_203B2BC->unk7C,&local_c), local_c != 1)) {
+ gUnknown_203B2BC->unk70 = local_c;
+ }
+ switch(local_c) {
+ case 6:
+ if (sub_808D750(gUnknown_203B2BC->targetPoke) != '\0') {
+#ifdef NONMATCHING
+ puVar3 = &gRecruiedPokemonRef->pokemon[gUnknown_203B2BC->targetPoke];
+#else
+ register size_t offset asm("r1") = offsetof(struct unkStruct_203B45C, pokemon[gUnknown_203B2BC->targetPoke]);
+ struct PokemonStruct* p = gRecruitedPokemonRef->pokemon;
+ size_t addr = offset + (size_t)p;
+ puVar3 = (struct PokemonStruct*)addr;
+#endif
+ puVar3->unk0 |= 2;
+ nullsub_104();
+ }
+ sub_808ED00();
+ SetFriendAreaActionMenuState(2);
+ break;
+ case 7:
+ gUnknown_203B2BC->unk18->unk0 &= 0xfffd;
+ nullsub_104();
+ sub_808ED00();
+ SetFriendAreaActionMenuState(2);
+ break;
+ case 8:
+ iVar4 = &gRecruitedPokemonRef->pokemon[gUnknown_203B2BC->targetPoke];
+ playerStruct = GetPlayerPokemonStruct();
+ if (!iVar4->isLeader) {
+ playerStruct->isLeader = FALSE;
+ iVar4->isLeader = TRUE;
+ nullsub_104();
+ }
+ sub_808ED00();
+ SetFriendAreaActionMenuState(2);
+ break;
+ case 9:
+ SetFriendAreaActionMenuState(8);
+ break;
+ case 0xc:
+ SetFriendAreaActionMenuState(0xe);
+ break;
+ case 10:
+ SetFriendAreaActionMenuState(10);
+ break;
+ case 0xb:
+ PlaySound(0x14d);
+ if (gUnknown_203B2BC->unk14.itemIndex != ITEM_ID_NOTHING) {
+ AddHeldItemToInventory(&gUnknown_203B2BC->unk14);
+ }
+ FillInventoryGaps();
+ gUnknown_203B2BC->unk14.itemIndex = 0;
+ gUnknown_203B2BC->unk14.numItems = 0;
+ GivePokemonItem(gUnknown_203B2BC->targetPoke,&gUnknown_203B2BC->unk14);
+ nullsub_104();
+ SetFriendAreaActionMenuState(2);
+ break;
+ case 4:
+ SetFriendAreaActionMenuState(4);
+ break;
+ case 5:
+ SetFriendAreaActionMenuState(5);
+ break;
+ case 1:
+ SetFriendAreaActionMenuState(2);
+ break;
+ }
+}
+
void sub_8027A40(void)
{
switch(sub_80244E4())
@@ -171,7 +289,7 @@ void sub_8027BD8(void)
ShiftItemsDownFrom(gUnknown_203B2BC->itemIndex);
FillInventoryGaps();
if (gUnknown_203B2BC->unk14.itemIndex != 0) {
- sub_8091274(&gUnknown_203B2BC->unk14);
+ AddHeldItemToInventory(&gUnknown_203B2BC->unk14);
}
GivePokemonItem(gUnknown_203B2BC->targetPoke,&gUnknown_203B2BC->itemToGive);
sub_801A928();
@@ -267,7 +385,7 @@ void sub_8027D40(u32 r0, struct HeldItem *heldItem)
u32 sub_8027D9C(struct PokemonStruct *r0)
{
u32 var1;
- if(r0->unk2 == 0)
+ if(r0->isLeader == 0)
{
var1 = 0;
if(r0->unk4.dungeonIndex == 0x41)
@@ -288,7 +406,7 @@ u32 sub_8027DCC(struct PokemonStruct *r0)
u32 var1;
if(sub_808D3BC() != r0)
if(sub_808D3F8() != r0)
- if(r0->unk2 == 0)
+ if(r0->isLeader == 0)
{
var1 = 0;
if(r0->unk4.dungeonIndex == 0x41)
@@ -345,7 +463,7 @@ void sub_8027EB8(void)
{
case 1:
PlaySound(0x14d);
- sub_8091274(&gUnknown_203B2BC->unk14);
+ AddHeldItemToInventory(&gUnknown_203B2BC->unk14);
FillInventoryGaps();
gUnknown_203B2BC->unk14.itemIndex = 0;
gUnknown_203B2BC->unk14.numItems = 0;
diff --git a/src/friend_list_menu.c b/src/friend_list_menu.c
index 142aeca..fe9de8c 100644
--- a/src/friend_list_menu.c
+++ b/src/friend_list_menu.c
@@ -222,7 +222,7 @@ void sub_8026C14(void)
ShiftItemsDownFrom(gUnknown_203B2B8->unkC);
FillInventoryGaps();
if (gUnknown_203B2B8->unk14.itemIndex != '\0') {
- sub_8091274(&gUnknown_203B2B8->unk14);
+ AddHeldItemToInventory(&gUnknown_203B2B8->unk14);
nextState = 0x10;
}
HeldItemToSlot(&slot,&gUnknown_203B2B8->unk10);
@@ -342,7 +342,7 @@ void sub_8026E08(u32 r0)
u32 sub_8026E88(struct PokemonStruct *r0)
{
u8 iVar3;
- if(r0->unk2 == 0)
+ if(r0->isLeader == 0)
{
iVar3 = (r0->unk4.dungeonIndex == 0x41);
if(iVar3 != 0)
@@ -359,7 +359,7 @@ u32 sub_8026EB8(struct PokemonStruct *r0)
u8 iVar3;
if(sub_808D3BC() != r0)
if(sub_808D3F8() != r0)
- if(r0->unk2 == 0)
+ if(r0->isLeader == 0)
{
iVar3 = (r0->unk4.dungeonIndex == 0x41);
if(iVar3 != 0)
@@ -414,7 +414,7 @@ void sub_8026FA4(void)
{
case 1:
PlaySound(0x14d);
- sub_8091274(&gUnknown_203B2B8->unk14);
+ AddHeldItemToInventory(&gUnknown_203B2B8->unk14);
FillInventoryGaps();
gUnknown_203B2B8->unk14.itemIndex = 0;
gUnknown_203B2B8->unk14.numItems = 0;
diff --git a/src/items.c b/src/items.c
index e4bdc6a..6d2acaf 100644
--- a/src/items.c
+++ b/src/items.c
@@ -586,7 +586,7 @@ bool8 sub_809124C(u8 itemIndex, u8 param_3)
return AddItemToInventory(&temp);
}
-bool8 sub_8091274(struct HeldItem* slot)
+bool8 AddHeldItemToInventory(struct HeldItem* slot)
{
struct ItemSlot temp;
@@ -1083,7 +1083,7 @@ struct HeldItem* xxx_get_unk250_at_8091A90(u8 index) {
return &gTeamInventory_203B460->unk250[index];
}
-void xxx_fill_inv_unk250_gaps_8091AA8(u8 index) {
+void xxx_fill_inv_unk250_gaps_8091AA8(void) {
s32 slot_checking = 0;
s32 last_filled = 0;
diff --git a/src/kangaskhan_storage_3.c b/src/kangaskhan_storage_3.c
index 1c65da6..568e69f 100644
--- a/src/kangaskhan_storage_3.c
+++ b/src/kangaskhan_storage_3.c
@@ -159,7 +159,7 @@ void sub_80186F8(void)
item.temp.full_bits = (item.temp.full_bits & 0xffff00ff) | (0x80 << 1);
}
gTeamInventory_203B460->teamStorage[item.temp.norm.itemIndex] -= item.temp.norm.numItems;
- sub_8091274((struct HeldItem *)&item);
+ AddHeldItemToInventory((struct HeldItem *)&item);
}
}
FillInventoryGaps();
@@ -218,7 +218,7 @@ void sub_8018854(void)
itemsCast = (gUnknown_203B20C->unk8.numItems << 8);
item.temp.full_bits = (item.temp.full_bits & 0xffff00ff) | itemsCast;
- sub_8091274((struct HeldItem *)&item);
+ AddHeldItemToInventory((struct HeldItem *)&item);
if(sub_801CF14(1) == 0)
if(GetNumberOfFilledInventorySlots() >= INVENTORY_SIZE)
{
@@ -319,7 +319,7 @@ void sub_80189C8(void)
itemsCast = (gUnknown_203B20C->unk8.numItems << 8);
item.temp.full_bits = (item.temp.full_bits & 0xffff00ff) | itemsCast;
- sub_8091274((struct HeldItem *)&item);
+ AddHeldItemToInventory((struct HeldItem *)&item);
if(sub_801CF14(1) == 0)
if(GetNumberOfFilledInventorySlots() >= INVENTORY_SIZE)
{
diff --git a/src/kecleon_items_1.c b/src/kecleon_items_1.c
index cd5df5b..e504f81 100644
--- a/src/kecleon_items_1.c
+++ b/src/kecleon_items_1.c
@@ -99,12 +99,215 @@ extern void sub_8013984(u8 *);
extern void sub_801A064(void);
extern void sub_801A0D8(void);
extern void AddMenuCursorSprite(void *);
-extern s32 xxx_count_inv_unk230();
extern u8 sub_801A37C(void);
extern u16 gUnknown_203B228;
extern u16 gUnknown_203B22A;
extern struct UnkTextStruct2 gUnknown_80DB95C;
+extern void sub_801A010(void);
+extern void sub_801A3DC(void);
+extern void sub_801AD34(u32);
+extern void PlaySound(u16 songIndex);
+
+extern void xxx_init_inv_unk250_at_8091A74(u8 index);
+extern void xxx_fill_inv_unk250_gaps_8091AA8(void);
+
+u32 sub_8019D8C(void);
+
+void sub_8019730(void)
+{
+ s32 local_8;
+
+ if (sub_80144A4(&local_8) != 0) {
+ return;
+ }
+ if (local_8 != 1) {
+ gUnknown_203B210->unk28 = local_8;
+ }
+ switch(local_8) {
+ case 2:
+ if (sub_8019D8C() == 0) {
+ UpdateKecleonStoreState(5);
+ }
+ else if (GetNumberOfFilledInventorySlots() >= INVENTORY_SIZE) {
+ UpdateKecleonStoreState(0xA);
+ }
+ else {
+ UpdateKecleonStoreState(0xF);
+ }
+ break;
+ case 3:
+ if (GetNumberOfFilledInventorySlots() == 0) {
+ UpdateKecleonStoreState(9);
+ }
+ else if (gUnknown_203B210->unk14 == 0) {
+ UpdateKecleonStoreState(8);
+ }
+ else if (gTeamInventory_203B460->teamMoney < 99999) {
+ UpdateKecleonStoreState(0x17);
+ }
+ else
+ UpdateKecleonStoreState(7);
+ break;
+ case 4:
+ if (GetNumberOfFilledInventorySlots() == 0)
+ UpdateKecleonStoreState(9);
+ else if (gUnknown_203B210->unk14 == 0)
+ UpdateKecleonStoreState(8);
+ else if (gUnknown_203B210->unk18 + gTeamInventory_203B460->teamMoney > 99999) {
+ UpdateKecleonStoreState(7);
+ }
+ else
+ UpdateKecleonStoreState(0x1f);
+ break;
+ case 7:
+ UpdateKecleonStoreState(2);
+ break;
+ case 1:
+ UpdateKecleonStoreState(3);
+ break;
+ }
+}
+
+void sub_8019850(void)
+{
+ s32 local_c;
+
+ if (sub_80144A4(&local_c) == 0) {
+ switch(local_c)
+ {
+ case 5:
+ AddToTeamMoney(-gUnknown_203B210->itemSellPrice);
+ if (gUnknown_203B210->unk4 != '\0') {
+ AddHeldItemToInventory(xxx_get_inv_unk230_at_809185C(gUnknown_203B210->unk20));
+ xxx_init_unk230_substruct(gUnknown_203B210->unk20);
+ xxx_fill_unk230_gaps();
+ }
+ else {
+ AddHeldItemToInventory(xxx_get_unk250_at_8091A90(gUnknown_203B210->unk21));
+ xxx_init_inv_unk250_at_8091A74(gUnknown_203B210->unk21);
+ xxx_fill_inv_unk250_gaps_8091AA8();
+ }
+ PlaySound(0x14c);
+ UpdateKecleonStoreState(0x11);
+ break;
+ case 6:
+ case 1:
+ UpdateKecleonStoreState(0x10);
+ break;
+ }
+ }
+}
+
+void sub_80198E8(void)
+{
+ s32 local_c;
+
+ if (sub_80144A4(&local_c) == 0) {
+ switch(local_c)
+ {
+ case 5:
+ AddToTeamMoney(gUnknown_203B210->itemSellPrice);
+ ShiftItemsDownFrom(gUnknown_203B210->unk24);
+ PlaySound(0x14c);
+ UpdateKecleonStoreState(0x19);
+ break;
+ case 6:
+ case 1:
+ UpdateKecleonStoreState(0x18);
+ break;
+ }
+ }
+}
+
+void sub_8019944(void)
+{
+ s32 slotIndex;
+ s32 local_10;
+ struct ItemSlot *itemSlot;
+
+ if (sub_80144A4(&local_10) == 0) {
+ switch(local_10)
+ {
+ case 5:
+ for(slotIndex = 0; slotIndex < INVENTORY_SIZE; slotIndex++)
+ {
+ itemSlot = &gTeamInventory_203B460->teamItems[slotIndex];
+ if ((itemSlot->itemFlags & ITEM_FLAG_EXISTS) && CanSellItem(itemSlot->itemIndex)) {
+ ClearItemSlotAt(slotIndex);
+ }
+ }
+ FillInventoryGaps();
+ AddToTeamMoney(gUnknown_203B210->unk18);
+ PlaySound(0x14c);
+ UpdateKecleonStoreState(0x20);
+ break;
+ case 1:
+ case 6:
+ UpdateKecleonStoreState(1);
+ break;
+ }
+ }
+}
+
+void sub_80199CC(void)
+{
+ u32 uVar2;
+ struct HeldItem *puVar3;
+
+ if (gUnknown_203B210->unk4 != '\0') {
+ uVar2 = sub_8019EDC(1);
+ }
+ else {
+ uVar2 = sub_801A2A8(1);
+ }
+
+ switch(uVar2)
+ {
+ case 3:
+ if (gUnknown_203B210->unk4) {
+ gUnknown_203B210->unk20 = sub_8019FB0();
+ puVar3 = xxx_get_inv_unk230_at_809185C(gUnknown_203B210->unk20);
+ }
+ else {
+ gUnknown_203B210->unk21 = sub_801A37C();
+ puVar3 = xxx_get_unk250_at_8091A90(gUnknown_203B210->unk21);
+ }
+ xxx_init_itemslot_8090A8C(&gUnknown_203B210->unk1C,puVar3->itemIndex,0);
+ gUnknown_203B210->unk1C.numItems =puVar3->numItems;
+ gUnknown_203B210->itemSellPrice = GetStackBuyPrice(&gUnknown_203B210->unk1C);
+ UpdateKecleonStoreState(0x14);
+ break;
+ case 4:
+ if (gUnknown_203B210->unk4) {
+ gUnknown_203B210->unk20 = sub_8019FB0();
+ puVar3 = xxx_get_inv_unk230_at_809185C(gUnknown_203B210->unk20);
+ }
+ else {
+ gUnknown_203B210->unk21 = sub_801A37C();
+ puVar3 = xxx_get_unk250_at_8091A90(gUnknown_203B210->unk21);
+ }
+ xxx_init_itemslot_8090A8C(&gUnknown_203B210->unk1C,puVar3->itemIndex,0);
+ gUnknown_203B210->unk1C.numItems = puVar3->numItems;
+ gUnknown_203B210->itemSellPrice = GetStackBuyPrice(&gUnknown_203B210->unk1C);
+ UpdateKecleonStoreState(0x15);
+ break;
+ case 2:
+ if (gUnknown_203B210->unk4) {
+ sub_801A010();
+ }
+ else {
+ sub_801A3DC();
+ }
+ UpdateKecleonStoreState(1);
+ break;
+ case 1:
+ sub_801AD34(0);
+ DrawTeamMoneyBox(1);
+ break;
+ }
+}
+
void sub_8019B08(void)
{
switch(sub_801A6E8(1))
@@ -253,15 +456,15 @@ u32 sub_8019D8C(void)
void sub_8019DAC(void)
{
s32 iVar3;
- struct ItemSlot *pbVar4;
+ struct ItemSlot *itemSlot;
s32 iVar5;
gUnknown_203B210->unk14 = 0;
gUnknown_203B210->unk18 = 0;
for(iVar5 = 0; iVar5 < INVENTORY_SIZE; iVar5++){
- pbVar4 = &gTeamInventory_203B460->teamItems[iVar5];
- if (((pbVar4->itemFlags & ITEM_FLAG_EXISTS) != 0) && (CanSellItem(pbVar4->itemIndex))) {
- iVar3 = GetStackSellPrice(pbVar4);
+ itemSlot = &gTeamInventory_203B460->teamItems[iVar5];
+ if (((itemSlot->itemFlags & ITEM_FLAG_EXISTS) != 0) && (CanSellItem(itemSlot->itemIndex))) {
+ iVar3 = GetStackSellPrice(itemSlot);
gUnknown_203B210->unk18 += iVar3;
gUnknown_203B210->unk14++;
}
diff --git a/src/luminous_cave.c b/src/luminous_cave.c
index 2b5afa3..fa78f06 100644
--- a/src/luminous_cave.c
+++ b/src/luminous_cave.c
@@ -97,7 +97,6 @@ extern void sub_80141B4(const char *r0, u32, struct OpenedFile **r1, u32);
extern void sub_8014248(const char *r0, u32, u32, struct MenuItem *r4, u16 *, u32, u32, struct OpenedFile **r5, u32);
void xxx_call_fade_out_bgm(u16 speed);
void sub_801199C(u16 songIndex);
-void ClearItemSlotAt(u32 index);
void xxx_call_fade_in_new_bgm(u16 songIndex, u16 speed);
void sub_80977D0(void);
void PlaySound(u32);
diff --git a/src/pokemon_3.c b/src/pokemon_3.c
index 68c894b..1a38475 100644
--- a/src/pokemon_3.c
+++ b/src/pokemon_3.c
@@ -685,7 +685,7 @@ s32 SaveRecruitedPokemon(u8 *a1, s32 a2)
if (pokemon->unk0 & 2) {
buffer[count++] = i;
}
- if (pokemon->unk2) {
+ if (pokemon->isLeader) {
data_s16 = i;
}
}
@@ -745,7 +745,7 @@ s32 RestoreRecruitedPokemon(u8 *a1, s32 a2)
}
RestoreIntegerBits(&backup, &data_s16, 16);
if ((u16)data_s16 < NUM_SPECIES) {
- gRecruitedPokemonRef->pokemon[data_s16].unk2 = 1;
+ gRecruitedPokemonRef->pokemon[data_s16].isLeader = 1;
}
nullsub_102(&backup);
return backup.unk8;
@@ -776,7 +776,7 @@ void RestorePokemonStruct(struct unkStruct_8094924* a1, struct PokemonStruct* po
{
memset(pokemon, 0, sizeof(struct PokemonStruct));
pokemon->unk0 = 0;
- pokemon->unk2 = 0;
+ pokemon->isLeader = 0;
RestoreIntegerBits(a1, &pokemon->unkHasNextStage, 7);
if (pokemon->unkHasNextStage) {
pokemon->unk0 |= 1;
@@ -814,7 +814,7 @@ s32 SavePokemonStruct2(u8* a1, s32 size)
struct PokemonStruct2* pokemon2 = &gRecruitedPokemonRef->pokemon2[i];
SaveIntegerBits(&backup, &pokemon2->unk0, 2);
- SaveIntegerBits(&backup, pokemon2->unk2 ? &data_u8_neg1 : &data_u8_zero, 1);
+ SaveIntegerBits(&backup, pokemon2->isLeader ? &data_u8_neg1 : &data_u8_zero, 1);
SaveIntegerBits(&backup, &pokemon2->unkHasNextStage, 7);
xxx_save_poke_sub_4_80902F4(&backup, &pokemon2->unk4);
@@ -858,10 +858,10 @@ s32 RestorePokemonStruct2(u8* a1, s32 size)
RestoreIntegerBits(&backup, &unk2, 1);
if (unk2 & 1) {
- pokemon2->unk2 = TRUE;
+ pokemon2->isLeader = TRUE;
}
else {
- pokemon2->unk2 = FALSE;
+ pokemon2->isLeader = FALSE;
}
RestoreIntegerBits(&backup, &pokemon2->unkHasNextStage, 7);
diff --git a/src/pokemon_mid.c b/src/pokemon_mid.c
index d57e8a2..11e387e 100644
--- a/src/pokemon_mid.c
+++ b/src/pokemon_mid.c
@@ -529,7 +529,7 @@ void xxx_pokemonstruct_to_pokemon2_808DE50(struct PokemonStruct2 * a1, struct Po
a1->IQSkills = pokemon->IQSkills;
sub_808E6F4(&a1->unk54);
a1->unk4 = pokemon->unk4;
- a1->unk2 = pokemon->unk2;
+ a1->isLeader = pokemon->isLeader;
a1->unkA = a3;
a1->speciesNum = pokemon->speciesNum;
a1->unk50 = pokemon->unk24;
@@ -582,7 +582,7 @@ void xxx_pokemon2_to_pokemonstruct_808DF44(struct PokemonStruct* pokemon, struct
pokemon->IQ = a2->IQ;
pokemon->IQSkills = a2->IQSkills;
pokemon->unk4 = a2->unk4;
- pokemon->unk2 = a2->unk2;
+ pokemon->isLeader = a2->isLeader;
pokemon->speciesNum = a2->speciesNum;
pokemon->unk24 = a2->unk50;
pokemon->pokeHP = a2->unk12;
diff --git a/src/post_office_guide.c b/src/post_office_guide.c
index 929c2e1..f009895 100644
--- a/src/post_office_guide.c
+++ b/src/post_office_guide.c
@@ -166,7 +166,7 @@ extern void sub_8014248(const char *r0, u32, u32, const struct MenuItem *r4, u32
extern u32 sub_8012A64(struct UnkInputStruct**, u32);
extern void PlayMenuSoundEffect(u32);
extern void sub_8031A84();
-extern void sub_8031AE8();
+extern void DisplayMissionObjectives();
extern u8 gUnknown_202E5D8[];
extern u8 gAvailablePokemonNames[];
@@ -535,7 +535,7 @@ u32 sub_80319F8(void)
void sub_8031A2C(void)
{
sub_8031A84();
- sub_8031AE8();
+ DisplayMissionObjectives();
}
void sub_8031A3C(void)