diff options
-rwxr-xr-x | asm/wisp_fire.s | 144 | ||||
-rw-r--r-- | ld_script.txt | 1 | ||||
-rw-r--r-- | src/battle/anim/wisp_fire.c | 48 |
3 files changed, 49 insertions, 144 deletions
diff --git a/asm/wisp_fire.s b/asm/wisp_fire.s index a6407589f..5fc7a07ab 100755 --- a/asm/wisp_fire.s +++ b/asm/wisp_fire.s @@ -7,150 +7,6 @@ @ wisp_fire - thumb_func_start sub_80D5CC0 -sub_80D5CC0: @ 80D5CC0 - push {r4,lr} - adds r4, r0, 0 - ldrh r1, [r4, 0x2E] - movs r2, 0x2E - ldrsh r0, [r4, r2] - cmp r0, 0 - bne _080D5CD8 - ldr r0, _080D5D4C @ =gBattleAnimArgs - ldrh r0, [r0] - strh r0, [r4, 0x30] - adds r0, r1, 0x1 - strh r0, [r4, 0x2E] -_080D5CD8: - movs r0, 0xC0 - lsls r0, 1 - adds r1, r0, 0 - ldrh r2, [r4, 0x34] - adds r1, r2 - strh r1, [r4, 0x34] - ldrh r0, [r4, 0x36] - adds r0, 0xA0 - strh r0, [r4, 0x36] - movs r2, 0x30 - ldrsh r0, [r4, r2] - lsls r1, 16 - asrs r1, 24 - bl Sin - strh r0, [r4, 0x24] - movs r1, 0x30 - ldrsh r0, [r4, r1] - ldrh r1, [r4, 0x36] - lsls r1, 16 - asrs r1, 24 - bl Cos - strh r0, [r4, 0x26] - ldrh r0, [r4, 0x30] - adds r2, r0, 0x7 - movs r0, 0xFF - ands r2, r0 - strh r2, [r4, 0x30] - ldr r0, _080D5D50 @ =gMain - ldr r1, _080D5D54 @ =0x0000043d - adds r0, r1 - ldrb r1, [r0] - movs r0, 0x2 - ands r0, r1 - cmp r0, 0 - beq _080D5D84 - adds r0, r2, 0 - subs r0, 0x40 - lsls r0, 16 - lsrs r0, 16 - cmp r0, 0x83 - bls _080D5D5C - ldr r0, _080D5D58 @ =gAnimBankTarget - ldrb r0, [r0] - bl sub_8079ED4 - movs r1, 0x3 - ands r1, r0 - lsls r1, 2 - ldrb r2, [r4, 0x5] - movs r0, 0xD - negs r0, r0 - ands r0, r2 - orrs r0, r1 - strb r0, [r4, 0x5] - b _080D5DA0 - .align 2, 0 -_080D5D4C: .4byte gBattleAnimArgs -_080D5D50: .4byte gMain -_080D5D54: .4byte 0x0000043d -_080D5D58: .4byte gAnimBankTarget -_080D5D5C: - ldr r0, _080D5D80 @ =gAnimBankTarget - ldrb r0, [r0] - bl sub_8079ED4 - lsls r0, 24 - lsrs r0, 24 - adds r0, 0x1 - movs r1, 0x3 - ands r0, r1 - lsls r0, 2 - ldrb r2, [r4, 0x5] - movs r1, 0xD - negs r1, r1 - ands r1, r2 - orrs r1, r0 - strb r1, [r4, 0x5] - b _080D5DA0 - .align 2, 0 -_080D5D80: .4byte gAnimBankTarget -_080D5D84: - adds r0, r2, 0 - subs r0, 0x40 - lsls r0, 16 - lsrs r0, 16 - cmp r0, 0x83 - bls _080D5D98 - adds r1, r4, 0 - adds r1, 0x43 - movs r0, 0x1D - b _080D5D9E -_080D5D98: - adds r1, r4, 0 - adds r1, 0x43 - movs r0, 0x1F -_080D5D9E: - strb r0, [r1] -_080D5DA0: - ldrh r0, [r4, 0x32] - adds r0, 0x1 - strh r0, [r4, 0x32] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x14 - ble _080D5DC8 - adds r3, r4, 0 - adds r3, 0x3E - ldrb r2, [r3] - lsls r0, r2, 29 - lsrs r0, 31 - movs r1, 0x1 - eors r1, r0 - lsls r1, 2 - movs r0, 0x5 - negs r0, r0 - ands r0, r2 - orrs r0, r1 - strb r0, [r3] -_080D5DC8: - movs r2, 0x32 - ldrsh r0, [r4, r2] - cmp r0, 0x1E - bne _080D5DD6 - adds r0, r4, 0 - bl DestroyAnimSprite -_080D5DD6: - pop {r4} - pop {r0} - bx r0 - thumb_func_end sub_80D5CC0 - thumb_func_start sub_80D5DDC sub_80D5DDC: @ 80D5DDC push {r4,lr} diff --git a/ld_script.txt b/ld_script.txt index af6e248d2..4eeaab513 100644 --- a/ld_script.txt +++ b/ld_script.txt @@ -283,6 +283,7 @@ SECTIONS { src/battle/anim/fire_2.o(.text); src/battle/anim/heated_rock.o(.text); src/battle/anim/wisp_orb.o(.text); + src/battle/anim/wisp_fire.o(.text); asm/wisp_fire.o(.text); src/battle/anim/thunder.o(.text); src/battle/anim/beta_beat_up.o(.text); diff --git a/src/battle/anim/wisp_fire.c b/src/battle/anim/wisp_fire.c new file mode 100644 index 000000000..e31c15d9c --- /dev/null +++ b/src/battle/anim/wisp_fire.c @@ -0,0 +1,48 @@ +#include "global.h" +#include "battle_anim.h" +#include "main.h" +#include "rom_8077ABC.h" +#include "trig.h" + +extern s16 gBattleAnimArgs[]; +extern u8 gAnimBankTarget; +// extern u8 gAnimBankAttacker; + +void sub_80D5CC0(struct Sprite *sprite) +{ + if (!sprite->data[0]) + { + sprite->data[1] = gBattleAnimArgs[0]; + sprite->data[0] += 1; + } + + sprite->data[3] += 0xC0 * 2; + sprite->data[4] += 0xA0; + + sprite->pos2.x = Sin(sprite->data[1], sprite->data[3] >> 8); + sprite->pos2.y = Cos(sprite->data[1], sprite->data[4] >> 8); + + sprite->data[1] = (sprite->data[1] + 7) & 0xFF; + + if (gMain.inBattle) + if ((u16) (sprite->data[1] - 0x40) > 0x83) + sprite->oam.priority = sub_8079ED4(gAnimBankTarget); + else + sprite->oam.priority = sub_8079ED4(gAnimBankTarget) + 1; + else + if ((u16) (sprite->data[1] - 0x40) > 0x83) + sprite->subpriority = 0x1D; + else + sprite->subpriority = 0x1F; + + if (++sprite->data[2] > 0x14) + sprite->invisible ^= 1; + + if (sprite->data[2] == 0x1E) + DestroyAnimSprite(sprite); +} + +// void sub_80D5DDC(struct Sprite *sprite) +// { + +// }
\ No newline at end of file |