diff options
author | YamaArashi <shadow962@live.com> | 2016-09-10 01:59:10 -0700 |
---|---|---|
committer | YamaArashi <shadow962@live.com> | 2016-09-10 01:59:10 -0700 |
commit | 19bffecc4deb401aa51add3b95163b72686f40ee (patch) | |
tree | be5ff81cfaeb53b8c386147877fef8ceeb2ec283 | |
parent | 69ca60ca91e3cf0d3dc323bf30bb7d79c77464d8 (diff) |
decompile more pokemon functions
-rw-r--r-- | asm/rom3.s | 40 | ||||
-rw-r--r-- | asm/rom5.s | 66 | ||||
-rw-r--r-- | asm/rom_803BA2C.s | 174 | ||||
-rw-r--r-- | asm/rom_8040EB4.s | 26 | ||||
-rw-r--r-- | asm/rom_8065394.s | 4 | ||||
-rw-r--r-- | include/pokemon.h | 11 | ||||
-rw-r--r-- | src/main_menu.c | 4 | ||||
-rw-r--r-- | src/pokemon_1.c | 7 | ||||
-rw-r--r-- | src/pokemon_2.c | 65 |
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) { |