summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--asm/rom3.s40
-rw-r--r--asm/rom5.s66
-rw-r--r--asm/rom_803BA2C.s174
-rw-r--r--asm/rom_8040EB4.s26
-rw-r--r--asm/rom_8065394.s4
-rw-r--r--include/pokemon.h11
-rw-r--r--src/main_menu.c4
-rw-r--r--src/pokemon_1.c7
-rw-r--r--src/pokemon_2.c65
9 files changed, 148 insertions, 249 deletions
diff --git a/asm/rom3.s b/asm/rom3.s
index 4bff6283d..707ba0df6 100644
--- a/asm/rom3.s
+++ b/asm/rom3.s
@@ -7104,7 +7104,7 @@ _0800F03E:
bl GetMonData
str r0, [r7, 0x14]
adds r0, r4, 0
- bl pokemon_get_gender
+ bl GetMonGender
strb r0, [r5, 0x1C]
adds r0, r7, 0
bl SkipExtCtrlCodes
@@ -27025,11 +27025,11 @@ _08019384:
_08019396:
ldr r0, [sp, 0x8]
ldr r1, [sp, 0x10]
- bl pokemon_species_get_gender_info
+ bl GetGenderFromSpeciesAndPersonality
adds r4, r0, 0
ldr r0, [sp, 0xC]
ldr r1, [sp, 0x14]
- bl pokemon_species_get_gender_info
+ bl GetGenderFromSpeciesAndPersonality
lsls r4, 24
lsls r0, 24
cmp r4, r0
@@ -27051,7 +27051,7 @@ _080193B4:
_080193CE:
ldr r0, [sp, 0x8]
ldr r1, [sp, 0x10]
- bl pokemon_species_get_gender_info
+ bl GetGenderFromSpeciesAndPersonality
lsls r0, 24
lsrs r0, 24
cmp r0, 0xFF
@@ -27060,7 +27060,7 @@ _080193CE:
_080193E2:
ldr r0, [sp, 0xC]
ldr r1, [sp, 0x14]
- bl pokemon_species_get_gender_info
+ bl GetGenderFromSpeciesAndPersonality
lsls r0, 24
lsrs r0, 24
cmp r0, 0xFF
@@ -54385,11 +54385,11 @@ _08027164: .4byte 0x02024c06
_08027168:
mov r0, r10
mov r1, r9
- bl pokemon_species_get_gender_info
+ bl GetGenderFromSpeciesAndPersonality
adds r4, r0, 0
mov r0, r8
adds r1, r7, 0
- bl pokemon_species_get_gender_info
+ bl GetGenderFromSpeciesAndPersonality
lsls r4, 24
lsls r0, 24
cmp r4, r0
@@ -54416,14 +54416,14 @@ _08027168:
bne _080271CA
mov r0, r10
mov r1, r9
- bl pokemon_species_get_gender_info
+ bl GetGenderFromSpeciesAndPersonality
lsls r0, 24
lsrs r0, 24
cmp r0, 0xFF
beq _080271CA
mov r0, r8
adds r1, r7, 0
- bl pokemon_species_get_gender_info
+ bl GetGenderFromSpeciesAndPersonality
lsls r0, 24
lsrs r0, 24
cmp r0, 0xFF
@@ -64036,7 +64036,7 @@ _0802BD92:
muls r1, r0
adds r0, r1, 0
add r0, r8
- bl pokemon_get_gender
+ bl GetMonGender
adds r5, r0, 0
lsls r5, 24
lsrs r5, 24
@@ -71265,7 +71265,7 @@ sub_802F934: @ 802F934
lsls r1, 24
lsrs r1, 24
mov r0, r8
- bl gpu_pal_obj_decompress_and_apply
+ bl GetMonSpriteTemplate_803C56C
ldr r0, _0802FA8C
mov r10, r0
adds r0, r6, 0
@@ -71560,7 +71560,7 @@ _0802FBEA:
lsls r1, 24
lsrs r1, 24
adds r0, r5, 0
- bl sub_803C5A0
+ bl GetMonSpriteTemplate_803C5A0
ldr r0, _0802FCC0
mov r8, r0
lsls r5, r7, 16
@@ -71674,7 +71674,7 @@ sub_802FCE0: @ 802FCE0
lsls r1, 24
lsrs r1, 24
adds r0, r6, 0
- bl sub_803C5A0
+ bl GetMonSpriteTemplate_803C5A0
ldr r0, _0802FD9C
ldr r2, _0802FDA0
ldrb r1, [r4, 0x8]
@@ -80901,7 +80901,7 @@ sub_80347B8: @ 80347B8
lsls r1, 24
lsrs r1, 24
mov r0, r8
- bl gpu_pal_obj_decompress_and_apply
+ bl GetMonSpriteTemplate_803C56C
ldr r0, _080348F4
mov r9, r0
ldrb r0, [r6]
@@ -81113,7 +81113,7 @@ sub_803495C: @ 803495C
lsls r1, 24
lsrs r1, 24
mov r0, r8
- bl gpu_pal_obj_decompress_and_apply
+ bl GetMonSpriteTemplate_803C56C
ldr r0, _08034ACC
mov r9, r0
adds r0, r6, 0
@@ -81431,7 +81431,7 @@ _08034C56:
lsls r1, 24
lsrs r1, 24
mov r0, r9
- bl sub_803C5A0
+ bl GetMonSpriteTemplate_803C5A0
ldr r5, _08034D90
ldr r1, _08034D94
mov r2, r9
@@ -81642,7 +81642,7 @@ _08034E1A:
lsls r1, 24
lsrs r1, 24
mov r0, r9
- bl sub_803C5A0
+ bl GetMonSpriteTemplate_803C5A0
ldr r0, _08034F54
ldr r2, _08034F58
mov r3, r9
@@ -90128,7 +90128,7 @@ sub_8039294: @ 8039294
lsls r1, 24
lsrs r1, 24
adds r0, r4, 0
- bl gpu_pal_obj_decompress_and_apply
+ bl GetMonSpriteTemplate_803C56C
ldr r0, _080393C8
mov r8, r0
ldrb r0, [r6]
@@ -90332,7 +90332,7 @@ sub_8039430: @ 8039430
lsls r1, 24
lsrs r1, 24
mov r0, r8
- bl gpu_pal_obj_decompress_and_apply
+ bl GetMonSpriteTemplate_803C56C
ldr r0, _080395A0
mov r9, r0
adds r0, r6, 0
@@ -90647,7 +90647,7 @@ _08039724:
lsls r1, 24
lsrs r1, 24
mov r0, r9
- bl sub_803C5A0
+ bl GetMonSpriteTemplate_803C5A0
ldr r6, _08039874
lsls r5, 16
movs r2, 0xB0
diff --git a/asm/rom5.s b/asm/rom5.s
index d7cca7b02..3792b1948 100644
--- a/asm/rom5.s
+++ b/asm/rom5.s
@@ -571,7 +571,7 @@ _0807B1FE:
lsls r1, 24
lsrs r1, 24
adds r0, r4, 0
- bl gpu_pal_obj_decompress_and_apply
+ bl GetMonSpriteTemplate_803C56C
ldr r5, _0807B2C4
adds r0, r7, 0
movs r1, 0x2
@@ -666,7 +666,7 @@ _0807B2D8:
lsls r1, 24
lsrs r1, 24
adds r0, r4, 0
- bl sub_803C5A0
+ bl GetMonSpriteTemplate_803C5A0
ldr r6, _0807B330
ldr r1, _0807B334
ldrb r0, [r5, 0x8]
@@ -707,7 +707,7 @@ _0807B338:
lsls r1, 24
lsrs r1, 24
movs r0, 0x2
- bl sub_803C5A0
+ bl GetMonSpriteTemplate_803C5A0
ldr r5, _0807B3BC
ldr r0, _0807B3C0
ldrb r0, [r0, 0x8]
@@ -795,7 +795,7 @@ _0807B3D0:
lsls r1, 24
lsrs r1, 24
adds r0, r4, 0
- bl gpu_pal_obj_decompress_and_apply
+ bl GetMonSpriteTemplate_803C56C
ldr r5, _0807B4F0
adds r0, r7, 0
movs r1, 0x2
@@ -22601,7 +22601,7 @@ sub_8085AD4: @ 8085AD4
bl LoadCompressedObjectPalette
adds r0, r4, 0
movs r1, 0x3
- bl gpu_pal_obj_decompress_and_apply
+ bl GetMonSpriteTemplate_803C56C
ldr r4, _08085B84
ldrh r0, [r5, 0x4]
strh r0, [r4, 0x2]
@@ -22690,7 +22690,7 @@ sub_8085B88: @ 8085B88
bl LoadCompressedObjectPalette
adds r0, r5, 0
movs r1, 0x3
- bl gpu_pal_obj_decompress_and_apply
+ bl GetMonSpriteTemplate_803C56C
ldr r5, _08085C40
ldrh r0, [r4, 0x4]
strh r0, [r5, 0x2]
@@ -67762,7 +67762,7 @@ _0809C08C:
adds r1, r6, r2
str r0, [r1]
adds r0, r7, 0
- bl pokemon_get_gender
+ bl GetMonGender
lsls r0, 24
lsrs r0, 24
str r0, [sp]
@@ -67836,7 +67836,7 @@ _0809C120:
str r0, [r1]
ldrh r0, [r5]
ldr r1, [r4]
- bl pokemon_species_get_gender_info
+ bl GetGenderFromSpeciesAndPersonality
lsls r0, 24
lsrs r0, 24
str r0, [sp]
@@ -74661,7 +74661,7 @@ _0809F718:
bl LoadCompressedObjectPalette
ldrh r0, [r4, 0x4]
movs r1, 0x1
- bl gpu_pal_obj_decompress_and_apply
+ bl GetMonSpriteTemplate_803C56C
_0809F74E:
ldrb r0, [r7]
adds r0, 0x1
@@ -77000,7 +77000,7 @@ sub_80A0A2C: @ 80A0A2C
cmp r0, 0x1D
beq _080A0A84
adds r0, r6, 0
- bl pokemon_get_gender
+ bl GetMonGender
lsls r0, 24
lsrs r0, 24
cmp r0, 0
@@ -105501,7 +105501,7 @@ unref_sub_80AE908: @ 80AE908
add r0, r9
ldrh r0, [r0]
movs r1, 0x1
- bl gpu_pal_obj_decompress_and_apply
+ bl GetMonSpriteTemplate_803C56C
ldr r0, _080AE9EC
mov r2, r8
ldrb r1, [r2]
@@ -105608,7 +105608,7 @@ sub_80AE9FC: @ 80AE9FC
bl LoadCompressedPalette
adds r0, r5, 0
movs r1, 0
- bl gpu_pal_obj_decompress_and_apply
+ bl GetMonSpriteTemplate_803C56C
ldr r4, _080AEAD8
movs r0, 0x2
adds r1, r5, 0
@@ -141196,7 +141196,7 @@ sub_80BF9F8: @ 80BF9F8
muls r1, r0
adds r0, r1, 0
adds r0, r6
- bl pokemon_get_gender
+ bl GetMonGender
adds r4, r0, 0
lsls r4, 24
lsrs r4, 24
@@ -146987,7 +146987,7 @@ _080C2B14:
bl LoadCompressedObjectPalette
adds r0, r6, 0
movs r1, 0x1
- bl gpu_pal_obj_decompress_and_apply
+ bl GetMonSpriteTemplate_803C56C
ldr r0, _080C2BE8
ldrh r1, [r4, 0x4]
strh r1, [r0, 0x2]
@@ -151855,7 +151855,7 @@ sub_80C5050: @ 80C5050
bl LoadCompressedObjectPalette
adds r0, r6, 0
movs r1, 0x1
- bl gpu_pal_obj_decompress_and_apply
+ bl GetMonSpriteTemplate_803C56C
ldr r0, _080C5158
ldrh r1, [r4, 0x4]
strh r1, [r0, 0x2]
@@ -253387,7 +253387,7 @@ _080F655E:
lsrs r0, 16
str r0, [sp, 0x8]
adds r0, r4, 0
- bl pokemon_get_gender
+ bl GetMonGender
b _080F65EA
.align 2, 0
_080F65A4: .4byte gUnknown_083DFEC4
@@ -253418,7 +253418,7 @@ _080F65B4:
bl sub_80F44B0
adds r1, r0, 0
mov r0, r9
- bl pokemon_species_get_gender_info
+ bl GetGenderFromSpeciesAndPersonality
_080F65EA:
lsls r0, 24
lsrs r4, r0, 24
@@ -293346,7 +293346,7 @@ _081094D2:
adds r2, 0x48
adds r1, r2
ldr r1, [r1]
- bl pokemon_species_get_gender_info
+ bl GetGenderFromSpeciesAndPersonality
ldr r1, _08109504
lsls r0, 24
lsrs r0, 24
@@ -295504,7 +295504,7 @@ sub_810A580: @ 810A580
bl LoadCompressedObjectPalette
adds r0, r5, 0
movs r1, 0x1
- bl gpu_pal_obj_decompress_and_apply
+ bl GetMonSpriteTemplate_803C56C
ldr r0, _0810A620
mov r1, r8
mov r2, r9
@@ -310573,7 +310573,7 @@ evolution_cutscene: @ 8111984
bl LoadCompressedPalette
adds r0, r6, 0
movs r1, 0x1
- bl gpu_pal_obj_decompress_and_apply
+ bl GetMonSpriteTemplate_803C56C
ldr r0, _08111C60
mov r9, r0
ldr r1, _08111C64
@@ -310639,7 +310639,7 @@ evolution_cutscene: @ 8111984
bl LoadCompressedPalette
mov r0, r10
movs r1, 0x3
- bl gpu_pal_obj_decompress_and_apply
+ bl GetMonSpriteTemplate_803C56C
ldr r0, _08111C64
mov r1, r9
str r0, [r1, 0x10]
@@ -310881,7 +310881,7 @@ sub_8111C90: @ 8111C90
bl LoadCompressedPalette
adds r0, r6, 0
movs r1, 0x3
- bl gpu_pal_obj_decompress_and_apply
+ bl GetMonSpriteTemplate_803C56C
ldr r0, _08111E64
ldr r1, _08111E68
str r1, [r0, 0x10]
@@ -311156,7 +311156,7 @@ _08112044: .4byte 0x0000043c
_08112048:
adds r0, r7, 0
movs r1, 0x3
- bl gpu_pal_obj_decompress_and_apply
+ bl GetMonSpriteTemplate_803C56C
ldr r0, _08112098
ldr r1, _0811209C
str r1, [r0, 0x10]
@@ -311307,7 +311307,7 @@ sub_81120E4: @ 81120E4
bl LoadCompressedPalette
adds r0, r5, 0
movs r1, 0x1
- bl gpu_pal_obj_decompress_and_apply
+ bl GetMonSpriteTemplate_803C56C
ldr r0, _08112254
ldr r1, _08112258
str r1, [r0, 0x10]
@@ -338019,7 +338019,7 @@ sub_811F6D8: @ 811F6D8
lsls r1, 24
lsrs r1, 24
adds r0, r4, 0
- bl gpu_pal_obj_decompress_and_apply
+ bl GetMonSpriteTemplate_803C56C
ldr r0, _0811F7D8
mov r8, r0
ldrb r0, [r6]
@@ -338211,7 +338211,7 @@ sub_811F864: @ 811F864
lsls r1, 24
lsrs r1, 24
mov r0, r8
- bl gpu_pal_obj_decompress_and_apply
+ bl GetMonSpriteTemplate_803C56C
ldr r0, _0811F9BC
mov r10, r0
adds r0, r6, 0
@@ -338520,7 +338520,7 @@ _0811FB34:
lsls r1, 24
lsrs r1, 24
adds r0, r4, 0
- bl sub_803C5A0
+ bl GetMonSpriteTemplate_803C5A0
ldr r0, _0811FC10
mov r8, r0
lsls r5, 16
@@ -363295,7 +363295,7 @@ sub_812B8B8: @ 812B8B8
lsls r1, 24
lsrs r1, 24
adds r0, r6, 0
- bl sub_803C5A0
+ bl GetMonSpriteTemplate_803C5A0
ldr r0, _0812B974
ldr r2, _0812B978
ldrb r1, [r4, 0x8]
@@ -390330,7 +390330,7 @@ sub_8138D38: @ 8138D38
lsls r1, 24
lsrs r1, 24
movs r0, 0x2
- bl sub_803C5A0
+ bl GetMonSpriteTemplate_803C5A0
ldr r0, _08138DE4
ldr r1, _08138DE8
ldrb r1, [r1, 0x8]
@@ -390424,7 +390424,7 @@ sub_8138E04: @ 8138E04
lsls r1, 24
lsrs r1, 24
movs r0, 0x2
- bl sub_803C5A0
+ bl GetMonSpriteTemplate_803C5A0
ldr r0, _08138EB0
ldr r1, _08138EB4
ldrb r1, [r1, 0x8]
@@ -391804,7 +391804,7 @@ sub_81398BC: @ 81398BC
lsls r1, 24
lsrs r1, 24
mov r0, r8
- bl gpu_pal_obj_decompress_and_apply
+ bl GetMonSpriteTemplate_803C56C
ldr r0, _08139A18
mov r10, r0
adds r0, r6, 0
@@ -411180,7 +411180,7 @@ _08143204:
lsrs r0, 23
mov r2, r9
ldr r1, [r2, 0x4]
- bl pokemon_species_get_gender_info
+ bl GetGenderFromSpeciesAndPersonality
lsls r0, 24
lsrs r0, 24
cmp r0, 0
@@ -420273,7 +420273,7 @@ _08147BB8:
bl LoadCompressedObjectPalette
ldrh r0, [r4, 0x4]
movs r1, 0x1
- bl gpu_pal_obj_decompress_and_apply
+ bl GetMonSpriteTemplate_803C56C
b _08147C40
_08147BF0:
ldr r0, _08147BF8
diff --git a/asm/rom_803BA2C.s b/asm/rom_803BA2C.s
index 9b036e388..5b01aef23 100644
--- a/asm/rom_803BA2C.s
+++ b/asm/rom_803BA2C.s
@@ -1351,178 +1351,4 @@ _0803C4AA:
bx r1
thumb_func_end sub_803C434
- thumb_func_start pokemon_get_gender
-pokemon_get_gender: @ 803C4B8
- push {lr}
- bl pokemon_roll_gender
- lsls r0, 24
- lsrs r0, 24
- pop {r1}
- bx r1
- thumb_func_end pokemon_get_gender
-
- thumb_func_start pokemon_roll_gender
-pokemon_roll_gender: @ 803C4C8
- push {r4,r5,lr}
- adds r4, r0, 0
- movs r1, 0xB
- movs r2, 0
- bl GetBoxMonData
- lsls r0, 16
- lsrs r5, r0, 16
- adds r0, r4, 0
- movs r1, 0
- movs r2, 0
- bl GetBoxMonData
- adds r2, r0, 0
- ldr r1, _0803C518
- lsls r0, r5, 3
- subs r0, r5
- lsls r0, 2
- adds r0, r1
- ldrb r0, [r0, 0x10]
- cmp r0, 0
- beq _0803C51E
- cmp r0, 0
- blt _0803C500
- cmp r0, 0xFF
- bgt _0803C500
- cmp r0, 0xFE
- bge _0803C51E
-_0803C500:
- ldr r1, _0803C518
- lsls r0, r5, 3
- subs r0, r5
- lsls r0, 2
- adds r0, r1
- ldrb r1, [r0, 0x10]
- movs r0, 0xFF
- ands r0, r2
- cmp r1, r0
- bhi _0803C51C
- movs r0, 0
- b _0803C51E
- .align 2, 0
-_0803C518: .4byte gBaseStats
-_0803C51C:
- movs r0, 0xFE
-_0803C51E:
- pop {r4,r5}
- pop {r1}
- bx r1
- thumb_func_end pokemon_roll_gender
-
- thumb_func_start pokemon_species_get_gender_info
-pokemon_species_get_gender_info: @ 803C524
- push {lr}
- adds r3, r1, 0
- lsls r0, 16
- lsrs r2, r0, 16
- ldr r1, _0803C560
- lsls r0, r2, 3
- subs r0, r2
- lsls r0, 2
- adds r0, r1
- ldrb r0, [r0, 0x10]
- cmp r0, 0
- beq _0803C566
- cmp r0, 0
- blt _0803C548
- cmp r0, 0xFF
- bgt _0803C548
- cmp r0, 0xFE
- bge _0803C566
-_0803C548:
- lsls r0, r2, 3
- subs r0, r2
- lsls r0, 2
- adds r0, r1
- ldrb r1, [r0, 0x10]
- movs r0, 0xFF
- ands r0, r3
- cmp r1, r0
- bhi _0803C564
- movs r0, 0
- b _0803C566
- .align 2, 0
-_0803C560: .4byte gBaseStats
-_0803C564:
- movs r0, 0xFE
-_0803C566:
- pop {r1}
- bx r1
- thumb_func_end pokemon_species_get_gender_info
-
- thumb_func_start gpu_pal_obj_decompress_and_apply
-gpu_pal_obj_decompress_and_apply: @ 803C56C
- push {r4-r6,lr}
- lsls r1, 24
- lsrs r1, 24
- ldr r3, _0803C594
- ldr r4, _0803C598
- lsls r2, r1, 1
- adds r2, r1
- lsls r2, 3
- adds r1, r3, 0
- adds r2, r4
- ldm r2!, {r4-r6}
- stm r1!, {r4-r6}
- ldm r2!, {r4-r6}
- stm r1!, {r4-r6}
- strh r0, [r3, 0x2]
- ldr r0, _0803C59C
- str r0, [r3, 0x8]
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_0803C594: .4byte 0x02024e8c
-_0803C598: .4byte gSpriteTemplate_8208288
-_0803C59C: .4byte gSpriteAnimTable_81E7C64
- thumb_func_end gpu_pal_obj_decompress_and_apply
-
- thumb_func_start sub_803C5A0
-sub_803C5A0: @ 803C5A0
- push {r4-r7,lr}
- lsls r0, 16
- lsrs r4, r0, 16
- lsls r1, 24
- lsrs r3, r1, 24
- ldr r5, _0803C5D0
- ldr r2, _0803C5D4
- lsls r0, r3, 1
- adds r0, r3
- lsls r0, 3
- adds r1, r5, 0
- adds r0, r2
- ldm r0!, {r2,r6,r7}
- stm r1!, {r2,r6,r7}
- ldm r0!, {r2,r6,r7}
- stm r1!, {r2,r6,r7}
- strh r4, [r5, 0x2]
- cmp r3, 0
- beq _0803C5CA
- cmp r3, 0x2
- bne _0803C5DC
-_0803C5CA:
- ldr r0, _0803C5D8
- b _0803C5DE
- .align 2, 0
-_0803C5D0: .4byte 0x02024e8c
-_0803C5D4: .4byte gSpriteTemplate_8208288
-_0803C5D8: .4byte gUnknown_081ECACC
-_0803C5DC:
- ldr r0, _0803C5EC
-_0803C5DE:
- lsls r1, r4, 2
- adds r1, r0
- ldr r0, [r1]
- str r0, [r5, 0x8]
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_0803C5EC: .4byte gUnknown_081EC2A4
- thumb_func_end sub_803C5A0
-
.align 2, 0 @ Don't pad with nop.
diff --git a/asm/rom_8040EB4.s b/asm/rom_8040EB4.s
index b956baaa7..8fb3e7508 100644
--- a/asm/rom_8040EB4.s
+++ b/asm/rom_8040EB4.s
@@ -2209,7 +2209,7 @@ _08041EFC:
b _08041F3C
_08041F26:
adds r0, r5, 0
- bl pokemon_roll_gender
+ bl GetBoxMonGender
lsls r0, 24
lsrs r0, 24
cmp r0, 0xFE
@@ -2269,7 +2269,7 @@ _08041F88:
adds r0, r1
lsls r0, 4
add r0, r8
- bl pokemon_roll_gender
+ bl GetBoxMonGender
lsls r0, 24
lsrs r0, 24
cmp r0, 0xFE
@@ -2865,7 +2865,7 @@ _0804240E:
bl GetBoxMonData
adds r1, r0, 0
ldrh r0, [r5]
- bl pokemon_species_get_gender_info
+ bl GetGenderFromSpeciesAndPersonality
lsls r0, 24
lsrs r0, 24
ldr r2, [sp, 0x24]
@@ -3140,7 +3140,7 @@ sub_8042614: @ 8042614
push {r4,lr}
adds r4, r0, 0
adds r0, r1, 0
- bl pokemon_roll_gender
+ bl GetBoxMonGender
adds r1, r0, 0
lsls r1, 24
lsrs r1, 24
@@ -3871,7 +3871,7 @@ _08042C14:
bl sub_8040990
ldrh r0, [r0, 0x4]
adds r1, r5, 0
- bl gpu_pal_obj_decompress_and_apply
+ bl GetMonSpriteTemplate_803C56C
ldr r0, _08042C60
movs r1, 0x78
movs r2, 0x46
@@ -4580,7 +4580,7 @@ _080431DA:
muls r1, r0
adds r0, r1, 0
adds r0, r6
- bl pokemon_get_gender
+ bl GetMonGender
adds r4, r0, 0
lsls r4, 24
lsrs r4, 24
@@ -8663,7 +8663,7 @@ sub_80451A0: @ 80451A0
strb r0, [r5, 0x4]
adds r5, 0x5
adds r0, r7, 0
- bl pokemon_get_gender
+ bl GetMonGender
lsls r0, 24
lsrs r6, r0, 24
adds r0, r7, 0
@@ -18780,7 +18780,7 @@ sub_804A2B4: @ 804A2B4
mov r1, sp
bl StringCopy10
adds r0, r4, 0
- bl pokemon_get_gender
+ bl GetMonGender
adds r0, r4, 0
movs r1, 0x38
bl GetMonData
@@ -18801,7 +18801,7 @@ _0804A2F4:
mov r1, sp
bl StringCopy10
adds r0, r4, 0
- bl pokemon_get_gender
+ bl GetMonGender
adds r0, r4, 0
movs r1, 0x38
bl GetMonData
@@ -18995,7 +18995,7 @@ _0804A484:
add r1, sp, 0x4
bl StringCopy10
adds r0, r4, 0
- bl pokemon_get_gender
+ bl GetMonGender
mov r1, sp
adds r1, 0x22
ldr r0, _0804A518
@@ -19112,7 +19112,7 @@ sub_804A51C: @ 804A51C
lsls r0, 24
lsrs r6, r0, 24
adds r0, r4, 0
- bl pokemon_get_gender
+ bl GetMonGender
lsls r0, 24
lsrs r7, r0, 24
adds r0, r4, 0
@@ -19137,7 +19137,7 @@ _0804A5A8:
lsls r0, 24
lsrs r6, r0, 24
adds r0, r4, 0
- bl pokemon_get_gender
+ bl GetMonGender
lsls r0, 24
lsrs r7, r0, 24
adds r0, r4, 0
@@ -20973,7 +20973,7 @@ _0804B3A4:
bl sub_8040990
ldrh r0, [r0, 0x4]
adds r1, r4, 0
- bl gpu_pal_obj_decompress_and_apply
+ bl GetMonSpriteTemplate_803C56C
ldr r0, _0804B40C
movs r1, 0x78
movs r2, 0x3C
diff --git a/asm/rom_8065394.s b/asm/rom_8065394.s
index 1bce0f002..41cc5a80b 100644
--- a/asm/rom_8065394.s
+++ b/asm/rom_8065394.s
@@ -13968,7 +13968,7 @@ _0806BCEE:
cmp r0, 0
bne _0806BD38
adds r0, r4, 0
- bl pokemon_get_gender
+ bl GetMonGender
lsls r0, 24
lsrs r0, 24
cmp r0, 0
@@ -19037,7 +19037,7 @@ sub_806E3C0: @ 806E3C0
lsls r4, 16
lsrs r4, 16
adds r0, r5, 0
- bl pokemon_get_gender
+ bl GetMonGender
adds r1, r0, 0
lsls r1, 24
lsrs r1, 24
diff --git a/include/pokemon.h b/include/pokemon.h
index 2f4d356c3..b1ccf2704 100644
--- a/include/pokemon.h
+++ b/include/pokemon.h
@@ -91,6 +91,10 @@
#define MON_DATA_SPATK2 87
#define MON_DATA_SPDEF2 88
+#define MON_MALE 0x00
+#define MON_FEMALE 0xFE
+#define MON_GENDERLESS 0xFF
+
struct PokemonSubstruct0
{
u16 species;
@@ -360,8 +364,11 @@ u16 sub_803B7C8(struct Pokemon *mon, u8 a2);
void DeleteFirstMoveAndGiveMoveToMon(struct Pokemon *mon, u16 move);
void DeleteFirstMoveAndGiveMoveToBoxMon(struct BoxPokemon *boxMon, u16 move);
-u8 pokemon_species_get_gender_info(u16 species, u32 personality);
-
+u8 GetMonGender(struct Pokemon *mon);
+u8 GetBoxMonGender(struct BoxPokemon *boxMon);
+u8 GetGenderFromSpeciesAndPersonality(u16 species, u32 personality);
+void GetMonSpriteTemplate_803C56C(u16 species, u8 a2);
+void GetMonSpriteTemplate_803C5A0(u16 species, u8 a2);
void EncryptBoxMon(struct BoxPokemon *boxMon);
void DecryptBoxMon(struct BoxPokemon *boxMon);
union PokemonSubstruct *GetSubstruct(struct BoxPokemon *boxMon, u32 personality, u8 substructType);
diff --git a/src/main_menu.c b/src/main_menu.c
index 559bf5a0a..692267c64 100644
--- a/src/main_menu.c
+++ b/src/main_menu.c
@@ -8,6 +8,7 @@
#include "palette.h"
#include "string_util.h"
#include "species.h"
+#include "pokemon.h"
extern u8 MenuUpdateWindowText(void);
extern void MenuPrint(u8 *, u8, u8);
@@ -41,7 +42,6 @@ void CB2_MainMenu(void);
void VBlankCB_MainMenu(void);
void DecompressPicFromTable_2(const struct SpriteSheet *, u8, u8, void *, void *, u32);
void LoadCompressedObjectPalette(const struct SpritePalette *);
-void gpu_pal_obj_decompress_and_apply(u16, u8);
u8 AddNewGameBirchObject(u8, u8, u8);
u8 sub_80859BC(u8, u16, u16, u8, void *);
void MenuDrawTextWindow(u8 a, u8 b, u8 c, u8 d);
@@ -1426,7 +1426,7 @@ u8 CreateAzurillSprite(u8 a1, u8 a2)
gUnknown_081FAF4C[1],
SPECIES_AZURILL);
LoadCompressedObjectPalette(&gMonPaletteTable[SPECIES_AZURILL]);
- gpu_pal_obj_decompress_and_apply(SPECIES_AZURILL, 1);
+ GetMonSpriteTemplate_803C56C(SPECIES_AZURILL, 1);
return CreateSprite(&gUnknown_02024E8C, a1, a2, 0);
}
diff --git a/src/pokemon_1.c b/src/pokemon_1.c
index 02ae1533f..566db2e68 100644
--- a/src/pokemon_1.c
+++ b/src/pokemon_1.c
@@ -4,6 +4,7 @@
#include "pokemon.h"
#include "species.h"
#include "main.h"
+#include "sprite.h"
extern u8 sav1_map_get_name();
@@ -203,7 +204,7 @@ void CreateMonWithGenderNatureLetter(struct Pokemon *mon, u16 species, u8 level,
actualLetter = ((((personality & 0x3000000) >> 18) | ((personality & 0x30000) >> 12) | ((personality & 0x300) >> 6) | personality & 0x3) % 28);
}
while (nature != GetNatureFromPersonality(personality)
- || gender != pokemon_species_get_gender_info(species, personality)
+ || gender != GetGenderFromSpeciesAndPersonality(species, personality)
|| actualLetter != unownLetter - 1);
}
else
@@ -214,7 +215,7 @@ void CreateMonWithGenderNatureLetter(struct Pokemon *mon, u16 species, u8 level,
personality = (u16)r | (Random() << 16);
}
while (nature != GetNatureFromPersonality(personality)
- || gender != pokemon_species_get_gender_info(species, personality));
+ || gender != GetGenderFromSpeciesAndPersonality(species, personality));
}
CreateMon(mon, species, level, fixedIV, 1, personality, 0, 0);
@@ -234,7 +235,7 @@ void CreateMaleMon(struct Pokemon *mon, u16 species, u8 level)
r2 = Random();
personality = (u16)r2 | (Random() << 16);
}
- while (pokemon_species_get_gender_info(species, personality) != MALE);
+ while (GetGenderFromSpeciesAndPersonality(species, personality) != MON_MALE);
CreateMon(mon, species, level, 32, 1, personality, 1, otId);
}
diff --git a/src/pokemon_2.c b/src/pokemon_2.c
index 9f9fc3911..647808d14 100644
--- a/src/pokemon_2.c
+++ b/src/pokemon_2.c
@@ -4,10 +4,75 @@
#include "pokemon.h"
#include "species.h"
#include "main.h"
+#include "sprite.h"
+
+extern struct SpriteTemplate gUnknown_02024E8C;
extern u8 gBadEggNickname[];
extern u8 gEggNickname[];
extern u32 gBitTable[];
+extern struct BaseStats gBaseStats[];
+extern struct SpriteTemplate gSpriteTemplate_8208288[];
+extern union AmimCmd *gSpriteAnimTable_81E7C64[];
+extern union AnimCmd **gUnknown_081EC2A4[];
+extern union AnimCmd **gUnknown_081ECACC[];
+
+u8 GetMonGender(struct Pokemon *mon)
+{
+ return GetBoxMonGender(&mon->box);
+}
+
+u8 GetBoxMonGender(struct BoxPokemon *boxMon)
+{
+ u16 species = GetBoxMonData(boxMon, MON_DATA_SPECIES, NULL);
+ u32 personality = GetBoxMonData(boxMon, MON_DATA_PERSONALITY, NULL);
+
+ switch (gBaseStats[species].genderRatio)
+ {
+ case MON_MALE:
+ case MON_FEMALE:
+ case MON_GENDERLESS:
+ return gBaseStats[species].genderRatio;
+ }
+
+ if (gBaseStats[species].genderRatio > (personality & 0xFF))
+ return MON_FEMALE;
+ else
+ return MON_MALE;
+}
+
+u8 GetGenderFromSpeciesAndPersonality(u16 species, u32 personality)
+{
+ switch (gBaseStats[species].genderRatio)
+ {
+ case MON_MALE:
+ case MON_FEMALE:
+ case MON_GENDERLESS:
+ return gBaseStats[species].genderRatio;
+ }
+
+ if (gBaseStats[species].genderRatio > (personality & 0xFF))
+ return MON_FEMALE;
+ else
+ return MON_MALE;
+}
+
+void GetMonSpriteTemplate_803C56C(u16 species, u8 a2)
+{
+ gUnknown_02024E8C = gSpriteTemplate_8208288[a2];
+ gUnknown_02024E8C.paletteTag = species;
+ gUnknown_02024E8C.anims = (union AnimCmd **)gSpriteAnimTable_81E7C64;
+}
+
+void GetMonSpriteTemplate_803C5A0(u16 species, u8 a2)
+{
+ gUnknown_02024E8C = gSpriteTemplate_8208288[a2];
+ gUnknown_02024E8C.paletteTag = species;
+ if (a2 == 0 || a2 == 2)
+ gUnknown_02024E8C.anims = gUnknown_081ECACC[species];
+ else
+ gUnknown_02024E8C.anims = gUnknown_081EC2A4[species];
+}
void EncryptBoxMon(struct BoxPokemon *boxMon)
{