summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSeth Barberee <seth.barberee@gmail.com>2022-03-25 09:39:44 -0700
committerGitHub <noreply@github.com>2022-03-25 09:39:44 -0700
commit9f98e08fb99112eedd56873b5557c5e4e757dbba (patch)
tree439b1bce980e4452fcc92999eb62df354ef9b790
parenta0264b99956cc67dd13704b758dc1f2f4c1480ca (diff)
parent57f540b320ae8439fe4b42c6149641b877c7ea73 (diff)
Merge pull request #100 from SethBarberee/save_workHEADmaster
Save work
-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_808417C.s8
-rw-r--r--asm/code_809447C.s2
-rw-r--r--asm/code_8095014.s484
-rw-r--r--asm/code_80958E8.s690
-rw-r--r--asm/code_8097318.s207
-rw-r--r--asm/code_8097670.s471
-rw-r--r--asm/code_8097DD0.s213
-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_2.s10
-rw-r--r--asm/wonder_mail_3.s2
-rw-r--r--asm/wonder_mail_5.s571
-rw-r--r--include/code_8094F88.h35
-rw-r--r--include/constants/dungeon.h3
-rw-r--r--include/friend_area_action_menu.h2
-rw-r--r--include/global.h5
-rw-r--r--include/item.h4
-rw-r--r--include/kecleon_items.h2
-rw-r--r--include/pokemon.h32
-rw-r--r--include/sub_8095228.h17
-rwxr-xr-xld_script.txt13
-rw-r--r--src/adventure_log.c38
-rw-r--r--src/code_8090208.c34
-rw-r--r--src/code_8094F88.c31
-rw-r--r--src/code_8095824.c165
-rw-r--r--src/code_80972F4.c200
-rw-r--r--src/code_8097670.c59
-rw-r--r--src/code_8097DD0.c90
-rw-r--r--src/code_80A26CC.c2
-rw-r--r--src/dungeon_2.c83
-rw-r--r--src/friend_area_action_menu_1.c132
-rw-r--r--src/friend_list_menu.c14
-rw-r--r--src/friend_rescue_1.c25
-rw-r--r--src/items.c4
-rw-r--r--src/kangaskhan_storage_3.c6
-rw-r--r--src/kecleon_items_1.c220
-rw-r--r--src/load_screen.c15
-rw-r--r--src/luminous_cave.c1
-rw-r--r--src/music_pre.c349
-rw-r--r--src/pokemon_3.c24
-rw-r--r--src/pokemon_mid.c4
-rw-r--r--src/post_office_guide.c129
-rw-r--r--src/rescue_password_menu.c2
-rw-r--r--src/save.c4
-rw-r--r--src/thank_you_wonder_mail.c8
-rw-r--r--src/wonder_mail.c12
-rw-r--r--src/wonder_mail_2.c6
-rw-r--r--src/wonder_mail_3.c4
-rw-r--r--src/wonder_mail_802DF88.c41
58 files changed, 2004 insertions, 3626 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_808417C.s b/asm/code_808417C.s
index 03b4f3b..05c90be 100644
--- a/asm/code_808417C.s
+++ b/asm/code_808417C.s
@@ -213,7 +213,7 @@ sub_80842F0:
_08084320:
lsls r0, r6, 24
lsrs r0, 24
- bl sub_8096AB4
+ bl GetJobSlotInfo
adds r4, r0, 0
ldrb r0, [r4]
cmp r0, 0x6
@@ -300,7 +300,7 @@ sub_80843BC:
_080843C6:
lsls r0, r4, 24
lsrs r0, 24
- bl sub_8096AB4
+ bl GetJobSlotInfo
adds r3, r0, 0
ldrb r0, [r3]
cmp r0, 0x6
@@ -353,7 +353,7 @@ sub_8084424:
_08084428:
lsls r0, r4, 24
lsrs r0, 24
- bl sub_8096AB4
+ bl GetJobSlotInfo
adds r1, r0, 0
ldrb r0, [r1]
cmp r0, 0x8
@@ -760,7 +760,7 @@ sub_8084778:
_08084784:
lsls r0, r4, 24
lsrs r0, 24
- bl sub_8096AB4
+ bl GetJobSlotInfo
adds r1, r0, 0
ldrb r0, [r1]
cmp r0, 0x6
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_8095014.s b/asm/code_8095014.s
index 228811d..d5e9a35 100644
--- a/asm/code_8095014.s
+++ b/asm/code_8095014.s
@@ -452,488 +452,4 @@ sub_8095494:
_080954B0: .4byte gUnknown_203B480
thumb_func_end sub_8095494
- thumb_func_start sub_80954B4
-sub_80954B4:
- push {lr}
- movs r0, 0x3
- bl sub_8095324
- cmp r0, 0
- bne _080954C4
- movs r0, 0
- b _080954C6
-_080954C4:
- movs r0, 0x1
-_080954C6:
- pop {r1}
- bx r1
- thumb_func_end sub_80954B4
-
- thumb_func_start sub_80954CC
-sub_80954CC:
- push {r4-r6,lr}
- sub sp, 0x10
- adds r3, r0, 0
- adds r2, r1, 0
- mov r0, sp
- adds r1, r3, 0
- bl xxx_init_struct_8094924_restore_809485C
- ldr r6, _08095618
- movs r5, 0
- movs r4, 0x1F
-_080954E2:
- ldr r1, [r6]
- adds r1, r5
- mov r0, sp
- bl sub_8095774
- adds r5, 0x30
- subs r4, 0x1
- cmp r4, 0
- bge _080954E2
- ldr r4, _0809561C
- ldr r1, [r4]
- mov r0, sp
- movs r2, 0x20
- bl RestoreIntegerBits
- ldr r5, [r4]
- adds r4, r5, 0x4
- adds r0, r4, 0
- movs r1, 0
- movs r2, 0x58
- bl memset
- mov r0, sp
- adds r1, r4, 0
- movs r2, 0x2
- bl RestoreIntegerBits
- adds r1, r5, 0x6
- mov r0, sp
- movs r2, 0x1
- bl RestoreIntegerBits
- adds r1, r5, 0x7
- mov r0, sp
- movs r2, 0x7
- bl RestoreIntegerBits
- adds r4, 0x4
- mov r0, sp
- adds r1, r4, 0
- bl xxx_restore_poke_sub_4_8090314
- adds r1, r5, 0
- adds r1, 0xC
- mov r0, sp
- movs r2, 0x9
- bl RestoreIntegerBits
- adds r1, r5, 0
- adds r1, 0x10
- mov r0, sp
- bl xxx_restore_poke_sub_c_808F410
- adds r1, r5, 0
- adds r1, 0x14
- mov r0, sp
- bl xxx_restore_poke_sub_c_808F410
- adds r1, r5, 0
- adds r1, 0x18
- mov r0, sp
- movs r2, 0xA
- bl RestoreIntegerBits
- adds r1, r5, 0
- adds r1, 0x1A
- mov r0, sp
- movs r2, 0xA
- bl RestoreIntegerBits
- adds r1, r5, 0
- adds r1, 0x1C
- mov r0, sp
- movs r2, 0x8
- bl RestoreIntegerBits
- adds r1, r5, 0
- adds r1, 0x1D
- mov r0, sp
- movs r2, 0x8
- bl RestoreIntegerBits
- adds r1, r5, 0
- adds r1, 0x1E
- mov r0, sp
- movs r2, 0x8
- bl RestoreIntegerBits
- adds r1, r5, 0
- adds r1, 0x1F
- mov r0, sp
- movs r2, 0x8
- bl RestoreIntegerBits
- adds r1, r5, 0
- adds r1, 0x20
- mov r0, sp
- movs r2, 0x18
- bl RestoreIntegerBits
- adds r1, r5, 0
- adds r1, 0x24
- mov r0, sp
- movs r2, 0x18
- bl RestoreIntegerBits
- adds r1, r5, 0
- adds r1, 0x28
- mov r0, sp
- movs r2, 0x4
- bl RestoreIntegerBits
- adds r1, r5, 0
- adds r1, 0x2C
- mov r0, sp
- bl RestoreHeldItem
- adds r1, r5, 0
- adds r1, 0x30
- mov r0, sp
- bl RestorePokemonMoves
- adds r1, r5, 0
- adds r1, 0x50
- mov r0, sp
- movs r2, 0x50
- bl RestoreIntegerBits
- ldr r4, _08095620
- ldr r1, [r4]
- mov r0, sp
- movs r2, 0x20
- bl RestoreIntegerBits
- adds r6, r4, 0
- movs r5, 0x4
- movs r4, 0x1F
-_080955F4:
- ldr r1, [r6]
- adds r1, r5
- mov r0, sp
- movs r2, 0x20
- bl RestoreIntegerBits
- adds r5, 0x4
- subs r4, 0x1
- cmp r4, 0
- bge _080955F4
- mov r0, sp
- bl nullsub_102
- ldr r0, [sp, 0x8]
- add sp, 0x10
- pop {r4-r6}
- pop {r1}
- bx r1
- .align 2, 0
-_08095618: .4byte gUnknown_203B480
-_0809561C: .4byte gUnknown_203B484
-_08095620: .4byte gUnknown_203B48C
- thumb_func_end sub_80954CC
-
- thumb_func_start sub_8095624
-sub_8095624:
- push {r4-r6,lr}
- sub sp, 0x10
- adds r3, r0, 0
- adds r2, r1, 0
- mov r0, sp
- adds r1, r3, 0
- bl xxx_init_struct_8094924_save_809486C
- ldr r6, _08095768
- movs r5, 0
- movs r4, 0x1F
-_0809563A:
- ldr r1, [r6]
- adds r1, r5
- mov r0, sp
- bl sub_8095824
- adds r5, 0x30
- subs r4, 0x1
- cmp r4, 0
- bge _0809563A
- ldr r4, _0809576C
- ldr r1, [r4]
- mov r0, sp
- movs r2, 0x20
- bl SaveIntegerBits
- ldr r5, [r4]
- adds r4, r5, 0x4
- mov r0, sp
- adds r1, r4, 0
- movs r2, 0x2
- bl SaveIntegerBits
- adds r1, r5, 0x6
- mov r0, sp
- movs r2, 0x1
- bl SaveIntegerBits
- adds r1, r5, 0x7
- mov r0, sp
- movs r2, 0x7
- bl SaveIntegerBits
- adds r4, 0x4
- mov r0, sp
- adds r1, r4, 0
- bl xxx_save_poke_sub_4_80902F4
- adds r1, r5, 0
- adds r1, 0xC
- mov r0, sp
- movs r2, 0x9
- bl SaveIntegerBits
- adds r1, r5, 0
- adds r1, 0x10
- mov r0, sp
- bl xxx_save_poke_sub_c_808F41C
- adds r1, r5, 0
- adds r1, 0x14
- mov r0, sp
- bl xxx_save_poke_sub_c_808F41C
- adds r1, r5, 0
- adds r1, 0x18
- mov r0, sp
- movs r2, 0xA
- bl SaveIntegerBits
- adds r1, r5, 0
- adds r1, 0x1A
- mov r0, sp
- movs r2, 0xA
- bl SaveIntegerBits
- adds r1, r5, 0
- adds r1, 0x1C
- mov r0, sp
- movs r2, 0x8
- bl SaveIntegerBits
- adds r1, r5, 0
- adds r1, 0x1D
- mov r0, sp
- movs r2, 0x8
- bl SaveIntegerBits
- adds r1, r5, 0
- adds r1, 0x1E
- mov r0, sp
- movs r2, 0x8
- bl SaveIntegerBits
- adds r1, r5, 0
- adds r1, 0x1F
- mov r0, sp
- movs r2, 0x8
- bl SaveIntegerBits
- adds r1, r5, 0
- adds r1, 0x20
- mov r0, sp
- movs r2, 0x18
- bl SaveIntegerBits
- adds r1, r5, 0
- adds r1, 0x24
- mov r0, sp
- movs r2, 0x18
- bl SaveIntegerBits
- adds r1, r5, 0
- adds r1, 0x28
- mov r0, sp
- movs r2, 0x4
- bl SaveIntegerBits
- adds r1, r5, 0
- adds r1, 0x2C
- mov r0, sp
- bl SaveHeldItem
- adds r1, r5, 0
- adds r1, 0x30
- mov r0, sp
- bl SavePokemonMoves
- adds r1, r5, 0
- adds r1, 0x50
- mov r0, sp
- movs r2, 0x50
- bl SaveIntegerBits
- ldr r4, _08095770
- ldr r1, [r4]
- mov r0, sp
- movs r2, 0x20
- bl SaveIntegerBits
- adds r6, r4, 0
- movs r5, 0x4
- movs r4, 0x1F
-_08095742:
- ldr r1, [r6]
- adds r1, r5
- mov r0, sp
- movs r2, 0x20
- bl SaveIntegerBits
- adds r5, 0x4
- subs r4, 0x1
- cmp r4, 0
- bge _08095742
- mov r0, sp
- bl nullsub_102
- ldr r0, [sp, 0x8]
- add sp, 0x10
- pop {r4-r6}
- pop {r1}
- bx r1
- .align 2, 0
-_08095768: .4byte gUnknown_203B480
-_0809576C: .4byte gUnknown_203B484
-_08095770: .4byte gUnknown_203B48C
- thumb_func_end sub_8095624
-
- thumb_func_start sub_8095774
-sub_8095774:
- push {r4,r5,lr}
- sub sp, 0x4
- adds r4, r0, 0
- adds r5, r1, 0
- movs r2, 0x4
- bl RestoreIntegerBits
- adds r1, r5, 0x4
- adds r0, r4, 0
- bl xxx_restore_poke_sub_4_8090314
- adds r1, r5, 0
- adds r1, 0x8
- adds r0, r4, 0
- movs r2, 0x18
- bl RestoreIntegerBits
- adds r1, r5, 0
- adds r1, 0xC
- adds r0, r4, 0
- movs r2, 0x9
- bl RestoreIntegerBits
- adds r1, r5, 0
- adds r1, 0x10
- adds r0, r4, 0
- movs r2, 0x20
- bl RestoreIntegerBits
- adds r1, r5, 0
- adds r1, 0x14
- adds r0, r4, 0
- movs r2, 0x50
- bl RestoreIntegerBits
- adds r1, r5, 0
- adds r1, 0x20
- adds r0, r4, 0
- movs r2, 0x8
- bl RestoreIntegerBits
- adds r1, r5, 0
- adds r1, 0x21
- adds r0, r4, 0
- movs r2, 0x8
- bl RestoreIntegerBits
- adds r1, r5, 0
- adds r1, 0x22
- adds r0, r4, 0
- movs r2, 0x8
- bl RestoreIntegerBits
- adds r1, r5, 0
- adds r1, 0x24
- adds r0, r4, 0
- movs r2, 0x20
- bl RestoreIntegerBits
- adds r1, r5, 0
- adds r1, 0x28
- adds r0, r4, 0
- movs r2, 0x20
- bl RestoreIntegerBits
- adds r1, r5, 0
- adds r1, 0x2C
- adds r0, r4, 0
- movs r2, 0x8
- bl RestoreIntegerBits
- adds r0, r4, 0
- mov r1, sp
- movs r2, 0x1
- bl RestoreIntegerBits
- mov r0, sp
- ldrb r1, [r0]
- movs r0, 0x1
- ands r0, r1
- adds r1, r5, 0
- adds r1, 0x2D
- strb r0, [r1]
- add sp, 0x4
- pop {r4,r5}
- pop {r0}
- bx r0
- thumb_func_end sub_8095774
-
- thumb_func_start sub_8095824
-sub_8095824:
- push {r4-r6,lr}
- sub sp, 0x4
- adds r5, r0, 0
- adds r4, r1, 0
- movs r1, 0xFF
- mov r0, sp
- strb r1, [r0]
- mov r6, sp
- adds r6, 0x1
- movs r0, 0
- strb r0, [r6]
- adds r0, r5, 0
- adds r1, r4, 0
- movs r2, 0x4
- bl SaveIntegerBits
- adds r1, r4, 0x4
- adds r0, r5, 0
- bl xxx_save_poke_sub_4_80902F4
- adds r1, r4, 0
- adds r1, 0x8
- adds r0, r5, 0
- movs r2, 0x18
- bl SaveIntegerBits
- adds r1, r4, 0
- adds r1, 0xC
- adds r0, r5, 0
- movs r2, 0x9
- bl SaveIntegerBits
- adds r1, r4, 0
- adds r1, 0x10
- adds r0, r5, 0
- movs r2, 0x20
- bl SaveIntegerBits
- adds r1, r4, 0
- adds r1, 0x14
- adds r0, r5, 0
- movs r2, 0x50
- bl SaveIntegerBits
- adds r1, r4, 0
- adds r1, 0x20
- adds r0, r5, 0
- movs r2, 0x8
- bl SaveIntegerBits
- adds r1, r4, 0
- adds r1, 0x21
- adds r0, r5, 0
- movs r2, 0x8
- bl SaveIntegerBits
- adds r1, r4, 0
- adds r1, 0x22
- adds r0, r5, 0
- movs r2, 0x8
- bl SaveIntegerBits
- adds r1, r4, 0
- adds r1, 0x24
- adds r0, r5, 0
- movs r2, 0x20
- bl SaveIntegerBits
- adds r1, r4, 0
- adds r1, 0x28
- adds r0, r5, 0
- movs r2, 0x20
- bl SaveIntegerBits
- adds r1, r4, 0
- adds r1, 0x2C
- adds r0, r5, 0
- movs r2, 0x8
- bl SaveIntegerBits
- adds r0, r4, 0
- adds r0, 0x2D
- ldrb r0, [r0]
- mov r1, sp
- cmp r0, 0
- bne _080958D2
- adds r1, r6, 0
-_080958D2:
- adds r0, r5, 0
- movs r2, 0x1
- bl SaveIntegerBits
- add sp, 0x4
- pop {r4-r6}
- pop {r0}
- bx r0
- thumb_func_end sub_8095824
-
- thumb_func_start sub_80958E4
-sub_80958E4:
- str r1, [r0]
- bx lr
- thumb_func_end sub_80958E4
-
-
.align 2,0
diff --git a/asm/code_80958E8.s b/asm/code_80958E8.s
index b73e519..904f41c 100644
--- a/asm/code_80958E8.s
+++ b/asm/code_80958E8.s
@@ -2019,7 +2019,7 @@ sub_80969D0:
_080969DA:
lsls r0, r4, 24
lsrs r0, 24
- bl sub_8096AB4
+ bl GetJobSlotInfo
adds r1, r0, 0
ldrb r0, [r1, 0x4]
cmp r0, r6
@@ -2054,7 +2054,7 @@ sub_8096A08:
_08096A14:
lsls r0, r4, 24
lsrs r0, 24
- bl sub_8096AB4
+ bl GetJobSlotInfo
adds r2, r0, 0
ldrb r0, [r2, 0x4]
cmp r0, r5
@@ -2139,8 +2139,8 @@ _08096AAE:
bx r1
thumb_func_end sub_8096A78
- thumb_func_start sub_8096AB4
-sub_8096AB4:
+ thumb_func_start GetJobSlotInfo
+GetJobSlotInfo:
lsls r0, 24
lsrs r0, 24
ldr r2, _08096AC8
@@ -2153,7 +2153,7 @@ sub_8096AB4:
bx lr
.align 2, 0
_08096AC8: .4byte gUnknown_203B490
- thumb_func_end sub_8096AB4
+ thumb_func_end GetJobSlotInfo
thumb_func_start IsJobSlotEmpty
IsJobSlotEmpty:
@@ -2191,7 +2191,7 @@ sub_8096AF8:
lsrs r0, 24
lsls r4, 24
lsrs r4, 24
- bl sub_8096AB4
+ bl GetJobSlotInfo
adds r3, r0, 0
movs r1, 0
strb r1, [r5]
@@ -2275,7 +2275,7 @@ sub_8096B98:
_08096BA0:
lsls r0, r4, 24
lsrs r0, 24
- bl sub_8096AB4
+ bl GetJobSlotInfo
adds r1, r0, 0
ldrb r0, [r1]
cmp r0, 0x6
@@ -2816,680 +2816,4 @@ _08096EFE:
_08096F4C: .4byte gUnknown_203B490
thumb_func_end sub_8096EEC
- thumb_func_start sub_8096F50
-sub_8096F50:
- push {r4-r7,lr}
- adds r4, r0, 0
- bl sub_8096EB0
- mov r12, r0
- movs r5, 0
- ldr r0, _08096F8C
- ldr r7, [r0]
- ldrb r6, [r4, 0x4]
- movs r3, 0
-_08096F64:
- movs r1, 0x8C
- lsls r1, 2
- adds r0, r3, r1
- adds r2, r7, r0
- ldrb r0, [r2]
- cmp r0, r6
- bne _08096F90
- ldrb r0, [r2, 0x1]
- ldrb r1, [r4, 0x5]
- cmp r0, r1
- bne _08096F90
- ldr r1, [r2, 0x4]
- ldr r0, [r4, 0x8]
- cmp r1, r0
- bne _08096F90
- ldr r0, [r2, 0x8]
- cmp r0, r12
- bne _08096F90
- movs r0, 0x1
- b _08096F9A
- .align 2, 0
-_08096F8C: .4byte gUnknown_203B490
-_08096F90:
- adds r3, 0xC
- adds r5, 0x1
- cmp r5, 0xF
- ble _08096F64
- movs r0, 0
-_08096F9A:
- pop {r4-r7}
- pop {r1}
- bx r1
- thumb_func_end sub_8096F50
-
- thumb_func_start sub_8096FA0
-sub_8096FA0:
- push {r4-r7,lr}
- sub sp, 0x14
- adds r3, r0, 0
- adds r2, r1, 0
- mov r0, sp
- adds r1, r3, 0
- bl xxx_init_struct_8094924_restore_809485C
- add r7, sp, 0x10
- ldr r6, _08097020
- movs r5, 0
- movs r4, 0x3
-_08096FB8:
- ldr r1, [r6]
- adds r1, r5
- mov r0, sp
- bl sub_80971EC
- adds r5, 0x14
- subs r4, 0x1
- cmp r4, 0
- bge _08096FB8
- ldr r6, _08097020
- movs r5, 0x50
- movs r4, 0x7
-_08096FD0:
- ldr r1, [r6]
- adds r1, r5
- mov r0, sp
- bl sub_80971EC
- adds r5, 0x14
- subs r4, 0x1
- cmp r4, 0
- bge _08096FD0
- ldr r6, _08097020
- movs r5, 0xF0
- movs r4, 0x7
-_08096FE8:
- ldr r1, [r6]
- adds r1, r5
- mov r0, sp
- bl sub_80971EC
- adds r5, 0x14
- subs r4, 0x1
- cmp r4, 0
- bge _08096FE8
- movs r4, 0
- movs r6, 0x1
- ldr r5, _08097020
-_08097000:
- mov r0, sp
- adds r1, r7, 0
- movs r2, 0x1
- bl RestoreIntegerBits
- ldr r1, [sp, 0x10]
- ands r1, r6
- cmp r1, 0
- beq _08097024
- ldr r0, [r5]
- movs r1, 0xBC
- lsls r1, 2
- adds r0, r1
- adds r0, r4
- strb r6, [r0]
- b _08097030
- .align 2, 0
-_08097020: .4byte gUnknown_203B490
-_08097024:
- ldr r0, [r5]
- movs r2, 0xBC
- lsls r2, 2
- adds r0, r2
- adds r0, r4
- strb r1, [r0]
-_08097030:
- adds r4, 0x1
- cmp r4, 0x37
- ble _08097000
- mov r0, sp
- adds r1, r7, 0
- movs r2, 0x1
- bl RestoreIntegerBits
- ldr r1, [sp, 0x10]
- movs r2, 0x1
- ands r1, r2
- cmp r1, 0
- beq _0809705C
- ldr r0, _08097058
- ldr r0, [r0]
- movs r1, 0xCA
- lsls r1, 2
- adds r0, r1
- strb r2, [r0]
- b _08097068
- .align 2, 0
-_08097058: .4byte gUnknown_203B490
-_0809705C:
- ldr r0, _080970D4
- ldr r0, [r0]
- movs r2, 0xCA
- lsls r2, 2
- adds r0, r2
- strb r1, [r0]
-_08097068:
- ldr r4, _080970D4
- ldr r1, [r4]
- movs r0, 0xC8
- lsls r0, 1
- adds r1, r0
- movs r2, 0xA0
- lsls r2, 1
- mov r0, sp
- bl RestoreIntegerBits
- ldr r1, [r4]
- movs r2, 0xDC
- lsls r2, 1
- adds r1, r2
- movs r2, 0xF0
- lsls r2, 2
- mov r0, sp
- bl RestoreIntegerBits
- adds r6, r4, 0
- movs r5, 0x8C
- lsls r5, 2
- movs r4, 0xF
-_08097096:
- ldr r1, [r6]
- adds r1, r5
- adds r1, 0x8
- mov r0, sp
- movs r2, 0x20
- bl RestoreIntegerBits
- ldr r1, [r6]
- adds r1, r5
- adds r1, 0x4
- mov r0, sp
- movs r2, 0x18
- bl RestoreIntegerBits
- ldr r1, [r6]
- adds r1, r5
- mov r0, sp
- bl xxx_restore_poke_sub_4_8090314
- adds r5, 0xC
- subs r4, 0x1
- cmp r4, 0
- bge _08097096
- mov r0, sp
- bl nullsub_102
- ldr r0, [sp, 0x8]
- add sp, 0x14
- pop {r4-r7}
- pop {r1}
- bx r1
- .align 2, 0
-_080970D4: .4byte gUnknown_203B490
- thumb_func_end sub_8096FA0
-
- thumb_func_start sub_80970D8
-sub_80970D8:
- push {r4-r7,lr}
- sub sp, 0x14
- adds r3, r0, 0
- adds r2, r1, 0
- mov r0, sp
- adds r1, r3, 0
- bl xxx_init_struct_8094924_save_809486C
- add r7, sp, 0x10
- ldr r6, _080971E8
- movs r5, 0
- movs r4, 0x3
-_080970F0:
- ldr r1, [r6]
- adds r1, r5
- mov r0, sp
- bl sub_8097270
- adds r5, 0x14
- subs r4, 0x1
- cmp r4, 0
- bge _080970F0
- ldr r6, _080971E8
- movs r5, 0x50
- movs r4, 0x7
-_08097108:
- ldr r1, [r6]
- adds r1, r5
- mov r0, sp
- bl sub_8097270
- adds r5, 0x14
- subs r4, 0x1
- cmp r4, 0
- bge _08097108
- ldr r6, _080971E8
- movs r5, 0xF0
- movs r4, 0x7
-_08097120:
- ldr r1, [r6]
- adds r1, r5
- mov r0, sp
- bl sub_8097270
- adds r5, 0x14
- subs r4, 0x1
- cmp r4, 0
- bge _08097120
- movs r4, 0
-_08097134:
- ldr r0, _080971E8
- ldr r0, [r0]
- movs r1, 0xBC
- lsls r1, 2
- adds r0, r1
- adds r0, r4
- ldrb r0, [r0]
- cmp r0, 0
- beq _0809714A
- movs r0, 0x1
- negs r0, r0
-_0809714A:
- str r0, [sp, 0x10]
- mov r0, sp
- adds r1, r7, 0
- movs r2, 0x1
- bl SaveIntegerBits
- adds r4, 0x1
- cmp r4, 0x37
- ble _08097134
- ldr r0, _080971E8
- ldr r0, [r0]
- movs r1, 0xCA
- lsls r1, 2
- adds r0, r1
- ldrb r0, [r0]
- cmp r0, 0
- beq _08097170
- movs r0, 0x1
- negs r0, r0
-_08097170:
- str r0, [sp, 0x10]
- mov r0, sp
- adds r1, r7, 0
- movs r2, 0x1
- bl SaveIntegerBits
- ldr r4, _080971E8
- ldr r1, [r4]
- movs r0, 0xC8
- lsls r0, 1
- adds r1, r0
- movs r2, 0xA0
- lsls r2, 1
- mov r0, sp
- bl SaveIntegerBits
- ldr r1, [r4]
- movs r0, 0xDC
- lsls r0, 1
- adds r1, r0
- movs r2, 0xF0
- lsls r2, 2
- mov r0, sp
- bl SaveIntegerBits
- adds r6, r4, 0
- movs r5, 0x8C
- lsls r5, 2
- movs r4, 0xF
-_080971AA:
- ldr r1, [r6]
- adds r1, r5
- adds r1, 0x8
- mov r0, sp
- movs r2, 0x20
- bl SaveIntegerBits
- ldr r1, [r6]
- adds r1, r5
- adds r1, 0x4
- mov r0, sp
- movs r2, 0x18
- bl SaveIntegerBits
- ldr r1, [r6]
- adds r1, r5
- mov r0, sp
- bl xxx_save_poke_sub_4_80902F4
- adds r5, 0xC
- subs r4, 0x1
- cmp r4, 0
- bge _080971AA
- mov r0, sp
- bl nullsub_102
- ldr r0, [sp, 0x8]
- add sp, 0x14
- pop {r4-r7}
- pop {r1}
- bx r1
- .align 2, 0
-_080971E8: .4byte gUnknown_203B490
- thumb_func_end sub_80970D8
-
- thumb_func_start sub_80971EC
-sub_80971EC:
- push {r4,r5,lr}
- adds r4, r0, 0
- adds r5, r1, 0
- movs r2, 0x4
- bl RestoreIntegerBits
- adds r1, r5, 0x1
- adds r0, r4, 0
- movs r2, 0x3
- bl RestoreIntegerBits
- adds r1, r5, 0x2
- adds r0, r4, 0
- movs r2, 0x4
- bl RestoreIntegerBits
- adds r1, r5, 0
- adds r1, 0xC
- adds r0, r4, 0
- movs r2, 0x9
- bl RestoreIntegerBits
- adds r1, r5, 0
- adds r1, 0xE
- adds r0, r4, 0
- movs r2, 0x9
- bl RestoreIntegerBits
- adds r1, r5, 0
- adds r1, 0x10
- adds r0, r4, 0
- movs r2, 0x8
- bl RestoreIntegerBits
- adds r1, r5, 0
- adds r1, 0x11
- adds r0, r4, 0
- movs r2, 0x4
- bl RestoreIntegerBits
- adds r1, r5, 0
- adds r1, 0x12
- adds r0, r4, 0
- movs r2, 0x8
- bl RestoreIntegerBits
- adds r1, r5, 0
- adds r1, 0x13
- adds r0, r4, 0
- movs r2, 0x6
- bl RestoreIntegerBits
- adds r1, r5, 0
- adds r1, 0x8
- adds r0, r4, 0
- movs r2, 0x18
- bl RestoreIntegerBits
- adds r1, r5, 0x4
- adds r0, r4, 0
- bl xxx_restore_poke_sub_4_8090314
- pop {r4,r5}
- pop {r0}
- bx r0
- thumb_func_end sub_80971EC
-
- thumb_func_start sub_8097270
-sub_8097270:
- push {r4,r5,lr}
- adds r4, r0, 0
- adds r5, r1, 0
- movs r2, 0x4
- bl SaveIntegerBits
- adds r1, r5, 0x1
- adds r0, r4, 0
- movs r2, 0x3
- bl SaveIntegerBits
- adds r1, r5, 0x2
- adds r0, r4, 0
- movs r2, 0x4
- bl SaveIntegerBits
- adds r1, r5, 0
- adds r1, 0xC
- adds r0, r4, 0
- movs r2, 0x9
- bl SaveIntegerBits
- adds r1, r5, 0
- adds r1, 0xE
- adds r0, r4, 0
- movs r2, 0x9
- bl SaveIntegerBits
- adds r1, r5, 0
- adds r1, 0x10
- adds r0, r4, 0
- movs r2, 0x8
- bl SaveIntegerBits
- adds r1, r5, 0
- adds r1, 0x11
- adds r0, r4, 0
- movs r2, 0x4
- bl SaveIntegerBits
- adds r1, r5, 0
- adds r1, 0x12
- adds r0, r4, 0
- movs r2, 0x8
- bl SaveIntegerBits
- adds r1, r5, 0
- adds r1, 0x13
- adds r0, r4, 0
- movs r2, 0x6
- bl SaveIntegerBits
- adds r1, r5, 0
- adds r1, 0x8
- adds r0, r4, 0
- movs r2, 0x18
- bl SaveIntegerBits
- adds r1, r5, 0x4
- adds r0, r4, 0
- bl xxx_save_poke_sub_4_80902F4
- pop {r4,r5}
- pop {r0}
- bx r0
- thumb_func_end sub_8097270
-
- thumb_func_start sub_80972F4
-sub_80972F4:
- push {lr}
- movs r0, 0
- movs r1, 0x2B
- bl sub_80015C0
- movs r0, 0
- movs r1, 0x2C
- bl sub_80015C0
- movs r0, 0
- movs r1, 0x2D
- bl sub_80015C0
- pop {r0}
- bx r0
- thumb_func_end sub_80972F4
-
- thumb_func_start nullsub_128
-nullsub_128:
- bx lr
- thumb_func_end nullsub_128
-
- thumb_func_start sub_8097318
-sub_8097318:
- push {lr}
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0xD
- bne _08097326
- movs r0, 0
- b _08097338
-_08097326:
- lsls r2, r0, 16
- lsrs r2, 16
- movs r0, 0
- movs r1, 0x2B
- bl sub_8001784
- cmp r0, 0
- beq _08097338
- movs r0, 0x1
-_08097338:
- pop {r1}
- bx r1
- thumb_func_end sub_8097318
-
- thumb_func_start sub_809733C
-sub_809733C:
- push {r4-r6,lr}
- lsls r0, 16
- asrs r4, r0, 16
- lsls r1, 24
- lsrs r6, r1, 24
- cmp r4, 0xD
- beq _0809737C
- lsls r0, r4, 16
- lsrs r5, r0, 16
- movs r0, 0
- movs r1, 0x2C
- adds r2, r5, 0
- bl sub_8001784
- cmp r0, 0
- bne _0809737C
- movs r0, 0
- movs r1, 0x2B
- adds r2, r5, 0
- adds r3, r6, 0
- bl sub_800199C
- cmp r6, 0
- beq _0809737C
- cmp r4, 0xE
- blt _0809737C
- cmp r4, 0xF
- ble _08097378
- cmp r4, 0x1C
- bne _0809737C
-_08097378:
- bl sub_809674C
-_0809737C:
- pop {r4-r6}
- pop {r0}
- bx r0
- thumb_func_end sub_809733C
-
- thumb_func_start sub_8097384
-sub_8097384:
- push {lr}
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0xD
- bne _08097392
- movs r0, 0
- b _080973A4
-_08097392:
- lsls r2, r0, 16
- lsrs r2, 16
- movs r0, 0
- movs r1, 0x2C
- bl sub_8001784
- cmp r0, 0
- beq _080973A4
- movs r0, 0x1
-_080973A4:
- pop {r1}
- bx r1
- thumb_func_end sub_8097384
-
- thumb_func_start sub_80973A8
-sub_80973A8:
- push {r4-r6,lr}
- lsls r0, 16
- asrs r0, 16
- lsls r1, 24
- lsrs r6, r1, 24
- cmp r0, 0xD
- beq _080973EE
- lsls r5, r0, 16
- cmp r6, 0
- beq _080973E2
- bl sub_80A26B8
- lsls r0, 16
- asrs r4, r0, 16
- lsrs r2, r5, 16
- movs r0, 0
- movs r1, 0x2B
- movs r3, 0
- bl sub_800199C
- movs r0, 0x1
- negs r0, r0
- cmp r4, r0
- beq _080973E2
- movs r0, 0
- movs r1, 0x12
- adds r2, r4, 0
- bl sub_80018D8
-_080973E2:
- lsrs r2, r5, 16
- movs r0, 0
- movs r1, 0x2C
- adds r3, r6, 0
- bl sub_800199C
-_080973EE:
- pop {r4-r6}
- pop {r0}
- bx r0
- thumb_func_end sub_80973A8
-
- thumb_func_start sub_80973F4
-sub_80973F4:
- push {lr}
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0xD
- bne _08097402
- movs r0, 0
- b _08097414
-_08097402:
- lsls r2, r0, 16
- lsrs r2, 16
- movs r0, 0
- movs r1, 0x2D
- bl sub_8001784
- cmp r0, 0
- beq _08097414
- movs r0, 0x1
-_08097414:
- pop {r1}
- bx r1
- thumb_func_end sub_80973F4
-
- thumb_func_start sub_8097418
-sub_8097418:
- push {r4-r7,lr}
- lsls r0, 16
- asrs r5, r0, 16
- lsls r1, 24
- lsrs r7, r1, 24
- cmp r5, 0xD
- beq _08097470
- lsls r6, r5, 16
- cmp r7, 0
- beq _08097464
- lsrs r2, r6, 16
- movs r0, 0
- movs r1, 0x2C
- movs r3, 0
- bl sub_800199C
- cmp r5, 0x1E
- bgt _08097464
- lsls r0, r5, 3
- ldr r1, _08097478
- adds r4, r0, r1
- ldrb r0, [r4, 0x4]
- cmp r0, 0xFF
- beq _0809744C
- bl sub_8097FA8
-_0809744C:
- ldrb r0, [r4, 0x5]
- cmp r0, 0xFF
- beq _08097456
- bl sub_8097FA8
-_08097456:
- cmp r5, 0x9
- bne _08097460
- movs r0, 0x1F
- bl sub_8097FA8
-_08097460:
- bl sub_8097FF8
-_08097464:
- lsrs r2, r6, 16
- movs r0, 0
- movs r1, 0x2D
- adds r3, r7, 0
- bl sub_800199C
-_08097470:
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_08097478: .4byte gStoryMissionText
- thumb_func_end sub_8097418
-
.align 2,0
diff --git a/asm/code_8097318.s b/asm/code_8097318.s
new file mode 100644
index 0000000..d8acc07
--- /dev/null
+++ b/asm/code_8097318.s
@@ -0,0 +1,207 @@
+ #include "asm/constants/gba_constants.inc"
+ #include "asm/macros.inc"
+
+ .syntax unified
+
+ .text
+
+ thumb_func_start sub_8097318
+sub_8097318:
+ push {lr}
+ lsls r0, 16
+ asrs r0, 16
+ cmp r0, 0xD
+ bne _08097326
+ movs r0, 0
+ b _08097338
+_08097326:
+ lsls r2, r0, 16
+ lsrs r2, 16
+ movs r0, 0
+ movs r1, 0x2B
+ bl sub_8001784
+ cmp r0, 0
+ beq _08097338
+ movs r0, 0x1
+_08097338:
+ pop {r1}
+ bx r1
+ thumb_func_end sub_8097318
+
+ thumb_func_start sub_809733C
+sub_809733C:
+ push {r4-r6,lr}
+ lsls r0, 16
+ asrs r4, r0, 16
+ lsls r1, 24
+ lsrs r6, r1, 24
+ cmp r4, 0xD
+ beq _0809737C
+ lsls r0, r4, 16
+ lsrs r5, r0, 16
+ movs r0, 0
+ movs r1, 0x2C
+ adds r2, r5, 0
+ bl sub_8001784
+ cmp r0, 0
+ bne _0809737C
+ movs r0, 0
+ movs r1, 0x2B
+ adds r2, r5, 0
+ adds r3, r6, 0
+ bl sub_800199C
+ cmp r6, 0
+ beq _0809737C
+ cmp r4, 0xE
+ blt _0809737C
+ cmp r4, 0xF
+ ble _08097378
+ cmp r4, 0x1C
+ bne _0809737C
+_08097378:
+ bl sub_809674C
+_0809737C:
+ pop {r4-r6}
+ pop {r0}
+ bx r0
+ thumb_func_end sub_809733C
+
+ thumb_func_start sub_8097384
+sub_8097384:
+ push {lr}
+ lsls r0, 16
+ asrs r0, 16
+ cmp r0, 0xD
+ bne _08097392
+ movs r0, 0
+ b _080973A4
+_08097392:
+ lsls r2, r0, 16
+ lsrs r2, 16
+ movs r0, 0
+ movs r1, 0x2C
+ bl sub_8001784
+ cmp r0, 0
+ beq _080973A4
+ movs r0, 0x1
+_080973A4:
+ pop {r1}
+ bx r1
+ thumb_func_end sub_8097384
+
+ thumb_func_start sub_80973A8
+sub_80973A8:
+ push {r4-r6,lr}
+ lsls r0, 16
+ asrs r0, 16
+ lsls r1, 24
+ lsrs r6, r1, 24
+ cmp r0, 0xD
+ beq _080973EE
+ lsls r5, r0, 16
+ cmp r6, 0
+ beq _080973E2
+ bl sub_80A26B8
+ lsls r0, 16
+ asrs r4, r0, 16
+ lsrs r2, r5, 16
+ movs r0, 0
+ movs r1, 0x2B
+ movs r3, 0
+ bl sub_800199C
+ movs r0, 0x1
+ negs r0, r0
+ cmp r4, r0
+ beq _080973E2
+ movs r0, 0
+ movs r1, 0x12
+ adds r2, r4, 0
+ bl sub_80018D8
+_080973E2:
+ lsrs r2, r5, 16
+ movs r0, 0
+ movs r1, 0x2C
+ adds r3, r6, 0
+ bl sub_800199C
+_080973EE:
+ pop {r4-r6}
+ pop {r0}
+ bx r0
+ thumb_func_end sub_80973A8
+
+ thumb_func_start sub_80973F4
+sub_80973F4:
+ push {lr}
+ lsls r0, 16
+ asrs r0, 16
+ cmp r0, 0xD
+ bne _08097402
+ movs r0, 0
+ b _08097414
+_08097402:
+ lsls r2, r0, 16
+ lsrs r2, 16
+ movs r0, 0
+ movs r1, 0x2D
+ bl sub_8001784
+ cmp r0, 0
+ beq _08097414
+ movs r0, 0x1
+_08097414:
+ pop {r1}
+ bx r1
+ thumb_func_end sub_80973F4
+
+ thumb_func_start sub_8097418
+sub_8097418:
+ push {r4-r7,lr}
+ lsls r0, 16
+ asrs r5, r0, 16
+ lsls r1, 24
+ lsrs r7, r1, 24
+ cmp r5, 0xD
+ beq _08097470
+ lsls r6, r5, 16
+ cmp r7, 0
+ beq _08097464
+ lsrs r2, r6, 16
+ movs r0, 0
+ movs r1, 0x2C
+ movs r3, 0
+ bl sub_800199C
+ cmp r5, 0x1E
+ bgt _08097464
+ lsls r0, r5, 3
+ ldr r1, _08097478
+ adds r4, r0, r1
+ ldrb r0, [r4, 0x4]
+ cmp r0, 0xFF
+ beq _0809744C
+ bl sub_8097FA8
+_0809744C:
+ ldrb r0, [r4, 0x5]
+ cmp r0, 0xFF
+ beq _08097456
+ bl sub_8097FA8
+_08097456:
+ cmp r5, 0x9
+ bne _08097460
+ movs r0, 0x1F
+ bl sub_8097FA8
+_08097460:
+ bl sub_8097FF8
+_08097464:
+ lsrs r2, r6, 16
+ movs r0, 0
+ movs r1, 0x2D
+ adds r3, r7, 0
+ bl sub_800199C
+_08097470:
+ pop {r4-r7}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_08097478: .4byte gStoryMissionText
+ thumb_func_end sub_8097418
+
+ .align 2,0
diff --git a/asm/code_8097670.s b/asm/code_8097670.s
index c4d68ec..d6d224f 100644
--- a/asm/code_8097670.s
+++ b/asm/code_8097670.s
@@ -5,76 +5,6 @@
.text
- thumb_func_start sub_80978C8
-sub_80978C8:
- push {lr}
- lsls r0, 16
- asrs r0, 16
- bl GetBaseSpeciesNoUnown
- lsls r0, 16
- asrs r3, r0, 16
- ldr r0, _080978FC
- ldr r2, [r0]
- adds r0, r3, 0
- cmp r3, 0
- bge _080978E2
- adds r0, 0x1F
-_080978E2:
- asrs r0, 5
- lsls r1, r0, 2
- adds r2, 0x54
- adds r2, r1
- lsls r0, 5
- subs r0, r3, r0
- movs r1, 0x1
- lsls r1, r0
- ldr r0, [r2]
- orrs r0, r1
- str r0, [r2]
- pop {r0}
- bx r0
- .align 2, 0
-_080978FC: .4byte gUnknown_203B494
- thumb_func_end sub_80978C8
-
- thumb_func_start sub_8097900
-sub_8097900:
- push {lr}
- lsls r0, 16
- asrs r0, 16
- bl GetBaseSpeciesNoUnown
- lsls r0, 16
- asrs r3, r0, 16
- ldr r0, _08097938
- ldr r2, [r0]
- adds r0, r3, 0
- cmp r3, 0
- bge _0809791A
- adds r0, 0x1F
-_0809791A:
- asrs r0, 5
- lsls r1, r0, 2
- adds r2, 0x1C
- adds r2, r1
- lsls r0, 5
- subs r0, r3, r0
- movs r1, 0x1
- lsls r1, r0
- ldr r0, [r2]
- ands r0, r1
- cmp r0, 0
- bne _0809793C
- movs r0, 0
- b _0809793E
- .align 2, 0
-_08097938: .4byte gUnknown_203B494
-_0809793C:
- movs r0, 0x1
-_0809793E:
- pop {r1}
- bx r1
- thumb_func_end sub_8097900
-
thumb_func_start sub_8097944
sub_8097944:
push {r4-r7,lr}
@@ -453,405 +383,4 @@ _08097C10: .4byte 0x00000163
_08097C14: .4byte gUnknown_203B494
thumb_func_end sub_8097944
- thumb_func_start sub_8097C18
-sub_8097C18:
- push {r4-r6,lr}
- adds r5, r0, 0
- bl sub_8097944
- ldr r4, _08097CBC
- ldr r1, [r4]
- adds r1, 0x4
- adds r0, r5, 0
- movs r2, 0x11
- bl SaveIntegerBits
- ldr r1, [r4]
- adds r1, 0x8
- adds r0, r5, 0
- movs r2, 0x11
- bl SaveIntegerBits
- ldr r1, [r4]
- adds r1, 0xC
- adds r0, r5, 0
- movs r2, 0x11
- bl SaveIntegerBits
- ldr r1, [r4]
- adds r0, r5, 0
- movs r2, 0x20
- bl SaveIntegerBits
- ldr r1, [r4]
- adds r1, 0x14
- adds r0, r5, 0
- movs r2, 0xE
- bl SaveIntegerBits
- ldr r1, [r4]
- adds r1, 0x16
- adds r0, r5, 0
- movs r2, 0xE
- bl SaveIntegerBits
- ldr r1, [r4]
- adds r1, 0x18
- adds r0, r5, 0
- movs r2, 0x9
- bl SaveIntegerBits
- ldr r1, [r4]
- adds r1, 0xC0
- adds r0, r5, 0
- movs r2, 0x11
- bl SaveIntegerBits
- ldr r1, [r4]
- adds r1, 0x1C
- movs r6, 0xE0
- lsls r6, 1
- adds r0, r5, 0
- adds r2, r6, 0
- bl SaveIntegerBits
- ldr r1, [r4]
- adds r1, 0x54
- adds r0, r5, 0
- adds r2, r6, 0
- bl SaveIntegerBits
- ldr r1, [r4]
- adds r1, 0x8C
- movs r2, 0xD0
- lsls r2, 1
- adds r0, r5, 0
- bl SaveIntegerBits
- ldr r1, [r4]
- adds r1, 0x10
- adds r0, r5, 0
- bl xxx_save_poke_sub_4_80902F4
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_08097CBC: .4byte gUnknown_203B494
- thumb_func_end sub_8097C18
-
- thumb_func_start sub_8097CC0
-sub_8097CC0:
- push {r4-r6,lr}
- adds r5, r0, 0
- ldr r4, _08097D5C
- ldr r1, [r4]
- adds r1, 0x4
- movs r2, 0x11
- bl RestoreIntegerBits
- ldr r1, [r4]
- adds r1, 0x8
- adds r0, r5, 0
- movs r2, 0x11
- bl RestoreIntegerBits
- ldr r1, [r4]
- adds r1, 0xC
- adds r0, r5, 0
- movs r2, 0x11
- bl RestoreIntegerBits
- ldr r1, [r4]
- adds r0, r5, 0
- movs r2, 0x20
- bl RestoreIntegerBits
- ldr r1, [r4]
- adds r1, 0x14
- adds r0, r5, 0
- movs r2, 0xE
- bl RestoreIntegerBits
- ldr r1, [r4]
- adds r1, 0x16
- adds r0, r5, 0
- movs r2, 0xE
- bl RestoreIntegerBits
- ldr r1, [r4]
- adds r1, 0x18
- adds r0, r5, 0
- movs r2, 0x9
- bl RestoreIntegerBits
- ldr r1, [r4]
- adds r1, 0xC0
- adds r0, r5, 0
- movs r2, 0x11
- bl RestoreIntegerBits
- ldr r1, [r4]
- adds r1, 0x1C
- movs r6, 0xE0
- lsls r6, 1
- adds r0, r5, 0
- adds r2, r6, 0
- bl RestoreIntegerBits
- ldr r1, [r4]
- adds r1, 0x54
- adds r0, r5, 0
- adds r2, r6, 0
- bl RestoreIntegerBits
- ldr r1, [r4]
- adds r1, 0x8C
- movs r2, 0xD0
- lsls r2, 1
- adds r0, r5, 0
- bl RestoreIntegerBits
- ldr r1, [r4]
- adds r1, 0x10
- adds r0, r5, 0
- bl xxx_restore_poke_sub_4_8090314
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_08097D5C: .4byte gUnknown_203B494
- thumb_func_end sub_8097CC0
-
- thumb_func_start sub_8097D60
-sub_8097D60:
- push {lr}
- sub sp, 0x10
- adds r3, r0, 0
- adds r2, r1, 0
- mov r0, sp
- adds r1, r3, 0
- bl xxx_init_struct_8094924_save_809486C
- mov r0, sp
- bl WriteGameOptions
- mov r0, sp
- bl WritePlayTime
- mov r0, sp
- bl sub_8097C18
- mov r0, sp
- bl WriteExclusivePokemon
- mov r0, sp
- bl nullsub_102
- ldr r0, [sp, 0x8]
- add sp, 0x10
- pop {r1}
- bx r1
- thumb_func_end sub_8097D60
-
- thumb_func_start sub_8097D98
-sub_8097D98:
- push {lr}
- sub sp, 0x10
- adds r3, r0, 0
- adds r2, r1, 0
- mov r0, sp
- adds r1, r3, 0
- bl xxx_init_struct_8094924_restore_809485C
- mov r0, sp
- bl ReadGameOptions
- mov r0, sp
- bl ReadPlayTime
- mov r0, sp
- bl sub_8097CC0
- mov r0, sp
- bl ReadExclusivePokemon
- mov r0, sp
- bl nullsub_102
- ldr r0, [sp, 0x8]
- add sp, 0x10
- pop {r1}
- bx r1
- thumb_func_end sub_8097D98
-
- thumb_func_start sub_8097DD0
-sub_8097DD0:
- push {lr}
- adds r2, r0, 0
- adds r3, r1, 0
- ldr r1, [r2]
- ldr r0, [r3]
- cmp r1, r0
- bne _08097DEA
- ldr r1, [r2, 0x4]
- ldr r0, [r3, 0x4]
- cmp r1, r0
- bne _08097DEA
- movs r0, 0x1
- b _08097DEC
-_08097DEA:
- movs r0, 0
-_08097DEC:
- pop {r1}
- bx r1
- thumb_func_end sub_8097DD0
-
- thumb_func_start sub_8097DF0
-sub_8097DF0:
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- sub sp, 0x1F8
- mov r8, r0
- str r1, [sp, 0x1F0]
- movs r0, 0
- mov r9, r0
- movs r7, 0
- ldr r1, _08097E3C
- ldr r0, [r1]
- cmp r0, 0
- beq _08097E6E
-_08097E0E:
- movs r4, 0
- lsls r5, r7, 3
- lsls r1, r7, 2
- mov r10, r1
- adds r6, r7, 0x1
- ldr r2, _08097E3C
- adds r3, r5, r2
- add r1, sp, 0x18C
-_08097E1E:
- ldr r0, [r3]
- adds r0, r4
- ldrb r2, [r0]
- cmp r2, 0x23
- bne _08097E40
- ldrb r0, [r0, 0x1]
- cmp r0, 0x72
- bne _08097E40
- strb r2, [r1]
- adds r1, 0x1
- strb r0, [r1]
- adds r1, 0x1
- movs r0, 0
- strb r0, [r1]
- b _08097E50
- .align 2, 0
-_08097E3C: .4byte gStatusDescriptions
-_08097E40:
- ldr r0, [r3]
- adds r0, r4
- ldrb r0, [r0]
- strb r0, [r1]
- adds r1, 0x1
- adds r4, 0x1
- cmp r4, 0x63
- ble _08097E1E
-_08097E50:
- add r0, sp, 0x18C
- bl strlen
- mov r1, sp
- add r1, r10
- str r0, [r1]
- adds r7, r6, 0
- cmp r6, 0x62
- bgt _08097E6E
- lsls r0, r6, 3
- ldr r1, _08097EB4
- adds r0, r1
- ldr r0, [r0]
- cmp r0, 0
- bne _08097E0E
-_08097E6E:
- mov r2, r8
- ldrb r0, [r2]
- cmp r0, 0
- beq _08097F2C
- ldr r3, _08097EB4
-_08097E78:
- cmp r0, 0x23
- bne _08097F08
- movs r7, 0
- adds r1, r3, 0
- ldr r0, [r1]
- cmp r0, 0
- beq _08097F20
- mov r2, r9
- lsls r0, r2, 2
- ldr r2, [sp, 0x1F0]
- adds r0, r2
- mov r10, r0
-_08097E90:
- lsls r4, r7, 3
- adds r0, r4, r1
- ldr r0, [r0]
- lsls r1, r7, 2
- add r1, sp
- ldr r2, [r1]
- mov r1, r8
- str r3, [sp, 0x1F4]
- bl sub_800B2D4
- lsls r0, 24
- adds r5, r4, 0
- adds r6, r7, 0x1
- ldr r3, [sp, 0x1F4]
- cmp r0, 0
- bne _08097EF0
- movs r4, 0
- b _08097EBA
- .align 2, 0
-_08097EB4: .4byte gStatusDescriptions
-_08097EB8:
- adds r4, 0x1
-_08097EBA:
- cmp r4, r9
- bge _08097ED6
- adds r0, r5, r3
- lsls r1, r4, 2
- ldr r2, [sp, 0x1F0]
- adds r1, r2
- ldr r1, [r1]
- str r3, [sp, 0x1F4]
- bl sub_8097DD0
- lsls r0, 24
- ldr r3, [sp, 0x1F4]
- cmp r0, 0
- beq _08097EB8
-_08097ED6:
- cmp r4, r9
- bne _08097EF0
- mov r0, r9
- cmp r0, 0x3
- bgt _08097EF0
- adds r0, r5, r3
- mov r1, r10
- adds r1, 0x4
- mov r10, r1
- subs r1, 0x4
- stm r1!, {r0}
- movs r2, 0x1
- add r9, r2
-_08097EF0:
- adds r7, r6, 0
- cmp r6, 0x62
- bgt _08097F20
- ldr r1, _08097F04
- lsls r0, r6, 3
- adds r0, r1
- ldr r0, [r0]
- cmp r0, 0
- bne _08097E90
- b _08097F20
- .align 2, 0
-_08097F04: .4byte gStatusDescriptions
-_08097F08:
- mov r0, r8
- ldrb r1, [r0]
- adds r0, r1, 0
- adds r0, 0x7F
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x3
- bls _08097F1C
- cmp r1, 0x87
- bne _08097F20
-_08097F1C:
- movs r1, 0x1
- add r8, r1
-_08097F20:
- movs r2, 0x1
- add r8, r2
- mov r1, r8
- ldrb r0, [r1]
- cmp r0, 0
- bne _08097E78
-_08097F2C:
- mov r0, r9
- add sp, 0x1F8
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r1}
- bx r1
- thumb_func_end sub_8097DF0
-
.align 2,0
diff --git a/asm/code_8097DD0.s b/asm/code_8097DD0.s
new file mode 100644
index 0000000..36f15d9
--- /dev/null
+++ b/asm/code_8097DD0.s
@@ -0,0 +1,213 @@
+ #include "asm/constants/gba_constants.inc"
+ #include "asm/macros.inc"
+
+ .syntax unified
+
+ .text
+
+ thumb_func_start sub_8097DD0
+sub_8097DD0:
+ push {lr}
+ adds r2, r0, 0
+ adds r3, r1, 0
+ ldr r1, [r2]
+ ldr r0, [r3]
+ cmp r1, r0
+ bne _08097DEA
+ ldr r1, [r2, 0x4]
+ ldr r0, [r3, 0x4]
+ cmp r1, r0
+ bne _08097DEA
+ movs r0, 0x1
+ b _08097DEC
+_08097DEA:
+ movs r0, 0
+_08097DEC:
+ pop {r1}
+ bx r1
+ thumb_func_end sub_8097DD0
+
+ thumb_func_start sub_8097DF0
+sub_8097DF0:
+ push {r4-r7,lr}
+ mov r7, r10
+ mov r6, r9
+ mov r5, r8
+ push {r5-r7}
+ sub sp, 0x1F8
+ mov r8, r0
+ str r1, [sp, 0x1F0]
+ movs r0, 0
+ mov r9, r0
+ movs r7, 0
+ ldr r1, _08097E3C
+ ldr r0, [r1]
+ cmp r0, 0
+ beq _08097E6E
+_08097E0E:
+ movs r4, 0
+ lsls r5, r7, 3
+ lsls r1, r7, 2
+ mov r10, r1
+ adds r6, r7, 0x1
+ ldr r2, _08097E3C
+ adds r3, r5, r2
+ add r1, sp, 0x18C
+_08097E1E:
+ ldr r0, [r3]
+ adds r0, r4
+ ldrb r2, [r0]
+ cmp r2, 0x23
+ bne _08097E40
+ ldrb r0, [r0, 0x1]
+ cmp r0, 0x72
+ bne _08097E40
+ strb r2, [r1]
+ adds r1, 0x1
+ strb r0, [r1]
+ adds r1, 0x1
+ movs r0, 0
+ strb r0, [r1]
+ b _08097E50
+ .align 2, 0
+_08097E3C: .4byte gStatusDescriptions
+_08097E40:
+ ldr r0, [r3]
+ adds r0, r4
+ ldrb r0, [r0]
+ strb r0, [r1]
+ adds r1, 0x1
+ adds r4, 0x1
+ cmp r4, 0x63
+ ble _08097E1E
+_08097E50:
+ add r0, sp, 0x18C
+ bl strlen
+ mov r1, sp
+ add r1, r10
+ str r0, [r1]
+ adds r7, r6, 0
+ cmp r6, 0x62
+ bgt _08097E6E
+ lsls r0, r6, 3
+ ldr r1, _08097EB4
+ adds r0, r1
+ ldr r0, [r0]
+ cmp r0, 0
+ bne _08097E0E
+_08097E6E:
+ mov r2, r8
+ ldrb r0, [r2]
+ cmp r0, 0
+ beq _08097F2C
+ ldr r3, _08097EB4
+_08097E78:
+ cmp r0, 0x23
+ bne _08097F08
+ movs r7, 0
+ adds r1, r3, 0
+ ldr r0, [r1]
+ cmp r0, 0
+ beq _08097F20
+ mov r2, r9
+ lsls r0, r2, 2
+ ldr r2, [sp, 0x1F0]
+ adds r0, r2
+ mov r10, r0
+_08097E90:
+ lsls r4, r7, 3
+ adds r0, r4, r1
+ ldr r0, [r0]
+ lsls r1, r7, 2
+ add r1, sp
+ ldr r2, [r1]
+ mov r1, r8
+ str r3, [sp, 0x1F4]
+ bl sub_800B2D4
+ lsls r0, 24
+ adds r5, r4, 0
+ adds r6, r7, 0x1
+ ldr r3, [sp, 0x1F4]
+ cmp r0, 0
+ bne _08097EF0
+ movs r4, 0
+ b _08097EBA
+ .align 2, 0
+_08097EB4: .4byte gStatusDescriptions
+_08097EB8:
+ adds r4, 0x1
+_08097EBA:
+ cmp r4, r9
+ bge _08097ED6
+ adds r0, r5, r3
+ lsls r1, r4, 2
+ ldr r2, [sp, 0x1F0]
+ adds r1, r2
+ ldr r1, [r1]
+ str r3, [sp, 0x1F4]
+ bl sub_8097DD0
+ lsls r0, 24
+ ldr r3, [sp, 0x1F4]
+ cmp r0, 0
+ beq _08097EB8
+_08097ED6:
+ cmp r4, r9
+ bne _08097EF0
+ mov r0, r9
+ cmp r0, 0x3
+ bgt _08097EF0
+ adds r0, r5, r3
+ mov r1, r10
+ adds r1, 0x4
+ mov r10, r1
+ subs r1, 0x4
+ stm r1!, {r0}
+ movs r2, 0x1
+ add r9, r2
+_08097EF0:
+ adds r7, r6, 0
+ cmp r6, 0x62
+ bgt _08097F20
+ ldr r1, _08097F04
+ lsls r0, r6, 3
+ adds r0, r1
+ ldr r0, [r0]
+ cmp r0, 0
+ bne _08097E90
+ b _08097F20
+ .align 2, 0
+_08097F04: .4byte gStatusDescriptions
+_08097F08:
+ mov r0, r8
+ ldrb r1, [r0]
+ adds r0, r1, 0
+ adds r0, 0x7F
+ lsls r0, 24
+ lsrs r0, 24
+ cmp r0, 0x3
+ bls _08097F1C
+ cmp r1, 0x87
+ bne _08097F20
+_08097F1C:
+ movs r1, 0x1
+ add r8, r1
+_08097F20:
+ movs r2, 0x1
+ add r8, r2
+ mov r1, r8
+ ldrb r0, [r1]
+ cmp r0, 0
+ bne _08097E78
+_08097F2C:
+ mov r0, r9
+ add sp, 0x1F8
+ pop {r3-r5}
+ mov r8, r3
+ mov r9, r4
+ mov r10, r5
+ pop {r4-r7}
+ pop {r1}
+ bx r1
+ thumb_func_end sub_8097DF0
+
+ .align 2,0
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_2.s b/asm/wonder_mail_2.s
index 19e314f..96e0130 100644
--- a/asm/wonder_mail_2.s
+++ b/asm/wonder_mail_2.s
@@ -1098,7 +1098,7 @@ _0802C7B4:
adds r0, r5
adds r1, r0
ldrb r0, [r1]
- bl sub_8096AB4
+ bl GetJobSlotInfo
adds r4, r0, 0
ldr r0, [r6]
ldr r1, [r0, 0x3C]
@@ -1459,7 +1459,7 @@ _0802CA7C: .4byte gUnknown_203B2F0
_0802CA80:
ldr r0, [r4]
ldrb r0, [r0, 0xC]
- bl sub_8096AB4
+ bl GetJobSlotInfo
ldr r1, [r4]
adds r1, 0x10
bl sub_803B35C
@@ -1482,7 +1482,7 @@ sub_802CAA4:
ldr r5, _0802CAC8
ldr r0, [r5]
ldrb r0, [r0, 0xC]
- bl sub_8096AB4
+ bl GetJobSlotInfo
adds r4, r0, 0
ldr r2, [r5]
ldr r0, [r2]
@@ -1759,7 +1759,7 @@ _0802CCD8:
ldr r0, _0802CCF0
ldr r0, [r0]
ldrb r0, [r0, 0xC]
- bl sub_8096AB4
+ bl GetJobSlotInfo
movs r1, 0x6
b _0802CD06
.align 2, 0
@@ -1771,7 +1771,7 @@ _0802CCF4:
ldr r0, _0802CD14
ldr r0, [r0]
ldrb r0, [r0, 0xC]
- bl sub_8096AB4
+ bl GetJobSlotInfo
movs r1, 0x5
_0802CD06:
strb r1, [r0]
diff --git a/asm/wonder_mail_3.s b/asm/wonder_mail_3.s
index 043c1e7..0f14aa9 100644
--- a/asm/wonder_mail_3.s
+++ b/asm/wonder_mail_3.s
@@ -662,7 +662,7 @@ sub_802DAA8:
ldr r4, _0802DAD0
ldr r0, [r4]
ldrb r0, [r0, 0x10]
- bl sub_8096AB4
+ bl GetJobSlotInfo
adds r1, r0, 0
ldr r4, [r4]
ldrb r0, [r4, 0x9]
diff --git a/asm/wonder_mail_5.s b/asm/wonder_mail_5.s
deleted file mode 100644
index aa081ae..0000000
--- a/asm/wonder_mail_5.s
+++ /dev/null
@@ -1,571 +0,0 @@
- #include "asm/constants/gba_constants.inc"
- #include "asm/macros.inc"
-
- .syntax unified
-
- .text
-
-
- thumb_func_start sub_8031AE8
-sub_8031AE8:
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- sub sp, 0xDC
- ldr r7, _08031B24
- ldr r0, [r7]
- ldr r0, [r0, 0x10]
- bl sub_80073B8
- ldr r2, _08031B28
- ldr r0, [r7]
- ldr r3, [r0, 0x10]
- movs r6, 0
- str r6, [sp]
- movs r0, 0xA
- movs r1, 0
- bl xxx_call_draw_string
- ldr r1, [r7]
- ldrb r0, [r1, 0xC]
- cmp r0, 0x1
- beq _08031B2C
- cmp r0, 0x1
- bgt _08031B1E
- b _08031CD4
-_08031B1E:
- cmp r0, 0x2
- beq _08031B94
- b _08031CD4
- .align 2, 0
-_08031B24: .4byte gUnknown_203B330
-_08031B28: .4byte gUnknown_80E1F30
-_08031B2C:
- add r4, sp, 0x68
- adds r0, r4, 0
- bl sub_8099394
- ldrb r0, [r4]
- bl sub_8095228
- adds r5, r0, 0
- ldr r0, [r7]
- ldr r3, [r0, 0x10]
- movs r0, 0xA
- movs r1, 0x10
- movs r2, 0x3
- bl sub_803B6B0
- ldr r1, _08031B8C
- ldrb r2, [r5, 0x5]
- add r0, sp, 0x4
- bl sprintf_2
- ldr r0, [r7]
- ldr r3, [r0, 0x10]
- str r6, [sp]
- movs r0, 0x15
- movs r1, 0x10
- add r2, sp, 0x4
- bl xxx_call_draw_string
- ldr r4, _08031B90
- movs r1, 0xC
- ldrsh r0, [r5, r1]
- bl GetMonSpecies
- adds r2, r0, 0
- add r0, sp, 0x4
- adds r1, r4, 0
- bl sprintf_2
- ldr r0, [r7]
- ldr r3, [r0, 0x10]
- str r6, [sp]
- movs r0, 0x28
- movs r1, 0x10
- add r2, sp, 0x4
- bl xxx_call_draw_string
- b _08031D4E
- .align 2, 0
-_08031B8C: .4byte gUnknown_80E1F3C
-_08031B90: .4byte gUnknown_80E1F40
-_08031B94:
- ldrb r0, [r1, 0xD]
- bl sub_80969D0
- adds r1, r0, 0
- cmp r1, 0
- bne _08031BB0
- ldr r2, _08031BAC
- ldr r0, [r7]
- ldr r3, [r0, 0x10]
- str r1, [sp]
- b _08031D2C
- .align 2, 0
-_08031BAC: .4byte gUnknown_80E1F54
-_08031BB0:
- movs r6, 0x10
- movs r2, 0
- mov r10, r2
- mov r8, r2
- ldr r0, _08031C28
- mov r9, r0
- mov r1, sp
- adds r1, 0x6C
- str r1, [sp, 0xD8]
-_08031BC2:
- mov r2, r10
- lsls r0, r2, 24
- lsrs r0, 24
- bl sub_8096AB4
- adds r4, r0, 0
- ldr r1, [r7]
- ldrb r0, [r4, 0x4]
- ldrb r2, [r1, 0xD]
- cmp r0, r2
- bne _08031CC2
- ldrb r0, [r4]
- cmp r0, 0
- beq _08031CC2
- cmp r0, 0x5
- beq _08031CC2
- cmp r0, 0x7
- beq _08031CC2
- ldr r3, [r1, 0x10]
- movs r0, 0xA
- adds r1, r6, 0
- movs r2, 0x3
- bl sub_803B6B0
- ldrb r0, [r4, 0x1]
- add r5, sp, 0x6C
- cmp r0, 0x3
- beq _08031C16
- ldrb r2, [r4, 0x5]
- ldr r0, [sp, 0xD8]
- ldr r1, _08031C2C
- bl sprintf_2
- ldr r0, [r7]
- ldr r3, [r0, 0x10]
- mov r0, r8
- str r0, [sp]
- movs r0, 0x15
- adds r1, r6, 0
- ldr r2, [sp, 0xD8]
- bl xxx_call_draw_string
-_08031C16:
- ldrb r0, [r4, 0x1]
- cmp r0, 0x3
- beq _08031C58
- cmp r0, 0x3
- bgt _08031C30
- cmp r0, 0x2
- beq _08031C70
- b _08031C9C
- .align 2, 0
-_08031C28: .4byte gUnknown_202DE58
-_08031C2C: .4byte gUnknown_80E1F3C
-_08031C30:
- cmp r0, 0x4
- bne _08031C9C
- ldrb r1, [r4, 0x10]
- mov r0, r9
- movs r2, 0
- bl sub_8090DC4
- adds r0, r5, 0
- ldr r1, _08031C54
- mov r2, r9
- bl sprintf_2
- ldr r0, [r7]
- ldr r3, [r0, 0x10]
- mov r1, r8
- str r1, [sp]
- b _08031C8A
- .align 2, 0
-_08031C54: .4byte gUnknown_80E1F60
-_08031C58:
- ldrb r1, [r4, 0x10]
- mov r0, r9
- movs r2, 0
- bl sub_8090DC4
- adds r0, r5, 0
- ldr r1, _08031C6C
- mov r2, r9
- b _08031C7E
- .align 2, 0
-_08031C6C: .4byte gUnknown_80E1F70
-_08031C70:
- movs r1, 0xE
- ldrsh r0, [r4, r1]
- bl GetMonSpecies
- adds r2, r0, 0
- adds r0, r5, 0
- ldr r1, _08031C98
-_08031C7E:
- bl sprintf_2
- ldr r0, [r7]
- ldr r3, [r0, 0x10]
- mov r2, r8
- str r2, [sp]
-_08031C8A:
- movs r0, 0x28
- adds r1, r6, 0
- adds r2, r5, 0
- bl xxx_call_draw_string
- b _08031CC0
- .align 2, 0
-_08031C98: .4byte gUnknown_80E1F80
-_08031C9C:
- movs r1, 0xE
- ldrsh r0, [r4, r1]
- bl GetMonSpecies
- adds r2, r0, 0
- adds r0, r5, 0
- ldr r1, _08031CD0
- bl sprintf_2
- ldr r0, [r7]
- ldr r3, [r0, 0x10]
- mov r2, r8
- str r2, [sp]
- movs r0, 0x28
- adds r1, r6, 0
- adds r2, r5, 0
- bl xxx_call_draw_string
-_08031CC0:
- adds r6, 0xC
-_08031CC2:
- movs r0, 0x1
- add r10, r0
- mov r1, r10
- cmp r1, 0x7
- bgt _08031CCE
- b _08031BC2
-_08031CCE:
- b _08031D4E
- .align 2, 0
-_08031CD0: .4byte gUnknown_80E1F40
-_08031CD4:
- add r0, sp, 0xD0
- mov r4, sp
- adds r4, 0xD2
- adds r1, r4, 0
- bl sub_80992E0
- lsls r0, 24
- lsrs r5, r0, 24
- cmp r5, 0
- beq _08031D04
- movs r2, 0
- ldrsh r0, [r4, r2]
- bl GetCurrentMissionText
- adds r2, r0, 0
- ldr r0, _08031D00
- ldr r0, [r0]
- ldr r3, [r0, 0x10]
- movs r0, 0
- str r0, [sp]
- b _08031D2C
- .align 2, 0
-_08031D00: .4byte gUnknown_203B330
-_08031D04:
- add r4, sp, 0xD4
- adds r0, r4, 0
- bl sub_8099360
- lsls r0, 24
- lsrs r1, r0, 24
- cmp r1, 0
- beq _08031D3C
- ldrb r0, [r4]
- bl sub_80A2688
- lsls r0, 16
- asrs r0, 16
- bl sub_80975DC
- adds r2, r0, 0
- ldr r0, _08031D38
- ldr r0, [r0]
- ldr r3, [r0, 0x10]
- str r5, [sp]
-_08031D2C:
- movs r0, 0xA
- movs r1, 0x10
- bl xxx_call_draw_string
- b _08031D4E
- .align 2, 0
-_08031D38: .4byte gUnknown_203B330
-_08031D3C:
- ldr r2, _08031D68
- ldr r0, _08031D6C
- ldr r0, [r0]
- ldr r3, [r0, 0x10]
- str r1, [sp]
- movs r0, 0xA
- movs r1, 0x10
- bl xxx_call_draw_string
-_08031D4E:
- ldr r0, _08031D6C
- ldr r0, [r0]
- ldr r0, [r0, 0x10]
- bl sub_80073E0
- add sp, 0xDC
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r0}
- bx r0
- .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
-
- .align 2,0
diff --git a/include/code_8094F88.h b/include/code_8094F88.h
new file mode 100644
index 0000000..9af6c7a
--- /dev/null
+++ b/include/code_8094F88.h
@@ -0,0 +1,35 @@
+#ifndef GUARD_CODE_8094F88_H
+#define GUARD_CODE_8094F88_H
+
+struct unkStruct_203B480
+{
+ u8 unk0;
+ struct DungeonLocation unk4;
+ u32 unk8;
+ u32 unkC;
+ u32 unk10;
+ u32 unk14;
+ u32 unk18;
+ u32 unk1C;
+ u8 unk20;
+ u8 unk21;
+ u8 unk22;
+ u32 unk24;
+ u32 unk28;
+ u8 unk2C;
+ u8 unk2D;
+};
+
+struct unkStruct_203B484
+{
+ u32 unk0;
+ struct PokemonStruct unk4;
+};
+
+struct unkStruct_203B48C
+{
+ s32 unk0;
+ s32 unk4[0x20];
+};
+
+#endif
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/global.h b/include/global.h
index 81388a8..5c71009 100644
--- a/include/global.h
+++ b/include/global.h
@@ -32,4 +32,9 @@
#define ARRAY_COUNT(array) (sizeof(array) / sizeof((array)[0]))
+struct DungeonLocation {
+ u8 dungeonIndex;
+ u8 dungeonFloor;
+};
+
#endif // GUARD_GLOBAL_H
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 912df49..6b514c8 100644
--- a/include/pokemon.h
+++ b/include/pokemon.h
@@ -19,12 +19,6 @@ struct Offense {
u8 def[2];
};
-struct unkPokeSubStruct_4 {
- u8 unk4;
- u8 unk5;
- u16 fill6;
-};
-
struct unkPokeSubStruct_C
{
u8 unk0;
@@ -34,21 +28,21 @@ struct unkPokeSubStruct_C
struct PokemonStruct
{
// size: 0x58
- u16 unk0; // recruited??
- u8 unk2;
- u8 unkHasNextStage; // set to a random value?
- struct unkPokeSubStruct_4 unk4;
+ /* 0x0 */ u16 unk0; // recruited??
+ /* 0x1 */ bool8 isLeader;
+ /* 0x3 */ u8 unkHasNextStage; // set to a random value?
+ /* 0x4 */ struct DungeonLocation unk4;
/* 0x8 */ s16 speciesNum; // species #
- struct unkPokeSubStruct_C unkC[2];
+ /* 0xC */ struct unkPokeSubStruct_C unkC[2];
/* 0x14 */ s16 IQ;
/* 0x16 */ u16 pokeHP; // HP
/* 0x18 */ struct Offense offense;
- u32 unk1C;
- u32 IQSkills;
- u8 unk24;
- u8 fill25[3];
- struct HeldItem heldItem;
- struct PokemonMove moves[MAX_MON_MOVES];
+ /* 0x1C */ u32 unk1C;
+ /* 0x20 */ u32 IQSkills;
+ /* 0x24 */ u8 unk24;
+ /* 0x25 */ u8 fill25[3];
+ /* 0x28 */ struct HeldItem heldItem;
+ /* 0x2C */ struct PokemonMove moves[MAX_MON_MOVES];
/* 0x4C */ u8 name[POKEMON_NAME_LENGTH];
};
@@ -76,9 +70,9 @@ struct PokemonStruct2
{
// size 0x68
u16 unk0; // corresponds to unk0 inPokemonStruct
- u8 unk2; // unk2
+ bool8 isLeader; // unk2
u8 unkHasNextStage; // unk3
- struct unkPokeSubStruct_4 unk4; // unk4
+ struct DungeonLocation unk4; // unk4
u16 IQ; // IQ (other offset)
u16 unkA;
u16 unkC;
diff --git a/include/sub_8095228.h b/include/sub_8095228.h
index 3fd5993..9541d20 100644
--- a/include/sub_8095228.h
+++ b/include/sub_8095228.h
@@ -3,13 +3,16 @@
struct unkStruct_8095228
{
- u8 unk0;
- u8 unk1;
- u8 unk2;
- u8 unk3;
- u8 unk4;
- u8 padding[0x10 - 0x5];
- u32 unk10;
+ /* 0x0 */ u8 mailType; // mail type
+ /* 0x1 */ u8 missionType; // mission type
+ /* 0x2 */ u8 unk2;
+ /* 0x3 */ u8 unk3;
+ /* 0x4 */ u8 dungeon; // dungeon
+ /* 0x5 */ u8 floor; // floor
+ /* 0x8 */ u32 unk8;
+ /* 0xC */ s16 clientSpecies; // client pokemon
+ /* 0xE */ s16 targetSpecies; // target
+ u32 unk10; // TODO: verify that this is just a union of the 4 bytes in Wonder Mail
u8 padding2[0x20 - 0x14];
struct ItemSlot unk20;
u8 padding3[0x28 - 0x24];
diff --git a/ld_script.txt b/ld_script.txt
index 2181c72..fb14341 100755
--- a/ld_script.txt
+++ b/ld_script.txt
@@ -143,7 +143,7 @@ SECTIONS {
src/wonder_mail_4.o(.text);
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 +277,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);
@@ -299,13 +299,18 @@ SECTIONS {
src/play_time.o(.text);
src/code_8094F88.o(.text);
asm/code_8095014.o(.text);
+ src/code_8095824.o(.text);
src/code_80958E8.o(.text);
asm/code_80958E8.o(.text);
+ src/code_80972F4.o(.text);
+ asm/code_8097318.o(.text);
src/code_809747C.o(.text);
asm/code_809747C.o(.text);
src/code_809747C_1.o(.text);
src/code_8097670.o(.text);
asm/code_8097670.o(.text);
+ src/code_8097DD0.o(.text);
+ asm/code_8097DD0.o(.text);
src/code_8097F40.o(.text);
src/exclusive_pokemon.o(.text);
asm/exclusive_pokemon.o(.text);
diff --git a/src/adventure_log.c b/src/adventure_log.c
index cb20682..bf0424b 100644
--- a/src/adventure_log.c
+++ b/src/adventure_log.c
@@ -54,7 +54,7 @@ extern bool8 sub_8013938(void *);
extern void sub_8013660(void *);
extern void PlayMenuSoundEffect(u32);
extern u32 GetKeyPress(void *);
-extern u8 sub_8097710(u8);
+extern bool8 sub_8097710(u8);
extern s16 sub_80978B8();
extern s16 sub_8097880();
@@ -202,30 +202,31 @@ void sub_8032084(void)
}
#endif
-// Uses 1 too many regs
+// Mostly matches except around the switch
#ifdef NONMATCHING
void DisplayAdventureLog(void)
{
s32 counter;
- s32 iVar5;
- u32 uVar6;
+ s32 r4; // r4
+ s32 r6; // r6
u8 temp;
sub_8008C54(gAdventureLog->unk34);
sub_80073B8(gAdventureLog->unk34);
- iVar5 = gAdventureLog->currPage * 8;
- iVar5 += 10;
+ r4 = gAdventureLog->currPage * 8;
+ r6 = r4;
+ r6 += 10;
// Draw Header
- xxx_call_draw_string(iVar5, 0, gAdventureLogHeaderText, gAdventureLog->unk34, 0);
- iVar5 += 4;
- iVar5 += gAdventureLog->unk9E * 8;
+ xxx_call_draw_string(r6, 0, gAdventureLogHeaderText, gAdventureLog->unk34, 0);
+ r4 += 4;
+ r6 = r4 + gAdventureLog->unk9E * 8;
// Draw Page #
- sub_8012BC4(iVar5, 0, gAdventureLog->currPage + 1, 1, 7, gAdventureLog->unk34);
- counter = 0;
- do {
- uVar6 = gAdventureLog->currPage * gAdventureLog->unk1C + counter;
- temp = uVar6; // Having another var in middle gets close (does a u8 cast)
- if(sub_8097710(temp) != 0){
+ sub_8012BC4(r6, 0, gAdventureLog->currPage + 1, 1, 7, gAdventureLog->unk34);
+
+ for(counter = 0; counter < gAdventureLog->unk1A; counter++)
+ {
+ temp = gAdventureLog->currPage * gAdventureLog->unk1C + counter;
+ if(sub_8097710(temp)){
switch(temp) {
case 0xc:
gUnknown_202DE30 = sub_80978B8();
@@ -248,16 +249,15 @@ void DisplayAdventureLog(void)
default:
break;
}
- xxx_format_and_draw(8, sub_8013800(gAdventureLog, counter), GetAdventureLogLine(uVar6), gAdventureLog->unk34, 0);
+ xxx_format_and_draw(8, sub_8013800(gAdventureLog, counter), GetAdventureLogLine(temp), gAdventureLog->unk34, 0);
}
else
{
// Draw the ?????????? across the row
xxx_call_draw_string(8, sub_8013800(gAdventureLog, counter), gUnknown_80E2030, gAdventureLog->unk34, 0);
}
- counter++;
- } while(counter < gAdventureLog->unk1A);
- sub_80073E0(gAdventureLog->unk34);
+ }
+ sub_80073E0(gAdventureLog->unk34);
}
#else
NAKED
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_8094F88.c b/src/code_8094F88.c
index 5bd3a29..0ca6de9 100644
--- a/src/code_8094F88.c
+++ b/src/code_8094F88.c
@@ -1,33 +1,18 @@
#include "global.h"
+#include "pokemon.h"
+#include "code_8094F88.h"
#include "memory.h"
-struct unkStruct_203B480
-{
- //size of 48
- u8 unk0;
- u8 fill1[0x22 - 1];
- u8 unk22;
- u8 fill23[0x2D - 0x23];
- u8 unk2D;
-};
-
-struct unkStruct_203B48C
-{
- s32 unk0;
- s32 unk4[0x20];
-};
-
extern struct unkStruct_203B480 gUnknown_2038C88;
-extern u8 gUnknown_2039288;
-extern u32 gUnknown_20392E8;
+extern struct unkStruct_203B480 *gUnknown_203B480;
+extern struct unkStruct_203B484 gUnknown_2039288;
+extern struct unkStruct_203B484 *gUnknown_203B484;
extern struct unkStruct_203B48C gUnknown_20393C0;
-extern u8 *gUnknown_203B484;
+extern struct unkStruct_203B48C *gUnknown_203B48C;
extern u32 *gUnknown_203B488;
+extern u32 gUnknown_20392E8;
-extern struct unkStruct_203B480 *gUnknown_203B480;
-
-extern struct unkStruct_203B48C *gUnknown_203B48C; // def a pointer
void sub_80950BC(void)
@@ -43,7 +28,7 @@ struct unkStruct_203B480 *sub_80950F8(void)
return &gUnknown_2038C88;
}
-u8 *sub_8095100(void)
+struct unkStruct_203B484 *sub_8095100(void)
{
return &gUnknown_2039288;
}
diff --git a/src/code_8095824.c b/src/code_8095824.c
new file mode 100644
index 0000000..938b47f
--- /dev/null
+++ b/src/code_8095824.c
@@ -0,0 +1,165 @@
+#include "global.h"
+#include "pokemon.h"
+#include "code_8094F88.h"
+
+extern struct unkStruct_203B484 *gUnknown_203B484;
+extern struct unkStruct_203B480 *gUnknown_203B480;
+extern struct unkStruct_203B48C *gUnknown_203B48C;
+
+extern void SaveDungeonLocation(struct unkStruct_8094924*, struct DungeonLocation*);
+extern void RestoreDungeonLocation(struct unkStruct_8094924*, struct DungeonLocation*);
+extern void xxx_save_poke_sub_c_808F41C(struct unkStruct_8094924* a1, struct unkPokeSubStruct_C* unkC);
+extern void xxx_restore_poke_sub_c_808F410(struct unkStruct_8094924*, struct unkPokeSubStruct_C*);
+extern void SavePokemonMoves(struct unkStruct_8094924 *r0, struct PokemonMove *moveSet);
+extern void RestorePokemonMoves(struct unkStruct_8094924 *r0, struct PokemonMove *moveSet);
+
+void sub_8095824(struct unkStruct_8094924 * a, struct unkStruct_203B480 *b);
+void sub_8095774(struct unkStruct_8094924 * a, struct unkStruct_203B480 *b);
+extern u32 sub_8095324(u32);
+
+u32 sub_80954B4(void)
+{
+ if(sub_8095324(3) != 0)
+ return 1;
+ else
+ return 0;
+}
+
+u32 sub_80954CC(u8 *a, u32 b)
+{
+ struct unkStruct_8094924 backup;
+ struct PokemonStruct *temp;
+ s32 index;
+
+ xxx_init_struct_8094924_restore_809485C(&backup, a, b);
+ for(index = 0; index < 0x20; index++)
+ {
+ sub_8095774(&backup, &gUnknown_203B480[index]);
+ }
+ RestoreIntegerBits(&backup, &gUnknown_203B484->unk0, 0x20);
+ temp = &gUnknown_203B484->unk4;
+ memset(temp, 0, sizeof(struct PokemonStruct));
+ RestoreIntegerBits(&backup, &temp->unk0, 2);
+ RestoreIntegerBits(&backup, &temp->isLeader, 1);
+ RestoreIntegerBits(&backup, &temp->unkHasNextStage, 7);
+ RestoreDungeonLocation(&backup, &temp->unk4);
+ RestoreIntegerBits(&backup, &temp->speciesNum, 9);
+ xxx_restore_poke_sub_c_808F410(&backup, &temp->unkC[0]);
+ xxx_restore_poke_sub_c_808F410(&backup, &temp->unkC[1]);
+ RestoreIntegerBits(&backup, &temp->IQ, 0xA);
+ RestoreIntegerBits(&backup, &temp->pokeHP, 0xA);
+ RestoreIntegerBits(&backup, &temp->offense.att[0], 8);
+ RestoreIntegerBits(&backup, &temp->offense.att[1], 8);
+ RestoreIntegerBits(&backup, &temp->offense.def[0], 8);
+ RestoreIntegerBits(&backup, &temp->offense.def[1], 8);
+ RestoreIntegerBits(&backup, &temp->unk1C, 0x18);
+ RestoreIntegerBits(&backup, &temp->IQSkills, 0x18);
+ RestoreIntegerBits(&backup, &temp->unk24, 4);
+ RestoreHeldItem(&backup, &temp->heldItem);
+ RestorePokemonMoves(&backup, temp->moves);
+ RestoreIntegerBits(&backup, temp->name, 0x50);
+
+ RestoreIntegerBits(&backup, &gUnknown_203B48C->unk0, 0x20);
+ for(index = 0; index < 0x20; index++)
+ {
+ RestoreIntegerBits(&backup, &gUnknown_203B48C->unk4[index], 0x20);
+ }
+ nullsub_102(&backup);
+ return backup.unk8;
+}
+
+u32 sub_8095624(u8 *a, u32 b)
+{
+ struct unkStruct_8094924 backup;
+ struct PokemonStruct *temp;
+ s32 index;
+
+ xxx_init_struct_8094924_save_809486C(&backup, a, b);
+ for(index = 0; index < 0x20; index++)
+ {
+ sub_8095824(&backup, &gUnknown_203B480[index]);
+ }
+ SaveIntegerBits(&backup, &gUnknown_203B484->unk0, 0x20);
+ temp = &gUnknown_203B484->unk4;
+ SaveIntegerBits(&backup, &temp->unk0, 2);
+ SaveIntegerBits(&backup, &temp->isLeader, 1);
+ SaveIntegerBits(&backup, &temp->unkHasNextStage, 7);
+ SaveDungeonLocation(&backup, &temp->unk4);
+ SaveIntegerBits(&backup, &temp->speciesNum, 9);
+ xxx_save_poke_sub_c_808F41C(&backup, &temp->unkC[0]);
+ xxx_save_poke_sub_c_808F41C(&backup, &temp->unkC[1]);
+ SaveIntegerBits(&backup, &temp->IQ, 0xA);
+ SaveIntegerBits(&backup, &temp->pokeHP, 0xA);
+ SaveIntegerBits(&backup, &temp->offense.att[0], 8);
+ SaveIntegerBits(&backup, &temp->offense.att[1], 8);
+ SaveIntegerBits(&backup, &temp->offense.def[0], 8);
+ SaveIntegerBits(&backup, &temp->offense.def[1], 8);
+ SaveIntegerBits(&backup, &temp->unk1C, 0x18);
+ SaveIntegerBits(&backup, &temp->IQSkills, 0x18);
+ SaveIntegerBits(&backup, &temp->unk24, 4);
+ SaveHeldItem(&backup, &temp->heldItem);
+ SavePokemonMoves(&backup, temp->moves);
+ SaveIntegerBits(&backup, temp->name, 0x50);
+
+ SaveIntegerBits(&backup, &gUnknown_203B48C->unk0, 0x20);
+ for(index = 0; index < 0x20; index++)
+ {
+ SaveIntegerBits(&backup, &gUnknown_203B48C->unk4[index], 0x20);
+ }
+ nullsub_102(&backup);
+ return backup.unk8;
+}
+
+void sub_8095774(struct unkStruct_8094924 * a, struct unkStruct_203B480 *b)
+{
+ u8 temp;
+
+ RestoreIntegerBits(a, &b->unk0, 4);
+ RestoreDungeonLocation(a, &b->unk4);
+ RestoreIntegerBits(a, &b->unk8, 0x18);
+ RestoreIntegerBits(a, &b->unkC, 0x9);
+ RestoreIntegerBits(a, &b->unk10, 0x20);
+ RestoreIntegerBits(a, &b->unk14, 0x50);
+ RestoreIntegerBits(a, &b->unk20, 0x8);
+ RestoreIntegerBits(a, &b->unk21, 0x8);
+ RestoreIntegerBits(a, &b->unk22, 0x8);
+ RestoreIntegerBits(a, &b->unk24, 0x20);
+ RestoreIntegerBits(a, &b->unk28, 0x20);
+ RestoreIntegerBits(a, &b->unk2C, 0x8);
+
+ RestoreIntegerBits(a, &temp, 1);
+ b->unk2D = temp & 1;
+}
+
+void sub_8095824(struct unkStruct_8094924 * a, struct unkStruct_203B480 *b)
+{
+ u8 neg1;
+ u8 zero;
+ u8 *puVar2;
+ neg1 = -1;
+ zero = 0;
+
+ SaveIntegerBits(a, &b->unk0, 4);
+ SaveDungeonLocation(a, &b->unk4);
+ SaveIntegerBits(a, &b->unk8, 0x18);
+ SaveIntegerBits(a, &b->unkC, 0x9);
+ SaveIntegerBits(a, &b->unk10, 0x20);
+ SaveIntegerBits(a, &b->unk14, 0x50);
+ SaveIntegerBits(a, &b->unk20, 0x8);
+ SaveIntegerBits(a, &b->unk21, 0x8);
+ SaveIntegerBits(a, &b->unk22, 0x8);
+ SaveIntegerBits(a, &b->unk24, 0x20);
+ SaveIntegerBits(a, &b->unk28, 0x20);
+ SaveIntegerBits(a, &b->unk2C, 0x8);
+
+ if(b->unk2D != 0)
+ puVar2 = &neg1;
+ else
+ puVar2 = &zero;
+ SaveIntegerBits(a, puVar2, 1);
+}
+
+void sub_80958E4(u32 *a, u32 b)
+{
+ *a = b;
+}
diff --git a/src/code_80972F4.c b/src/code_80972F4.c
new file mode 100644
index 0000000..1c7e125
--- /dev/null
+++ b/src/code_80972F4.c
@@ -0,0 +1,200 @@
+#include "global.h"
+#include "pokemon.h"
+#include "wonder_mail.h"
+
+extern void SaveDungeonLocation(struct unkStruct_8094924*, struct DungeonLocation*);
+extern void RestoreDungeonLocation(struct unkStruct_8094924*, struct DungeonLocation*);
+extern void sub_80015C0(u32, u32);
+
+struct unkStruct_8097270
+{
+ u8 unk0;
+ u8 unk1;
+ u8 unk2;
+ struct DungeonLocation unk4;
+ u32 unk8;
+ u16 unkC;
+ u16 unkE;
+ u8 unk10;
+ u8 unk11;
+ u8 unk12;
+ u8 unk13;
+};
+
+struct subStruct_203B490
+{
+ // size: 0xC
+ struct DungeonLocation unk0;
+ u32 unk4;
+ u32 unk8;
+};
+
+
+struct unkStruct_203B490
+{
+ // size: 0x330?
+
+ struct unkStruct_8097270 unk0[4];
+ struct unkStruct_8097270 unk50[8];
+ struct unkStruct_8097270 unkF0[8];
+ u8 unk190[0x28];
+ u8 unk1B8[0x78];
+ struct subStruct_203B490 unk230[16];
+ u8 unk2F0[0x38];
+ u8 unk328;
+};
+extern struct unkStruct_203B490 *gUnknown_203B490;
+
+void sub_8097270(struct unkStruct_8094924 *a, struct unkStruct_8097270 *b);
+void sub_80971EC(struct unkStruct_8094924 *a, struct unkStruct_8097270 *b);
+extern s32 sub_8096EB0(void);
+
+bool8 sub_8096F50(struct WonderMail *r0)
+{
+ s32 index;
+ s32 temp2;
+ struct subStruct_203B490 *temp;
+
+ temp2 = sub_8096EB0();
+
+
+ for(index = 0; index < 0x10; index++)
+ {
+ temp = &gUnknown_203B490->unk230[index];
+ if(temp->unk0.dungeonIndex == r0->dungeon)
+ if(temp->unk0.dungeonFloor == r0->floor)
+ if(temp->unk4 == r0->unk8)
+ if(temp->unk8 == temp2)
+ return TRUE;
+ }
+ return FALSE;
+}
+
+u32 sub_8096FA0(u8 *r0, u32 size)
+{
+ s32 index;
+ struct unkStruct_8094924 backup;
+ u32 temp;
+
+ xxx_init_struct_8094924_restore_809485C(&backup, r0, size);
+ for(index = 0; index < 4; index++)
+ {
+ sub_80971EC(&backup, &gUnknown_203B490->unk0[index]);
+ }
+ for(index = 0; index < 8; index++)
+ {
+ sub_80971EC(&backup, &gUnknown_203B490->unk50[index]);
+ }
+ for(index = 0; index < 8; index++)
+ {
+ sub_80971EC(&backup, &gUnknown_203B490->unkF0[index]);
+ }
+ for(index = 0; index < 0x38; index++)
+ {
+ RestoreIntegerBits(&backup, &temp, 1);
+ if(temp & 1)
+ gUnknown_203B490->unk2F0[index] = 1;
+ else
+ gUnknown_203B490->unk2F0[index] = 0;
+ }
+ RestoreIntegerBits(&backup, &temp, 1);
+ if(temp & 1)
+ gUnknown_203B490->unk328 = 1;
+ else
+ gUnknown_203B490->unk328 = 0;
+
+ RestoreIntegerBits(&backup, gUnknown_203B490->unk190, 0x140);
+ RestoreIntegerBits(&backup, gUnknown_203B490->unk1B8, 0x3C0);
+ for(index = 0; index < 0x10; index++)
+ {
+ RestoreIntegerBits(&backup, &gUnknown_203B490->unk230[index].unk8, 0x20);
+ RestoreIntegerBits(&backup, &gUnknown_203B490->unk230[index].unk4, 0x18);
+ RestoreDungeonLocation(&backup, &gUnknown_203B490->unk230[index].unk0);
+ }
+ nullsub_102(&backup);
+ return backup.unk8;
+}
+
+u32 sub_80970D8(u8 *r0, u32 size)
+{
+ s32 index;
+ struct unkStruct_8094924 backup;
+ u32 temp;
+
+ xxx_init_struct_8094924_save_809486C(&backup, r0, size);
+ for(index = 0; index < 4; index++)
+ {
+ sub_8097270(&backup, &gUnknown_203B490->unk0[index]);
+ }
+ for(index = 0; index < 8; index++)
+ {
+ sub_8097270(&backup, &gUnknown_203B490->unk50[index]);
+ }
+ for(index = 0; index < 8; index++)
+ {
+ sub_8097270(&backup, &gUnknown_203B490->unkF0[index]);
+ }
+ for(index = 0; index < 0x38; index++)
+ {
+ if(gUnknown_203B490->unk2F0[index] != 0)
+ temp = -1;
+ else
+ temp = 0;
+ SaveIntegerBits(&backup, &temp, 1);
+ }
+ if(gUnknown_203B490->unk328 != 0)
+ temp = -1;
+ else
+ temp = 0;
+ SaveIntegerBits(&backup, &temp, 1);
+ SaveIntegerBits(&backup, gUnknown_203B490->unk190, 0x140);
+ SaveIntegerBits(&backup, gUnknown_203B490->unk1B8, 0x3C0);
+ for(index = 0; index < 0x10; index++)
+ {
+ SaveIntegerBits(&backup, &gUnknown_203B490->unk230[index].unk8, 0x20);
+ SaveIntegerBits(&backup, &gUnknown_203B490->unk230[index].unk4, 0x18);
+ SaveDungeonLocation(&backup, &gUnknown_203B490->unk230[index].unk0);
+ }
+ nullsub_102(&backup);
+ return backup.unk8;
+}
+
+void sub_80971EC(struct unkStruct_8094924 *a, struct unkStruct_8097270 *b)
+{
+ RestoreIntegerBits(a, &b->unk0, 4);
+ RestoreIntegerBits(a, &b->unk1, 3);
+ RestoreIntegerBits(a, &b->unk2, 4);
+ RestoreIntegerBits(a, &b->unkC, 9);
+ RestoreIntegerBits(a, &b->unkE, 9);
+ RestoreIntegerBits(a, &b->unk10, 8);
+ RestoreIntegerBits(a, &b->unk11, 4);
+ RestoreIntegerBits(a, &b->unk12, 8);
+ RestoreIntegerBits(a, &b->unk13, 6);
+ RestoreIntegerBits(a, &b->unk8, 0x18);
+ RestoreDungeonLocation(a, &b->unk4);
+}
+
+void sub_8097270(struct unkStruct_8094924 *a, struct unkStruct_8097270 *b)
+{
+ SaveIntegerBits(a, &b->unk0, 4);
+ SaveIntegerBits(a, &b->unk1, 3);
+ SaveIntegerBits(a, &b->unk2, 4);
+ SaveIntegerBits(a, &b->unkC, 9);
+ SaveIntegerBits(a, &b->unkE, 9);
+ SaveIntegerBits(a, &b->unk10, 8);
+ SaveIntegerBits(a, &b->unk11, 4);
+ SaveIntegerBits(a, &b->unk12, 8);
+ SaveIntegerBits(a, &b->unk13, 6);
+ SaveIntegerBits(a, &b->unk8, 0x18);
+ SaveDungeonLocation(a, &b->unk4);
+}
+
+void sub_80972F4(void)
+{
+ sub_80015C0(0, 0x2B);
+ sub_80015C0(0, 0x2C);
+ sub_80015C0(0, 0x2D);
+}
+
+void nullsub_128(void)
+{}
diff --git a/src/code_8097670.c b/src/code_8097670.c
index 75a788a..e2b3723 100644
--- a/src/code_8097670.c
+++ b/src/code_8097670.c
@@ -1,10 +1,5 @@
#include "global.h"
-
-struct unkDungeonStruct
-{
- u8 index;
- u8 floor;
-};
+#include "pokemon.h"
struct unkStruct_203B494
{
@@ -13,12 +8,12 @@ struct unkStruct_203B494
s32 numAdventures;
s32 unk8;
s32 unkC;
- struct unkDungeonStruct dungeonLocation;
+ struct DungeonLocation dungeonLocation;
s16 unk14;
s16 unk16;
s16 unk18;
u32 unk1C[0xE];
- u8 fill54[0x8C - 0x54];
+ u32 unk54[0xE];
u32 unk8C[0xD];
s32 unkC0;
};
@@ -26,6 +21,7 @@ struct unkStruct_203B494
extern struct unkStruct_203B494 *gUnknown_203B494;
extern struct unkStruct_203B494 gUnknown_2039778;
extern const u8 *gAdventureLogText[];
+s16 GetBaseSpeciesNoUnown(s16 index);
void sub_8097670(void)
{
@@ -37,13 +33,13 @@ struct unkStruct_203B494 *sub_8097680(void)
return &gUnknown_2039778;
}
-void SetDungeonLocationInfo(struct unkDungeonStruct *r0)
+void SetDungeonLocationInfo(struct DungeonLocation *r0)
{
- gUnknown_203B494->dungeonLocation.index = r0->index;
- gUnknown_203B494->dungeonLocation.floor = r0->floor;
+ gUnknown_203B494->dungeonLocation.dungeonIndex = r0->dungeonIndex;
+ gUnknown_203B494->dungeonLocation.dungeonFloor = r0->dungeonFloor;
}
-struct unkDungeonStruct *GetDungeonLocationInfo(void)
+struct DungeonLocation *GetDungeonLocationInfo(void)
{
return &gUnknown_203B494->dungeonLocation;
}
@@ -76,12 +72,12 @@ void sub_80976F8(u8 r0)
gUnknown_203B494->unk0 |= (1 << r0);
}
-u8 sub_8097710(u8 r0)
+bool8 sub_8097710(u8 r0)
{
if(gUnknown_203B494->unk0 & (1 << r0))
- return 1;
+ return TRUE;
else
- return 0;
+ return FALSE;
}
const u8 *GetAdventureLogLine(u8 index)
@@ -187,3 +183,36 @@ s16 sub_80978B8(void)
{
return gUnknown_203B494->unkC0;
}
+
+void sub_80978C8(s16 pokeIndex)
+{
+ s32 iVar2;
+ struct unkStruct_203B494 *preload;
+ s32 baseSpecies;
+
+ baseSpecies = GetBaseSpeciesNoUnown(pokeIndex);
+ preload = gUnknown_203B494;
+ iVar2 = baseSpecies;
+ if (baseSpecies < 0) {
+ iVar2 = baseSpecies + 0x1f;
+ }
+ preload->unk54[iVar2 >> 5] |= 1 << (baseSpecies + (iVar2 >> 5) * -0x20);
+}
+
+bool8 sub_8097900(s16 pokeIndex)
+{
+ s32 iVar2;
+ struct unkStruct_203B494 *preload;
+ s32 baseSpecies;
+
+ baseSpecies = GetBaseSpeciesNoUnown(pokeIndex);
+ preload = gUnknown_203B494;
+ iVar2 = baseSpecies;
+ if (baseSpecies < 0) {
+ iVar2 = baseSpecies + 0x1f;
+ }
+ if(preload->unk1C[iVar2 >> 5] & (1 << (baseSpecies + (iVar2 >> 5) * -0x20)))
+ return TRUE;
+ else
+ return FALSE;
+}
diff --git a/src/code_8097DD0.c b/src/code_8097DD0.c
new file mode 100644
index 0000000..abbb02e
--- /dev/null
+++ b/src/code_8097DD0.c
@@ -0,0 +1,90 @@
+#include "global.h"
+#include "code_8092334.h"
+#include "pokemon.h"
+
+struct unkStruct_203B494
+{
+ // size: 0xC8?
+ u32 unk0; // 32 bit bitfield, I think
+ s32 numAdventures;
+ s32 unk8;
+ s32 unkC;
+ struct DungeonLocation dungeonLocation;
+ s16 unk14;
+ s16 unk16;
+ s16 unk18;
+ u32 unk1C[0xE];
+ u32 unk54[0xE];
+ u32 unk8C[0xD];
+ s32 unkC0;
+};
+
+extern struct unkStruct_203B494 *gUnknown_203B494;
+
+extern void SaveDungeonLocation(struct unkStruct_8094924*, struct DungeonLocation*);
+extern void RestoreDungeonLocation(struct unkStruct_8094924*, struct DungeonLocation*);
+void ReadExclusivePokemon(struct unkStruct_8094924 *r0);
+void ReadGameOptions(struct unkStruct_8094924 *param_1);
+void ReadPlayTime(struct unkStruct_8094924 *r0);
+void WriteExclusivePokemon(struct unkStruct_8094924 *r0);
+void WriteGameOptions(struct unkStruct_8094924 *param_1);
+void WritePlayTime(struct unkStruct_8094924 *r0);
+
+extern void sub_8097944(void);
+
+void sub_8097C18(struct unkStruct_8094924 *r0)
+{
+ sub_8097944();
+ SaveIntegerBits(r0, &gUnknown_203B494->numAdventures, 0x11);
+ SaveIntegerBits(r0, &gUnknown_203B494->unk8, 0x11);
+ SaveIntegerBits(r0, &gUnknown_203B494->unkC, 0x11);
+ SaveIntegerBits(r0, &gUnknown_203B494->unk0, 0x20);
+ SaveIntegerBits(r0, &gUnknown_203B494->unk14, 0xE);
+ SaveIntegerBits(r0, &gUnknown_203B494->unk16, 0xE);
+ SaveIntegerBits(r0, &gUnknown_203B494->unk18, 0x9);
+ SaveIntegerBits(r0, &gUnknown_203B494->unkC0, 0x11);
+ SaveIntegerBits(r0, gUnknown_203B494->unk1C, 0xE0 << 1);
+ SaveIntegerBits(r0, gUnknown_203B494->unk54, 0xE0 << 1);
+ SaveIntegerBits(r0, gUnknown_203B494->unk8C, 0xD0 << 1);
+ SaveDungeonLocation(r0, &gUnknown_203B494->dungeonLocation);
+}
+
+void sub_8097CC0(struct unkStruct_8094924 *r0)
+{
+ RestoreIntegerBits(r0, &gUnknown_203B494->numAdventures, 0x11);
+ RestoreIntegerBits(r0, &gUnknown_203B494->unk8, 0x11);
+ RestoreIntegerBits(r0, &gUnknown_203B494->unkC, 0x11);
+ RestoreIntegerBits(r0, &gUnknown_203B494->unk0, 0x20);
+ RestoreIntegerBits(r0, &gUnknown_203B494->unk14, 0xE);
+ RestoreIntegerBits(r0, &gUnknown_203B494->unk16, 0xE);
+ RestoreIntegerBits(r0, &gUnknown_203B494->unk18, 0x9);
+ RestoreIntegerBits(r0, &gUnknown_203B494->unkC0, 0x11);
+ RestoreIntegerBits(r0, gUnknown_203B494->unk1C, 0xE0 << 1);
+ RestoreIntegerBits(r0, gUnknown_203B494->unk54, 0xE0 << 1);
+ RestoreIntegerBits(r0, gUnknown_203B494->unk8C, 0xD0 << 1);
+ RestoreDungeonLocation(r0, &gUnknown_203B494->dungeonLocation);
+}
+
+u32 sub_8097D60(u8 *r0, u32 size)
+{
+ struct unkStruct_8094924 backup;
+ xxx_init_struct_8094924_save_809486C(&backup, r0, size);
+ WriteGameOptions(&backup);
+ WritePlayTime(&backup);
+ sub_8097C18(&backup);
+ WriteExclusivePokemon(&backup);
+ nullsub_102(&backup);
+ return backup.unk8;
+}
+
+u32 sub_8097D98(u8 *r0, u32 size)
+{
+ struct unkStruct_8094924 backup;
+ xxx_init_struct_8094924_restore_809485C(&backup, r0, size);
+ ReadGameOptions(&backup);
+ ReadPlayTime(&backup);
+ sub_8097CC0(&backup);
+ ReadExclusivePokemon(&backup);
+ nullsub_102(&backup);
+ return backup.unk8;
+}
diff --git a/src/code_80A26CC.c b/src/code_80A26CC.c
index bc5f60e..b18cf5f 100644
--- a/src/code_80A26CC.c
+++ b/src/code_80A26CC.c
@@ -61,7 +61,7 @@ s32 sub_80A2668(u32 r0)
}
}
-u32 sub_80A2688(u8 r0, u32 r1)
+u32 sub_80A2688(u8 r0)
{
u32 uVar1;
diff --git a/src/dungeon_2.c b/src/dungeon_2.c
new file mode 100644
index 0000000..282ac99
--- /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 DungeonLocation *param_1,struct DungeonLocation *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 DungeonLocation *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 DungeonLocation *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 DungeonLocation *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 SaveDungeonLocation(struct unkStruct_8094924* r0, struct DungeonLocation* r1)
+{
+ SaveIntegerBits(r0, &r1->dungeonIndex, 0x7);
+ SaveIntegerBits(r0, &r1->dungeonFloor, 0x7);
+}
+
+void RestoreDungeonLocation(struct unkStruct_8094924* r0, struct DungeonLocation* 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 1abd973..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())
@@ -79,7 +197,7 @@ void sub_8027A5C(void)
}
static inline bool8 sub_8027A78_sub(void) {
- if (gUnknown_203B2BC->unk18->unk4.unk4 == 0x44 || gUnknown_203B2BC->unk18->unk4.unk4 == 0x45)
+ if (gUnknown_203B2BC->unk18->unk4.dungeonIndex == 0x44 || gUnknown_203B2BC->unk18->unk4.dungeonIndex == 0x45)
return TRUE;
else
return FALSE;
@@ -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,10 +385,10 @@ 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.unk4 == 0x41)
+ if(r0->unk4.dungeonIndex == 0x41)
var1 = 1;
if(var1 != 0)
{
@@ -288,10 +406,10 @@ 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.unk4 == 0x41)
+ if(r0->unk4.dungeonIndex == 0x41)
var1 = 1;
if(var1 != 0)
{
@@ -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 9310665..fe9de8c 100644
--- a/src/friend_list_menu.c
+++ b/src/friend_list_menu.c
@@ -113,7 +113,7 @@ void sub_8026A94(void)
static inline bool8 sub_8026AB0_sub(void) {
- if (gUnknown_203B2B8->unk18->unk4.unk4 == 0x44 || gUnknown_203B2B8->unk18->unk4.unk4 == 0x45)
+ if (gUnknown_203B2B8->unk18->unk4.dungeonIndex == 0x44 || gUnknown_203B2B8->unk18->unk4.dungeonIndex == 0x45)
return TRUE;
else
return FALSE;
@@ -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,9 +342,9 @@ void sub_8026E08(u32 r0)
u32 sub_8026E88(struct PokemonStruct *r0)
{
u8 iVar3;
- if(r0->unk2 == 0)
+ if(r0->isLeader == 0)
{
- iVar3 = (r0->unk4.unk4 == 0x41);
+ iVar3 = (r0->unk4.dungeonIndex == 0x41);
if(iVar3 != 0)
if(sub_80023E4(0x8) == 0)
return 0;
@@ -359,9 +359,9 @@ 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.unk4 == 0x41);
+ iVar3 = (r0->unk4.dungeonIndex == 0x41);
if(iVar3 != 0)
{
if(sub_80023E4(0x8) != 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/friend_rescue_1.c b/src/friend_rescue_1.c
index 325cf4e..c3571c0 100644
--- a/src/friend_rescue_1.c
+++ b/src/friend_rescue_1.c
@@ -8,6 +8,7 @@
#include "friend_rescue.h"
#include "sub_8095228.h"
#include "item.h"
+#include "code_8094F88.h"
extern struct TeamInventory *gTeamInventory_203B460;
extern u8 *gUnknown_203B484;
@@ -81,10 +82,10 @@ extern void sub_8023DA4(void);
extern void sub_8035D1C(void);
extern u16 sub_8023B44(void);
-extern u32 sub_8039068(u32, u8 *r1, u8 *r0);
+extern u32 sub_8039068(u32, u8 *r1, struct unkStruct_8095228 *r0);
extern void sub_8095274(u32);
-extern void sub_80951BC(u8 *r0);
-extern void sub_80951FC(u8 *r0);
+extern void sub_80951BC(struct unkStruct_8095228 *r0);
+extern void sub_80951FC(struct unkStruct_8095228 *r0);
extern u8 sub_809539C(u32, u32);
extern u8 sub_800D588(void);
extern u32 sub_8095324(u32);
@@ -454,7 +455,7 @@ void sub_8033DBC(void)
default:
break;
}
- switch(sub_8039068(input_var, gUnknown_203B33C->passwordBuffer, &temp.unk0))
+ switch(sub_8039068(input_var, gUnknown_203B33C->passwordBuffer, &temp))
{
case 17:
sub_8014248(gUnknown_80E48A8, 0, 6, gUnknown_80E2290, 0, 4, 0, 0, 0x101);
@@ -470,8 +471,8 @@ void sub_8033DBC(void)
break;
case 22:
sub_8095274(temp.unk10);
- temp.unk0 = 2; // Some sort of Ack?
- sub_80951BC(&temp.unk0);
+ temp.mailType = 2;
+ sub_80951BC(&temp);
sub_80141B4(gUnknown_80E4928, 0, 0, 0x101);
SetFriendRescueMenuState(0x16);
break;
@@ -484,11 +485,11 @@ void sub_8033DBC(void)
SetFriendRescueMenuState(8);
break;
case 23:
- temp.unk0 = 5; // Some sort of Ack?
- sub_80951FC(&temp.unk0);
+ temp.mailType = 5;
+ sub_80951FC(&temp);
temp2 = sub_8095228(sub_809539C(1, temp.unk10));
- temp2->unk0 = 7;
- MemoryFill8((u8 *)gUnknown_203B484, 0, 0x5C);
+ temp2->mailType = 7;
+ MemoryFill8((u8 *)gUnknown_203B484, 0, sizeof(struct unkStruct_203B484));
SetFriendRescueMenuState(0x40);
break;
case 24:
@@ -1339,7 +1340,7 @@ void sub_8034D74(void)
switch(return_var)
{
case 3:
- switch(sub_8039068(0x20, gUnknown_203B33C->passwordBuffer, &temp.unk0))
+ switch(sub_8039068(0x20, gUnknown_203B33C->passwordBuffer, &temp))
{
case 17:
sub_8014248(gUnknown_80E48A8, 0, 6, gUnknown_80E2440, 0, 4, 0, 0, 0x101);
@@ -1356,7 +1357,7 @@ void sub_8034D74(void)
case 24:
temp2 = sub_8095228(sub_809539C(4, temp.unk10));
*temp2 = temp;
- temp2->unk0 = 6; // Some sort of Ack?
+ temp2->mailType = 6;
gUnknown_203B33C->unk420 = temp.unk10;
SetFriendRescueMenuState(0x6D);
break;
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..c3e90b6 100644
--- a/src/kecleon_items_1.c
+++ b/src/kecleon_items_1.c
@@ -99,12 +99,204 @@ 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))
@@ -151,15 +343,12 @@ void sub_8019BBC(void)
}
switch(menuAction){
case 2:
- if (gTeamInventory_203B460->teamMoney == 0) {
+ if (gTeamInventory_203B460->teamMoney == 0)
UpdateKecleonStoreState(0x6);
- }
- else if (gUnknown_203B210->itemSellPrice > gTeamInventory_203B460->teamMoney) {
+ else if (gUnknown_203B210->itemSellPrice > gTeamInventory_203B460->teamMoney)
UpdateKecleonStoreState(0xC);
- }
- else {
+ else
UpdateKecleonStoreState(0x16);
- }
break;
case 7:
UpdateKecleonStoreState(0x15);
@@ -182,15 +371,12 @@ void sub_8019C78(void)
switch(menuAction){
case 3:
sub_8099690(0);
- if (!CanSellItem(gUnknown_203B210->unk1C.itemIndex)) {
+ if (!CanSellItem(gUnknown_203B210->unk1C.itemIndex))
UpdateKecleonStoreState(0xd);
- }
- else if (gUnknown_203B210->itemSellPrice + gTeamInventory_203B460->teamMoney > 99999) {
+ else if (gUnknown_203B210->itemSellPrice + gTeamInventory_203B460->teamMoney > 99999)
UpdateKecleonStoreState(0xe);
- }
- else {
+ else
UpdateKecleonStoreState(0x1e);
- }
break;
case 7:
sub_8099690(0);
@@ -253,15 +439,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/load_screen.c b/src/load_screen.c
index 1c224f5..775e974 100644
--- a/src/load_screen.c
+++ b/src/load_screen.c
@@ -9,17 +9,10 @@
#include "pokemon.h"
#include "save.h"
#include "code_800D090.h"
+#include "code_8094F88.h"
extern const struct FileArchive gTitleMenuFileArchive;
-struct unkStruct_203B484
-{
- u8 fill0[0xC];
- /* 0xC */ s16 speciesIndex;
- u8 fillE[0x50 - 0xE];
- /* 0x50 */ u8 helperName[10];
-};
-
struct LoadScreen
{
// size: 0x27c
@@ -373,9 +366,9 @@ void DrawLoadScreenText(void)
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);
+ if(temp2->unk4.speciesNum != SPECIES_NONE) {
+ sub_808D930(speciesHelper,temp2->unk4.speciesNum);
+ sub_80922B4(nameHelper,temp2->unk4.name,POKEMON_NAME_LENGTH);
sprintf_2(gLoadScreen->formattedHelperInfo,gHelperInfoPlaceholder,nameHelper,speciesHelper); // %s (%s)
}
else
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/music_pre.c b/src/music_pre.c
index 95940aa..3bac474 100644
--- a/src/music_pre.c
+++ b/src/music_pre.c
@@ -407,7 +407,7 @@ void InitMusic(void)
gBGMusicPlayerState = 0;
gCurrentBGSong = 999;
gUnknown_202D68C = 999;
- gUnknown_202D68E = 0x3e5;
+ gUnknown_202D68E = 997;
gUnknown_202D690 = 0;
gUnknown_202D692 = 0;
gUnknown_202D694 = 0;
@@ -415,7 +415,7 @@ void InitMusic(void)
for(counter = 0, preload = &gUnknown_3000FD8[0]; counter < 8; counter++, preload++)
{
preload->unk0 = 0;
- preload->songIndex = 0x3e5;
+ preload->songIndex = 997;
preload->unk4 = 0;
preload->unk6 = 0;
}
@@ -425,8 +425,8 @@ void InitMusic(void)
void sub_800BDDC(void)
{
sub_800BF80();
- sub_800C298(0x3e6);
- sub_800C298(0x3e5);
+ sub_800C298(998);
+ sub_800C298(997);
}
@@ -583,52 +583,53 @@ u16 GetCurrentBGSong(void)
return gCurrentBGSong;
}
-#ifdef NONMATCHING
-// TODO fix reg allocation.. using one too many regs
void sub_800C074(u16 SongIndex, u16 param_2)
{
bool8 interrupt_flag;
+ bool8 interrupt_flag2;
u16 msVar;
struct unkStruct_3000FD8 *preload;
- if (SongIndex == 0x3e5)
+ if (SongIndex == 997)
return;
- if (256 < param_2)
+ if (param_2 > 256)
param_2 = 256;
if (sub_800CACC(SongIndex))
{
- msVar = GetMusicPlayerIndex(SongIndex);
- if (msVar == 1) {
+ if (GetMusicPlayerIndex(SongIndex) == 1) {
interrupt_flag = DisableInterrupts();
gUnknown_202D68E = SongIndex;
if(gUnknown_202D690 == 0)
{
if (gCurrentBGSong != 999)
{
- if ((u16)(gBGMusicPlayerState - 1U) < 2)
+ if ((u16)(gBGMusicPlayerState - 1) < 2)
{
- gUnknown_202D690 = msVar;
+ gUnknown_202D690 = 1;
gUnknown_202D692 = 16;
gUnknown_202D694 = 0;
- m4aMPlayFadeOutTemporarily(&gMPlayInfo_BGM,1);
+ m4aMPlayFadeOutTemporarily(&gMPlayInfo_BGM, 1);
}
- else
+ else if (gBGMusicPlayerState == 3)
+ gUnknown_202D690 = 2;
+ else
{
- if (gBGMusicPlayerState == 3)
- gUnknown_202D690 = 2;
- else
- {
- gUnknown_202D690 = 3;
- m4aMPlayStop(&gMPlayInfo_BGM);
- m4aSongNumStart(gUnknown_202D68E);
- }
+ gUnknown_202D690 = 3;
+ m4aMPlayStop(&gMPlayInfo_BGM);
+ m4aSongNumStart(gUnknown_202D68E);
}
}
+ else
+ {
+ gUnknown_202D690 = 3;
+ m4aMPlayStop(&gMPlayInfo_BGM);
+ m4aSongNumStart(gUnknown_202D68E);
+ }
}
else
{
- if (1 < (u16)(gUnknown_202D690 - 1U))
+ if (1 < (u16)(gUnknown_202D690 - 1))
{
m4aMPlayStop(&gMPlayInfo_BGM);
m4aSongNumStart(gUnknown_202D68E);
@@ -675,230 +676,24 @@ void sub_800C074(u16 SongIndex, u16 param_2)
nullsub_20(SongIndex);
else
{
- interrupt_flag = DisableInterrupts();
+ interrupt_flag2 = DisableInterrupts();
m4aSongNumStart(SongIndex);
preload->unk0 = 1;
preload->songIndex = SongIndex;
- if(msVar == param_2)
+ if(param_2 == 256)
{
- preload->unk6 = 1;
+ preload->unk6 = 0;
}
else
{
- preload->unk6 = 0;
+ preload->unk6 = 1;
}
- preload->unk4 = msVar;
- if (interrupt_flag)
+ preload->unk4 = param_2;
+ if (interrupt_flag2)
EnableInterrupts();
}
}
}
-#else
-NAKED
-void sub_800C074(u16 SongIndex, u16 param_2)
-{
- asm_unified("\tpush {r4-r7,lr}\n"
- "\tmov r7, r8\n"
- "\tpush {r7}\n"
- "\tlsls r0, 16\n"
- "\tlsrs r5, r0, 16\n"
- "\tmov r8, r5\n"
- "\tlsls r1, 16\n"
- "\tlsrs r6, r1, 16\n"
- "\tldr r0, _0800C0FC\n"
- "\tcmp r5, r0\n"
- "\tbne _0800C08C\n"
- "\tb _0800C208\n"
-"_0800C08C:\n"
- "\tmovs r7, 0x80\n"
- "\tlsls r7, 1\n"
- "\tcmp r6, r7\n"
- "\tbls _0800C096\n"
- "\tadds r6, r7, 0\n"
-"_0800C096:\n"
- "\tadds r0, r5, 0\n"
- "\tbl sub_800CACC\n"
- "\tlsls r0, 24\n"
- "\tcmp r0, 0\n"
- "\tbne _0800C0A4\n"
- "\tb _0800C1B0\n"
-"_0800C0A4:\n"
- "\tadds r0, r5, 0\n"
- "\tbl GetMusicPlayerIndex\n"
- "\tlsls r0, 16\n"
- "\tlsrs r7, r0, 16\n"
- "\tcmp r7, 0x1\n"
- "\tbeq _0800C0B4\n"
- "\tb _0800C1D0\n"
-"_0800C0B4:\n"
- "\tbl DisableInterrupts\n"
- "\tlsls r0, 24\n"
- "\tlsrs r0, 24\n"
- "\tmov r8, r0\n"
- "\tldr r6, _0800C100\n"
- "\tstrh r5, [r6]\n"
- "\tldr r4, _0800C104\n"
- "\tldrh r0, [r4]\n"
- "\tadds r2, r0, 0\n"
- "\tcmp r2, 0\n"
- "\tbne _0800C144\n"
- "\tldr r0, _0800C108\n"
- "\tldrh r1, [r0]\n"
- "\tldr r0, _0800C10C\n"
- "\tcmp r1, r0\n"
- "\tbeq _0800C12C\n"
- "\tldr r0, _0800C110\n"
- "\tldrh r1, [r0]\n"
- "\tsubs r0, r1, 0x1\n"
- "\tlsls r0, 16\n"
- "\tlsrs r0, 16\n"
- "\tcmp r0, 0x1\n"
- "\tbhi _0800C120\n"
- "\tstrh r7, [r4]\n"
- "\tldr r1, _0800C114\n"
- "\tmovs r0, 0x10\n"
- "\tstrh r0, [r1]\n"
- "\tldr r0, _0800C118\n"
- "\tstrb r2, [r0]\n"
- "\tldr r0, _0800C11C\n"
- "\tmovs r1, 0x1\n"
- "\tbl m4aMPlayFadeOutTemporarily\n"
- "\tb _0800C15E\n"
- "\t.align 2, 0\n"
-"_0800C0FC: .4byte 0x000003e5\n"
-"_0800C100: .4byte gUnknown_202D68E\n"
-"_0800C104: .4byte gUnknown_202D690\n"
-"_0800C108: .4byte gCurrentBGSong\n"
-"_0800C10C: .4byte 0x000003e7\n"
-"_0800C110: .4byte gBGMusicPlayerState\n"
-"_0800C114: .4byte gUnknown_202D692\n"
-"_0800C118: .4byte gUnknown_202D694\n"
-"_0800C11C: .4byte gMPlayInfo_BGM\n"
-"_0800C120:\n"
- "\tlsls r0, r1, 16\n"
- "\tlsrs r0, 16\n"
- "\tcmp r0, 0x3\n"
- "\tbne _0800C12C\n"
- "\tmovs r0, 0x2\n"
- "\tb _0800C15C\n"
-"_0800C12C:\n"
- "\tmovs r0, 0x3\n"
- "\tstrh r0, [r4]\n"
- "\tldr r0, _0800C140\n"
- "\tbl m4aMPlayStop\n"
- "\tldrh r0, [r6]\n"
- "\tbl m4aSongNumStart\n"
- "\tb _0800C15E\n"
- "\t.align 2, 0\n"
-"_0800C140: .4byte gMPlayInfo_BGM\n"
-"_0800C144:\n"
- "\tsubs r0, 0x1\n"
- "\tlsls r0, 16\n"
- "\tlsrs r0, 16\n"
- "\tcmp r0, 0x1\n"
- "\tbls _0800C15E\n"
- "\tldr r0, _0800C17C\n"
- "\tbl m4aMPlayStop\n"
- "\tldrh r0, [r6]\n"
- "\tbl m4aSongNumStart\n"
- "\tmovs r0, 0x3\n"
-"_0800C15C:\n"
- "\tstrh r0, [r4]\n"
-"_0800C15E:\n"
- "\tldr r0, _0800C180\n"
- "\tldrh r0, [r0]\n"
- "\tcmp r0, 0x26\n"
- "\tbgt _0800C184\n"
- "\tcmp r0, 0x25\n"
- "\tbge _0800C19A\n"
- "\tcmp r0, 0x1A\n"
- "\tblt _0800C1A0\n"
- "\tcmp r0, 0x1F\n"
- "\tble _0800C19A\n"
- "\tcmp r0, 0x23\n"
- "\tbgt _0800C1A0\n"
- "\tcmp r0, 0x22\n"
- "\tblt _0800C1A0\n"
- "\tb _0800C19A\n"
- "\t.align 2, 0\n"
-"_0800C17C: .4byte gMPlayInfo_BGM\n"
-"_0800C180: .4byte gCurrentBGSong\n"
-"_0800C184:\n"
- "\tcmp r0, 0x7A\n"
- "\tbeq _0800C19A\n"
- "\tcmp r0, 0x7A\n"
- "\tbgt _0800C196\n"
- "\tcmp r0, 0x77\n"
- "\tbgt _0800C1A0\n"
- "\tcmp r0, 0x75\n"
- "\tblt _0800C1A0\n"
- "\tb _0800C19A\n"
-"_0800C196:\n"
- "\tcmp r0, 0x7F\n"
- "\tbne _0800C1A0\n"
-"_0800C19A:\n"
- "\tldr r1, _0800C1AC\n"
- "\tmovs r0, 0x1\n"
- "\tstrb r0, [r1]\n"
-"_0800C1A0:\n"
- "\tmov r0, r8\n"
- "\tcmp r0, 0\n"
- "\tbeq _0800C208\n"
- "\tbl EnableInterrupts\n"
- "\tb _0800C208\n"
- "\t.align 2, 0\n"
-"_0800C1AC: .4byte gUnknown_202D694\n"
-"_0800C1B0:\n"
- "\tadds r0, r5, 0\n"
- "\tbl sub_800CAAC\n"
- "\tlsls r0, 24\n"
- "\tcmp r0, 0\n"
- "\tbeq _0800C208\n"
- "\tadds r0, r5, 0\n"
- "\tbl GetMusicPlayerIndex\n"
- "\tlsls r0, 16\n"
- "\tlsrs r0, 16\n"
- "\tlsls r2, r0, 3\n"
- "\tldr r1, _0800C1D8\n"
- "\tadds r4, r2, r1\n"
- "\tcmp r0, 0x1\n"
- "\tbhi _0800C1DC\n"
-"_0800C1D0:\n"
- "\tadds r0, r5, 0\n"
- "\tbl nullsub_20\n"
- "\tb _0800C208\n"
- "\t.align 2, 0\n"
-"_0800C1D8: .4byte gUnknown_3000FD8\n"
-"_0800C1DC:\n"
- "\tbl DisableInterrupts\n"
- "\tlsls r0, 24\n"
- "\tlsrs r5, r0, 24\n"
- "\tmov r0, r8\n"
- "\tbl m4aSongNumStart\n"
- "\tmovs r0, 0x1\n"
- "\tstrh r0, [r4]\n"
- "\tmov r0, r8\n"
- "\tstrh r0, [r4, 0x2]\n"
- "\tcmp r6, r7\n"
- "\tbne _0800C1FA\n"
- "\tmovs r0, 0\n"
- "\tb _0800C1FC\n"
-"_0800C1FA:\n"
- "\tmovs r0, 0x1\n"
-"_0800C1FC:\n"
- "\tstrb r0, [r4, 0x6]\n"
- "\tstrh r6, [r4, 0x4]\n"
- "\tcmp r5, 0\n"
- "\tbeq _0800C208\n"
- "\tbl EnableInterrupts\n"
-"_0800C208:\n"
- "\tpop {r3}\n"
- "\tmov r8, r3\n"
- "\tpop {r4-r7}\n"
- "\tpop {r0}\n"
- "\tbx r0");
-}
-#endif
void sub_800C214(u16 songIndex, u16 volume)
{
@@ -940,14 +735,14 @@ void sub_800C298(u16 songIndex)
struct unkStruct_3000FD8 *preload;
struct unkStruct_3000FD8 *puVar3;
- if (songIndex == 0x3e5) {
+ if (songIndex == 997) {
cVar1 = DisableInterrupts();
for(iVar4 = 2, puVar3 = &gUnknown_3000FE8[0]; iVar4 < 7; iVar4++, puVar3++)
{
m4aMPlayStop(gMPlayTable[iVar4].info);
puVar3->unk0 = 0;
- puVar3->songIndex = 0x3e5;
+ puVar3->songIndex = 997;
puVar3->unk4 = 0;
puVar3->unk6 = 0;
}
@@ -955,7 +750,7 @@ void sub_800C298(u16 songIndex)
EnableInterrupts();
}
}
- else if (sub_800CAAC(songIndex) != '\0')
+ else if (sub_800CAAC(songIndex))
{
uVar2 = GetMusicPlayerIndex(songIndex);
puVar6 = gMPlayTable[uVar2].info;
@@ -968,7 +763,7 @@ void sub_800C298(u16 songIndex)
if (preload->songIndex == songIndex) {
m4aMPlayStop(puVar6);
preload->unk0 = 0;
- preload->songIndex = 0x3e5;
+ preload->songIndex = 997;
preload->unk4 = 0;
preload->unk6 = 0;
}
@@ -977,12 +772,12 @@ void sub_800C298(u16 songIndex)
}
}
}
- else if (songIndex == 0x3e6)
+ else if (songIndex == 998)
{
cVar3 = DisableInterrupts();
if (gUnknown_202D690 != 0) {
- if (gUnknown_202D68E != 0x3e5) {
- gUnknown_202D68E = 0x3e5;
+ if (gUnknown_202D68E != 997) {
+ gUnknown_202D68E = 997;
m4aMPlayStop(&gUnknown_2000970);
}
}
@@ -990,12 +785,12 @@ void sub_800C298(u16 songIndex)
EnableInterrupts();
}
}
- else if (sub_800CACC(songIndex) != '\0')
+ else if (sub_800CACC(songIndex))
{
cVar4 = DisableInterrupts();
if (gUnknown_202D690 != 0) {
if (gUnknown_202D68E == songIndex) {
- gUnknown_202D68E = 0x3e5;
+ gUnknown_202D68E = 997;
m4aMPlayStop(&gUnknown_2000970);
}
}
@@ -1031,19 +826,18 @@ void sub_800C3F8(u16 songIndex, u16 speed)
}
}
- if (songIndex == 0x3e5) {
+ if (songIndex == 997) {
cVar1 = DisableInterrupts();
-
for(uVar6 = 2, puVar3 = &gUnknown_3000FE8[0]; uVar6 < 7; uVar6++, puVar3++)
{
- if (puVar3->songIndex != 0x3e5) {
+ if (puVar3->songIndex != 997) {
if (sub_800CAF0(uVar6) != '\0') {
m4aMPlayFadeOut(gMPlayTable[uVar6].info,speed);
}
else {
m4aMPlayStop(gMPlayTable[uVar6].info);
puVar3->unk0 = 0;
- puVar3->songIndex = 0x3e5;
+ puVar3->songIndex = 997;
puVar3->unk4 = 0;
puVar3->unk6 = 0;
}
@@ -1054,19 +848,19 @@ void sub_800C3F8(u16 songIndex, u16 speed)
}
}
else {
- if (sub_800CAAC(songIndex) != '\0') {
+ if (sub_800CAAC(songIndex)) {
uVar8 = GetMusicPlayerIndex(songIndex);
preload = &gUnknown_3000FD8[uVar8];
puVar5 = gMPlayTable[uVar8].info;
cVar2 = DisableInterrupts();
- if (preload->songIndex != 0x3e5) {
+ if (preload->songIndex != 997) {
if (sub_800CAF0(uVar8) != '\0') {
m4aMPlayFadeOut(puVar5,speed);
}
else {
m4aMPlayStop(puVar5);
preload->unk0 = 0;
- preload->songIndex = 0x3e5;
+ preload->songIndex = 997;
preload->unk4 = 0;
preload->unk6 = 0;
}
@@ -1075,40 +869,35 @@ void sub_800C3F8(u16 songIndex, u16 speed)
EnableInterrupts();
}
}
- else
- {
- if (songIndex == 0x3e6) {
- cVar3 = DisableInterrupts();
- if ((gUnknown_202D690 != 0) && (gUnknown_202D68E != 0x3e5)) {
- if (sub_800CAF0(1) != '\0') {
- m4aMPlayFadeOut(&gUnknown_2000970,speed);
- }
- else {
- m4aMPlayStop(&gUnknown_2000970);
- gUnknown_202D68E = 0x3e5;
- }
+ else if (songIndex == 998) {
+ cVar3 = DisableInterrupts();
+ if ((gUnknown_202D690 != 0) && (gUnknown_202D68E != 997)) {
+ if (sub_800CAF0(1) != '\0') {
+ m4aMPlayFadeOut(&gUnknown_2000970,speed);
}
- if (cVar3 != '\0') {
- EnableInterrupts();
+ else {
+ m4aMPlayStop(&gUnknown_2000970);
+ gUnknown_202D68E = 997;
}
}
- else {
- if (sub_800CACC(songIndex) != '\0') {
- cVar4 = DisableInterrupts();
- if ((gUnknown_202D690 != 0) && (gUnknown_202D68E == songIndex)) {
- if (sub_800CAF0(1) != '\0') {
- m4aMPlayFadeOut(&gUnknown_2000970,speed);
- }
- else {
- m4aMPlayStop(&gUnknown_2000970);
- gUnknown_202D68E = 0x3e5;
- }
- }
- if (cVar4 != '\0') {
- EnableInterrupts();
- }
+ if (cVar3 != '\0') {
+ EnableInterrupts();
+ }
+ }
+ else if (sub_800CACC(songIndex)) {
+ cVar4 = DisableInterrupts();
+ if ((gUnknown_202D690 != 0) && (gUnknown_202D68E == songIndex)) {
+ if (sub_800CAF0(1) != '\0') {
+ m4aMPlayFadeOut(&gUnknown_2000970,speed);
+ }
+ else {
+ m4aMPlayStop(&gUnknown_2000970);
+ gUnknown_202D68E = 997;
}
}
+ if (cVar4 != '\0') {
+ EnableInterrupts();
+ }
}
}
}
diff --git a/src/pokemon_3.c b/src/pokemon_3.c
index 68c894b..251a69f 100644
--- a/src/pokemon_3.c
+++ b/src/pokemon_3.c
@@ -49,10 +49,10 @@ extern s32 gUnknown_810AC90[10];
extern void AddSprite(u16 *, u32, u32, u32);
-extern void xxx_save_poke_sub_4_80902F4(struct unkStruct_8094924*, struct unkPokeSubStruct_4*);
+extern void SaveDungeonLocation(struct unkStruct_8094924*, struct DungeonLocation*);
extern void xxx_save_poke_sub_c_808F41C(struct unkStruct_8094924*, struct unkPokeSubStruct_C*);
extern void SavePokemonMoves(struct unkStruct_8094924*, struct PokemonMove*);
-void xxx_restore_poke_sub_4_8090314(struct unkStruct_8094924*, struct unkPokeSubStruct_4*);
+void RestoreDungeonLocation(struct unkStruct_8094924*, struct DungeonLocation*);
void xxx_restore_poke_sub_c_808F410(struct unkStruct_8094924*, struct unkPokeSubStruct_C*);
void RestorePokemonMoves(struct unkStruct_8094924*, struct PokemonMove*);
@@ -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;
@@ -755,7 +755,7 @@ void SavePokemonStruct(struct unkStruct_8094924* a1, struct PokemonStruct* pokem
{
SaveIntegerBits(a1, &pokemon->unkHasNextStage, 7);
SaveIntegerBits(a1, &pokemon->speciesNum, 9);
- xxx_save_poke_sub_4_80902F4(a1, &pokemon->unk4);
+ SaveDungeonLocation(a1, &pokemon->unk4);
xxx_save_poke_sub_c_808F41C(a1, &pokemon->unkC[0]);
xxx_save_poke_sub_c_808F41C(a1, &pokemon->unkC[1]);
SaveIntegerBits(a1, &pokemon->IQ, 10);
@@ -776,13 +776,13 @@ 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;
}
RestoreIntegerBits(a1, &pokemon->speciesNum, 9);
- xxx_restore_poke_sub_4_8090314(a1, &pokemon->unk4);
+ RestoreDungeonLocation(a1, &pokemon->unk4);
xxx_restore_poke_sub_c_808F410(a1, &pokemon->unkC[0]);
xxx_restore_poke_sub_c_808F410(a1, &pokemon->unkC[1]);
RestoreIntegerBits(a1, &pokemon->IQ, 10);
@@ -814,10 +814,10 @@ 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);
+ SaveDungeonLocation(&backup, &pokemon2->unk4);
SaveIntegerBits(&backup, &pokemon2->IQ, 10);
SaveIntegerBits(&backup, &pokemon2->unkA, 16);
SaveIntegerBits(&backup, &pokemon2->unkC, 16);
@@ -858,14 +858,14 @@ 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);
- xxx_restore_poke_sub_4_8090314(&backup, &pokemon2->unk4);
+ RestoreDungeonLocation(&backup, &pokemon2->unk4);
RestoreIntegerBits(&backup, &pokemon2->IQ, 10);
RestoreIntegerBits(&backup, &pokemon2->unkA, 16);
RestoreIntegerBits(&backup, &pokemon2->unkC, 16);
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..2103e5f 100644
--- a/src/post_office_guide.c
+++ b/src/post_office_guide.c
@@ -5,6 +5,8 @@
#include "menu.h"
#include "memory.h"
#include "text.h"
+#include "sub_8095228.h"
+#include "wonder_mail.h"
struct PostOfficeHelper
{
@@ -29,7 +31,7 @@ struct unkStruct_203B330
struct UnkInputStruct *unk0;
u8 fill4[0x8];
u8 unkC;
- u8 unkD;
+ u8 dungeonIndex;
u8 fillE[2];
u32 unk10;
struct UnkTextStruct2 *unk14;
@@ -41,11 +43,19 @@ EWRAM_DATA struct unkStruct_203B330 *gUnknown_203B330;
extern const char GetHelp_Text[];
extern const char GoRescue_Text[];
extern const char FriendRescueInfo_Text[];
-
extern const char FriendRescue_80E0A80[];
extern const char Delivery_Text[];
extern const char BulletinBoard_Text[];
extern const char PostOffice_Text[];
+extern u8 gUnknown_80E1F30[];
+extern u8 gUnknown_80E1F3C[];
+extern u8 gUnknown_80E1F60[];
+extern u8 gUnknown_80E1F70[];
+extern u8 gUnknown_202DE58[];
+extern u8 gUnknown_80E1F80[];
+extern u8 gUnknown_80E1F40[];
+extern u8 gUnknown_80E1F54[];
+extern u8 gUnknown_80E1F94[];
enum PostOfficeStates
{
@@ -166,7 +176,19 @@ 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 *GetCurrentMissionText(s16 r0);
+extern u8 *sub_80975DC(u32 r0);
+extern u8 sub_8099360(u8 *);
+extern u8 sub_8099394(u8 *);
+extern struct WonderMail *GetJobSlotInfo(u8);
+extern void xxx_call_draw_string(s32 x, u32 y, const u8 *, u32 , u32);
+extern void sub_80073B8(u32);
+extern void sub_80073E0(u32);
+extern void sprintf_2(char *buffer, const char *text, ...);
+extern void sub_803B6B0(u32, u32, u32, u32);
+extern s16 sub_80A2688(u8 r0);
+extern u8 sub_80992E0(s16 *, s16 *);
extern u8 gUnknown_202E5D8[];
extern u8 gAvailablePokemonNames[];
@@ -504,12 +526,12 @@ void ReturnToGetHelpMenu(void)
}
}
-u32 sub_80319A4(u8 param_1,u8 param_2,int param_3)
+u32 sub_80319A4(u8 param_1,u8 dungeon,int param_3)
{
gUnknown_203B330 = MemoryAlloc(sizeof(struct unkStruct_203B330),8);
gUnknown_203B330->unkC = param_1;
- gUnknown_203B330->unkD = param_2;
+ gUnknown_203B330->dungeonIndex = dungeon;
sub_801317C(&gUnknown_203B330->unk0);
gUnknown_203B330->unk10 = param_3;
gUnknown_203B330->unk14 = &gUnknown_203B330->unk18[param_3];
@@ -535,7 +557,7 @@ u32 sub_80319F8(void)
void sub_8031A2C(void)
{
sub_8031A84();
- sub_8031AE8();
+ DisplayMissionObjectives();
}
void sub_8031A3C(void)
@@ -557,7 +579,7 @@ void sub_8031A84(void)
sub_8006518(gUnknown_203B330->unk18);
gUnknown_203B330->unk18[gUnknown_203B330->unk10] = gUnknown_80E1F18;
if (gUnknown_203B330->unkC == 2) {
- iVar1 = sub_80969D0(gUnknown_203B330->unkD);
+ iVar1 = sub_80969D0(gUnknown_203B330->dungeonIndex);
if (iVar1 == 0) {
iVar1 = 1;
}
@@ -566,3 +588,96 @@ void sub_8031A84(void)
ResetUnusedInputStruct();
sub_800641C(gUnknown_203B330->unk18,1,1);
}
+
+void DisplayMissionObjectives(void)
+{
+ s32 yCoord;
+ s32 jobSlotIdx;
+ struct unkStruct_8095228 *iVar8;
+ struct WonderMail *jobInfo;
+ u8 auStack248 [100];
+ u8 local_94 [4];
+ u8 auStack144 [100];
+ short auStack44;
+ short local_2a;
+ u8 local_test;
+
+ sub_80073B8(gUnknown_203B330->unk10);
+ // Objectives
+ xxx_call_draw_string(10,0,gUnknown_80E1F30,gUnknown_203B330->unk10,0);
+ switch(gUnknown_203B330->unkC)
+ {
+ case 1:
+ sub_8099394(local_94);
+ iVar8 = sub_8095228(local_94[0]);
+ sub_803B6B0(10,16,3,gUnknown_203B330->unk10);
+ // %dF
+ sprintf_2(auStack248,gUnknown_80E1F3C,iVar8->floor);
+ xxx_call_draw_string(0x15,16,auStack248,gUnknown_203B330->unk10,0);
+ // Rescue #C6%s#R
+ sprintf_2(auStack248,gUnknown_80E1F40,GetMonSpecies(iVar8->clientSpecies));
+ xxx_call_draw_string(0x28,16,auStack248,gUnknown_203B330->unk10,0);
+ break;
+ case 2:
+ if (sub_80969D0(gUnknown_203B330->dungeonIndex) == 0) {
+ // Just go!
+ xxx_call_draw_string(10,16,gUnknown_80E1F54,gUnknown_203B330->unk10,0);
+ }
+ else
+ {
+ yCoord = 16;
+
+ // 8 Job Slots... check each of them
+ for(jobSlotIdx = 0; jobSlotIdx < 8; jobSlotIdx++)
+ {
+ jobInfo = GetJobSlotInfo(jobSlotIdx);
+ if ((((jobInfo->dungeon == gUnknown_203B330->dungeonIndex) && (jobInfo->mailType != 0)
+ ) && (jobInfo->mailType != 5)) && (jobInfo->mailType != 7)) {
+ sub_803B6B0(10,yCoord,3,gUnknown_203B330->unk10);
+ if (jobInfo->missionType != WONDER_MAIL_MISSION_TYPE_FIND_ITEM) {
+ sprintf_2(auStack144,gUnknown_80E1F3C,jobInfo->floor);
+ xxx_call_draw_string(21,yCoord,auStack144,gUnknown_203B330->unk10,0);
+ }
+ switch(jobInfo->missionType)
+ {
+ case WONDER_MAIL_MISSION_TYPE_DELIVER_ITEM:
+ // Bring #C4%s#R
+ sub_8090DC4(gUnknown_202DE58,jobInfo->targetItem,0);
+ sprintf_2(auStack144,gUnknown_80E1F60,gUnknown_202DE58);
+ xxx_call_draw_string(40,yCoord,auStack144,gUnknown_203B330->unk10,0);
+ break;
+ case WONDER_MAIL_MISSION_TYPE_FIND_ITEM:
+ // Find #C4%s#R
+ sub_8090DC4(gUnknown_202DE58,jobInfo->targetItem,0);
+ sprintf_2(auStack144,gUnknown_80E1F70,gUnknown_202DE58);
+ xxx_call_draw_string(40,yCoord,auStack144,gUnknown_203B330->unk10,0);
+ break;
+ case WONDER_MAIL_MISSION_TYPE_ESCORT_CLIENT:
+ // Escort to #C6$s#R
+ sprintf_2(auStack144,gUnknown_80E1F80,GetMonSpecies(jobInfo->targetSpecies));
+ xxx_call_draw_string(40,yCoord,auStack144,gUnknown_203B330->unk10,0);
+ break;
+ default:
+ // Rescue #C6%s#R
+ sprintf_2(auStack144,gUnknown_80E1F40,GetMonSpecies(jobInfo->targetSpecies));
+ xxx_call_draw_string(40,yCoord,auStack144,gUnknown_203B330->unk10,0);
+ break;
+ }
+ yCoord = yCoord + 12;
+ }
+ }
+ }
+ break;
+ case 3:
+ case 0:
+ default:
+ if (sub_80992E0(&auStack44,&local_2a) != 0)
+ xxx_call_draw_string(10,16,GetCurrentMissionText(local_2a),gUnknown_203B330->unk10,0);
+ else if (sub_8099360(&local_test) != 0)
+ xxx_call_draw_string(10,16,sub_80975DC(sub_80A2688(local_test)),gUnknown_203B330->unk10,0);
+ else
+ xxx_call_draw_string(10,16,gUnknown_80E1F94,gUnknown_203B330->unk10,0);
+ break;
+ }
+ sub_80073E0(gUnknown_203B330->unk10);
+}
diff --git a/src/rescue_password_menu.c b/src/rescue_password_menu.c
index ac2f296..f170a00 100644
--- a/src/rescue_password_menu.c
+++ b/src/rescue_password_menu.c
@@ -66,7 +66,7 @@ void CreateRescuePasswordMenu(u32 currMenu)
case MENU_DISPLAY_RESCUE_PASSWORD:
temp = sub_8095228(0x1F);
MemoryFill8((u8 *)temp, 0, sizeof(struct unkStruct_8095228));
- temp->unk0 = 2;
+ temp->mailType = 2;
temp->unk20.itemIndex = ITEM_ID_NOTHING;
sub_8031D70(0x1F, 0);
break;
diff --git a/src/save.c b/src/save.c
index 835c111..72a6496 100644
--- a/src/save.c
+++ b/src/save.c
@@ -171,7 +171,7 @@ extern void sub_800135C(void);
extern u32 GetGameOptions(void);
extern void InitializeGameOptions(u8 r0);
extern u8 *sub_80950F8(void);
-extern void sub_80958E4(u8 *a, u32 b);
+extern void sub_80958E4(u32 *a, u32 b);
extern u32 sub_80958F8(void);
extern void sub_8095900(void);
extern void sub_80972F4(void);
@@ -529,7 +529,7 @@ u32 sub_80121E0(u32 r0)
string = sub_8011C4C();
strncpy(r4->unk4, string, ARRAY_COUNT(r4->unk4));
- sub_80958E4((u8 *)r4 + 32, 0);
+ sub_80958E4(&r4->unk20, 0);
temp3 = WriteSaveSector(&temp, (u8 *)r4, sizeof(struct unk_struct));
MemoryFree(r4);
return temp3;
diff --git a/src/thank_you_wonder_mail.c b/src/thank_you_wonder_mail.c
index cdfb97a..fedf2ff 100644
--- a/src/thank_you_wonder_mail.c
+++ b/src/thank_you_wonder_mail.c
@@ -251,7 +251,7 @@ extern void sub_801CB5C(u32);
extern void sub_801CCD8(void);
extern void sub_8011C28(u32);
extern u32 sub_80154F0(void);
-extern u32 sub_8039068(u32, u8 *r1, u8 *r0);
+extern u32 sub_8039068(u32, u8 *r1, struct unkStruct_8095228 *r0);
extern u8 sub_809539C(u32, u32);
@@ -829,7 +829,7 @@ void HandleThankYouMailPasswordMenu(void)
switch(return_var)
{
case 3:
- switch(sub_8039068(0x20,gUnknown_203B2C4->passwordBuffer,&temp.unk0))
+ switch(sub_8039068(0x20,gUnknown_203B2C4->passwordBuffer,&temp))
{
case 0x11:
// Wrong password
@@ -851,7 +851,7 @@ void HandleThankYouMailPasswordMenu(void)
uVar1 = sub_809539C(4,temp.unk10);
puVar5 = sub_8095228(uVar1);
*puVar5 = temp;
- puVar5->unk0 = 6;
+ puVar5->mailType = 6;
gUnknown_203B2C4->unk430 = temp.unk10;
SetThankYouMailMenuState(THANK_YOU_PASSWORD_SUCCESS);
break;
@@ -1423,7 +1423,7 @@ void UpdateThankYouMailText(void)
else
gUnknown_203B2C4->unk53C.itemRewards[0] = 0; // unk558
gUnknown_203B2C4->unk53C.numItems = 1; // unk55B
- gUnknown_203B2C4->unk53C.teamRankPtsReward = sub_803C200(&puVar4->unk4, 0); // unk560
+ gUnknown_203B2C4->unk53C.teamRankPtsReward = sub_803C200(&puVar4->dungeon, 0); // unk560
gUnknown_203B2C4->unk53C.itemRewards[1] = 0; // unk559
gUnknown_203B2C4->unk53C.itemRewards[2] = 0; // unk55A
gUnknown_203B2C4->unk53C.friendAreaReward = 0; // unk55C
diff --git a/src/wonder_mail.c b/src/wonder_mail.c
index 0844a96..6c449aa 100644
--- a/src/wonder_mail.c
+++ b/src/wonder_mail.c
@@ -46,11 +46,11 @@ extern void sub_8030DE4(void);
extern void sub_803092C(void);
extern u32 sub_80154F0();
-extern u32 sub_8039068(u32, u8 *r1, u8 *r0);
+extern u32 sub_8039068(u32, u8 *r1, struct unkStruct_8095228 *r0);
extern void sub_8014248(const char *r0, u32, u32, const struct MenuItem *r4, u32, u32, u32, void *r5, u32);
extern void sub_8095274(u32);
extern void sub_80155F0();
-extern void sub_80951BC(u8 *r0);
+extern void sub_80951BC(struct unkStruct_8095228 *r0);
extern void sub_8013114(u32 *r0, s32 *r1);
extern void sub_8023C60();
extern u32 sub_8023A94(u32);
@@ -1171,7 +1171,7 @@ void sub_8028FDC(void)
{
case 8:
return_var = sub_8095228(gUnknown_203B2C0->unk218);
- if(sub_80A2824(return_var->unk4) == 0)
+ if(sub_80A2824(return_var->dungeon) == 0)
{
sub_8028B04(0x1C);
}
@@ -1459,7 +1459,7 @@ void sub_80293F4(void)
switch(return_var)
{
case 3:
- switch(sub_8039068(0x1C, (gUnknown_203B2C0->passwordBuffer), &temp.unk0))
+ switch(sub_8039068(0x1C, (gUnknown_203B2C0->passwordBuffer), &temp))
{
case 17:
sub_8014248(gWonderMailPasswordIncorrectText, 0, 8, gUnknown_80DDA48, 0, 4, 0, &gUnknown_203B2C0->faceFile, 0xC);
@@ -1475,8 +1475,8 @@ void sub_80293F4(void)
break;
case 22:
sub_8095274(temp.unk10);
- temp.unk0 = 2; // Some sort of Ack?
- sub_80951BC(&temp.unk0);
+ temp.mailType = 2;
+ sub_80951BC(&temp);
sub_80141B4(gWonderMailAOKMailReceivedText, 0, &gUnknown_203B2C0->faceFile, 0x101);
sub_8028B04(35);
break;
diff --git a/src/wonder_mail_2.c b/src/wonder_mail_2.c
index 6c90992..3359a61 100644
--- a/src/wonder_mail_2.c
+++ b/src/wonder_mail_2.c
@@ -386,8 +386,8 @@ void sub_802B3E0(void)
gUnknown_203B2C8->unk114.moneyReward = 0;
sub_8097790();
iVar3 = sub_8095228(gUnknown_203B2C8->unk1);
- sub_803C37C(&iVar3->unk4, 0, gUnknown_203B2C8->unk114.itemRewards);
- gUnknown_203B2C8->unk114.teamRankPtsReward = sub_803C200(&iVar3->unk4, 0);
+ sub_803C37C(&iVar3->dungeon, 0, gUnknown_203B2C8->unk114.itemRewards);
+ gUnknown_203B2C8->unk114.teamRankPtsReward = sub_803C200(&iVar3->dungeon, 0);
gUnknown_203B2C8->unk114.itemRewards[1] = 0;
gUnknown_203B2C8->unk114.itemRewards[2] = 0;
gUnknown_203B2C8->unk114.numItems = 10;
@@ -447,7 +447,7 @@ void sub_802B5B8(void)
if (sub_80144A4(&temp) == 0) {
uVar2 = sub_8011C34();
puVar3 = sub_8095228(gUnknown_203B2C8->unk1);
- puVar3->unk0 = 4;
+ puVar3->mailType = 4;
puVar3->unk28 = uVar2;
sub_802B548(3);
sub_8011C28(1);
diff --git a/src/wonder_mail_3.c b/src/wonder_mail_3.c
index 02dcfb7..4cc2e0e 100644
--- a/src/wonder_mail_3.c
+++ b/src/wonder_mail_3.c
@@ -85,7 +85,7 @@ extern u8 sub_8096C08(u8 *);
extern void sub_802C750(void);
extern void sub_802D1A0(u32);
extern void sub_8012EA4(u8 *, u32);
-extern void* sub_8096AB4(u8);
+extern struct WonderMail* GetJobSlotInfo(u8);
extern void sub_803B35C(void *, u32*);
extern void sub_802DE84(u32 *);
extern void sub_802D73C(void);
@@ -321,7 +321,7 @@ void sub_802D2A8(void)
sub_8012D60(gUnknown_203B2F8->unkC8,gUnknown_203B2F8->unk158,0,0,4,3);
break;
case 0xf:
- sub_803B35C(sub_8096AB4(gUnknown_203B2F8->unk10),&gUnknown_203B2F8->unk14);
+ sub_803B35C(GetJobSlotInfo(gUnknown_203B2F8->unk10),&gUnknown_203B2F8->unk14);
gUnknown_203B2F8->unk14 = 3;
sub_802DE84(&gUnknown_203B2F8->unk14);
break;
diff --git a/src/wonder_mail_802DF88.c b/src/wonder_mail_802DF88.c
index b85df28..ffac5a8 100644
--- a/src/wonder_mail_802DF88.c
+++ b/src/wonder_mail_802DF88.c
@@ -16,9 +16,8 @@ struct unkStruct_203B2FC
s16 unkE;
u8 unk10;
u8 fill11[0x30 - 0x11];
- u8 unk30;
- u8 fill31[3];
- struct WonderMail *unk34;
+ u8 jobSlot;
+ struct WonderMail *jobInfo;
struct OpenedFile *faceFile;
u8 *faceData;
u16 unk40;
@@ -76,16 +75,16 @@ extern void sub_802DC40(void);
extern void sub_802DC9C(void);
void sub_802DE44(void);
void sub_802DE60(void);
-struct WonderMail *sub_8096AB4(u8);
+struct WonderMail *GetJobSlotInfo(u8);
extern void sub_8096AF8(u8 *, u32, u32);
extern void sub_8096EEC(void);
extern void sub_803C21C(struct WonderMail *, u32 *);
-u32 sub_802DB28(u8 param_1, u8 param_2)
+u32 sub_802DB28(u8 jobSlot, u8 param_2)
{
char local_18 [8];
- sub_8096AF8(local_18,param_1,param_2);
+ sub_8096AF8(local_18,jobSlot,param_2);
if (local_18[0] == '\0') {
return 0;
}
@@ -93,11 +92,11 @@ u32 sub_802DB28(u8 param_1, u8 param_2)
ResetUnusedInputStruct();
sub_800641C(0,1,1);
gUnknown_203B2FC = MemoryAlloc(sizeof(struct unkStruct_203B2FC),8);
- gUnknown_203B2FC->unk30 = param_1;
- gUnknown_203B2FC->unk34 = sub_8096AB4(param_1);
+ gUnknown_203B2FC->jobSlot = jobSlot;
+ gUnknown_203B2FC->jobInfo = GetJobSlotInfo(jobSlot);
sub_8096EEC();
- sub_803C21C(gUnknown_203B2FC->unk34,&gUnknown_203B2FC->unk8);
- gUnknown_203B2FC->faceFile = GetDialogueSpriteDataPtr(gUnknown_203B2FC->unk34->clientSpecies);
+ sub_803C21C(gUnknown_203B2FC->jobInfo,&gUnknown_203B2FC->unk8);
+ gUnknown_203B2FC->faceFile = GetDialogueSpriteDataPtr(gUnknown_203B2FC->jobInfo->clientSpecies);
gUnknown_203B2FC->faceData = NULL;
gUnknown_203B2FC->unk44 = 0;
gUnknown_203B2FC->unk45 = 0;
@@ -117,7 +116,7 @@ u32 sub_802DBD4(void)
switch(gUnknown_203B2FC->state)
{
case 7:
- gUnknown_203B2FC->unk34->mailType = 7;
+ gUnknown_203B2FC->jobInfo->mailType = 7;
return 3;
case 6:
sub_802DE44();
@@ -173,16 +172,16 @@ void sub_802DC9C(void)
switch(gUnknown_203B2FC->state) {
case 0:
- CopyYellowSpeciesNametoBuffer(gUnknown_202E5D8,gUnknown_203B2FC->unk34->clientSpecies);
- CopyYellowSpeciesNametoBuffer(gUnknown_202E1C8,gUnknown_203B2FC->unk34->clientSpecies);
- speciesText = GetMonSpecies(gUnknown_203B2FC->unk34->clientSpecies);
+ CopyYellowSpeciesNametoBuffer(gUnknown_202E5D8,gUnknown_203B2FC->jobInfo->clientSpecies);
+ CopyYellowSpeciesNametoBuffer(gUnknown_202E1C8,gUnknown_203B2FC->jobInfo->clientSpecies);
+ speciesText = GetMonSpecies(gUnknown_203B2FC->jobInfo->clientSpecies);
strcpy(gUnknown_202E1C8 + 0xfffffdd0,speciesText);
- speciesText = GetMonSpecies(gUnknown_203B2FC->unk34->targetSpecies);
+ speciesText = GetMonSpecies(gUnknown_203B2FC->jobInfo->targetSpecies);
strcpy(gUnknown_202E1C8 + 0xfffffe20,speciesText);
- UnlockExclusivePokemon(gUnknown_203B2FC->unk34->clientSpecies);
- sub_8090DC4(gUnknown_202DE58,gUnknown_203B2FC->unk34->targetItem,0);
+ UnlockExclusivePokemon(gUnknown_203B2FC->jobInfo->clientSpecies);
+ sub_8090DC4(gUnknown_202DE58,gUnknown_203B2FC->jobInfo->targetItem,0);
gUnknown_203B2FC->fallbackState = 6;
- switch(gUnknown_203B2FC->unk34->missionType) {
+ switch(gUnknown_203B2FC->jobInfo->missionType) {
case WONDER_MAIL_MISSION_TYPE_DELIVER_ITEM:
sub_802DC28(5);
break;
@@ -191,11 +190,11 @@ void sub_802DC9C(void)
break;
case WONDER_MAIL_MISSION_TYPE_RESCUE_TARGET:
sub_802DC28(2);
- UnlockExclusivePokemon(gUnknown_203B2FC->unk34->targetSpecies);
+ UnlockExclusivePokemon(gUnknown_203B2FC->jobInfo->targetSpecies);
break;
case WONDER_MAIL_MISSION_TYPE_ESCORT_CLIENT:
sub_802DC28(3);
- UnlockExclusivePokemon(gUnknown_203B2FC->unk34->targetSpecies);
+ UnlockExclusivePokemon(gUnknown_203B2FC->jobInfo->targetSpecies);
break;
default:
case WONDER_MAIL_MISSION_TYPE_RESCUE_CLIENT:
@@ -216,7 +215,7 @@ void sub_802DC9C(void)
sub_80141B4(gWonderMailClientItemDelivered1,0,&gUnknown_203B2FC->faceFile,0x10d);
break;
case 4:
- index = FindItemInInventory(gUnknown_203B2FC->unk34->targetItem);
+ index = FindItemInInventory(gUnknown_203B2FC->jobInfo->targetItem);
if (index != -1) {
ShiftItemsDownFrom(index);
FillInventoryGaps();