summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--asm/code_803D110.s16
-rw-r--r--asm/code_8057824.s12
-rw-r--r--asm/code_8090208.s20
-rw-r--r--asm/code_8092334.s56
-rw-r--r--asm/code_8095014.s144
-rw-r--r--asm/code_80958E8.s76
-rw-r--r--asm/code_8097670.s52
-rw-r--r--asm/pokemon.s135
-rw-r--r--asm/pokemon_2.s176
-rw-r--r--asm/pokemon_3.s833
-rw-r--r--include/code_8092334.h8
-rw-r--r--include/item.h12
-rw-r--r--include/pokemon.h97
-rw-r--r--src/code_8092334.c8
-rw-r--r--src/exclusive_pokemon_1.c24
-rw-r--r--src/friend_area_1.c8
-rw-r--r--src/game_options.c40
-rw-r--r--src/items.c61
-rw-r--r--src/play_time.c16
-rw-r--r--src/pokemon.c61
-rw-r--r--src/pokemon_3.c273
-rw-r--r--src/pokemon_mid.c186
-rw-r--r--src/rescue_team_info.c17
-rw-r--r--src/save.c18
24 files changed, 858 insertions, 1491 deletions
diff --git a/asm/code_803D110.s b/asm/code_803D110.s
index 6111ed1..1eb867c 100644
--- a/asm/code_803D110.s
+++ b/asm/code_803D110.s
@@ -57,7 +57,7 @@ _0803D164:
mov r8, r2
mov r0, sp
adds r1, r7, 0
- bl sub_809486C
+ bl xxx_init_struct_8094924_save_809486C
movs r4, 0
cmp r4, r5
bge _0803D188
@@ -66,7 +66,7 @@ _0803D178:
adds r1, r6, r4
mov r0, sp
movs r2, 0x5
- bl sub_809488C
+ bl SaveIntegerBits
adds r4, 0x1
cmp r4, r5
blt _0803D178
@@ -103,7 +103,7 @@ sub_803D1A8:
_0803D1BC:
asrs r2, 3
mov r0, sp
- bl sub_809485C
+ bl xxx_init_struct_8094924_restore_809485C
movs r4, 0
cmp r4, r5
bge _0803D1DC
@@ -112,7 +112,7 @@ _0803D1CC:
adds r1, r6, r4
mov r0, sp
movs r2, 0x5
- bl sub_8094924
+ bl RestoreIntegerBits
adds r4, 0x1
cmp r4, r5
blt _0803D1CC
@@ -213,7 +213,7 @@ _0803D26C:
adds r1, 0x1
adds r0, r4, 0
movs r2, 0x21
- bl sub_809485C
+ bl xxx_init_struct_8094924_restore_809485C
adds r0, r4, 0
mov r1, r9
bl sub_8095774
@@ -262,7 +262,7 @@ _0803D2E2:
bge _0803D2E2
adds r0, r4, 0
movs r2, 0x21
- bl sub_809486C
+ bl xxx_init_struct_8094924_save_809486C
adds r0, r4, 0
adds r1, r6, 0
bl sub_8095824
@@ -388,7 +388,7 @@ _0803D3C0:
adds r1, 0x1
adds r0, r4, 0
movs r2, 0xC
- bl sub_809485C
+ bl xxx_init_struct_8094924_restore_809485C
adds r0, r4, 0
mov r1, r9
bl sub_80971EC
@@ -437,7 +437,7 @@ _0803D436:
bge _0803D436
adds r0, r4, 0
movs r2, 0xC
- bl sub_809486C
+ bl xxx_init_struct_8094924_save_809486C
adds r0, r4, 0
adds r1, r6, 0
bl sub_8097270
diff --git a/asm/code_8057824.s b/asm/code_8057824.s
index b715023..413eeb2 100644
--- a/asm/code_8057824.s
+++ b/asm/code_8057824.s
@@ -33850,7 +33850,7 @@ _08068922:
mov r9, r0
adds r0, r2, r0
mov r1, r10
- bl xxx_pokemonstruct_index_to_unk_808DE30
+ bl xxx_pokemonstruct_index_to_pokemon2_808DE30
ldr r0, _08068A68
ldr r0, [r0]
ldr r1, _08068A6C
@@ -34079,7 +34079,7 @@ _08068B08:
adds r0, r4, 0
adds r1, r6, 0
ldr r2, _08068B74
- bl xxx_pokemonstruct_to_unk_808DE50
+ bl xxx_pokemonstruct_to_pokemon2_808DE50
ldrh r0, [r4]
movs r1, 0x1
movs r2, 0
@@ -34293,7 +34293,7 @@ _08068CDC:
movs r3, 0xA
ldrsh r0, [r4, r3]
adds r1, r4, 0
- bl xxx_unk_to_pokemonstruct_index_808DF2C
+ bl xxx_pokemon2_to_pokemonstruct_index_808DF2C
b _08068CFE
_08068CE8:
ldr r0, [sp, 0x220]
@@ -34401,7 +34401,7 @@ _08068D6A:
adds r0, r1
str r0, [r4]
adds r1, r5, 0
- bl xxx_unk_to_pokemonstruct_808DF44
+ bl xxx_pokemon2_to_pokemonstruct_808DF44
ldr r2, [r4]
ldrh r0, [r2]
movs r3, 0x80
@@ -34997,7 +34997,7 @@ _08069228:
movs r2, 0xA
ldrsh r0, [r4, r2]
adds r1, r4, 0
- bl xxx_unk_to_pokemonstruct_index_808DF2C
+ bl xxx_pokemon2_to_pokemonstruct_index_808DF2C
_0806926E:
bl sub_8044210
lsls r0, 24
@@ -35196,7 +35196,7 @@ _080693CC:
movs r2, 0xA
ldrsh r0, [r4, r2]
adds r1, r4, 0
- bl xxx_unk_to_pokemonstruct_index_808DF2C
+ bl xxx_pokemon2_to_pokemonstruct_index_808DF2C
_0806940E:
bl sub_8044210
lsls r0, 24
diff --git a/asm/code_8090208.s b/asm/code_8090208.s
index 19e7efa..05fb931 100644
--- a/asm/code_8090208.s
+++ b/asm/code_8090208.s
@@ -60,25 +60,25 @@ _080902EE:
bx r1
thumb_func_end sub_80902C8
- thumb_func_start sub_80902F4
-sub_80902F4:
+ 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 sub_809488C
+ bl SaveIntegerBits
adds r4, 0x1
adds r0, r5, 0
adds r1, r4, 0
movs r2, 0x7
- bl sub_809488C
+ bl SaveIntegerBits
pop {r4,r5}
pop {r0}
bx r0
- thumb_func_end sub_80902F4
+ thumb_func_end xxx_save_poke_sub_4_80902F4
- thumb_func_start sub_8090314
-sub_8090314:
+ 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
@@ -87,16 +87,16 @@ sub_8090314:
strb r0, [r4, 0x1]
adds r0, r5, 0
movs r2, 0x7
- bl sub_8094924
+ bl RestoreIntegerBits
adds r4, 0x1
adds r0, r5, 0
adds r1, r4, 0
movs r2, 0x7
- bl sub_8094924
+ bl RestoreIntegerBits
pop {r4,r5}
pop {r0}
bx r0
- thumb_func_end sub_8090314
+ thumb_func_end xxx_restore_poke_sub_4_8090314
thumb_func_start sub_809033C
sub_809033C:
diff --git a/asm/code_8092334.s b/asm/code_8092334.s
index 2b93365..9b71d63 100644
--- a/asm/code_8092334.s
+++ b/asm/code_8092334.s
@@ -3534,16 +3534,16 @@ sub_80940B8:
adds r4, r0, 0
adds r5, r1, 0
movs r2, 0x4
- bl sub_809488C
+ bl SaveIntegerBits
adds r1, r5, 0x2
adds r0, r4, 0
movs r2, 0x9
- bl sub_809488C
+ bl SaveIntegerBits
adds r5, 0x4
adds r0, r4, 0
adds r1, r5, 0
movs r2, 0x7
- bl sub_809488C
+ bl SaveIntegerBits
pop {r4,r5}
pop {r0}
bx r0
@@ -3555,23 +3555,23 @@ sub_80940E0:
adds r4, r0, 0
adds r5, r1, 0
movs r2, 0x4
- bl sub_8094924
+ bl RestoreIntegerBits
adds r1, r5, 0x2
adds r0, r4, 0
movs r2, 0x9
- bl sub_8094924
+ bl RestoreIntegerBits
adds r5, 0x4
adds r0, r4, 0
adds r1, r5, 0
movs r2, 0x7
- bl sub_8094924
+ bl RestoreIntegerBits
pop {r4,r5}
pop {r0}
bx r0
thumb_func_end sub_80940E0
- thumb_func_start sub_8094108
-sub_8094108:
+ thumb_func_start xxx_save_poke_sub_2c_8094108
+xxx_save_poke_sub_2c_8094108:
push {r4-r6,lr}
adds r6, r0, 0
adds r4, r1, 0
@@ -3587,10 +3587,10 @@ _08094110:
pop {r4-r6}
pop {r0}
bx r0
- thumb_func_end sub_8094108
+ thumb_func_end xxx_save_poke_sub_2c_8094108
- thumb_func_start sub_8094128
-sub_8094128:
+ thumb_func_start xxx_restore_poke_sub_2c_8094128
+xxx_restore_poke_sub_2c_8094128:
push {r4-r6,lr}
adds r6, r0, 0
adds r4, r1, 0
@@ -3606,7 +3606,7 @@ _08094130:
pop {r4-r6}
pop {r0}
bx r0
- thumb_func_end sub_8094128
+ thumb_func_end xxx_restore_poke_sub_2c_8094128
thumb_func_start sub_8094148
sub_8094148:
@@ -3614,24 +3614,24 @@ sub_8094148:
adds r5, r0, 0
adds r4, r1, 0
movs r2, 0x4
- bl sub_809488C
+ bl SaveIntegerBits
adds r1, r4, 0x1
adds r0, r5, 0
movs r2, 0x1
- bl sub_809488C
+ bl SaveIntegerBits
adds r1, r4, 0x2
adds r0, r5, 0
movs r2, 0x9
- bl sub_809488C
+ bl SaveIntegerBits
adds r1, r4, 0x4
adds r0, r5, 0
movs r2, 0x7
- bl sub_809488C
+ bl SaveIntegerBits
adds r4, 0x5
adds r0, r5, 0
adds r1, r4, 0
movs r2, 0x7
- bl sub_809488C
+ bl SaveIntegerBits
pop {r4,r5}
pop {r0}
bx r0
@@ -3656,7 +3656,7 @@ _0809418E:
adds r1, 0x20
adds r0, r6, 0
movs r2, 0x8
- bl sub_809488C
+ bl SaveIntegerBits
pop {r4-r7}
pop {r0}
bx r0
@@ -3674,24 +3674,24 @@ sub_80941B0:
adds r0, r5, 0
adds r1, r4, 0
movs r2, 0x4
- bl sub_8094924
+ bl RestoreIntegerBits
adds r1, r4, 0x1
adds r0, r5, 0
movs r2, 0x1
- bl sub_8094924
+ bl RestoreIntegerBits
adds r1, r4, 0x2
adds r0, r5, 0
movs r2, 0x9
- bl sub_8094924
+ bl RestoreIntegerBits
adds r1, r4, 0x4
adds r0, r5, 0
movs r2, 0x7
- bl sub_8094924
+ bl RestoreIntegerBits
adds r4, 0x5
adds r0, r5, 0
adds r1, r4, 0
movs r2, 0x7
- bl sub_8094924
+ bl RestoreIntegerBits
pop {r4,r5}
pop {r0}
bx r0
@@ -3718,7 +3718,7 @@ _08094206:
strb r0, [r1]
adds r0, r6, 0
movs r2, 0x8
- bl sub_8094924
+ bl RestoreIntegerBits
pop {r4-r7}
pop {r0}
bx r0
@@ -4068,12 +4068,12 @@ sub_809447C:
adds r5, r0, 0
adds r4, r1, 0
movs r2, 0x10
- bl sub_8094924
+ bl RestoreIntegerBits
adds r4, 0x2
adds r0, r5, 0
adds r1, r4, 0
movs r2, 0x10
- bl sub_8094924
+ bl RestoreIntegerBits
pop {r4,r5}
pop {r0}
bx r0
@@ -4085,12 +4085,12 @@ sub_809449C:
adds r5, r0, 0
adds r4, r1, 0
movs r2, 0x10
- bl sub_809488C
+ bl SaveIntegerBits
adds r4, 0x2
adds r0, r5, 0
adds r1, r4, 0
movs r2, 0x10
- bl sub_809488C
+ bl SaveIntegerBits
pop {r4,r5}
pop {r0}
bx r0
diff --git a/asm/code_8095014.s b/asm/code_8095014.s
index 3c4419b..f6919cb 100644
--- a/asm/code_8095014.s
+++ b/asm/code_8095014.s
@@ -476,7 +476,7 @@ sub_80954CC:
adds r2, r1, 0
mov r0, sp
adds r1, r3, 0
- bl sub_809485C
+ bl xxx_init_struct_8094924_restore_809485C
ldr r6, _08095618
movs r5, 0
movs r4, 0x1F
@@ -493,7 +493,7 @@ _080954E2:
ldr r1, [r4]
mov r0, sp
movs r2, 0x20
- bl sub_8094924
+ bl RestoreIntegerBits
ldr r5, [r4]
adds r4, r5, 0x4
adds r0, r4, 0
@@ -503,95 +503,95 @@ _080954E2:
mov r0, sp
adds r1, r4, 0
movs r2, 0x2
- bl sub_8094924
+ bl RestoreIntegerBits
adds r1, r5, 0x6
mov r0, sp
movs r2, 0x1
- bl sub_8094924
+ bl RestoreIntegerBits
adds r1, r5, 0x7
mov r0, sp
movs r2, 0x7
- bl sub_8094924
+ bl RestoreIntegerBits
adds r4, 0x4
mov r0, sp
adds r1, r4, 0
- bl sub_8090314
+ bl xxx_restore_poke_sub_4_8090314
adds r1, r5, 0
adds r1, 0xC
mov r0, sp
movs r2, 0x9
- bl sub_8094924
+ bl RestoreIntegerBits
adds r1, r5, 0
adds r1, 0x10
mov r0, sp
- bl sub_808F410
+ bl xxx_restore_poke_sub_c_808F410
adds r1, r5, 0
adds r1, 0x14
mov r0, sp
- bl sub_808F410
+ bl xxx_restore_poke_sub_c_808F410
adds r1, r5, 0
adds r1, 0x18
mov r0, sp
movs r2, 0xA
- bl sub_8094924
+ bl RestoreIntegerBits
adds r1, r5, 0
adds r1, 0x1A
mov r0, sp
movs r2, 0xA
- bl sub_8094924
+ bl RestoreIntegerBits
adds r1, r5, 0
adds r1, 0x1C
mov r0, sp
movs r2, 0x8
- bl sub_8094924
+ bl RestoreIntegerBits
adds r1, r5, 0
adds r1, 0x1D
mov r0, sp
movs r2, 0x8
- bl sub_8094924
+ bl RestoreIntegerBits
adds r1, r5, 0
adds r1, 0x1E
mov r0, sp
movs r2, 0x8
- bl sub_8094924
+ bl RestoreIntegerBits
adds r1, r5, 0
adds r1, 0x1F
mov r0, sp
movs r2, 0x8
- bl sub_8094924
+ bl RestoreIntegerBits
adds r1, r5, 0
adds r1, 0x20
mov r0, sp
movs r2, 0x18
- bl sub_8094924
+ bl RestoreIntegerBits
adds r1, r5, 0
adds r1, 0x24
mov r0, sp
movs r2, 0x18
- bl sub_8094924
+ bl RestoreIntegerBits
adds r1, r5, 0
adds r1, 0x28
mov r0, sp
movs r2, 0x4
- bl sub_8094924
+ bl RestoreIntegerBits
adds r1, r5, 0
adds r1, 0x2C
mov r0, sp
- bl sub_8091DC0
+ bl RestoreHeldItem
adds r1, r5, 0
adds r1, 0x30
mov r0, sp
- bl sub_8094128
+ bl xxx_restore_poke_sub_2c_8094128
adds r1, r5, 0
adds r1, 0x50
mov r0, sp
movs r2, 0x50
- bl sub_8094924
+ bl RestoreIntegerBits
ldr r4, _08095620
ldr r1, [r4]
mov r0, sp
movs r2, 0x20
- bl sub_8094924
+ bl RestoreIntegerBits
adds r6, r4, 0
movs r5, 0x4
movs r4, 0x1F
@@ -600,7 +600,7 @@ _080955F4:
adds r1, r5
mov r0, sp
movs r2, 0x20
- bl sub_8094924
+ bl RestoreIntegerBits
adds r5, 0x4
subs r4, 0x1
cmp r4, 0
@@ -626,7 +626,7 @@ sub_8095624:
adds r2, r1, 0
mov r0, sp
adds r1, r3, 0
- bl sub_809486C
+ bl xxx_init_struct_8094924_save_809486C
ldr r6, _08095768
movs r5, 0
movs r4, 0x1F
@@ -643,101 +643,101 @@ _0809563A:
ldr r1, [r4]
mov r0, sp
movs r2, 0x20
- bl sub_809488C
+ bl SaveIntegerBits
ldr r5, [r4]
adds r4, r5, 0x4
mov r0, sp
adds r1, r4, 0
movs r2, 0x2
- bl sub_809488C
+ bl SaveIntegerBits
adds r1, r5, 0x6
mov r0, sp
movs r2, 0x1
- bl sub_809488C
+ bl SaveIntegerBits
adds r1, r5, 0x7
mov r0, sp
movs r2, 0x7
- bl sub_809488C
+ bl SaveIntegerBits
adds r4, 0x4
mov r0, sp
adds r1, r4, 0
- bl sub_80902F4
+ bl xxx_save_poke_sub_4_80902F4
adds r1, r5, 0
adds r1, 0xC
mov r0, sp
movs r2, 0x9
- bl sub_809488C
+ bl SaveIntegerBits
adds r1, r5, 0
adds r1, 0x10
mov r0, sp
- bl sub_808F41C
+ bl xxx_save_poke_sub_c_808F41C
adds r1, r5, 0
adds r1, 0x14
mov r0, sp
- bl sub_808F41C
+ bl xxx_save_poke_sub_c_808F41C
adds r1, r5, 0
adds r1, 0x18
mov r0, sp
movs r2, 0xA
- bl sub_809488C
+ bl SaveIntegerBits
adds r1, r5, 0
adds r1, 0x1A
mov r0, sp
movs r2, 0xA
- bl sub_809488C
+ bl SaveIntegerBits
adds r1, r5, 0
adds r1, 0x1C
mov r0, sp
movs r2, 0x8
- bl sub_809488C
+ bl SaveIntegerBits
adds r1, r5, 0
adds r1, 0x1D
mov r0, sp
movs r2, 0x8
- bl sub_809488C
+ bl SaveIntegerBits
adds r1, r5, 0
adds r1, 0x1E
mov r0, sp
movs r2, 0x8
- bl sub_809488C
+ bl SaveIntegerBits
adds r1, r5, 0
adds r1, 0x1F
mov r0, sp
movs r2, 0x8
- bl sub_809488C
+ bl SaveIntegerBits
adds r1, r5, 0
adds r1, 0x20
mov r0, sp
movs r2, 0x18
- bl sub_809488C
+ bl SaveIntegerBits
adds r1, r5, 0
adds r1, 0x24
mov r0, sp
movs r2, 0x18
- bl sub_809488C
+ bl SaveIntegerBits
adds r1, r5, 0
adds r1, 0x28
mov r0, sp
movs r2, 0x4
- bl sub_809488C
+ bl SaveIntegerBits
adds r1, r5, 0
adds r1, 0x2C
mov r0, sp
- bl sub_8091DE0
+ bl SaveHeldItem
adds r1, r5, 0
adds r1, 0x30
mov r0, sp
- bl sub_8094108
+ bl xxx_save_poke_sub_2c_8094108
adds r1, r5, 0
adds r1, 0x50
mov r0, sp
movs r2, 0x50
- bl sub_809488C
+ bl SaveIntegerBits
ldr r4, _08095770
ldr r1, [r4]
mov r0, sp
movs r2, 0x20
- bl sub_809488C
+ bl SaveIntegerBits
adds r6, r4, 0
movs r5, 0x4
movs r4, 0x1F
@@ -746,7 +746,7 @@ _08095742:
adds r1, r5
mov r0, sp
movs r2, 0x20
- bl sub_809488C
+ bl SaveIntegerBits
adds r5, 0x4
subs r4, 0x1
cmp r4, 0
@@ -771,64 +771,64 @@ sub_8095774:
adds r4, r0, 0
adds r5, r1, 0
movs r2, 0x4
- bl sub_8094924
+ bl RestoreIntegerBits
adds r1, r5, 0x4
adds r0, r4, 0
- bl sub_8090314
+ bl xxx_restore_poke_sub_4_8090314
adds r1, r5, 0
adds r1, 0x8
adds r0, r4, 0
movs r2, 0x18
- bl sub_8094924
+ bl RestoreIntegerBits
adds r1, r5, 0
adds r1, 0xC
adds r0, r4, 0
movs r2, 0x9
- bl sub_8094924
+ bl RestoreIntegerBits
adds r1, r5, 0
adds r1, 0x10
adds r0, r4, 0
movs r2, 0x20
- bl sub_8094924
+ bl RestoreIntegerBits
adds r1, r5, 0
adds r1, 0x14
adds r0, r4, 0
movs r2, 0x50
- bl sub_8094924
+ bl RestoreIntegerBits
adds r1, r5, 0
adds r1, 0x20
adds r0, r4, 0
movs r2, 0x8
- bl sub_8094924
+ bl RestoreIntegerBits
adds r1, r5, 0
adds r1, 0x21
adds r0, r4, 0
movs r2, 0x8
- bl sub_8094924
+ bl RestoreIntegerBits
adds r1, r5, 0
adds r1, 0x22
adds r0, r4, 0
movs r2, 0x8
- bl sub_8094924
+ bl RestoreIntegerBits
adds r1, r5, 0
adds r1, 0x24
adds r0, r4, 0
movs r2, 0x20
- bl sub_8094924
+ bl RestoreIntegerBits
adds r1, r5, 0
adds r1, 0x28
adds r0, r4, 0
movs r2, 0x20
- bl sub_8094924
+ bl RestoreIntegerBits
adds r1, r5, 0
adds r1, 0x2C
adds r0, r4, 0
movs r2, 0x8
- bl sub_8094924
+ bl RestoreIntegerBits
adds r0, r4, 0
mov r1, sp
movs r2, 0x1
- bl sub_8094924
+ bl RestoreIntegerBits
mov r0, sp
ldrb r1, [r0]
movs r0, 0x1
@@ -858,60 +858,60 @@ sub_8095824:
adds r0, r5, 0
adds r1, r4, 0
movs r2, 0x4
- bl sub_809488C
+ bl SaveIntegerBits
adds r1, r4, 0x4
adds r0, r5, 0
- bl sub_80902F4
+ bl xxx_save_poke_sub_4_80902F4
adds r1, r4, 0
adds r1, 0x8
adds r0, r5, 0
movs r2, 0x18
- bl sub_809488C
+ bl SaveIntegerBits
adds r1, r4, 0
adds r1, 0xC
adds r0, r5, 0
movs r2, 0x9
- bl sub_809488C
+ bl SaveIntegerBits
adds r1, r4, 0
adds r1, 0x10
adds r0, r5, 0
movs r2, 0x20
- bl sub_809488C
+ bl SaveIntegerBits
adds r1, r4, 0
adds r1, 0x14
adds r0, r5, 0
movs r2, 0x50
- bl sub_809488C
+ bl SaveIntegerBits
adds r1, r4, 0
adds r1, 0x20
adds r0, r5, 0
movs r2, 0x8
- bl sub_809488C
+ bl SaveIntegerBits
adds r1, r4, 0
adds r1, 0x21
adds r0, r5, 0
movs r2, 0x8
- bl sub_809488C
+ bl SaveIntegerBits
adds r1, r4, 0
adds r1, 0x22
adds r0, r5, 0
movs r2, 0x8
- bl sub_809488C
+ bl SaveIntegerBits
adds r1, r4, 0
adds r1, 0x24
adds r0, r5, 0
movs r2, 0x20
- bl sub_809488C
+ bl SaveIntegerBits
adds r1, r4, 0
adds r1, 0x28
adds r0, r5, 0
movs r2, 0x20
- bl sub_809488C
+ bl SaveIntegerBits
adds r1, r4, 0
adds r1, 0x2C
adds r0, r5, 0
movs r2, 0x8
- bl sub_809488C
+ bl SaveIntegerBits
adds r0, r4, 0
adds r0, 0x2D
ldrb r0, [r0]
@@ -922,7 +922,7 @@ sub_8095824:
_080958D2:
adds r0, r5, 0
movs r2, 0x1
- bl sub_809488C
+ bl SaveIntegerBits
add sp, 0x4
pop {r4-r6}
pop {r0}
diff --git a/asm/code_80958E8.s b/asm/code_80958E8.s
index 89a0109..9928fb0 100644
--- a/asm/code_80958E8.s
+++ b/asm/code_80958E8.s
@@ -2870,7 +2870,7 @@ sub_8096FA0:
adds r2, r1, 0
mov r0, sp
adds r1, r3, 0
- bl sub_809485C
+ bl xxx_init_struct_8094924_restore_809485C
add r7, sp, 0x10
ldr r6, _08097020
movs r5, 0
@@ -2915,7 +2915,7 @@ _08097000:
mov r0, sp
adds r1, r7, 0
movs r2, 0x1
- bl sub_8094924
+ bl RestoreIntegerBits
ldr r1, [sp, 0x10]
ands r1, r6
cmp r1, 0
@@ -2943,7 +2943,7 @@ _08097030:
mov r0, sp
adds r1, r7, 0
movs r2, 0x1
- bl sub_8094924
+ bl RestoreIntegerBits
ldr r1, [sp, 0x10]
movs r2, 0x1
ands r1, r2
@@ -2974,7 +2974,7 @@ _08097068:
movs r2, 0xA0
lsls r2, 1
mov r0, sp
- bl sub_8094924
+ bl RestoreIntegerBits
ldr r1, [r4]
movs r2, 0xDC
lsls r2, 1
@@ -2982,7 +2982,7 @@ _08097068:
movs r2, 0xF0
lsls r2, 2
mov r0, sp
- bl sub_8094924
+ bl RestoreIntegerBits
adds r6, r4, 0
movs r5, 0x8C
lsls r5, 2
@@ -2993,17 +2993,17 @@ _08097096:
adds r1, 0x8
mov r0, sp
movs r2, 0x20
- bl sub_8094924
+ bl RestoreIntegerBits
ldr r1, [r6]
adds r1, r5
adds r1, 0x4
mov r0, sp
movs r2, 0x18
- bl sub_8094924
+ bl RestoreIntegerBits
ldr r1, [r6]
adds r1, r5
mov r0, sp
- bl sub_8090314
+ bl xxx_restore_poke_sub_4_8090314
adds r5, 0xC
subs r4, 0x1
cmp r4, 0
@@ -3027,7 +3027,7 @@ sub_80970D8:
adds r2, r1, 0
mov r0, sp
adds r1, r3, 0
- bl sub_809486C
+ bl xxx_init_struct_8094924_save_809486C
add r7, sp, 0x10
ldr r6, _080971E8
movs r5, 0
@@ -3083,7 +3083,7 @@ _0809714A:
mov r0, sp
adds r1, r7, 0
movs r2, 0x1
- bl sub_809488C
+ bl SaveIntegerBits
adds r4, 0x1
cmp r4, 0x37
ble _08097134
@@ -3102,7 +3102,7 @@ _08097170:
mov r0, sp
adds r1, r7, 0
movs r2, 0x1
- bl sub_809488C
+ bl SaveIntegerBits
ldr r4, _080971E8
ldr r1, [r4]
movs r0, 0xC8
@@ -3111,7 +3111,7 @@ _08097170:
movs r2, 0xA0
lsls r2, 1
mov r0, sp
- bl sub_809488C
+ bl SaveIntegerBits
ldr r1, [r4]
movs r0, 0xDC
lsls r0, 1
@@ -3119,7 +3119,7 @@ _08097170:
movs r2, 0xF0
lsls r2, 2
mov r0, sp
- bl sub_809488C
+ bl SaveIntegerBits
adds r6, r4, 0
movs r5, 0x8C
lsls r5, 2
@@ -3130,17 +3130,17 @@ _080971AA:
adds r1, 0x8
mov r0, sp
movs r2, 0x20
- bl sub_809488C
+ bl SaveIntegerBits
ldr r1, [r6]
adds r1, r5
adds r1, 0x4
mov r0, sp
movs r2, 0x18
- bl sub_809488C
+ bl SaveIntegerBits
ldr r1, [r6]
adds r1, r5
mov r0, sp
- bl sub_80902F4
+ bl xxx_save_poke_sub_4_80902F4
adds r5, 0xC
subs r4, 0x1
cmp r4, 0
@@ -3162,53 +3162,53 @@ sub_80971EC:
adds r4, r0, 0
adds r5, r1, 0
movs r2, 0x4
- bl sub_8094924
+ bl RestoreIntegerBits
adds r1, r5, 0x1
adds r0, r4, 0
movs r2, 0x3
- bl sub_8094924
+ bl RestoreIntegerBits
adds r1, r5, 0x2
adds r0, r4, 0
movs r2, 0x4
- bl sub_8094924
+ bl RestoreIntegerBits
adds r1, r5, 0
adds r1, 0xC
adds r0, r4, 0
movs r2, 0x9
- bl sub_8094924
+ bl RestoreIntegerBits
adds r1, r5, 0
adds r1, 0xE
adds r0, r4, 0
movs r2, 0x9
- bl sub_8094924
+ bl RestoreIntegerBits
adds r1, r5, 0
adds r1, 0x10
adds r0, r4, 0
movs r2, 0x8
- bl sub_8094924
+ bl RestoreIntegerBits
adds r1, r5, 0
adds r1, 0x11
adds r0, r4, 0
movs r2, 0x4
- bl sub_8094924
+ bl RestoreIntegerBits
adds r1, r5, 0
adds r1, 0x12
adds r0, r4, 0
movs r2, 0x8
- bl sub_8094924
+ bl RestoreIntegerBits
adds r1, r5, 0
adds r1, 0x13
adds r0, r4, 0
movs r2, 0x6
- bl sub_8094924
+ bl RestoreIntegerBits
adds r1, r5, 0
adds r1, 0x8
adds r0, r4, 0
movs r2, 0x18
- bl sub_8094924
+ bl RestoreIntegerBits
adds r1, r5, 0x4
adds r0, r4, 0
- bl sub_8090314
+ bl xxx_restore_poke_sub_4_8090314
pop {r4,r5}
pop {r0}
bx r0
@@ -3220,53 +3220,53 @@ sub_8097270:
adds r4, r0, 0
adds r5, r1, 0
movs r2, 0x4
- bl sub_809488C
+ bl SaveIntegerBits
adds r1, r5, 0x1
adds r0, r4, 0
movs r2, 0x3
- bl sub_809488C
+ bl SaveIntegerBits
adds r1, r5, 0x2
adds r0, r4, 0
movs r2, 0x4
- bl sub_809488C
+ bl SaveIntegerBits
adds r1, r5, 0
adds r1, 0xC
adds r0, r4, 0
movs r2, 0x9
- bl sub_809488C
+ bl SaveIntegerBits
adds r1, r5, 0
adds r1, 0xE
adds r0, r4, 0
movs r2, 0x9
- bl sub_809488C
+ bl SaveIntegerBits
adds r1, r5, 0
adds r1, 0x10
adds r0, r4, 0
movs r2, 0x8
- bl sub_809488C
+ bl SaveIntegerBits
adds r1, r5, 0
adds r1, 0x11
adds r0, r4, 0
movs r2, 0x4
- bl sub_809488C
+ bl SaveIntegerBits
adds r1, r5, 0
adds r1, 0x12
adds r0, r4, 0
movs r2, 0x8
- bl sub_809488C
+ bl SaveIntegerBits
adds r1, r5, 0
adds r1, 0x13
adds r0, r4, 0
movs r2, 0x6
- bl sub_809488C
+ bl SaveIntegerBits
adds r1, r5, 0
adds r1, 0x8
adds r0, r4, 0
movs r2, 0x18
- bl sub_809488C
+ bl SaveIntegerBits
adds r1, r5, 0x4
adds r0, r4, 0
- bl sub_80902F4
+ bl xxx_save_poke_sub_4_80902F4
pop {r4,r5}
pop {r0}
bx r0
diff --git a/asm/code_8097670.s b/asm/code_8097670.s
index d84260c..0039819 100644
--- a/asm/code_8097670.s
+++ b/asm/code_8097670.s
@@ -463,63 +463,63 @@ sub_8097C18:
adds r1, 0x4
adds r0, r5, 0
movs r2, 0x11
- bl sub_809488C
+ bl SaveIntegerBits
ldr r1, [r4]
adds r1, 0x8
adds r0, r5, 0
movs r2, 0x11
- bl sub_809488C
+ bl SaveIntegerBits
ldr r1, [r4]
adds r1, 0xC
adds r0, r5, 0
movs r2, 0x11
- bl sub_809488C
+ bl SaveIntegerBits
ldr r1, [r4]
adds r0, r5, 0
movs r2, 0x20
- bl sub_809488C
+ bl SaveIntegerBits
ldr r1, [r4]
adds r1, 0x14
adds r0, r5, 0
movs r2, 0xE
- bl sub_809488C
+ bl SaveIntegerBits
ldr r1, [r4]
adds r1, 0x16
adds r0, r5, 0
movs r2, 0xE
- bl sub_809488C
+ bl SaveIntegerBits
ldr r1, [r4]
adds r1, 0x18
adds r0, r5, 0
movs r2, 0x9
- bl sub_809488C
+ bl SaveIntegerBits
ldr r1, [r4]
adds r1, 0xC0
adds r0, r5, 0
movs r2, 0x11
- bl sub_809488C
+ bl SaveIntegerBits
ldr r1, [r4]
adds r1, 0x1C
movs r6, 0xE0
lsls r6, 1
adds r0, r5, 0
adds r2, r6, 0
- bl sub_809488C
+ bl SaveIntegerBits
ldr r1, [r4]
adds r1, 0x54
adds r0, r5, 0
adds r2, r6, 0
- bl sub_809488C
+ bl SaveIntegerBits
ldr r1, [r4]
adds r1, 0x8C
movs r2, 0xD0
lsls r2, 1
adds r0, r5, 0
- bl sub_809488C
+ bl SaveIntegerBits
ldr r1, [r4]
adds r1, 0x10
adds r0, r5, 0
- bl sub_80902F4
+ bl xxx_save_poke_sub_4_80902F4
pop {r4-r6}
pop {r0}
bx r0
@@ -535,63 +535,63 @@ sub_8097CC0:
ldr r1, [r4]
adds r1, 0x4
movs r2, 0x11
- bl sub_8094924
+ bl RestoreIntegerBits
ldr r1, [r4]
adds r1, 0x8
adds r0, r5, 0
movs r2, 0x11
- bl sub_8094924
+ bl RestoreIntegerBits
ldr r1, [r4]
adds r1, 0xC
adds r0, r5, 0
movs r2, 0x11
- bl sub_8094924
+ bl RestoreIntegerBits
ldr r1, [r4]
adds r0, r5, 0
movs r2, 0x20
- bl sub_8094924
+ bl RestoreIntegerBits
ldr r1, [r4]
adds r1, 0x14
adds r0, r5, 0
movs r2, 0xE
- bl sub_8094924
+ bl RestoreIntegerBits
ldr r1, [r4]
adds r1, 0x16
adds r0, r5, 0
movs r2, 0xE
- bl sub_8094924
+ bl RestoreIntegerBits
ldr r1, [r4]
adds r1, 0x18
adds r0, r5, 0
movs r2, 0x9
- bl sub_8094924
+ bl RestoreIntegerBits
ldr r1, [r4]
adds r1, 0xC0
adds r0, r5, 0
movs r2, 0x11
- bl sub_8094924
+ bl RestoreIntegerBits
ldr r1, [r4]
adds r1, 0x1C
movs r6, 0xE0
lsls r6, 1
adds r0, r5, 0
adds r2, r6, 0
- bl sub_8094924
+ bl RestoreIntegerBits
ldr r1, [r4]
adds r1, 0x54
adds r0, r5, 0
adds r2, r6, 0
- bl sub_8094924
+ bl RestoreIntegerBits
ldr r1, [r4]
adds r1, 0x8C
movs r2, 0xD0
lsls r2, 1
adds r0, r5, 0
- bl sub_8094924
+ bl RestoreIntegerBits
ldr r1, [r4]
adds r1, 0x10
adds r0, r5, 0
- bl sub_8090314
+ bl xxx_restore_poke_sub_4_8090314
pop {r4-r6}
pop {r0}
bx r0
@@ -607,7 +607,7 @@ sub_8097D60:
adds r2, r1, 0
mov r0, sp
adds r1, r3, 0
- bl sub_809486C
+ bl xxx_init_struct_8094924_save_809486C
mov r0, sp
bl WriteGameOptions
mov r0, sp
@@ -632,7 +632,7 @@ sub_8097D98:
adds r2, r1, 0
mov r0, sp
adds r1, r3, 0
- bl sub_809485C
+ bl xxx_init_struct_8094924_restore_809485C
mov r0, sp
bl ReadGameOptions
mov r0, sp
diff --git a/asm/pokemon.s b/asm/pokemon.s
index 5fc8e9e..d5c7f42 100644
--- a/asm/pokemon.s
+++ b/asm/pokemon.s
@@ -1182,138 +1182,5 @@ _0808D6CE:
.align 2, 0
_0808D6E4: .4byte gRecruitedPokemonRef
thumb_func_end sub_808D6A4
-
- thumb_func_start sub_808D6E8
-sub_808D6E8:
- push {r4-r7,lr}
- mov r7, r8
- push {r7}
- movs r7, 0
- movs r5, 0
- movs r4, 0
- ldr r0, _0808D740
- mov r8, r0
- movs r6, 0x1
-_0808D6FA:
- movs r0, 0x58
- adds r1, r4, 0
- muls r1, r0
- mov r2, r8
- ldr r0, [r2]
- adds r2, r0, r1
- ldrh r1, [r2]
- adds r0, r6, 0
- ands r0, r1
- cmp r0, 0
- beq _0808D728
- lsrs r0, r1, 1
- ands r0, r6
- cmp r0, 0
- beq _0808D728
- movs r1, 0x8
- ldrsh r0, [r2, r1]
- bl GetPokemonSize
- lsls r0, 24
- lsrs r0, 24
- adds r5, r0
- adds r7, 0x1
-_0808D728:
- adds r4, 0x1
- movs r0, 0xCE
- lsls r0, 1
- cmp r4, r0
- ble _0808D6FA
- cmp r5, 0x5
- bgt _0808D744
- cmp r7, 0x3
- bgt _0808D744
- movs r0, 0x1
- b _0808D746
- .align 2, 0
-_0808D740: .4byte gRecruitedPokemonRef
-_0808D744:
- movs r0, 0
-_0808D746:
- pop {r3}
- mov r8, r3
- pop {r4-r7}
- pop {r1}
- bx r1
- thumb_func_end sub_808D6E8
-
- thumb_func_start sub_808D750
-sub_808D750:
- push {r4-r7,lr}
- mov r7, r9
- mov r6, r8
- push {r6,r7}
- lsls r0, 16
- asrs r0, 16
- mov r8, r0
- movs r6, 0
- movs r5, 0
- movs r4, 0
- ldr r0, _0808D7C8
- mov r9, r0
- movs r7, 0x1
-_0808D76A:
- movs r0, 0x58
- adds r1, r4, 0
- muls r1, r0
- mov r2, r9
- ldr r0, [r2]
- adds r1, r0, r1
- ldrh r2, [r1]
- adds r0, r7, 0
- ands r0, r2
- cmp r0, 0
- beq _0808D798
- lsrs r0, r2, 1
- ands r0, r7
- cmp r0, 0
- beq _0808D798
- movs r2, 0x8
- ldrsh r0, [r1, r2]
- bl GetPokemonSize
- lsls r0, 24
- lsrs r0, 24
- adds r5, r0
- adds r6, 0x1
-_0808D798:
- adds r4, 0x1
- movs r0, 0xCE
- lsls r0, 1
- cmp r4, r0
- ble _0808D76A
- cmp r6, 0x3
- bgt _0808D7CC
- ldr r2, _0808D7C8
- movs r0, 0x58
- mov r1, r8
- muls r1, r0
- ldr r0, [r2]
- adds r1, r0, r1
- movs r2, 0x8
- ldrsh r0, [r1, r2]
- bl GetPokemonSize
- lsls r0, 24
- lsrs r0, 24
- adds r5, r0
- cmp r5, 0x6
- bgt _0808D7CC
- movs r0, 0x1
- b _0808D7CE
- .align 2, 0
-_0808D7C8: .4byte gRecruitedPokemonRef
-_0808D7CC:
- movs r0, 0
-_0808D7CE:
- pop {r3,r4}
- mov r8, r3
- mov r9, r4
- pop {r4-r7}
- pop {r1}
- bx r1
- thumb_func_end sub_808D750
-
+
.align 2,0
diff --git a/asm/pokemon_2.s b/asm/pokemon_2.s
index cf8c39d..dec099a 100644
--- a/asm/pokemon_2.s
+++ b/asm/pokemon_2.s
@@ -3,181 +3,7 @@
.syntax unified
- .text
-
- thumb_func_start sub_808E400
-sub_808E400:
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- sub sp, 0x8
- lsls r0, 16
- asrs r0, 16
- mov r9, r0
- lsls r2, 24
- lsrs r2, 24
- str r2, [sp]
- lsls r3, 24
- lsrs r3, 24
- str r3, [sp, 0x4]
- movs r0, 0
- mov r10, r0
- movs r7, 0x1
- adds r6, r1, 0
-_0808E426:
- lsls r0, r7, 16
- asrs r5, r0, 16
- mov r8, r5
- adds r0, r5, 0
- bl GetPokemonEvolveFrom
- lsls r0, 16
- asrs r0, 16
- cmp r9, r0
- bne _0808E46C
- ldr r0, [sp]
- cmp r0, 0
- bne _0808E456
- mov r0, r9
- bl GetPokemonSize
- adds r4, r0, 0
- adds r0, r5, 0
- bl GetPokemonSize
- lsls r4, 24
- lsls r0, 24
- cmp r4, r0
- bne _0808E46C
-_0808E456:
- ldr r0, [sp, 0x4]
- cmp r0, 0
- bne _0808E462
- ldr r0, _0808E488
- cmp r5, r0
- beq _0808E46C
-_0808E462:
- mov r0, r8
- strh r0, [r6]
- adds r6, 0x2
- movs r0, 0x1
- add r10, r0
-_0808E46C:
- adds r7, 0x1
- ldr r0, _0808E48C
- cmp r7, r0
- ble _0808E426
- mov r0, r10
- add sp, 0x8
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r1}
- bx r1
- .align 2, 0
-_0808E488: .4byte 0x0000013d
-_0808E48C: .4byte 0x000001a7
- thumb_func_end sub_808E400
-
- thumb_func_start sub_808E490
-sub_808E490:
- push {r4-r7,lr}
- mov r7, r8
- push {r7}
- sub sp, 0x20
- mov r8, r0
- lsls r1, 16
- asrs r1, 16
- ldr r3, _0808E4F8
- mov r0, sp
- movs r2, 0x1
- bl sub_808E0AC
- adds r7, r0, 0
- cmp r7, 0
- bne _0808E4B8
- movs r7, 0x1
- mov r1, sp
- movs r0, 0xCC
- lsls r0, 1
- strh r0, [r1]
-_0808E4B8:
- movs r4, 0
- cmp r4, r7
- bge _0808E4D8
- mov r6, sp
- mov r5, r8
- adds r4, r7, 0
-_0808E4C4:
- ldrh r1, [r6]
- adds r0, r5, 0
- bl sub_8092AD4
- adds r6, 0x2
- adds r5, 0x8
- subs r4, 0x1
- cmp r4, 0
- bne _0808E4C4
- adds r4, r7, 0
-_0808E4D8:
- cmp r4, 0x3
- bgt _0808E4EC
- movs r1, 0
- lsls r0, r4, 3
- add r0, r8
-_0808E4E2:
- strb r1, [r0]
- adds r0, 0x8
- adds r4, 0x1
- cmp r4, 0x3
- ble _0808E4E2
-_0808E4EC:
- add sp, 0x20
- pop {r3}
- mov r8, r3
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_0808E4F8: .4byte 0x000003e7
- thumb_func_end sub_808E490
-
- thumb_func_start sub_808E4FC
-sub_808E4FC:
- push {lr}
- sub sp, 0x10
- ldr r1, _0808E518
- lsls r0, 2
- adds r0, r1
- ldr r0, [r0]
- mov r1, sp
- bl sub_8097DF0
- ldr r0, [sp]
- ldr r0, [r0]
- add sp, 0x10
- pop {r1}
- bx r1
- .align 2, 0
-_0808E518: .4byte gFormattedStatusNames
- thumb_func_end sub_808E4FC
-
- thumb_func_start sub_808E51C
-sub_808E51C:
- push {lr}
- sub sp, 0x10
- ldr r1, _0808E538
- lsls r0, 2
- adds r0, r1
- ldr r0, [r0]
- mov r1, sp
- bl sub_8097DF0
- ldr r0, [sp]
- ldr r0, [r0, 0x4]
- add sp, 0x10
- pop {r1}
- bx r1
- .align 2, 0
-_0808E538: .4byte gFormattedStatusNames
- thumb_func_end sub_808E51C
+ .text
thumb_func_start sub_808E53C
sub_808E53C:
diff --git a/asm/pokemon_3.s b/asm/pokemon_3.s
index f0308d7..ccf5979 100644
--- a/asm/pokemon_3.s
+++ b/asm/pokemon_3.s
@@ -3,838 +3,7 @@
.syntax unified
- .text
-
- thumb_func_start SaveRecruitedPokemon
-SaveRecruitedPokemon:
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- sub sp, 0x24
- adds r3, r0, 0
- adds r2, r1, 0
- add r4, sp, 0xC
- adds r0, r4, 0
- adds r1, r3, 0
- bl sub_809486C
- mov r10, r4
- mov r0, sp
- adds r0, 0x1E
- str r0, [sp, 0x20]
- add r1, sp, 0x1C
- mov r8, r1
- ldr r0, _0808EDF0
- adds r2, r0, 0
- mov r1, sp
- movs r5, 0x5
-_0808EDA6:
- ldrh r0, [r1]
- orrs r0, r2
- strh r0, [r1]
- adds r1, 0x2
- subs r5, 0x1
- cmp r5, 0
- bge _0808EDA6
- movs r0, 0x1
- negs r0, r0
- ldr r1, [sp, 0x20]
- strh r0, [r1]
- movs r5, 0
- mov r4, sp
-_0808EDC0:
- ldr r2, _0808EDF4
- movs r0, 0x58
- adds r1, r5, 0
- muls r1, r0
- ldr r0, [r2]
- adds r1, r0, r1
- ldrh r2, [r1]
- movs r0, 0x1
- ands r0, r2
- cmp r0, 0
- beq _0808EDF8
- movs r0, 0x2
- ands r0, r2
- cmp r0, 0
- beq _0808EDE2
- strh r5, [r4]
- adds r4, 0x2
-_0808EDE2:
- ldrb r0, [r1, 0x2]
- cmp r0, 0
- beq _0808EDFA
- ldr r0, [sp, 0x20]
- strh r5, [r0]
- b _0808EDFA
- .align 2, 0
-_0808EDF0: .4byte 0x0000ffff
-_0808EDF4: .4byte gRecruitedPokemonRef
-_0808EDF8:
- strb r0, [r1, 0x3]
-_0808EDFA:
- mov r0, r10
- bl sub_808EFA0
- adds r5, 0x1
- movs r0, 0xCE
- lsls r0, 1
- cmp r5, r0
- ble _0808EDC0
- ldr r1, _0808EE34
- mov r9, r1
- mov r4, r10
- ldr r7, _0808EE38
- movs r6, 0
- movs r5, 0x3
-_0808EE16:
- mov r1, r9
- ldr r0, [r1]
- adds r0, r6, r0
- ldr r1, _0808EE38
- adds r0, r1
- ldrb r0, [r0]
- movs r1, 0x1
- ands r1, r0
- cmp r1, 0
- beq _0808EE3C
- movs r0, 0xFF
- mov r1, r8
- strb r0, [r1]
- b _0808EE40
- .align 2, 0
-_0808EE34: .4byte gRecruitedPokemonRef
-_0808EE38: .4byte 0x00008f88
-_0808EE3C:
- mov r0, r8
- strb r1, [r0]
-_0808EE40:
- adds r0, r4, 0
- mov r1, r8
- movs r2, 0x1
- bl sub_809488C
- mov r0, r9
- ldr r1, [r0]
- adds r1, r7
- adds r0, r4, 0
- bl sub_808EFA0
- adds r7, 0x58
- adds r6, 0x58
- subs r5, 0x1
- cmp r5, 0
- bge _0808EE16
- mov r4, sp
- movs r5, 0x5
-_0808EE64:
- mov r0, r10
- adds r1, r4, 0
- movs r2, 0x10
- bl sub_809488C
- adds r4, 0x2
- subs r5, 0x1
- cmp r5, 0
- bge _0808EE64
- mov r0, r10
- ldr r1, [sp, 0x20]
- movs r2, 0x10
- bl sub_809488C
- mov r0, r10
- bl nullsub_102
- mov r1, r10
- ldr r0, [r1, 0x8]
- add sp, 0x24
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r1}
- bx r1
- thumb_func_end SaveRecruitedPokemon
-
- thumb_func_start ReadRecruitedPokemon
-ReadRecruitedPokemon:
- push {r4-r7,lr}
- mov r7, r8
- push {r7}
- sub sp, 0x14
- adds r3, r0, 0
- adds r2, r1, 0
- mov r0, sp
- adds r1, r3, 0
- bl sub_809485C
- movs r5, 0
- add r7, sp, 0x10
- movs r0, 0x12
- add r0, sp
- mov r8, r0
- ldr r6, _0808EF10
- movs r4, 0
-_0808EEBE:
- ldr r1, [r6]
- adds r1, r4
- mov r0, sp
- bl sub_808F068
- adds r4, 0x58
- adds r5, 0x1
- movs r0, 0xCE
- lsls r0, 1
- cmp r5, r0
- ble _0808EEBE
- movs r5, 0
- adds r6, r7, 0
- ldr r7, _0808EF10
-_0808EEDA:
- mov r0, sp
- adds r1, r6, 0
- movs r2, 0x1
- bl sub_8094924
- movs r0, 0x58
- adds r4, r5, 0
- muls r4, r0
- ldr r1, _0808EF14
- adds r0, r4, r1
- ldr r1, [r7]
- adds r1, r0
- mov r0, sp
- bl sub_808F068
- ldrb r0, [r6]
- movs r1, 0x1
- ands r1, r0
- cmp r1, 0
- beq _0808EF18
- ldr r0, [r7]
- adds r0, r4
- ldr r2, _0808EF14
- adds r0, r2
- movs r1, 0x3
- b _0808EF20
- .align 2, 0
-_0808EF10: .4byte gRecruitedPokemonRef
-_0808EF14: .4byte 0x00008f88
-_0808EF18:
- ldr r0, [r7]
- adds r0, r4
- ldr r3, _0808EF98
- adds r0, r3
-_0808EF20:
- strh r1, [r0]
- adds r5, 0x1
- cmp r5, 0x3
- ble _0808EEDA
- mov r4, r8
- movs r6, 0xCE
- lsls r6, 1
- movs r5, 0x5
-_0808EF30:
- mov r0, sp
- adds r1, r4, 0
- movs r2, 0x10
- bl sub_8094924
- ldrh r0, [r4]
- cmp r0, r6
- bhi _0808EF56
- ldr r0, _0808EF9C
- ldr r2, [r0]
- movs r0, 0
- ldrsh r1, [r4, r0]
- movs r0, 0x58
- muls r0, r1
- adds r2, r0
- ldrh r1, [r2]
- movs r0, 0x2
- orrs r0, r1
- strh r0, [r2]
-_0808EF56:
- subs r5, 0x1
- cmp r5, 0
- bge _0808EF30
- mov r0, sp
- mov r1, r8
- movs r2, 0x10
- bl sub_8094924
- mov r2, r8
- ldrh r1, [r2]
- movs r0, 0xCE
- lsls r0, 1
- cmp r1, r0
- bhi _0808EF84
- ldr r0, _0808EF9C
- ldr r1, [r0]
- movs r3, 0
- ldrsh r2, [r2, r3]
- movs r0, 0x58
- muls r0, r2
- adds r1, r0
- movs r0, 0x1
- strb r0, [r1, 0x2]
-_0808EF84:
- mov r0, sp
- bl nullsub_102
- ldr r0, [sp, 0x8]
- add sp, 0x14
- pop {r3}
- mov r8, r3
- pop {r4-r7}
- pop {r1}
- bx r1
- .align 2, 0
-_0808EF98: .4byte 0x00008f88
-_0808EF9C: .4byte gRecruitedPokemonRef
- thumb_func_end ReadRecruitedPokemon
-
- thumb_func_start sub_808EFA0
-sub_808EFA0:
- push {r4,r5,lr}
- adds r4, r0, 0
- adds r5, r1, 0
- adds r1, r5, 0x3
- movs r2, 0x7
- bl sub_809488C
- adds r1, r5, 0
- adds r1, 0x8
- adds r0, r4, 0
- movs r2, 0x9
- bl sub_809488C
- adds r1, r5, 0x4
- adds r0, r4, 0
- bl sub_80902F4
- adds r1, r5, 0
- adds r1, 0xC
- adds r0, r4, 0
- bl sub_808F41C
- adds r1, r5, 0
- adds r1, 0x10
- adds r0, r4, 0
- bl sub_808F41C
- adds r1, r5, 0
- adds r1, 0x14
- adds r0, r4, 0
- movs r2, 0xA
- bl sub_809488C
- adds r1, r5, 0
- adds r1, 0x16
- adds r0, r4, 0
- movs r2, 0xA
- bl sub_809488C
- adds r1, r5, 0
- adds r1, 0x18
- adds r0, r4, 0
- movs r2, 0x8
- bl sub_809488C
- adds r1, r5, 0
- adds r1, 0x19
- adds r0, r4, 0
- movs r2, 0x8
- bl sub_809488C
- adds r1, r5, 0
- adds r1, 0x1A
- adds r0, r4, 0
- movs r2, 0x8
- bl sub_809488C
- adds r1, r5, 0
- adds r1, 0x1B
- adds r0, r4, 0
- movs r2, 0x8
- bl sub_809488C
- adds r1, r5, 0
- adds r1, 0x1C
- adds r0, r4, 0
- movs r2, 0x18
- bl sub_809488C
- adds r1, r5, 0
- adds r1, 0x20
- adds r0, r4, 0
- movs r2, 0x18
- bl sub_809488C
- adds r1, r5, 0
- adds r1, 0x24
- adds r0, r4, 0
- movs r2, 0x4
- bl sub_809488C
- adds r1, r5, 0
- adds r1, 0x28
- adds r0, r4, 0
- bl sub_8091DE0
- adds r1, r5, 0
- adds r1, 0x2C
- adds r0, r4, 0
- bl sub_8094108
- adds r1, r5, 0
- adds r1, 0x4C
- adds r0, r4, 0
- movs r2, 0x50
- bl sub_809488C
- pop {r4,r5}
- pop {r0}
- bx r0
- thumb_func_end sub_808EFA0
-
- thumb_func_start sub_808F068
-sub_808F068:
- push {r4-r6,lr}
- adds r5, r0, 0
- adds r4, r1, 0
- adds r0, r4, 0
- movs r1, 0
- movs r2, 0x58
- bl memset
- movs r6, 0
- movs r0, 0
- strh r0, [r4]
- strb r6, [r4, 0x2]
- adds r1, r4, 0x3
- adds r0, r5, 0
- movs r2, 0x7
- bl sub_8094924
- ldrb r0, [r4, 0x3]
- cmp r0, 0
- beq _0808F098
- ldrh r0, [r4]
- movs r1, 0x1
- orrs r0, r1
- strh r0, [r4]
-_0808F098:
- adds r1, r4, 0
- adds r1, 0x8
- adds r0, r5, 0
- movs r2, 0x9
- bl sub_8094924
- adds r1, r4, 0x4
- adds r0, r5, 0
- bl sub_8090314
- adds r1, r4, 0
- adds r1, 0xC
- adds r0, r5, 0
- bl sub_808F410
- adds r1, r4, 0
- adds r1, 0x10
- adds r0, r5, 0
- bl sub_808F410
- adds r1, r4, 0
- adds r1, 0x14
- adds r0, r5, 0
- movs r2, 0xA
- bl sub_8094924
- adds r1, r4, 0
- adds r1, 0x16
- adds r0, r5, 0
- movs r2, 0xA
- bl sub_8094924
- adds r1, r4, 0
- adds r1, 0x18
- adds r0, r5, 0
- movs r2, 0x8
- bl sub_8094924
- adds r1, r4, 0
- adds r1, 0x19
- adds r0, r5, 0
- movs r2, 0x8
- bl sub_8094924
- adds r1, r4, 0
- adds r1, 0x1A
- adds r0, r5, 0
- movs r2, 0x8
- bl sub_8094924
- adds r1, r4, 0
- adds r1, 0x1B
- adds r0, r5, 0
- movs r2, 0x8
- bl sub_8094924
- adds r1, r4, 0
- adds r1, 0x1C
- adds r0, r5, 0
- movs r2, 0x18
- bl sub_8094924
- adds r1, r4, 0
- adds r1, 0x20
- adds r0, r5, 0
- movs r2, 0x18
- bl sub_8094924
- adds r1, r4, 0
- adds r1, 0x24
- adds r0, r5, 0
- movs r2, 0x4
- bl sub_8094924
- adds r1, r4, 0
- adds r1, 0x28
- adds r0, r5, 0
- bl sub_8091DC0
- adds r1, r4, 0
- adds r1, 0x2C
- adds r0, r5, 0
- bl sub_8094128
- adds r1, r4, 0
- adds r1, 0x4C
- adds r0, r5, 0
- movs r2, 0x50
- bl sub_8094924
- pop {r4-r6}
- pop {r0}
- bx r0
- thumb_func_end sub_808F068
-
- thumb_func_start sub_808F154
-sub_808F154:
- push {r4-r7,lr}
- sub sp, 0x14
- adds r3, r0, 0
- adds r2, r1, 0
- mov r0, sp
- adds r1, r3, 0
- bl sub_809486C
- add r2, sp, 0x10
- movs r0, 0xFF
- strb r0, [r2]
- mov r1, sp
- adds r1, 0x11
- movs r0, 0
- strb r0, [r1]
- movs r5, 0
- adds r6, r2, 0
- adds r7, r1, 0
-_0808F178:
- ldr r1, _0808F2A8
- movs r0, 0x64
- muls r0, r5
- ldr r2, _0808F2AC
- adds r0, r2
- ldr r1, [r1]
- adds r4, r1, r0
- mov r0, sp
- adds r1, r4, 0
- movs r2, 0x2
- bl sub_809488C
- ldrb r0, [r4, 0x2]
- adds r1, r7, 0
- cmp r0, 0
- beq _0808F19A
- adds r1, r6, 0
-_0808F19A:
- mov r0, sp
- movs r2, 0x1
- bl sub_809488C
- adds r1, r4, 0x3
- mov r0, sp
- movs r2, 0x7
- bl sub_809488C
- adds r1, r4, 0x4
- mov r0, sp
- bl sub_80902F4
- adds r1, r4, 0
- adds r1, 0x8
- mov r0, sp
- movs r2, 0xA
- bl sub_809488C
- adds r1, r4, 0
- adds r1, 0xA
- mov r0, sp
- movs r2, 0x10
- bl sub_809488C
- adds r1, r4, 0
- adds r1, 0xC
- mov r0, sp
- movs r2, 0x10
- bl sub_809488C
- adds r1, r4, 0
- adds r1, 0xE
- mov r0, sp
- movs r2, 0x9
- bl sub_809488C
- adds r1, r4, 0
- adds r1, 0x10
- mov r0, sp
- movs r2, 0xA
- bl sub_809488C
- adds r1, r4, 0
- adds r1, 0x12
- mov r0, sp
- movs r2, 0xA
- bl sub_809488C
- adds r1, r4, 0
- adds r1, 0x14
- mov r0, sp
- movs r2, 0x8
- bl sub_809488C
- adds r1, r4, 0
- adds r1, 0x15
- mov r0, sp
- movs r2, 0x8
- bl sub_809488C
- adds r1, r4, 0
- adds r1, 0x16
- mov r0, sp
- movs r2, 0x8
- bl sub_809488C
- adds r1, r4, 0
- adds r1, 0x17
- mov r0, sp
- movs r2, 0x8
- bl sub_809488C
- adds r1, r4, 0
- adds r1, 0x18
- mov r0, sp
- movs r2, 0x18
- bl sub_809488C
- adds r1, r4, 0
- adds r1, 0x1C
- mov r0, sp
- bl sub_8094184
- adds r1, r4, 0
- adds r1, 0x40
- mov r0, sp
- bl sub_8091E28
- adds r1, r4, 0
- adds r1, 0x44
- mov r0, sp
- bl sub_809449C
- adds r1, r4, 0
- adds r1, 0x48
- mov r0, sp
- bl sub_809449C
- adds r1, r4, 0
- adds r1, 0x4C
- mov r0, sp
- movs r2, 0x18
- bl sub_809488C
- adds r1, r4, 0
- adds r1, 0x50
- mov r0, sp
- movs r2, 0x4
- bl sub_809488C
- adds r1, r4, 0
- adds r1, 0x54
- mov r0, sp
- bl sub_808F448
- adds r1, r4, 0
- adds r1, 0x58
- mov r0, sp
- movs r2, 0x50
- bl sub_809488C
- adds r5, 0x1
- cmp r5, 0x3
- bgt _0808F296
- b _0808F178
-_0808F296:
- mov r0, sp
- bl nullsub_102
- ldr r0, [sp, 0x8]
- add sp, 0x14
- pop {r4-r7}
- pop {r1}
- bx r1
- .align 2, 0
-_0808F2A8: .4byte gRecruitedPokemonRef
-_0808F2AC: .4byte 0x00008df8
- thumb_func_end sub_808F154
-
- thumb_func_start sub_808F2B0
-sub_808F2B0:
- push {r4-r6,lr}
- sub sp, 0x14
- adds r3, r0, 0
- adds r2, r1, 0
- mov r0, sp
- adds r1, r3, 0
- bl sub_809485C
- movs r5, 0
- add r6, sp, 0x10
-_0808F2C4:
- ldr r1, _0808F300
- movs r0, 0x64
- muls r0, r5
- ldr r2, _0808F304
- adds r0, r2
- ldr r1, [r1]
- adds r4, r1, r0
- adds r0, r4, 0
- movs r1, 0
- movs r2, 0x64
- bl memset
- mov r0, sp
- adds r1, r4, 0
- movs r2, 0x2
- bl sub_8094924
- mov r0, sp
- adds r1, r6, 0
- movs r2, 0x1
- bl sub_8094924
- ldrb r0, [r6]
- movs r2, 0x1
- adds r1, r2, 0
- ands r1, r0
- cmp r1, 0
- beq _0808F308
- strb r2, [r4, 0x2]
- b _0808F30A
- .align 2, 0
-_0808F300: .4byte gRecruitedPokemonRef
-_0808F304: .4byte 0x00008df8
-_0808F308:
- strb r1, [r4, 0x2]
-_0808F30A:
- adds r1, r4, 0x3
- mov r0, sp
- movs r2, 0x7
- bl sub_8094924
- adds r1, r4, 0x4
- mov r0, sp
- bl sub_8090314
- adds r1, r4, 0
- adds r1, 0x8
- mov r0, sp
- movs r2, 0xA
- bl sub_8094924
- adds r1, r4, 0
- adds r1, 0xA
- mov r0, sp
- movs r2, 0x10
- bl sub_8094924
- adds r1, r4, 0
- adds r1, 0xC
- mov r0, sp
- movs r2, 0x10
- bl sub_8094924
- adds r1, r4, 0
- adds r1, 0xE
- mov r0, sp
- movs r2, 0x9
- bl sub_8094924
- adds r1, r4, 0
- adds r1, 0x10
- mov r0, sp
- movs r2, 0xA
- bl sub_8094924
- adds r1, r4, 0
- adds r1, 0x12
- mov r0, sp
- movs r2, 0xA
- bl sub_8094924
- adds r1, r4, 0
- adds r1, 0x14
- mov r0, sp
- movs r2, 0x8
- bl sub_8094924
- adds r1, r4, 0
- adds r1, 0x15
- mov r0, sp
- movs r2, 0x8
- bl sub_8094924
- adds r1, r4, 0
- adds r1, 0x16
- mov r0, sp
- movs r2, 0x8
- bl sub_8094924
- adds r1, r4, 0
- adds r1, 0x17
- mov r0, sp
- movs r2, 0x8
- bl sub_8094924
- adds r1, r4, 0
- adds r1, 0x18
- mov r0, sp
- movs r2, 0x18
- bl sub_8094924
- adds r1, r4, 0
- adds r1, 0x1C
- mov r0, sp
- bl sub_80941FC
- adds r1, r4, 0
- adds r1, 0x40
- mov r0, sp
- bl sub_8091E00
- adds r1, r4, 0
- adds r1, 0x44
- mov r0, sp
- bl sub_809447C
- adds r1, r4, 0
- adds r1, 0x48
- mov r0, sp
- bl sub_809447C
- adds r1, r4, 0
- adds r1, 0x4C
- mov r0, sp
- movs r2, 0x18
- bl sub_8094924
- adds r1, r4, 0
- adds r1, 0x50
- mov r0, sp
- movs r2, 0x4
- bl sub_8094924
- adds r1, r4, 0
- adds r1, 0x54
- mov r0, sp
- bl sub_808F428
- adds r1, r4, 0
- adds r1, 0x58
- mov r0, sp
- movs r2, 0x50
- bl sub_8094924
- adds r5, 0x1
- cmp r5, 0x3
- bgt _0808F3FE
- b _0808F2C4
-_0808F3FE:
- mov r0, sp
- bl nullsub_102
- ldr r0, [sp, 0x8]
- add sp, 0x14
- pop {r4-r6}
- pop {r1}
- bx r1
- thumb_func_end sub_808F2B0
-
- thumb_func_start sub_808F410
-sub_808F410:
- push {lr}
- movs r2, 0x7
- bl sub_8094924
- pop {r0}
- bx r0
- thumb_func_end sub_808F410
-
- thumb_func_start sub_808F41C
-sub_808F41C:
- push {lr}
- movs r2, 0x7
- bl sub_809488C
- pop {r0}
- bx r0
- thumb_func_end sub_808F41C
-
- thumb_func_start sub_808F428
-sub_808F428:
- push {r4,r5,lr}
- adds r5, r0, 0
- adds r4, r1, 0
- movs r2, 0xA
- bl sub_8094924
- adds r4, 0x2
- adds r0, r5, 0
- adds r1, r4, 0
- movs r2, 0x5
- bl sub_8094924
- pop {r4,r5}
- pop {r0}
- bx r0
- thumb_func_end sub_808F428
-
- thumb_func_start sub_808F448
-sub_808F448:
- push {r4,r5,lr}
- adds r5, r0, 0
- adds r4, r1, 0
- movs r2, 0xA
- bl sub_809488C
- adds r4, 0x2
- adds r0, r5, 0
- adds r1, r4, 0
- movs r2, 0x5
- bl sub_809488C
- pop {r4,r5}
- pop {r0}
- bx r0
- thumb_func_end sub_808F448
+ .text
thumb_func_start sub_808F468
sub_808F468:
diff --git a/include/code_8092334.h b/include/code_8092334.h
index 6f7fcae..0548659 100644
--- a/include/code_8092334.h
+++ b/include/code_8092334.h
@@ -11,11 +11,11 @@ struct unkStruct_8094924
u32 unkC;
};
-void sub_809486C(struct unkStruct_8094924 *r0, u8 *r1, s32 size);
+void xxx_init_struct_8094924_save_809486C(struct unkStruct_8094924 *r0, u8 *r1, s32 size);
void nullsub_102(struct unkStruct_8094924 *r0);
-void sub_809488C(struct unkStruct_8094924 *r0, u8 *r1, s32 size);
-void sub_809485C(struct unkStruct_8094924 *r0, u8 *r1, s32 size);
+void SaveIntegerBits(struct unkStruct_8094924 *r0, void *r1, s32 size);
+void xxx_init_struct_8094924_restore_809485C(struct unkStruct_8094924 *r0, u8 *r1, s32 size);
void sub_80948E4(struct unkStruct_8094924 *r0, u8 *r1, s32 size);
-void sub_8094924(struct unkStruct_8094924 *r0, u8 *r1, s32 size);
+void RestoreIntegerBits(struct unkStruct_8094924 *r0, void *r1, s32 size);
#endif \ No newline at end of file
diff --git a/include/item.h b/include/item.h
index 421eb89..84f9de2 100644
--- a/include/item.h
+++ b/include/item.h
@@ -364,11 +364,11 @@ void sub_8091BB4(u8);
void sub_8090F58(void*, u8 *, struct ItemSlot *, struct unkStruct_8090F58*);
void SlotToHeldItem(struct HeldItem *held,struct ItemSlot *slot);
-// some sort of weird memcpy's?
-// not sure what the second argument should be typed as
-void sub_8091DC0(struct unkStruct_8094924 *r0, u8*);
-void sub_8091DE0(struct unkStruct_8094924 *a1, u8 *a2);
-void sub_8091E00(struct unkStruct_8094924 *a1, u8 *a2);
-void sub_8091E28(struct unkStruct_8094924 *a1, u8 *a2);
+void RestoreHeldItem(struct unkStruct_8094924*, struct HeldItem*);
+void SaveHeldItem(struct unkStruct_8094924*, struct HeldItem*);
+void RestoreItemSlot(struct unkStruct_8094924 *a1, struct ItemSlot *a2);
+void SaveItemSlot(struct unkStruct_8094924 *a1, struct ItemSlot *a2);
+s32 RestoreTeamInventory(u8 *unk0, u32 size);
+s32 SaveTeamInventory(u8 *unk0, u32 size);
#endif
diff --git a/include/pokemon.h b/include/pokemon.h
index 9e3a667..874aa93 100644
--- a/include/pokemon.h
+++ b/include/pokemon.h
@@ -60,11 +60,44 @@ struct PokemonStruct
/* 0x4C */ u8 name[0xA];
};
+
+struct unkStruct_808E6F4
+{
+ s16 unk0;
+ u8 unk2;
+};
+
+struct EvolveStage
+{
+ s16 speciesNum;
+ u8 unkHasNextStage;
+};
+
struct PokemonStruct2
{
- // size 0x64
- u16 unk0;
- u8 fill[0x62];
+ // size 0x68
+ u16 unk0; // corresponds to unk0 inPokemonStruct
+ u8 unk2; // unk2
+ u8 unkHasNextStage; // unk3
+ struct unkPokeSubStruct_4 unk4; // unk4
+ u16 IQ; // IQ (other offset)
+ u16 unkA;
+ u16 unkC;
+ s16 speciesNum; // speciesNum (other offset)
+ u16 unk10; // pokeHP
+ u16 unk12; // pokeHP
+ struct Offense offense; // offense (other offset)
+ u32 unk18; // unk1C
+ struct unkPokeSubStruct_2C unk1C[4]; // unk2C
+ u8 fill3c[4];
+ /* 40 */ struct ItemSlot itemSlot; // heldItem
+ u32 unk44; // some struct
+ u32 unk48; // some struct (same type as 44)
+ u32 unk4C; // unk20
+ u8 unk50; // unk24
+ u8 fill51[3];
+ struct unkStruct_808E6F4 unk54;
+ u8 name[10]; // name (other offset)
};
struct unkStruct_203B45C
@@ -76,8 +109,8 @@ struct unkStruct_203B45C
struct EvolveStruct1
{
- /* 0x34 */ u16 evolve_from;
- /* 0x36 */ u16 evolve_type;
+ /* 0x34 */ s16 evolve_from;
+ /* 0x36 */ s16 evolve_type;
};
struct EvolveNeeds
@@ -131,48 +164,17 @@ struct gPokemon
};
-struct unkStruct_808E6F4
-{
- s16 unk0;
- u8 unk2;
-};
-
-struct EvolveStage
-{
- s16 speciesNum;
- u8 unkHasNextStage;
-};
-
-struct unkStruct_808DE50
-{
- u16 unk0; // corresponds to unk0 inPokemonStruct
- u8 unk2; // unk2
- u8 unkHasNextStage; // unk3
- struct unkPokeSubStruct_4 unk4; // unk4
- u16 IQ; // IQ (other offset)
- u16 unkA;
- u16 unkC;
- s16 speciesNum; // speciesNum (other offset)
- u16 unk10; // pokeHP
- u16 unk12; // pokeHP
- struct Offense offense; // offense (other offset)
- u32 unk18; // unk1C
- struct unkPokeSubStruct_2C unk1C[4]; // unk2C
- u8 fill3c[4];
- /* 40 */ struct ItemSlot itemSlot; // heldItem
- u32 unk44; // some struct
- u32 unk48; // some struct (same type as 44)
- u32 unk4C; // unk20
- u8 unk50; // unk24
- u8 fill51[3];
- struct unkStruct_808E6F4 unk54;
- u8 name[10]; // name (other offset)
-};
-
+// https://www.pokecommunity.com/showthread.php?t=407371
struct LevelData
{
- // only size is known
- u32 unk0[3];
+ s32 expRequired;
+ u8 gainHP;
+ u8 gainUnused;
+ u8 gainAtt;
+ u8 gainSPAtt;
+ u8 gainDef;
+ u8 gainSPDef;
+ u16 fillA;
};
struct unkStruct_808E218_arg
@@ -230,6 +232,9 @@ struct OpenedFile *GetDialogueSpriteDataPtr(s16 index);
s32 GetUnownIndex(s16 index);
void sub_808E6F4(struct unkStruct_808E6F4* a1);
s32 GetEvolutionSequence(struct PokemonStruct* pokemon, struct EvolveStage* a2);
-void xxx_pokemonstruct_to_unk_808DE50(struct unkStruct_808DE50* r0, struct PokemonStruct *r1, s32 r2);
+void xxx_pokemonstruct_to_pokemon2_808DE50(struct PokemonStruct2* r0, struct PokemonStruct *r1, s32 r2);
+void SavePokemonStruct(struct unkStruct_8094924* a1, struct PokemonStruct* pokemon);
+void RestorePokemonStruct(struct unkStruct_8094924*, struct PokemonStruct*);
+
#endif // GUARD_POKEMON_H
diff --git a/src/code_8092334.c b/src/code_8092334.c
index d03f888..16d2424 100644
--- a/src/code_8092334.c
+++ b/src/code_8092334.c
@@ -19,7 +19,7 @@ s16 sub_8094828(u16 r0, u8 itemIndex)
}
}
-void sub_809485C(struct unkStruct_8094924 *r0, u8 *r1, s32 size)
+void xxx_init_struct_8094924_restore_809485C(struct unkStruct_8094924 *r0, u8 *r1, s32 size)
{
r0->unk0 = r1;
r0->unk8 = 0;
@@ -27,7 +27,7 @@ void sub_809485C(struct unkStruct_8094924 *r0, u8 *r1, s32 size)
r0->unk4 = &r1[size];
}
-void sub_809486C(struct unkStruct_8094924 *r0, u8 *r1, s32 size)
+void xxx_init_struct_8094924_save_809486C(struct unkStruct_8094924 *r0, u8 *r1, s32 size)
{
r0->unk0 = r1;
r0->unk8 = 0;
@@ -41,7 +41,7 @@ void nullsub_102(struct unkStruct_8094924 *r0)
}
-void sub_809488C(struct unkStruct_8094924 *r0, u8 *r1, s32 size)
+void SaveIntegerBits(struct unkStruct_8094924 *r0, void *r1, s32 size)
{
s32 r5;
u8 *r6;
@@ -115,7 +115,7 @@ void sub_80948E4(struct unkStruct_8094924 *r0, u8 *r1, s32 size)
"\tbx r0");
}
-void sub_8094924(struct unkStruct_8094924 *r0, u8 *r1, s32 size)
+void RestoreIntegerBits(struct unkStruct_8094924 *r0, void *r1, s32 size)
{
s32 r6;
u8 *r2;
diff --git a/src/exclusive_pokemon_1.c b/src/exclusive_pokemon_1.c
index 37b4dfe..48b5ec5 100644
--- a/src/exclusive_pokemon_1.c
+++ b/src/exclusive_pokemon_1.c
@@ -4,7 +4,7 @@
extern struct ExclusivePokemonData *gUnknown_203B498;
extern struct ExclusivePokemon gExclusivePokemon[NUM_EXCLUSIVE_POKEMON];
-void sub_8094924(u32 *, u8 *, u32);
+void RestoreIntegerBits(u32 *, void *, u32);
void sub_80980B4(s16);
void sub_8097FA8(u8);
void sub_8098170(s32);
@@ -13,7 +13,7 @@ void sub_8097FF8(void);
u8 sub_8098100(u8);
u8 sub_8098134(s16);
u8 sub_80981A0(s32);
-void sub_809488C(u32 *, u8 *, s32);
+void SaveIntegerBits(u32 *, void *, s32);
bool8 IsExclusivePokemonUnlocked(s16 pokeID)
{
@@ -59,21 +59,21 @@ void WriteExclusivePokemon(u32 *r0)
zero = 0;
- sub_809488C(r0, (u8 *)gUnknown_203B498, 1);
+ SaveIntegerBits(r0, (u8 *)gUnknown_203B498, 1);
for(iVar2 = 0; iVar2 < 424; iVar2++)
{
stack_0 = sub_8098134(iVar2);
- sub_809488C(r0, &stack_0, 1);
+ SaveIntegerBits(r0, &stack_0, 1);
}
for(iVar2 = 0; iVar2 < 64; iVar2++)
{
stack_1 = sub_8098100(iVar2);
- sub_809488C(r0, &stack_1, 1);
+ SaveIntegerBits(r0, &stack_1, 1);
}
for(iVar2 = 0; iVar2 < 31; iVar2++)
{
stack_2 = sub_80981A0(iVar2);
- sub_809488C(r0, &stack_2, 1);
+ SaveIntegerBits(r0, &stack_2, 1);
}
for(iVar2 = 0; iVar2 < NUM_EXCLUSIVE_POKEMON; iVar2++)
{
@@ -81,7 +81,7 @@ void WriteExclusivePokemon(u32 *r0)
puVar2 = &neg_1;
else
puVar2 = &zero;
- sub_809488C(r0, puVar2, 1);
+ SaveIntegerBits(r0, puVar2, 1);
}
}
@@ -94,28 +94,28 @@ void ReadExclusivePokemon(u32 *r0)
u8 stack_3;
memset(gUnknown_203B498, 0, sizeof(struct ExclusivePokemonData));
- sub_8094924(r0, (u8 *)gUnknown_203B498, 1);
+ RestoreIntegerBits(r0, gUnknown_203B498, 1);
for(iVar2 = 0; iVar2 < 424; iVar2++)
{
- sub_8094924(r0, &stack_0, 1);
+ RestoreIntegerBits(r0, &stack_0, 1);
if(stack_0)
sub_80980B4(iVar2);
}
for(iVar2 = 0; iVar2 < 64; iVar2++)
{
- sub_8094924(r0, &stack_1, 1);
+ RestoreIntegerBits(r0, &stack_1, 1);
if(stack_1)
sub_8097FA8(iVar2);
}
for(iVar2 = 0; iVar2 < 31; iVar2++)
{
- sub_8094924(r0, &stack_2, 1);
+ RestoreIntegerBits(r0, &stack_2, 1);
if(stack_2)
sub_8098170(iVar2);
}
for(iVar2 = 0; iVar2 < NUM_EXCLUSIVE_POKEMON; iVar2++)
{
- sub_8094924(r0, &stack_3, 1);
+ RestoreIntegerBits(r0, &stack_3, 1);
do; while(0); // do/while needed for matching - jiang
diff --git a/src/friend_area_1.c b/src/friend_area_1.c
index ff1da5d..c7dee3f 100644
--- a/src/friend_area_1.c
+++ b/src/friend_area_1.c
@@ -10,14 +10,14 @@ u32 SaveFriendAreas(u8 *r0, u32 size)
u32 temp;
s32 counter;
- sub_809486C(&unk, r0, size);
+ xxx_init_struct_8094924_save_809486C(&unk, r0, size);
for(counter = 0; counter < NUM_FRIEND_AREAS; counter++)
{
if(gFriendAreas[counter] != 0)
temp = -1;
else
temp = 0;
- sub_809488C(&unk, (u8*)&temp, 1);
+ SaveIntegerBits(&unk, (u8*)&temp, 1);
}
nullsub_102(&unk);
return unk.unk8;
@@ -29,10 +29,10 @@ u32 ReadSavedFriendAreas(u8 *r0, s32 size)
u32 temp;
s32 counter;
- sub_809485C(&unk, r0, size);
+ xxx_init_struct_8094924_restore_809485C(&unk, r0, size);
for(counter = 0; counter < NUM_FRIEND_AREAS; counter++)
{
- sub_8094924(&unk, (u8*)&temp, 1);
+ RestoreIntegerBits(&unk, &temp, 1);
// It's setting whether we have the friend area or not
if(temp & 1)
gFriendAreas[counter] = 1;
diff --git a/src/game_options.c b/src/game_options.c
index c5a92df..cfb95b7 100644
--- a/src/game_options.c
+++ b/src/game_options.c
@@ -76,7 +76,7 @@ void WriteGameOptions(struct unkStruct_8094924 *param_1)
neg_1 = -1;
zero = 0;
- sub_809488C(param_1, &gUnknown_203B46C->unk8, 2);
+ SaveIntegerBits(param_1, &gUnknown_203B46C->unk8, 2);
if(gUnknown_203B46C->unk9 != 0)
{
@@ -86,7 +86,7 @@ void WriteGameOptions(struct unkStruct_8094924 *param_1)
{
puVar2 = &zero;
}
- sub_809488C(param_1, puVar2, 1);
+ SaveIntegerBits(param_1, puVar2, 1);
if(gUnknown_203B46C->unkA != 0)
{
@@ -96,7 +96,7 @@ void WriteGameOptions(struct unkStruct_8094924 *param_1)
{
puVar2 = &zero;
}
- sub_809488C(param_1, puVar2, 1);
+ SaveIntegerBits(param_1, puVar2, 1);
if(gUnknown_203B46C->playerGender != 0)
{
@@ -106,7 +106,7 @@ void WriteGameOptions(struct unkStruct_8094924 *param_1)
{
puVar2 = &zero;
}
- sub_809488C(param_1, puVar2, 1);
+ SaveIntegerBits(param_1, puVar2, 1);
if(gUnknown_203B46C->unk0 != 0)
{
@@ -116,7 +116,7 @@ void WriteGameOptions(struct unkStruct_8094924 *param_1)
{
puVar2 = &zero;
}
- sub_809488C(param_1, puVar2, 1);
+ SaveIntegerBits(param_1, puVar2, 1);
if(gUnknown_203B46C->unk1 != 0)
{
@@ -126,7 +126,7 @@ void WriteGameOptions(struct unkStruct_8094924 *param_1)
{
puVar2 = &zero;
}
- sub_809488C(param_1, puVar2, 1);
+ SaveIntegerBits(param_1, puVar2, 1);
if(gUnknown_203B46C->unk2 != 0)
{
@@ -136,7 +136,7 @@ void WriteGameOptions(struct unkStruct_8094924 *param_1)
{
puVar2 = &zero;
}
- sub_809488C(param_1, puVar2, 1);
+ SaveIntegerBits(param_1, puVar2, 1);
if(gUnknown_203B46C->unk3 != 0)
{
@@ -146,43 +146,43 @@ void WriteGameOptions(struct unkStruct_8094924 *param_1)
{
puVar2 = &zero;
}
- sub_809488C(param_1, puVar2, 1);
+ SaveIntegerBits(param_1, puVar2, 1);
- sub_809488C(param_1, &gUnknown_203B46C->unk4, 3);
- sub_809488C(param_1, &gUnknown_203B46C->unkC, 2);
+ SaveIntegerBits(param_1, &gUnknown_203B46C->unk4, 3);
+ SaveIntegerBits(param_1, &gUnknown_203B46C->unkC, 2);
}
void ReadGameOptions(struct unkStruct_8094924 *param_1)
{
u8 byteArray[4];
- sub_8094924(param_1, byteArray, 2);
+ RestoreIntegerBits(param_1, byteArray, 2);
gUnknown_203B46C->unk8 = byteArray[0] & 3;
- sub_8094924(param_1, byteArray, 1);
+ RestoreIntegerBits(param_1, byteArray, 1);
gUnknown_203B46C->unk9 = byteArray[0] & 1;
- sub_8094924(param_1, byteArray, 1);
+ RestoreIntegerBits(param_1, byteArray, 1);
gUnknown_203B46C->unkA = byteArray[0] & 1;
- sub_8094924(param_1, byteArray, 1);
+ RestoreIntegerBits(param_1, byteArray, 1);
gUnknown_203B46C->playerGender = byteArray[0] & 1;
- sub_8094924(param_1, byteArray, 1);
+ RestoreIntegerBits(param_1, byteArray, 1);
gUnknown_203B46C->unk0 = byteArray[0] & 1;
- sub_8094924(param_1, byteArray, 1);
+ RestoreIntegerBits(param_1, byteArray, 1);
gUnknown_203B46C->unk1 = byteArray[0] & 1;
- sub_8094924(param_1, byteArray, 1);
+ RestoreIntegerBits(param_1, byteArray, 1);
gUnknown_203B46C->unk2 = byteArray[0] & 1;
- sub_8094924(param_1, byteArray, 1);
+ RestoreIntegerBits(param_1, byteArray, 1);
gUnknown_203B46C->unk3 = byteArray[0] & 1;
- sub_8094924(param_1, byteArray, 3);
+ RestoreIntegerBits(param_1, byteArray, 3);
gUnknown_203B46C->unk4 = byteArray[0] & 7;
- sub_8094924(param_1, byteArray, 2);
+ RestoreIntegerBits(param_1, byteArray, 2);
gUnknown_203B46C->unkC = byteArray[0] & 3;
sub_8094C14();
diff --git a/src/items.c b/src/items.c
index 337e622..3ced8fe 100644
--- a/src/items.c
+++ b/src/items.c
@@ -1160,78 +1160,78 @@ bool8 xxx_insert_unk250_8091C1C(u8 itemIndex) {
return TRUE;
}
-s32 sub_8091C68(u8* unk0, u32 size)
+s32 SaveTeamInventory(u8* unk0, u32 size)
{
struct unkStruct_8094924 unk;
s32 i;
- sub_809486C(&unk, unk0, size);
+ xxx_init_struct_8094924_save_809486C(&unk, unk0, size);
for (i = 0; i < INVENTORY_SIZE; i++) {
- sub_8091E28(&unk, (u8*)&gTeamInventory_203B460->teamItems[i]);
+ SaveItemSlot(&unk, &gTeamInventory_203B460->teamItems[i]);
}
for (i = 0; i < NUMBER_OF_ITEM_IDS; i++) {
- sub_809488C(&unk, (u8*)&gTeamInventory_203B460->teamStorage[i], 10);
+ SaveIntegerBits(&unk, &gTeamInventory_203B460->teamStorage[i], 10);
}
for (i = 0; i < 8; i++) {
- sub_8091DE0(&unk, (u8*)&gTeamInventory_203B460->unk230[i]);
+ SaveHeldItem(&unk, &gTeamInventory_203B460->unk230[i]);
}
for (i = 0; i < 4; i++) {
- sub_8091DE0(&unk, (u8*)&gTeamInventory_203B460->unk250[i]);
+ SaveHeldItem(&unk, &gTeamInventory_203B460->unk250[i]);
}
- sub_809488C(&unk, (u8*)&gTeamInventory_203B460->teamMoney, 24);
- sub_809488C(&unk, (u8*)&gTeamInventory_203B460->teamSavings, 24);
+ SaveIntegerBits(&unk, &gTeamInventory_203B460->teamMoney, 24);
+ SaveIntegerBits(&unk, &gTeamInventory_203B460->teamSavings, 24);
nullsub_102(&unk);
return unk.unk8;
}
-s32 sub_8091D14(u8 *unk0, u32 size)
+s32 RestoreTeamInventory(u8 *unk0, u32 size)
{
struct unkStruct_8094924 unk;
s32 i;
- sub_809485C(&unk, unk0, size);
+ xxx_init_struct_8094924_restore_809485C(&unk, unk0, size);
for (i = 0; i < 20; i++) {
- sub_8091E00(&unk, (u8*)&gTeamInventory_203B460->teamItems[i]);
+ RestoreItemSlot(&unk, &gTeamInventory_203B460->teamItems[i]);
}
for (i = 0; i < 240; i++) {
- sub_8094924(&unk, (u8*)&gTeamInventory_203B460->teamStorage[i], 10);
+ RestoreIntegerBits(&unk, &gTeamInventory_203B460->teamStorage[i], 10);
}
for (i = 0; i < 8; i++) {
- sub_8091DC0(&unk, (u8*)&gTeamInventory_203B460->unk230[i]);
+ RestoreHeldItem(&unk, &gTeamInventory_203B460->unk230[i]);
}
for (i = 0; i < 4; i++) {
- sub_8091DC0(&unk, (u8*)&gTeamInventory_203B460->unk250[i]);
+ RestoreHeldItem(&unk, &gTeamInventory_203B460->unk250[i]);
}
- sub_8094924(&unk, (u8*)&gTeamInventory_203B460->teamMoney, 24);
- sub_8094924(&unk, (u8*)&gTeamInventory_203B460->teamSavings, 24);
+ RestoreIntegerBits(&unk, &gTeamInventory_203B460->teamMoney, 24);
+ RestoreIntegerBits(&unk, &gTeamInventory_203B460->teamSavings, 24);
nullsub_102(&unk);
return unk.unk8;
}
-void sub_8091DC0(struct unkStruct_8094924 *a1, u8 *a2)
+void RestoreHeldItem(struct unkStruct_8094924 *a1, struct HeldItem *item)
{
- sub_8094924(a1, a2, 8);
- sub_8094924(a1, a2 + 1, 7);
+ RestoreIntegerBits(a1, &item->itemIndex, 8);
+ RestoreIntegerBits(a1, &item->numItems, 7);
}
-void sub_8091DE0(struct unkStruct_8094924 *a1, u8 *a2)
+void SaveHeldItem(struct unkStruct_8094924 *a1, struct HeldItem *item)
{
- sub_809488C(a1, a2, 8);
- sub_809488C(a1, a2 + 1, 7);
+ SaveIntegerBits(a1, &item->itemIndex, 8);
+ SaveIntegerBits(a1, &item->numItems, 7);
}
-void sub_8091E00(struct unkStruct_8094924 *a1, u8 *a2)
+void RestoreItemSlot(struct unkStruct_8094924 *a1, struct ItemSlot *slot)
{
- sub_8094924(a1, a2, 8);
- sub_8094924(a1, a2 + 1, 7);
- sub_8094924(a1, a2 + 2, 8);
+ RestoreIntegerBits(a1, &slot->unk0, 8);
+ RestoreIntegerBits(a1, &slot->numItems, 7);
+ RestoreIntegerBits(a1, &slot->itemIndex, 8);
}
-void sub_8091E28(struct unkStruct_8094924 *a1, u8 *a2)
+void SaveItemSlot(struct unkStruct_8094924 *a1, struct ItemSlot *slot)
{
- sub_809488C(a1, a2, 8);
- sub_809488C(a1, a2 + 1, 7);
- sub_809488C(a1, a2 + 2, 8);
+ SaveIntegerBits(a1, &slot->unk0, 8);
+ SaveIntegerBits(a1, &slot->numItems, 7);
+ SaveIntegerBits(a1, &slot->itemIndex, 8);
}
u32 sub_8091E50(u8 index)
@@ -1465,6 +1465,7 @@ s32 sub_8091E94(s32 a1, s32 a2, s32 a3)
"\tbx r1\n");
#endif
}
+
void ClearAllItems_8091FB4() {
s32 i;
diff --git a/src/play_time.c b/src/play_time.c
index 8b2e567..97a9754 100644
--- a/src/play_time.c
+++ b/src/play_time.c
@@ -77,16 +77,16 @@ void DeconstructPlayTime(struct PlayTimeStruct *r0, u32 *outHours, u32 *outMinut
void WritePlayTime(struct unkStruct_8094924 *r0)
{
- sub_809488C(r0, (&(gPlayTimeRef->frames)), 6);
- sub_809488C(r0, (&(gPlayTimeRef->seconds)), 6);
- sub_809488C(r0, (&(gPlayTimeRef->minutes)), 6);
- sub_809488C(r0, (u8 *)(&(gPlayTimeRef->hours)), 14);
+ SaveIntegerBits(r0, &gPlayTimeRef->frames, 6);
+ SaveIntegerBits(r0, &gPlayTimeRef->seconds, 6);
+ SaveIntegerBits(r0, &gPlayTimeRef->minutes, 6);
+ SaveIntegerBits(r0, &gPlayTimeRef->hours, 14);
}
void ReadPlayTime(struct unkStruct_8094924 *r0)
{
- sub_8094924(r0, (&(gPlayTimeRef->frames)), 6);
- sub_8094924(r0, (&(gPlayTimeRef->seconds)), 6);
- sub_8094924(r0, (&(gPlayTimeRef->minutes)), 6);
- sub_8094924(r0, (u8*)(&(gPlayTimeRef->hours)), 14);
+ RestoreIntegerBits(r0, &gPlayTimeRef->frames, 6);
+ RestoreIntegerBits(r0, &gPlayTimeRef->seconds, 6);
+ RestoreIntegerBits(r0, &gPlayTimeRef->minutes, 6);
+ RestoreIntegerBits(r0, &gPlayTimeRef->hours, 14);
}
diff --git a/src/pokemon.c b/src/pokemon.c
index a9ca120..1b9003b 100644
--- a/src/pokemon.c
+++ b/src/pokemon.c
@@ -45,3 +45,64 @@ void InitializeRecruitedPokemon(void)
gRecruitedPokemonRef->team[iVar3].unk0 = 0;
}
}
+
+// void sub_808CE74(s32 _species, u8 a2, u8* a3)
+// {
+// struct PokemonStruct pokemon;
+// u8 name_buffer[20];
+// u8 friend_area;
+// s32 i;
+// register s16 species asm("r7") = (s16)_species;
+// s32 cond = a2 << 24;
+
+// pokemon.unk0 = 3;
+// if (cond) {
+// pokemon.unk2 = 1;
+// pokemon.unk4.unk4 = 64;
+// }
+// else {
+// pokemon.unk2 = 1;
+// pokemon.unk4.unk4 = 65;
+// }
+// pokemon.unkHasNextStage = 1;
+// pokemon.pokeHP = GetBaseHP(species);
+// pokemon.offense.att[0] = GetPokemonAttSpatt(species, 0);
+// pokemon.offense.att[1] = GetPokemonAttSpatt(species, 1);
+// pokemon.offense.def[0] = GetPokemonDefSpdef(species, 0);
+// pokemon.offense.def[1] = GetPokemonDefSpdef(species, 1);
+// pokemon.IQ = 1;
+// pokemon.unkC[0].unk0 = 0;
+// pokemon.unkC[1].unk0 = 0;
+// sub_808EC94((u8*)&pokemon.unk20, 0);
+// pokemon.speciesNum = species;
+// pokemon.heldItem.itemIndex = 0;
+// pokemon.heldItem.numItems = 0;
+// pokemon.unk1C = 0;
+// pokemon.unk24 = 0;
+// pokemon.unk4.unk5 = 0;
+// sub_808E490(pokemon.unk2C, species);
+
+// // mostly incorrect below this:
+// if (!a3) {
+// CopySpeciesNametoBuffer(name_buffer, species);
+// BoundedCopyStringtoBuffer(pokemon.name, name_buffer, 10);
+// }
+// else {
+// s32 j;
+// for (j = 0; j < 10; j++) {
+// pokemon.name[j] = a3[j];
+// }
+// }
+// friend_area = gMonsterParameters[species].friend_area;
+// for (i = 0; i < 413; i++) {
+// if (!((u8)gRecruitedPokemonRef->pokemon[i].unk0 & 1)) {
+// u8 species_friend_area = sub_80923D4(i);
+// if (species_friend_area == friend_area) {
+// gRecruitedPokemonRef->pokemon[i] = pokemon;
+// gFriendAreas[species_friend_area] = 1;
+// sub_80980B4(species);
+// break;
+// }
+// }
+// }
+// }
diff --git a/src/pokemon_3.c b/src/pokemon_3.c
index 72005ed..b4cb938 100644
--- a/src/pokemon_3.c
+++ b/src/pokemon_3.c
@@ -48,6 +48,20 @@ extern bool8 sub_808ECD0(u8 *, u32);
extern void sub_808EC30(u8 *, u32);
extern void AddSprite(u16 *, u32, u32, u32);
+extern void xxx_save_poke_sub_4_80902F4(struct unkStruct_8094924*, struct unkPokeSubStruct_4*);
+extern void xxx_save_poke_sub_c_808F41C(struct unkStruct_8094924*, struct unkPokeSubStruct_C*);
+extern void xxx_save_poke_sub_2c_8094108(struct unkStruct_8094924*, struct unkPokeSubStruct_2C*);
+void xxx_restore_poke_sub_4_8090314(struct unkStruct_8094924*, struct unkPokeSubStruct_4*);
+void xxx_restore_poke_sub_c_808F410(struct unkStruct_8094924*, struct unkPokeSubStruct_C*);
+void xxx_restore_poke_sub_2c_8094128(struct unkStruct_8094924*, struct unkPokeSubStruct_2C*);
+
+extern void sub_8094184(struct unkStruct_8094924*, void*);
+extern void sub_809449C(struct unkStruct_8094924*, void*);
+extern void sub_808F448(struct unkStruct_8094924*, struct unkStruct_808E6F4*);
+extern void sub_80941FC(struct unkStruct_8094924*, void*);
+extern void sub_809447C(struct unkStruct_8094924*, void*);
+extern void sub_808F428(struct unkStruct_8094924*, struct unkStruct_808E6F4*);
+
bool8 sub_808E668(s16 a1, s16* a2, s16* a3)
{
@@ -94,7 +108,7 @@ bool8 HasRecruitedMon(s16 species_) {
s32 i = 0;
struct PokemonStruct *pokemon = gRecruitedPokemonRef->pokemon;
- for (i = 0; i < 413; i++) {
+ for (i = 0; i < NUM_SPECIES; i++) {
if (((u8)pokemon->unk0 & 1)) {
if(pokemon->speciesNum == species)
return TRUE;
@@ -641,3 +655,260 @@ void sub_808ED00() {
}
}
+s32 SaveRecruitedPokemon(u8 *a1, s32 a2)
+{
+ u16 buffer[6];
+ struct unkStruct_8094924 backup;
+ u8 data_u8;
+ s16 data_s16;
+ s32 count;
+ s32 i;
+
+ xxx_init_struct_8094924_save_809486C(&backup, a1, a2);
+
+ for (i = 0; i < 6; i++) {
+ buffer[i] = -1;
+ }
+
+ data_s16 = 1;
+ data_s16 = -data_s16;
+ count = 0;
+ for (i = 0; i < NUM_SPECIES; i++) {
+#ifdef NONMATCHING
+ struct PokemonStruct* pokemon = &gRecruitedPokemonRef->pokemon[i];
+#else
+ struct PokemonStruct* pokemon;
+ register struct unkStruct_203B45C** recruited asm("r2") = &gRecruitedPokemonRef;
+
+ pokemon = &(*recruited)->pokemon[i];
+#endif
+ if (pokemon->unk0 & 1) {
+ if (pokemon->unk0 & 2) {
+ buffer[count++] = i;
+ }
+ if (pokemon->unk2) {
+ data_s16 = i;
+ }
+ }
+ else {
+ pokemon->unkHasNextStage = 0;
+ }
+ SavePokemonStruct(&backup, pokemon);
+ }
+
+ for (i = 0; i < 4; i++) {
+ if ((u8)i[gRecruitedPokemonRef->team].unk0 & 1) {
+ data_u8 = 0xff;
+ }
+ else {
+ data_u8 = 0;
+ }
+ SaveIntegerBits(&backup, &data_u8, 1);
+ SavePokemonStruct(&backup, &gRecruitedPokemonRef->team[i]);
+ }
+
+ for (i = 0; i < 6; i++) {
+ SaveIntegerBits(&backup, (u8*)&buffer[i], 16);
+ }
+ SaveIntegerBits(&backup, (u8*)&data_s16, 16);
+ nullsub_102(&backup);
+ return backup.unk8;
+}
+
+s32 RestoreRecruitedPokemon(u8 *a1, s32 a2)
+{
+ struct unkStruct_8094924 backup;
+ u8 data_u8; // same as saverecruitedpokemon
+ s16 data_s16; // same as saverecruitedpokemon
+ s32 i;
+
+ xxx_init_struct_8094924_restore_809485C(&backup, a1, a2);
+ for (i = 0; i < NUM_SPECIES; i++) {
+ RestorePokemonStruct(&backup, &gRecruitedPokemonRef->pokemon[i]);
+ }
+
+ for (i = 0; i < 4; i++) {
+ RestoreIntegerBits(&backup, &data_u8, 1);
+ RestorePokemonStruct(&backup, &gRecruitedPokemonRef->team[i]);
+ if (data_u8 & 1) {
+ gRecruitedPokemonRef->team[i].unk0 = 3;
+ }
+ else {
+ gRecruitedPokemonRef->team[i].unk0 = 0;
+ }
+ }
+
+ for (i = 0; i < 6; i++) {
+ RestoreIntegerBits(&backup, &data_s16, 16);
+ if ((u16)data_s16 < NUM_SPECIES) {
+ gRecruitedPokemonRef->pokemon[data_s16].unk0 |= 2;
+ }
+ }
+ RestoreIntegerBits(&backup, &data_s16, 16);
+ if ((u16)data_s16 < NUM_SPECIES) {
+ gRecruitedPokemonRef->pokemon[data_s16].unk2 = 1;
+ }
+ nullsub_102(&backup);
+ return backup.unk8;
+}
+
+void SavePokemonStruct(struct unkStruct_8094924* a1, struct PokemonStruct* pokemon)
+{
+ SaveIntegerBits(a1, &pokemon->unkHasNextStage, 7);
+ SaveIntegerBits(a1, &pokemon->speciesNum, 9);
+ xxx_save_poke_sub_4_80902F4(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);
+ SaveIntegerBits(a1, &pokemon->pokeHP, 10);
+ SaveIntegerBits(a1, &pokemon->offense.att[0], 8);
+ SaveIntegerBits(a1, &pokemon->offense.att[1], 8);
+ SaveIntegerBits(a1, &pokemon->offense.def[0], 8);
+ SaveIntegerBits(a1, &pokemon->offense.def[1], 8);
+ SaveIntegerBits(a1, &pokemon->unk1C, 24);
+ SaveIntegerBits(a1, &pokemon->unk20, 24);
+ SaveIntegerBits(a1, &pokemon->unk24, 4);
+ SaveHeldItem(a1, &pokemon->heldItem);
+ xxx_save_poke_sub_2c_8094108(a1, pokemon->unk2C);
+ SaveIntegerBits(a1, pokemon->name, 80);
+}
+
+void RestorePokemonStruct(struct unkStruct_8094924* a1, struct PokemonStruct* pokemon)
+{
+ memset(pokemon, 0, sizeof(struct PokemonStruct));
+ pokemon->unk0 = 0;
+ pokemon->unk2 = 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);
+ 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);
+ RestoreIntegerBits(a1, &pokemon->pokeHP, 10);
+ RestoreIntegerBits(a1, &pokemon->offense.att[0], 8);
+ RestoreIntegerBits(a1, &pokemon->offense.att[1], 8);
+ RestoreIntegerBits(a1, &pokemon->offense.def[0], 8);
+ RestoreIntegerBits(a1, &pokemon->offense.def[1], 8);
+ RestoreIntegerBits(a1, &pokemon->unk1C, 24);
+ RestoreIntegerBits(a1, &pokemon->unk20, 24);
+ RestoreIntegerBits(a1, &pokemon->unk24, 4);
+ RestoreHeldItem(a1, &pokemon->heldItem);
+ xxx_restore_poke_sub_2c_8094128(a1, pokemon->unk2C);
+ RestoreIntegerBits(a1, pokemon->name, 80);
+}
+
+s32 SavePokemonStruct2(u8* a1, s32 size)
+{
+ struct unkStruct_8094924 backup;
+ s32 i;
+ u8 data_u8_neg1;
+ u8 data_u8_zero;
+
+ xxx_init_struct_8094924_save_809486C(&backup, a1, size);
+ data_u8_neg1 = -1;
+ data_u8_zero = 0;
+
+ for (i = 0; i < 4; i++) {
+ 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->unkHasNextStage, 7);
+
+ xxx_save_poke_sub_4_80902F4(&backup, &pokemon2->unk4);
+ SaveIntegerBits(&backup, &pokemon2->IQ, 10);
+ SaveIntegerBits(&backup, &pokemon2->unkA, 16);
+ SaveIntegerBits(&backup, &pokemon2->unkC, 16);
+ SaveIntegerBits(&backup, &pokemon2->speciesNum, 9);
+ SaveIntegerBits(&backup, &pokemon2->unk10, 10);
+ SaveIntegerBits(&backup, &pokemon2->unk12, 10);
+ SaveIntegerBits(&backup, &pokemon2->offense.att[0], 8);
+ SaveIntegerBits(&backup, &pokemon2->offense.att[1], 8);
+ SaveIntegerBits(&backup, &pokemon2->offense.def[0], 8);
+ SaveIntegerBits(&backup, &pokemon2->offense.def[1], 8);
+ SaveIntegerBits(&backup, &pokemon2->unk18, 24);
+ sub_8094184(&backup, &pokemon2->unk1C);
+ SaveItemSlot(&backup, &pokemon2->itemSlot);
+ sub_809449C(&backup, &pokemon2->unk44);
+ sub_809449C(&backup, &pokemon2->unk48);
+ SaveIntegerBits(&backup, &pokemon2->unk4C, 24);
+ SaveIntegerBits(&backup, &pokemon2->unk50, 4);
+ sub_808F448(&backup, &pokemon2->unk54);
+ SaveIntegerBits(&backup, &pokemon2->name, 80);
+ }
+ nullsub_102(&backup);
+ return backup.unk8;
+}
+
+s32 RestorePokemonStruct2(u8* a1, s32 size)
+{
+ struct unkStruct_8094924 backup;
+ s32 i;
+
+ xxx_init_struct_8094924_restore_809485C(&backup, a1, size);
+ for (i = 0; i < 4; i++) {
+ struct PokemonStruct2* pokemon2 = &gRecruitedPokemonRef->pokemon2[i];
+ u8 unk2;
+
+ memset(pokemon2, 0, sizeof(struct PokemonStruct2));
+
+ RestoreIntegerBits(&backup, &pokemon2->unk0, 2);
+
+ RestoreIntegerBits(&backup, &unk2, 1);
+ if (unk2 & 1) {
+ pokemon2->unk2 = TRUE;
+ }
+ else {
+ pokemon2->unk2 = FALSE;
+ }
+ RestoreIntegerBits(&backup, &pokemon2->unkHasNextStage, 7);
+
+ xxx_restore_poke_sub_4_8090314(&backup, &pokemon2->unk4);
+ RestoreIntegerBits(&backup, &pokemon2->IQ, 10);
+ RestoreIntegerBits(&backup, &pokemon2->unkA, 16);
+ RestoreIntegerBits(&backup, &pokemon2->unkC, 16);
+ RestoreIntegerBits(&backup, &pokemon2->speciesNum, 9);
+ RestoreIntegerBits(&backup, &pokemon2->unk10, 10);
+ RestoreIntegerBits(&backup, &pokemon2->unk12, 10);
+ RestoreIntegerBits(&backup, &pokemon2->offense.att[0], 8);
+ RestoreIntegerBits(&backup, &pokemon2->offense.att[1], 8);
+ RestoreIntegerBits(&backup, &pokemon2->offense.def[0], 8);
+ RestoreIntegerBits(&backup, &pokemon2->offense.def[1], 8);
+ RestoreIntegerBits(&backup, &pokemon2->unk18, 24);
+ sub_80941FC(&backup, &pokemon2->unk1C);
+ RestoreItemSlot(&backup, &pokemon2->itemSlot);
+ sub_809447C(&backup, &pokemon2->unk44);
+ sub_809447C(&backup, &pokemon2->unk48);
+ RestoreIntegerBits(&backup, &pokemon2->unk4C, 24);
+ RestoreIntegerBits(&backup, &pokemon2->unk50, 4);
+ sub_808F428(&backup, &pokemon2->unk54);
+ RestoreIntegerBits(&backup, &pokemon2->name, 80);
+ }
+ nullsub_102(&backup);
+ return backup.unk8;
+}
+
+void xxx_restore_poke_sub_c_808F410(struct unkStruct_8094924* a1, struct unkPokeSubStruct_C* unkC)
+{
+ RestoreIntegerBits(a1, &unkC->unk0, 7);
+}
+
+void xxx_save_poke_sub_c_808F41C(struct unkStruct_8094924* a1, struct unkPokeSubStruct_C* unkC)
+{
+ SaveIntegerBits(a1, &unkC->unk0, 7);
+}
+
+void sub_808F428(struct unkStruct_8094924* a1, struct unkStruct_808E6F4* a2)
+{
+ RestoreIntegerBits(a1, &a2->unk0, 10);
+ RestoreIntegerBits(a1, &a2->unk2, 5);
+}
+
+void sub_808F448(struct unkStruct_8094924* a1, struct unkStruct_808E6F4* a2)
+{
+ SaveIntegerBits(a1, &a2->unk0, 10);
+ SaveIntegerBits(a1, &a2->unk2, 5);
+} \ No newline at end of file
diff --git a/src/pokemon_mid.c b/src/pokemon_mid.c
index 56d49fe..d4a3bee 100644
--- a/src/pokemon_mid.c
+++ b/src/pokemon_mid.c
@@ -2,6 +2,7 @@
#include "pokemon.h"
#include "item.h"
#include "file_system.h"
+#include "subStruct_203B240.h"
extern struct gPokemon *gMonsterParameters;
extern const char gUnknown_8107600[];
@@ -16,6 +17,7 @@ extern s16 gUnknown_810ACB8; // 0x14d
extern s16 gUnknown_810ACBA; // 0x14d
extern s16 gUnknown_810ACBC; // 0x14d
extern s16 gUnknown_810ACBE; // 0x14d
+extern char* gFormattedStatusNames[];
// wram data:
extern u16 gLevelCurrentPokeId;
@@ -30,10 +32,12 @@ extern u32 ReturnIntFromChar(u8 r0);
extern void CopyStringtoBuffer(char *r0, char *r1);
extern void sub_8093F50(void*, void*);
extern void sub_80943A0(void*, s32);
-extern void xxx_unk_to_pokemonstruct_808DF44(struct PokemonStruct*, struct unkStruct_808DE50*);
+extern void xxx_pokemon2_to_pokemonstruct_808DF44(struct PokemonStruct*, struct PokemonStruct2*);
extern u8* sub_8092B18(s16);
extern u8* sub_808E07C(u8* a1, u16* a2);
extern u8* sub_8092B54(s32);
+extern void sub_8092AD4(struct unkPokeSubStruct_2C*, u16);
+extern u32 sub_8097DF0(char *, struct subStruct_203B240 **);
struct unkStruct_8107654 {
s16 unk0;
@@ -48,6 +52,103 @@ extern struct FileArchive gMonsterFileArchive;
extern const char gUnknown_8107684[];
extern struct unkStruct_203B45C *gRecruitedPokemonRef;
+
+bool8 sub_808D6E8()
+{
+ s32 i;
+ s32 count = 0;
+ s32 size_count = 0;
+ for (i = 0; i < NUM_SPECIES; i++) {
+ struct PokemonStruct* pokemon = &gRecruitedPokemonRef->pokemon[i];
+ if ((1 & pokemon->unk0) && ((pokemon->unk0 >> 1) % 2)) {
+ size_count += GetPokemonSize(pokemon->speciesNum);
+ count++;
+ }
+ }
+ if ((size_count < 6) && (count < 4)) {
+ return 1;
+ }
+ return 0;
+}
+
+// this one is surprisingly frustrating
+NAKED
+bool8 sub_808D750(s16 index_) {
+ asm_unified(
+"\tpush {r4-r7,lr}\n"
+"\tmov r7, r9\n"
+"\tmov r6, r8\n"
+"\tpush {r6,r7}\n"
+"\tlsls r0, 16\n"
+"\tasrs r0, 16\n"
+"\tmov r8, r0\n"
+"\tmovs r6, 0\n"
+"\tmovs r5, 0\n"
+"\tmovs r4, 0\n"
+"\tldr r0, _0808D7C8\n"
+"\tmov r9, r0\n"
+"\tmovs r7, 0x1\n"
+"_0808D76A:\n"
+"\tmovs r0, 0x58\n"
+"\tadds r1, r4, 0\n"
+"\tmuls r1, r0\n"
+"\tmov r2, r9\n"
+"\tldr r0, [r2]\n"
+"\tadds r1, r0, r1\n"
+"\tldrh r2, [r1]\n"
+"\tadds r0, r7, 0\n"
+"\tands r0, r2\n"
+"\tcmp r0, 0\n"
+"\tbeq _0808D798\n"
+"\tlsrs r0, r2, 1\n"
+"\tands r0, r7\n"
+"\tcmp r0, 0\n"
+"\tbeq _0808D798\n"
+"\tmovs r2, 0x8\n"
+"\tldrsh r0, [r1, r2]\n"
+"\tbl GetPokemonSize\n"
+"\tlsls r0, 24\n"
+"\tlsrs r0, 24\n"
+"\tadds r5, r0\n"
+"\tadds r6, 0x1\n"
+"_0808D798:\n"
+"\tadds r4, 0x1\n"
+"\tmovs r0, 0xCE\n"
+"\tlsls r0, 1\n"
+"\tcmp r4, r0\n"
+"\tble _0808D76A\n"
+"\tcmp r6, 0x3\n"
+"\tbgt _0808D7CC\n"
+"\tldr r2, _0808D7C8\n"
+"\tmovs r0, 0x58\n"
+"\tmov r1, r8\n"
+"\tmuls r1, r0\n"
+"\tldr r0, [r2]\n"
+"\tadds r1, r0, r1\n"
+"\tmovs r2, 0x8\n"
+"\tldrsh r0, [r1, r2]\n"
+"\tbl GetPokemonSize\n"
+"\tlsls r0, 24\n"
+"\tlsrs r0, 24\n"
+"\tadds r5, r0\n"
+"\tcmp r5, 0x6\n"
+"\tbgt _0808D7CC\n"
+"\tmovs r0, 0x1\n"
+"\tb _0808D7CE\n"
+"\t.align 2, 0\n"
+"_0808D7C8: .4byte gRecruitedPokemonRef\n"
+"_0808D7CC:\n"
+"\tmovs r0, 0\n"
+"_0808D7CE:\n"
+"\tpop {r3,r4}\n"
+"\tmov r8, r3\n"
+"\tmov r9, r4\n"
+"\tpop {r4-r7}\n"
+"\tpop {r1}\n"
+"\tbx r1\n"
+ );
+}
+
// bool8 sub_808D750(s16 index_) {
// s32 i;
// register s32 index asm("r8") = index_;
@@ -410,12 +511,12 @@ bool8 IsPokemonDialogueSpriteAvail(s16 index, s32 r1)
return (gMonsterParameters[index].dialogue_sprites >> r1) & 1;
}
-void xxx_pokemonstruct_index_to_unk_808DE30(void* r0, u32 r1)
+void xxx_pokemonstruct_index_to_pokemon2_808DE30(void* r0, u32 r1)
{
- xxx_pokemonstruct_to_unk_808DE50(r0, &gRecruitedPokemonRef->pokemon[r1], r1);
+ xxx_pokemonstruct_to_pokemon2_808DE50(r0, &gRecruitedPokemonRef->pokemon[r1], r1);
}
-void xxx_pokemonstruct_to_unk_808DE50(struct unkStruct_808DE50 * a1, struct PokemonStruct *pokemon, s32 a3)
+void xxx_pokemonstruct_to_pokemon2_808DE50(struct PokemonStruct2 * a1, struct PokemonStruct *pokemon, s32 a3)
{
s32 i;
struct HeldItem* held;
@@ -465,15 +566,15 @@ void xxx_pokemonstruct_to_unk_808DE50(struct unkStruct_808DE50 * a1, struct Poke
a1->unk48 = somestruct2_80943A0;
}
-void xxx_unk_to_pokemonstruct_index_808DF2C(s32 a1, struct unkStruct_808DE50* a2)
+void xxx_pokemon2_to_pokemonstruct_index_808DF2C(s32 a1, struct PokemonStruct2* a2)
{
- xxx_unk_to_pokemonstruct_808DF44(&a1[gRecruitedPokemonRef->pokemon], a2);
+ xxx_pokemon2_to_pokemonstruct_808DF44(&a1[gRecruitedPokemonRef->pokemon], a2);
}
extern void sub_8093FA8(struct unkPokeSubStruct_2C*, struct unkPokeSubStruct_2C*);
-void xxx_unk_to_pokemonstruct_808DF44(struct PokemonStruct* pokemon, struct unkStruct_808DE50* a2)
+void xxx_pokemon2_to_pokemonstruct_808DF44(struct PokemonStruct* pokemon, struct PokemonStruct2* a2)
{
s32 i;
@@ -507,7 +608,7 @@ void xxx_unk_to_pokemonstruct_808DF44(struct PokemonStruct* pokemon, struct unkS
}
}
-void sub_808DFDC(s32 a1, struct unkStruct_808DE50* a2)
+void sub_808DFDC(s32 a1, struct PokemonStruct2* a2)
{
// transfer item from unk to pokemon at index
struct PokemonStruct* pokemon = &gRecruitedPokemonRef->pokemon[a1];
@@ -770,4 +871,71 @@ s32 GetEvolutionSequence(struct PokemonStruct* pokemon, struct EvolveStage* a2)
}
return count;
#endif
-} \ No newline at end of file
+}
+
+
+s32 sub_808E400(s32 _species, s16* _a2, s32 _a3, s32 _a4)
+{
+ // this is horrible
+ s32 i;
+ register s32 species asm("r9") = (s16)_species;
+ s32 a3 = (u8)_a3;
+ s32 a4 = (u8)_a4;
+ s32 count = 0;
+ register s16* a2 asm("r6");
+ i = 1;
+ a2 = _a2;
+ for (i = 1; i <= SPECIES_RAYQUAZA_CUTSCENE; i++) {
+ register s32 current asm("r8") = (s16)i;
+ if (species != GetPokemonEvolveFrom(i)) {
+ continue;
+ }
+ if (!a3 && (GetPokemonSize(species) != GetPokemonSize(i))) {
+ continue;
+ }
+ if (!a4 && ((s16)i == SPECIES_SHEDINJA)) {
+ continue;
+ }
+ *a2++ = current;
+ count++;
+ }
+ return count;
+}
+
+void sub_808E490(struct unkPokeSubStruct_2C* a1, s16 species)
+{
+ u16 buffer[0x10];
+ s32 i;
+ s32 count = sub_808E0AC(buffer, species, 1, 999);
+ if (count == 0) {
+ count = 1;
+ buffer[0] = 408;
+ }
+
+ i = 0;
+ if (i < count) {
+ while (i < count) {
+ sub_8092AD4(&a1[i], buffer[i]);
+ i++;
+ }
+ i = count;
+ }
+ while (i < 4) {
+ a1[i].unk0 = 0;
+ i++;
+ }
+}
+
+char* sub_808E4FC(s32 a1)
+{
+ struct subStruct_203B240 *result[4];
+ sub_8097DF0(gFormattedStatusNames[a1], result);
+ return result[0]->unk0;
+}
+
+char* sub_808E51C(s32 a1)
+{
+ struct subStruct_203B240 *result[4];
+ sub_8097DF0(gFormattedStatusNames[a1], result);
+ return result[0]->unk4;
+}
diff --git a/src/rescue_team_info.c b/src/rescue_team_info.c
index 61c0184..ccae32c 100644
--- a/src/rescue_team_info.c
+++ b/src/rescue_team_info.c
@@ -18,6 +18,7 @@ bool32 sub_8092040(u8 param_1)
{
s32 index;
+ // NUMBER_OF_ITEM_IDS == 0xf0
if (param_1 >= 0xF0)
return TRUE;
else {
@@ -138,9 +139,9 @@ u32 SaveRescueTeamInfo(u8 *param_1, u32 size)
neg1 = -1;
zero = 0;
- sub_809486C(&auStack36, param_1, size);
- sub_809488C(&auStack36, gRescueTeamInfoRef->teamName, 0x58);
- sub_809488C(&auStack36, (u8 *)&gRescueTeamInfoRef->teamRankPts, 0x20);
+ xxx_init_struct_8094924_save_809486C(&auStack36, param_1, size);
+ SaveIntegerBits(&auStack36, gRescueTeamInfoRef->teamName, 0x58);
+ SaveIntegerBits(&auStack36, (u8 *)&gRescueTeamInfoRef->teamRankPts, 0x20);
gRescueTeamInfoRef->unk10 = sub_80023E4(0);
if (gRescueTeamInfoRef->unk10 != 0)
@@ -151,7 +152,7 @@ u32 SaveRescueTeamInfo(u8 *param_1, u32 size)
{
puVar2 = &zero;
}
- sub_809488C(&auStack36,puVar2,1);
+ SaveIntegerBits(&auStack36,puVar2,1);
nullsub_102(&auStack36);
return auStack36.unk8;
}
@@ -161,10 +162,10 @@ u32 ReadRescueTeamInfo(u8 *param_1, u32 size)
struct unkStruct_8094924 auStack32;
u8 byteArray[4];
- sub_809485C(&auStack32, param_1, size);
- sub_8094924(&auStack32, gRescueTeamInfoRef->teamName, 0x58);
- sub_8094924(&auStack32, (u8 *)&gRescueTeamInfoRef->teamRankPts, 0x20);
- sub_8094924(&auStack32, byteArray, 1);
+ xxx_init_struct_8094924_restore_809485C(&auStack32, param_1, size);
+ RestoreIntegerBits(&auStack32, gRescueTeamInfoRef->teamName, 0x58);
+ RestoreIntegerBits(&auStack32, &gRescueTeamInfoRef->teamRankPts, 0x20);
+ RestoreIntegerBits(&auStack32, byteArray, 1);
gRescueTeamInfoRef->unk10 = byteArray[0] & 1;
nullsub_102(&auStack32);
return auStack32.unk8;
diff --git a/src/save.c b/src/save.c
index 9ad7670..cef5b27 100644
--- a/src/save.c
+++ b/src/save.c
@@ -152,11 +152,9 @@ extern void sub_8014114();
extern void sub_80141B4(const char *r0, u32 r1, u8 *r2, u16 r3);
extern u32 sub_80144A4(u32 *a);
extern u32 SaveRecruitedPokemon(u8 *, u32);
-extern u32 ReadRecruitedPokemon(void* a, s32 b);
-extern u32 sub_808F154(u8 *, u32);
-extern u32 sub_808F2B0(void* a, s32 b);
-extern u32 sub_8091C68(u8 *, u32);
-extern u32 sub_8091D14(void* a, s32 b);
+extern u32 RestoreRecruitedPokemon(void* a, s32 b);
+extern u32 SavePokemonStruct2(u8 *, u32);
+extern u32 RestorePokemonStruct2(void* a, s32 b);
extern u32 sub_80921C4(u8 *, u32);
extern u8 *sub_8095100(void);
extern u32 *sub_8095108(void);
@@ -365,17 +363,17 @@ u32 ReadSaveFromPak(u32 *a)
}
if (!r7)
{
- r1 = ReadRecruitedPokemon(r4, 0x4650);
+ r1 = RestoreRecruitedPokemon(r4, 0x4650);
if (r1 != r5->savedRecruitedPokemon) {
r7 = 3;
}
r4 += 0x4650;
- r1 = sub_808F2B0(r4, 0x258);
+ r1 = RestorePokemonStruct2(r4, 0x258);
if (r1 != r5->unk428) {
r7 = 3;
}
r4 += 0x258;
- r1 = sub_8091D14(r4, 0x1D8);
+ r1 = RestoreTeamInventory(r4, 0x1D8);
if (r1 != r5->unk430) {
r7 = 3;
}
@@ -488,9 +486,9 @@ u32 WriteSavetoPak(s32 *param_1,u32 param_2)
iVar1->savedRecruitedPokemon = SaveRecruitedPokemon(array_ptr,0x4650);
array_ptr += 0x4650;
- iVar1->unk428 = sub_808F154(array_ptr,0x258);
+ iVar1->unk428 = SavePokemonStruct2(array_ptr,0x258);
array_ptr += 0x258;
- iVar1->unk430 = sub_8091C68(array_ptr,0x1D8);
+ iVar1->unk430 = SaveTeamInventory(array_ptr,0x1D8);
array_ptr += 0x1D8;
iVar1->savedRescueTeamInfo = SaveRescueTeamInfo(array_ptr,0x10);
array_ptr += 0x10;