diff options
-rw-r--r-- | asm/fight.s | 131 | ||||
-rw-r--r-- | data/battle_anim_80CA710.s | 2 | ||||
-rw-r--r-- | ld_script.txt | 1 | ||||
-rw-r--r-- | src/battle/anim/fight.c | 72 |
4 files changed, 74 insertions, 132 deletions
diff --git a/asm/fight.s b/asm/fight.s index e8e3299af..8dbf369dd 100644 --- a/asm/fight.s +++ b/asm/fight.s @@ -7,137 +7,6 @@ @ fight - thumb_func_start unc_080B08A0 -unc_080B08A0: @ 80D8FF0 - push {r4,r5,lr} - adds r4, r0, 0 - ldr r5, _080D9020 @ =gBattleAnimArgs - movs r0, 0 - ldrsh r1, [r5, r0] - adds r0, r4, 0 - bl sub_807867C - ldrh r0, [r5, 0x2] - ldrh r1, [r4, 0x22] - adds r0, r1 - strh r0, [r4, 0x22] - movs r0, 0xF - strh r0, [r4, 0x2E] - ldr r0, _080D9024 @ =sub_80782D8 - str r0, [r4, 0x1C] - ldr r1, _080D9028 @ =DestroyAnimSprite - adds r0, r4, 0 - bl StoreSpriteCallbackInData - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_080D9020: .4byte gBattleAnimArgs -_080D9024: .4byte sub_80782D8 -_080D9028: .4byte DestroyAnimSprite - thumb_func_end unc_080B08A0 - - thumb_func_start sub_80D902C -sub_80D902C: @ 80D902C - push {r4,r5,lr} - adds r5, r0, 0 - ldr r4, _080D9070 @ =gBattleAnimArgs - movs r1, 0xE - ldrsh r0, [r4, r1] - cmp r0, 0x1 - bne _080D9054 - ldr r0, _080D9074 @ =gAnimBankAttacker - ldrb r0, [r0] - bl GetBankSide - lsls r0, 24 - cmp r0, 0 - beq _080D9054 - ldrh r0, [r4, 0x2] - negs r0, r0 - strh r0, [r4, 0x2] - ldrh r0, [r4, 0x6] - negs r0, r0 - strh r0, [r4, 0x6] -_080D9054: - ldr r4, _080D9070 @ =gBattleAnimArgs - ldrb r1, [r4, 0xC] - adds r0, r5, 0 - bl StartSpriteAnim - movs r0, 0 - strh r0, [r4, 0xC] - adds r0, r5, 0 - bl sub_8079534 - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_080D9070: .4byte gBattleAnimArgs -_080D9074: .4byte gAnimBankAttacker - thumb_func_end sub_80D902C - - thumb_func_start sub_80D9078 -sub_80D9078: @ 80D9078 - push {r4,lr} - adds r4, r0, 0 - bl IsContest - lsls r0, 24 - cmp r0, 0 - beq _080D9094 - ldr r0, _080D90A0 @ =gBattleAnimArgs - ldrh r1, [r0, 0x2] - negs r1, r1 - strh r1, [r0, 0x2] - ldrh r1, [r0, 0x6] - negs r1, r1 - strh r1, [r0, 0x6] -_080D9094: - adds r0, r4, 0 - bl sub_80D902C - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080D90A0: .4byte gBattleAnimArgs - thumb_func_end sub_80D9078 - - thumb_func_start sub_80D90A4 -sub_80D90A4: @ 80D90A4 - push {r4,r5,lr} - adds r5, r0, 0 - ldr r4, _080D90C4 @ =gBattleAnimArgs - ldrb r1, [r4, 0x8] - bl StartSpriteAnim - movs r1, 0x6 - ldrsh r0, [r4, r1] - cmp r0, 0 - bne _080D90C8 - adds r0, r5, 0 - movs r1, 0x1 - bl sub_80787B0 - b _080D90D0 - .align 2, 0 -_080D90C4: .4byte gBattleAnimArgs -_080D90C8: - adds r0, r5, 0 - movs r1, 0x1 - bl sub_8078764 -_080D90D0: - ldr r0, _080D90E8 @ =gBattleAnimArgs - ldrh r0, [r0, 0x4] - strh r0, [r5, 0x2E] - ldr r0, _080D90EC @ =sub_80782D8 - str r0, [r5, 0x1C] - ldr r1, _080D90F0 @ =DestroyAnimSprite - adds r0, r5, 0 - bl StoreSpriteCallbackInData - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_080D90E8: .4byte gBattleAnimArgs -_080D90EC: .4byte sub_80782D8 -_080D90F0: .4byte DestroyAnimSprite - thumb_func_end sub_80D90A4 - thumb_func_start sub_80D90F4 sub_80D90F4: @ 80D90F4 push {r4-r7,lr} diff --git a/data/battle_anim_80CA710.s b/data/battle_anim_80CA710.s index 562bd3090..85862a4b4 100644 --- a/data/battle_anim_80CA710.s +++ b/data/battle_anim_80CA710.s @@ -3137,7 +3137,7 @@ gBattleAnimSpriteTemplate_83D9F0C:: @ 83D9F0C .align 2 gSpriteTemplate_83D9F24:: @ 83D9F24 - spr_template 10050, 10050, gOamData_837DF34, gDummySpriteAnimTable, NULL, gDummySpriteAffineAnimTable, unc_080B08A0 + spr_template 10050, 10050, gOamData_837DF34, gDummySpriteAnimTable, NULL, gDummySpriteAffineAnimTable, sub_080B08A0 .align 2 gSpriteAnim_83D9F3C:: @ 83D9F3C diff --git a/ld_script.txt b/ld_script.txt index 435a8d8f6..b1b24d541 100644 --- a/ld_script.txt +++ b/ld_script.txt @@ -293,6 +293,7 @@ SECTIONS { src/battle/anim/shock.o(.text); asm/current.o(.text); asm/ice.o(.text); + src/battle/anim/fight.o(.text); asm/fight.o(.text); src/battle/anim/poison.o(.text); asm/flying.o(.text); diff --git a/src/battle/anim/fight.c b/src/battle/anim/fight.c new file mode 100644 index 000000000..4c3a6cb75 --- /dev/null +++ b/src/battle/anim/fight.c @@ -0,0 +1,72 @@ +#include "global.h" +#include "battle_anim.h" +#include "blend_palette.h" +#include "decompress.h" +#include "ewram.h" +#include "palette.h" +#include "rom_8077ABC.h" +#include "scanline_effect.h" +#include "sound.h" +#include "sprite.h" +#include "trig.h" +#include "constants/battle_constants.h" + +extern s16 gBattleAnimArgs[]; +extern u8 gAnimBankAttacker; +extern u8 gAnimBankTarget; +extern u8 gObjectBankIDs[]; +extern u16 gBattle_BG1_X; +extern u16 gBattle_BG1_Y; +extern u16 gBattle_BG2_X; +extern u16 gBattle_BG2_Y; +extern u16 gBattle_WIN0H; +extern u16 gBattle_WIN0V; +extern u16 gBattlePartyID[]; +extern u8 gAnimMoveTurn; + +void sub_080B08A0(struct Sprite *sprite) +{ + sub_807867C(sprite, gBattleAnimArgs[0]); + sprite->pos1.y += gBattleAnimArgs[1]; + sprite->data[0] = 15; + sprite->callback = sub_80782D8; + StoreSpriteCallbackInData(sprite, DestroyAnimSprite); +} + +void sub_80D902C(struct Sprite *sprite) +{ + if (gBattleAnimArgs[7] == 1 && GetBankSide(gAnimBankAttacker) != SIDE_PLAYER) + { + gBattleAnimArgs[1] = -gBattleAnimArgs[1]; + gBattleAnimArgs[3] = -gBattleAnimArgs[3]; + } + + StartSpriteAnim(sprite, gBattleAnimArgs[6]); + gBattleAnimArgs[6] = 0; + sub_8079534(sprite); +} + +void sub_80D9078(struct Sprite *sprite) +{ + if (IsContest()) + { + gBattleAnimArgs[1] = -gBattleAnimArgs[1]; + gBattleAnimArgs[3] = -gBattleAnimArgs[3]; + } + + sub_80D902C(sprite); +} + +void sub_80D90A4(struct Sprite *sprite) +{ + StartSpriteAnim(sprite, gBattleAnimArgs[4]); + + if (gBattleAnimArgs[3] == 0) + sub_80787B0(sprite, 1); + else + sub_8078764(sprite, 1); + + sprite->data[0] = gBattleAnimArgs[2]; + sprite->callback = sub_80782D8; + StoreSpriteCallbackInData(sprite, DestroyAnimSprite); +} |