diff options
author | PikalaxALT <PikalaxALT@gmail.com> | 2020-03-20 19:59:20 -0400 |
---|---|---|
committer | PikalaxALT <PikalaxALT@gmail.com> | 2020-03-20 19:59:20 -0400 |
commit | 73b04853e9a2b84e49534f1c221addac93288791 (patch) | |
tree | 0e3b0520e430a69aa91aab37b3b6096f173da78b | |
parent | fafb25254389039e163898fada192534754e1f58 (diff) |
through sub_811D178
-rw-r--r-- | asm/pokemon_special_anim.s | 223 | ||||
-rw-r--r-- | data/pokemon_special_anim.s | 4 | ||||
-rw-r--r-- | include/pokemon_special_anim_internal.h | 51 | ||||
-rw-r--r-- | src/pokemon_special_anim.c | 156 | ||||
-rw-r--r-- | sym_ewram.txt | 12 |
5 files changed, 164 insertions, 282 deletions
diff --git a/asm/pokemon_special_anim.s b/asm/pokemon_special_anim.s index 676222f30..6eed303ea 100644 --- a/asm/pokemon_special_anim.s +++ b/asm/pokemon_special_anim.s @@ -5,229 +5,6 @@ .text - thumb_func_start sub_811D018 -sub_811D018: @ 811D018 - push {r4,lr} - lsls r0, 16 - lsrs r3, r0, 16 - movs r2, 0 - ldr r4, _0811D044 @ =gUnknown_8459634 -_0811D022: - adds r1, r4, 0 - ldrh r0, [r1] - cmp r0, r3 - beq _0811D04C - adds r4, r1, 0x4 - adds r2, 0x1 - cmp r2, 0x1 - bls _0811D022 - ldr r1, _0811D048 @ =0xfffffedf - adds r0, r3, r1 - lsls r0, 16 - lsrs r0, 16 - cmp r0, 0x39 - bls _0811D050 - movs r0, 0 - b _0811D052 - .align 2, 0 -_0811D044: .4byte gUnknown_8459634 -_0811D048: .4byte 0xfffffedf -_0811D04C: - ldrh r0, [r4, 0x2] - b _0811D052 -_0811D050: - movs r0, 0x4 -_0811D052: - pop {r4} - pop {r1} - bx r1 - thumb_func_end sub_811D018 - - thumb_func_start sub_811D058 -sub_811D058: @ 811D058 - push {lr} - lsls r0, 16 - lsrs r0, 16 - adds r1, r0, 0 - cmp r0, 0x64 - bhi _0811D068 - movs r0, 0 - b _0811D07A -_0811D068: - cmp r0, 0x96 - bhi _0811D070 - movs r0, 0x1 - b _0811D07A -_0811D070: - cmp r1, 0xC8 - bls _0811D078 - movs r0, 0x3 - b _0811D07A -_0811D078: - movs r0, 0x2 -_0811D07A: - pop {r1} - bx r1 - thumb_func_end sub_811D058 - - thumb_func_start sub_811D080 -sub_811D080: @ 811D080 - push {lr} - ldr r0, _0811D090 @ =gUnknown_203B094 - ldrb r0, [r0] - movs r1, 0 - bl GetWordTaskArg - pop {r1} - bx r1 - .align 2, 0 -_0811D090: .4byte gUnknown_203B094 - thumb_func_end sub_811D080 - - thumb_func_start sub_811D094 -sub_811D094: @ 811D094 - push {lr} - bl sub_811D080 - ldr r1, _0811D0A4 @ =gUnknown_203B098 - str r0, [r1] - adds r0, 0x8 - pop {r1} - bx r1 - .align 2, 0 -_0811D0A4: .4byte gUnknown_203B098 - thumb_func_end sub_811D094 - - thumb_func_start sub_811D0A8 -sub_811D0A8: @ 811D0A8 - push {lr} - bl sub_811D080 - adds r0, 0xA8 - pop {r1} - bx r1 - thumb_func_end sub_811D0A8 - - thumb_func_start sub_811D0B4 -sub_811D0B4: @ 811D0B4 - push {lr} - bl sub_811D080 - adds r0, 0x96 - ldrh r0, [r0] - pop {r1} - bx r1 - thumb_func_end sub_811D0B4 - - thumb_func_start sub_811D0C4 -sub_811D0C4: @ 811D0C4 - push {lr} - bl sub_811D080 - adds r0, 0x77 - pop {r1} - bx r1 - thumb_func_end sub_811D0C4 - - thumb_func_start sub_811D0D0 -sub_811D0D0: @ 811D0D0 - push {lr} - bl sub_811D080 - adds r0, 0x84 - pop {r1} - bx r1 - thumb_func_end sub_811D0D0 - - thumb_func_start sub_811D0DC -sub_811D0DC: @ 811D0DC - push {r4,lr} - adds r4, r0, 0 - bl sub_811D080 - adds r1, r0, 0 - adds r1, 0x6C - adds r0, r4, 0 - bl StringCopy - pop {r4} - pop {r1} - bx r1 - thumb_func_end sub_811D0DC - - thumb_func_start sub_811D0F4 -sub_811D0F4: @ 811D0F4 - push {lr} - bl sub_811D080 - adds r0, 0x6C - pop {r1} - bx r1 - thumb_func_end sub_811D0F4 - - thumb_func_start sub_811D100 -sub_811D100: @ 811D100 - push {lr} - bl sub_811D080 - adds r0, 0x98 - ldrb r0, [r0] - pop {r1} - bx r1 - thumb_func_end sub_811D100 - - thumb_func_start sub_811D110 -sub_811D110: @ 811D110 - push {lr} - bl sub_811D080 - adds r0, 0x94 - ldrh r0, [r0] - pop {r1} - bx r1 - thumb_func_end sub_811D110 - - thumb_func_start sub_811D120 -sub_811D120: @ 811D120 - push {lr} - bl sub_811D080 - adds r0, 0xA0 - ldr r0, [r0] - pop {r1} - bx r1 - thumb_func_end sub_811D120 - - thumb_func_start BufferMonStatsToTaskData -BufferMonStatsToTaskData: @ 811D130 - push {r4,r5,lr} - adds r4, r0, 0 - adds r5, r1, 0 - movs r1, 0x3A - bl GetMonData - strh r0, [r5] - adds r0, r4, 0 - movs r1, 0x3B - bl GetMonData - strh r0, [r5, 0x2] - adds r0, r4, 0 - movs r1, 0x3C - bl GetMonData - strh r0, [r5, 0x4] - adds r0, r4, 0 - movs r1, 0x3D - bl GetMonData - strh r0, [r5, 0x6] - adds r0, r4, 0 - movs r1, 0x3E - bl GetMonData - strh r0, [r5, 0x8] - adds r0, r4, 0 - movs r1, 0x3F - bl GetMonData - strh r0, [r5, 0xA] - pop {r4,r5} - pop {r0} - bx r0 - thumb_func_end BufferMonStatsToTaskData - - thumb_func_start sub_811D178 -sub_811D178: @ 811D178 - ldr r0, _0811D180 @ =gUnknown_203B090 - ldr r0, [r0] - bx lr - .align 2, 0 -_0811D180: .4byte gUnknown_203B090 - thumb_func_end sub_811D178 - thumb_func_start sub_811D184 sub_811D184: @ 811D184 push {r4,r5,lr} diff --git a/data/pokemon_special_anim.s b/data/pokemon_special_anim.s index 1c479d0c0..b18f01ef9 100644 --- a/data/pokemon_special_anim.s +++ b/data/pokemon_special_anim.s @@ -6,10 +6,6 @@ .section .rodata .align 2 -gUnknown_8459634:: @ 8459634 data16 2x2 - .2byte 0x0044, 0x0000 - .2byte 0x000d, 0x0001 - gUnknown_845963C:: @ 845963C gbapal .incbin "graphics/pokemon_special_anim/unk_845963C.gbapal" diff --git a/include/pokemon_special_anim_internal.h b/include/pokemon_special_anim_internal.h new file mode 100644 index 000000000..276168aa6 --- /dev/null +++ b/include/pokemon_special_anim_internal.h @@ -0,0 +1,51 @@ +#ifndef GUARD_POKEMON_SPECIAL_ANIM_INTERNAL_H +#define GUARD_POKEMON_SPECIAL_ANIM_INTERNAL_H + +#include "pokemon_special_anim.h" + +struct PokemonSpecialAnim +{ + /*0x0000*/ u8 filler_0000[0x4]; + /*0x0004*/ MainCallback savedCallback; + /*0x0008*/ struct Pokemon pokemon; + /*0x006c*/ u8 nickname[POKEMON_NAME_LENGTH + 1]; + /*0x0077*/ u8 nameOfMoveForgotten[13]; + /*0x0084*/ u8 nameOfMoveToTeach[13]; + /*0x0091*/ bool8 cancelDisabled; + /*0x0092*/ u16 state; + /*0x0094*/ u16 species; + /*0x0096*/ u16 itemId; + /*0x0098*/ u16 animType; + /*0x009a*/ u16 slotId; + /*0x009c*/ u16 closeness; + /*0x009e*/ u16 field_009e; + /*0x00a0*/ u32 personality; + /*0x00a4*/ u32 field_00a4; + /*0x00a8*/ u8 field_00a8[0x2834]; +}; // size=0x28dc + +void sub_811D184(u8 *buffer, u16 animType); +bool8 sub_811D280(void); +void sub_811D29C(void); +void sub_811D2A8(void); +void sub_811D2D0(void); +void sub_811D2EC(u8 a0); +void sub_811D4D4(void); +bool8 sub_811D4EC(void); +void sub_811D4FC(void); +bool8 sub_811D530(void); +void sub_811D5A0(void); +void sub_811D5B0(void); +bool8 sub_811D5C0(void); +void sub_811D6EC(void); +bool8 sub_811D6FC(void); +bool8 sub_811D754(void); +void sub_811D830(u8 a0); +void sub_811D948(u8 closeness); +bool8 sub_811D9A8(void); +void sub_811DC54(u16 itemId, u8 closeness, u8 a2); +void sub_811DCF0(u16 itemId); +bool8 sub_811DD90(void); +void sub_811E040(void); + +#endif //GUARD_POKEMON_SPECIAL_ANIM_INTERNAL_H diff --git a/src/pokemon_special_anim.c b/src/pokemon_special_anim.c index 542e0ffb3..46d1251df 100644 --- a/src/pokemon_special_anim.c +++ b/src/pokemon_special_anim.c @@ -2,36 +2,18 @@ #include "gflib.h" #include "data.h" #include "party_menu.h" +#include "pokemon_special_anim_internal.h" #include "item_use.h" #include "task.h" #include "constants/songs.h" +#include "constants/items.h" // Functions related to the special anims Pokemon // make when using an item on them in the field. -struct PokemonSpecialAnim -{ - /*0x0000*/ u8 filler_0000[0x4]; - /*0x0004*/ MainCallback savedCallback; - /*0x0008*/ struct Pokemon pokemon; - /*0x006c*/ u8 nickname[POKEMON_NAME_LENGTH + 1]; - /*0x0077*/ u8 nameOfMoveForgotten[13]; - /*0x0084*/ u8 nameOfMoveToTeach[13]; - /*0x0091*/ bool8 cancelDisabled; - /*0x0092*/ u16 state; - /*0x0094*/ u16 species; - /*0x0096*/ u16 itemId; - /*0x0098*/ u16 animType; - /*0x009a*/ u16 slotId; - /*0x009c*/ u16 closeness; - /*0x009e*/ u16 field_009e; - /*0x00a0*/ u32 personality; - /*0x00a4*/ u32 field_00a4; - /*0x00a8*/ u8 field_00a8[0x2834]; -}; // size=0x28dc - EWRAM_DATA bool32 gUnknown_203B090 = FALSE; EWRAM_DATA u8 gUnknown_203B094 = 0; +EWRAM_DATA struct PokemonSpecialAnim * gUnknown_203B098 = NULL; struct PokemonSpecialAnim * sub_811C5D4(u8 slotId, u16 itemId, MainCallback callback); void sub_811C748(struct PokemonSpecialAnim * ptr); @@ -45,29 +27,6 @@ void sub_811CE4C(u8 taskId); void sub_811CF88(u8 taskId); u8 sub_811D058(u16 friendship); u16 sub_811D018(u16 itemId); -void sub_811D184(u8 *buffer, u16 animType); -bool8 sub_811D280(void); -void sub_811D29C(void); -void sub_811D2A8(void); -void sub_811D2D0(void); -void sub_811D2EC(u8 a0); -void sub_811D4D4(void); -bool8 sub_811D4EC(void); -void sub_811D4FC(void); -bool8 sub_811D530(void); -void sub_811D5A0(void); -void sub_811D5B0(void); -bool8 sub_811D5C0(void); -void sub_811D6EC(void); -bool8 sub_811D6FC(void); -bool8 sub_811D754(void); -void sub_811D830(u8 a0); -void sub_811D948(u8 closeness); -bool8 sub_811D9A8(void); -void sub_811DC54(u16 itemId, u8 closeness, u8 a2); -void sub_811DCF0(u16 itemId); -bool8 sub_811DD90(void); -void sub_811E040(void); void sub_811C540(u8 slotId, u16 itemId, MainCallback callback) { @@ -638,3 +597,112 @@ void sub_811CF88(u8 taskId) break; } } + +const struct { + u16 itemId; + u16 animType; +} gUnknown_8459634[2] = { + {ITEM_RARE_CANDY, 0}, + {ITEM_POTION, 1} +}; + +u16 sub_811D018(u16 itemId) +{ + int i; + + for (i = 0; i < NELEMS(gUnknown_8459634); i++) + { + if (gUnknown_8459634[i].itemId == itemId) + return gUnknown_8459634[i].animType; + } + + if (itemId >= ITEM_TM01 && itemId <= ITEM_HM08) + { + return 4; + } + + return 0; +} + +u8 sub_811D058(u16 friendship) +{ + if (friendship <= 100) + return 0; + else if (friendship <= 150) + return 1; + else if (friendship <= 200) + return 2; + else + return 3; +} + +struct PokemonSpecialAnim * sub_811D080(void) +{ + return (void *)GetWordTaskArg(gUnknown_203B094, 0); +} + +struct Pokemon * sub_811D094(void) +{ + gUnknown_203B098 = sub_811D080(); + return &gUnknown_203B098->pokemon; +} + +u8 *sub_811D0A8(void) +{ + return sub_811D080()->field_00a8; +} + +u16 sub_811D0B4(void) +{ + return sub_811D080()->itemId; +} + +u8 *sub_811D0C4(void) +{ + return sub_811D080()->nameOfMoveForgotten; +} + +u8 *sub_811D0D0(void) +{ + return sub_811D080()->nameOfMoveToTeach; +} + +u8 *sub_811D0DC(u8 *dest) +{ + return StringCopy(dest, sub_811D080()->nickname); +} + +u8 *sub_811D0F4(void) +{ + return sub_811D080()->nickname; +} + +u8 sub_811D100(void) +{ + return sub_811D080()->animType; +} + +u16 sub_811D110(void) +{ + return sub_811D080()->species; +} + +u32 sub_811D120(void) +{ + return sub_811D080()->personality; +} + +void BufferMonStatsToTaskData(struct Pokemon * pokemon, u16 *data) +{ + data[0] = GetMonData(pokemon, MON_DATA_MAX_HP); + data[1] = GetMonData(pokemon, MON_DATA_ATK); + data[2] = GetMonData(pokemon, MON_DATA_DEF); + data[3] = GetMonData(pokemon, MON_DATA_SPEED); + data[4] = GetMonData(pokemon, MON_DATA_SPATK); + data[5] = GetMonData(pokemon, MON_DATA_SPDEF); +} + +bool32 sub_811D178(void) +{ + return gUnknown_203B090; +} diff --git a/sym_ewram.txt b/sym_ewram.txt index 3da5bb78f..085b26c32 100644 --- a/sym_ewram.txt +++ b/sym_ewram.txt @@ -261,18 +261,8 @@ gPlayerAvatar: @ 2037078 .include "src/rfu_union_tool.o" .align 2 .include "src/union_room_battle.o" - .align 2 - @ .include "src/pokemon_special_anim.o" -gUnknown_203B090: @ 203B090 - .space 0x4 - -gUnknown_203B094: @ 203B094 - .space 0x4 - -gUnknown_203B098: @ 203B098 - .space 0x4 - + .include "src/pokemon_special_anim.o" .align 2 .include "src/party_menu.o" .align 2 |