From ba5e6c8a32c617f0d70e62968bf13023d1e1ff5e Mon Sep 17 00:00:00 2001 From: "Marco Willems (M17.1)" Date: Sun, 31 Dec 2017 13:06:30 +0100 Subject: disassembled fire.s --- src/battle/anim/fire.c | 113 +++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 113 insertions(+) create mode 100644 src/battle/anim/fire.c (limited to 'src/battle/anim/fire.c') diff --git a/src/battle/anim/fire.c b/src/battle/anim/fire.c new file mode 100644 index 000000000..3cf633ab6 --- /dev/null +++ b/src/battle/anim/fire.c @@ -0,0 +1,113 @@ +#include "global.h" +#include "battle_anim.h" +#include "rom_8077ABC.h" +#include "trig.h" + +extern s16 gBattleAnimArgs[]; +extern u8 gBattleAnimBankAttacker; + +void sub_80D5038(struct Sprite *); +void sub_80D50E8(struct Sprite *); + +void sub_80D4ED8(struct Sprite *sprite) { + sprite->data[0] = gBattleAnimArgs[0]; + sprite->data[1] = 60; + sprite->data[2] = 9; + sprite->data[3] = 30; + sprite->data[4] = 65024; + StoreSpriteCallbackInData(sprite, move_anim_8072740); // DestroyAnimSprite + sprite->callback = sub_8078174; + sub_8078174(sprite); +} + +void sub_80D4F18(struct Sprite *sprite) { + sub_807867C(sprite, gBattleAnimArgs[0]); + sprite->pos1.y += gBattleAnimArgs[1]; + sprite->data[0] = gBattleAnimArgs[4]; + sprite->data[1] = gBattleAnimArgs[2]; + sprite->data[2] = gBattleAnimArgs[3]; + sprite->callback = sub_8078394; + StoreSpriteCallbackInData(sprite, move_anim_8072740); // DestroyAnimSprite +} + +void sub_80D4F5C(struct Sprite *sprite) { + sub_8078650(sprite); + if (GetBankSide(gBattleAnimBankAttacker) << 24) { // g.. = gAnimBankAttacker + sprite->pos1.x = sprite->pos1.x - gBattleAnimArgs[0]; + sprite->pos1.y = sprite->pos1.y + gBattleAnimArgs[1]; + sprite->data[2] = -gBattleAnimArgs[4]; + } else { + sprite->pos1.x = sprite->pos1.x + gBattleAnimArgs[0]; + sprite->pos1.y = sprite->pos1.y + gBattleAnimArgs[1]; + sprite->data[2] = gBattleAnimArgs[4]; + } + sprite->data[1] = gBattleAnimArgs[2]; + sprite->data[4] = gBattleAnimArgs[3]; + sprite->data[3] = gBattleAnimArgs[5]; + sprite->callback = sub_80D5038; +} + +void sub_80D4FCC(struct Sprite *sprite) { + if (GetBankSide(gBattleAnimBankAttacker) << 24) { // g.. = gAnimBankAttacker + sprite->pos1.x = sprite->pos1.x - gBattleAnimArgs[0]; + sprite->pos1.y = sprite->pos1.y + gBattleAnimArgs[1]; + sprite->data[2] = gBattleAnimArgs[4]; + } else { + sprite->pos1.x = sprite->pos1.x + gBattleAnimArgs[0]; + sprite->pos1.y = sprite->pos1.y + gBattleAnimArgs[1]; + sprite->data[2] = -gBattleAnimArgs[4]; + } + sprite->data[1] = gBattleAnimArgs[2]; + sprite->data[4] = gBattleAnimArgs[3]; + sprite->data[3] = gBattleAnimArgs[5]; + sprite->callback = sub_80D5038; +} + +void sub_80D5038(struct Sprite *sprite) { + sprite->data[0]++; + if (sprite->data[0] < sprite->data[4]) { + sprite->pos2.x = sprite->pos2.x + sprite->data[2]; + sprite->pos2.y = sprite->pos2.y + sprite->data[3]; + } + if (sprite->data[0] == sprite->data[1]) { + move_anim_8074EE0(sprite); + } +} + +void sub_80D5074(struct Sprite *sprite) { + sub_8078650(sprite); + if (GetBankSide(gBattleAnimBankAttacker) << 24) { // g.. = gAnimBankAttacker + sprite->pos1.x = sprite->pos1.x - gBattleAnimArgs[0]; + } else { + sprite->pos1.x = sprite->pos1.x + gBattleAnimArgs[0]; + sprite->subpriority = 8; + } + sprite->pos1.y = sprite->pos1.y + gBattleAnimArgs[1]; + sprite->data[0] = gBattleAnimArgs[2]; + sprite->data[1] = gBattleAnimArgs[3]; + sprite->data[2] = gBattleAnimArgs[4]; + sprite->data[3] = gBattleAnimArgs[5]; + sprite->data[4] = gBattleAnimArgs[6]; + sprite->data[5] = 0; + sprite->callback = sub_80D50E8; +} + +void sub_80D50E8(struct Sprite *sprite) { + if (sprite->data[3]) { + if(sprite->data[5] > 0x00002710) { + sprite->subpriority = 1; + } + sprite->pos2.x = Sin(sprite->data[0], sprite->data[1] + (sprite->data[5] >> 8)); + sprite->pos2.y = Cos(sprite->data[0], sprite->data[1] + (sprite->data[5] >> 8)); + sprite->data[0] = sprite->data[0] + sprite->data[2]; + sprite->data[5] = sprite->data[5] + sprite->data[4]; + if (sprite->data[0] > 255) { + sprite->data[0] = sprite->data[0] - 256; + } else if (sprite->data[0] < 0) { + sprite->data[0] = sprite->data[0] + 256; + } + sprite->data[3]--; + } else { + move_anim_8074EE0(sprite); + } +} \ No newline at end of file -- cgit v1.2.3 From b5ecdfa404a34c66fdf9f96342a2de0f173e6e73 Mon Sep 17 00:00:00 2001 From: "Marco Willems (M17.1)" Date: Wed, 3 Jan 2018 16:22:06 +0100 Subject: Decompiled fire_2.s --- src/battle/anim/fire.c | 49 ++++++++++++++++++++++++------------------------- 1 file changed, 24 insertions(+), 25 deletions(-) (limited to 'src/battle/anim/fire.c') diff --git a/src/battle/anim/fire.c b/src/battle/anim/fire.c index 41a4a9592..b71eedcdc 100644 --- a/src/battle/anim/fire.c +++ b/src/battle/anim/fire.c @@ -11,10 +11,10 @@ void sub_80D50E8(struct Sprite *); void sub_80D4ED8(struct Sprite *sprite) { sprite->data[0] = gBattleAnimArgs[0]; - sprite->data[1] = 60; - sprite->data[2] = 9; - sprite->data[3] = 30; - sprite->data[4] = 65024; + sprite->data[1] = 0x3C; + sprite->data[2] = 0x9; + sprite->data[3] = 0x1E; + sprite->data[4] = 0xFE00; StoreSpriteCallbackInData(sprite, DestroyAnimSprite); sprite->callback = sub_8078174; sub_8078174(sprite); @@ -33,12 +33,12 @@ void sub_80D4F18(struct Sprite *sprite) { void sub_80D4F5C(struct Sprite *sprite) { sub_8078650(sprite); if (GetBankSide(gAnimBankAttacker) << 24) { - sprite->pos1.x = sprite->pos1.x - gBattleAnimArgs[0]; - sprite->pos1.y = sprite->pos1.y + gBattleAnimArgs[1]; + sprite->pos1.x -= gBattleAnimArgs[0]; + sprite->pos1.y += gBattleAnimArgs[1]; sprite->data[2] = -gBattleAnimArgs[4]; } else { - sprite->pos1.x = sprite->pos1.x + gBattleAnimArgs[0]; - sprite->pos1.y = sprite->pos1.y + gBattleAnimArgs[1]; + sprite->pos1.x += gBattleAnimArgs[0]; + sprite->pos1.y += gBattleAnimArgs[1]; sprite->data[2] = gBattleAnimArgs[4]; } sprite->data[1] = gBattleAnimArgs[2]; @@ -49,12 +49,12 @@ void sub_80D4F5C(struct Sprite *sprite) { void sub_80D4FCC(struct Sprite *sprite) { if (GetBankSide(gAnimBankAttacker) << 24) { - sprite->pos1.x = sprite->pos1.x - gBattleAnimArgs[0]; - sprite->pos1.y = sprite->pos1.y + gBattleAnimArgs[1]; + sprite->pos1.x -= gBattleAnimArgs[0]; + sprite->pos1.y += gBattleAnimArgs[1]; sprite->data[2] = gBattleAnimArgs[4]; } else { - sprite->pos1.x = sprite->pos1.x + gBattleAnimArgs[0]; - sprite->pos1.y = sprite->pos1.y + gBattleAnimArgs[1]; + sprite->pos1.x += gBattleAnimArgs[0]; + sprite->pos1.y += gBattleAnimArgs[1]; sprite->data[2] = -gBattleAnimArgs[4]; } sprite->data[1] = gBattleAnimArgs[2]; @@ -64,10 +64,9 @@ void sub_80D4FCC(struct Sprite *sprite) { } void sub_80D5038(struct Sprite *sprite) { - sprite->data[0]++; - if (sprite->data[0] < sprite->data[4]) { - sprite->pos2.x = sprite->pos2.x + sprite->data[2]; - sprite->pos2.y = sprite->pos2.y + sprite->data[3]; + if (++sprite->data[0] < sprite->data[4]) { + sprite->pos2.x += sprite->data[2]; + sprite->pos2.y += sprite->data[3]; } if (sprite->data[0] == sprite->data[1]) { move_anim_8074EE0(sprite); @@ -77,12 +76,12 @@ void sub_80D5038(struct Sprite *sprite) { void sub_80D5074(struct Sprite *sprite) { sub_8078650(sprite); if (GetBankSide(gAnimBankAttacker) << 24) { - sprite->pos1.x = sprite->pos1.x - gBattleAnimArgs[0]; + sprite->pos1.x -= gBattleAnimArgs[0]; } else { - sprite->pos1.x = sprite->pos1.x + gBattleAnimArgs[0]; + sprite->pos1.x += gBattleAnimArgs[0]; sprite->subpriority = 8; } - sprite->pos1.y = sprite->pos1.y + gBattleAnimArgs[1]; + sprite->pos1.y += gBattleAnimArgs[1]; sprite->data[0] = gBattleAnimArgs[2]; sprite->data[1] = gBattleAnimArgs[3]; sprite->data[2] = gBattleAnimArgs[4]; @@ -94,17 +93,17 @@ void sub_80D5074(struct Sprite *sprite) { void sub_80D50E8(struct Sprite *sprite) { if (sprite->data[3]) { - if(sprite->data[5] > 0x00002710) { + if(sprite->data[5] > 10000) { sprite->subpriority = 1; } sprite->pos2.x = Sin(sprite->data[0], sprite->data[1] + (sprite->data[5] >> 8)); sprite->pos2.y = Cos(sprite->data[0], sprite->data[1] + (sprite->data[5] >> 8)); - sprite->data[0] = sprite->data[0] + sprite->data[2]; - sprite->data[5] = sprite->data[5] + sprite->data[4]; - if (sprite->data[0] > 255) { - sprite->data[0] = sprite->data[0] - 256; + sprite->data[0] += sprite->data[2]; + sprite->data[5] += sprite->data[4]; + if (sprite->data[0] > 0xFF) { + sprite->data[0] -= 0x100; } else if (sprite->data[0] < 0) { - sprite->data[0] = sprite->data[0] + 256; + sprite->data[0] += 0x100; } sprite->data[3]--; } else { -- cgit v1.2.3 From 6649ab0876f608eedbdc5bff55d4c55593b12122 Mon Sep 17 00:00:00 2001 From: "Marco Willems (M17.1)" Date: Wed, 3 Jan 2018 20:55:10 +0100 Subject: Updated with pull request remarks --- src/battle/anim/fire.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) (limited to 'src/battle/anim/fire.c') diff --git a/src/battle/anim/fire.c b/src/battle/anim/fire.c index b71eedcdc..d1ef86731 100644 --- a/src/battle/anim/fire.c +++ b/src/battle/anim/fire.c @@ -32,7 +32,7 @@ void sub_80D4F18(struct Sprite *sprite) { void sub_80D4F5C(struct Sprite *sprite) { sub_8078650(sprite); - if (GetBankSide(gAnimBankAttacker) << 24) { + if (GetBankSide(gAnimBankAttacker)) { sprite->pos1.x -= gBattleAnimArgs[0]; sprite->pos1.y += gBattleAnimArgs[1]; sprite->data[2] = -gBattleAnimArgs[4]; @@ -48,7 +48,7 @@ void sub_80D4F5C(struct Sprite *sprite) { } void sub_80D4FCC(struct Sprite *sprite) { - if (GetBankSide(gAnimBankAttacker) << 24) { + if (GetBankSide(gAnimBankAttacker)) { sprite->pos1.x -= gBattleAnimArgs[0]; sprite->pos1.y += gBattleAnimArgs[1]; sprite->data[2] = gBattleAnimArgs[4]; @@ -75,7 +75,7 @@ void sub_80D5038(struct Sprite *sprite) { void sub_80D5074(struct Sprite *sprite) { sub_8078650(sprite); - if (GetBankSide(gAnimBankAttacker) << 24) { + if (GetBankSide(gAnimBankAttacker)) { sprite->pos1.x -= gBattleAnimArgs[0]; } else { sprite->pos1.x += gBattleAnimArgs[0]; -- cgit v1.2.3 From ff1a79f2fcc111360fe0ce478fdd24cfcdf93932 Mon Sep 17 00:00:00 2001 From: "Marco Willems (M17.1)" Date: Thu, 4 Jan 2018 21:48:30 +0100 Subject: Formatted to fit with the rest of the source code --- src/battle/anim/fire.c | 84 +++++++++++++++++++++++++++++++++++--------------- 1 file changed, 59 insertions(+), 25 deletions(-) (limited to 'src/battle/anim/fire.c') diff --git a/src/battle/anim/fire.c b/src/battle/anim/fire.c index d1ef86731..253236805 100644 --- a/src/battle/anim/fire.c +++ b/src/battle/anim/fire.c @@ -9,78 +9,105 @@ extern u8 gAnimBankAttacker; void sub_80D5038(struct Sprite *); void sub_80D50E8(struct Sprite *); -void sub_80D4ED8(struct Sprite *sprite) { +void sub_80D4ED8(struct Sprite *sprite) +{ sprite->data[0] = gBattleAnimArgs[0]; sprite->data[1] = 0x3C; sprite->data[2] = 0x9; sprite->data[3] = 0x1E; sprite->data[4] = 0xFE00; + StoreSpriteCallbackInData(sprite, DestroyAnimSprite); + sprite->callback = sub_8078174; sub_8078174(sprite); } -void sub_80D4F18(struct Sprite *sprite) { +void sub_80D4F18(struct Sprite *sprite) +{ sub_807867C(sprite, gBattleAnimArgs[0]); + sprite->pos1.y += gBattleAnimArgs[1]; sprite->data[0] = gBattleAnimArgs[4]; sprite->data[1] = gBattleAnimArgs[2]; sprite->data[2] = gBattleAnimArgs[3]; + sprite->callback = sub_8078394; StoreSpriteCallbackInData(sprite, DestroyAnimSprite); } -void sub_80D4F5C(struct Sprite *sprite) { +void sub_80D4F5C(struct Sprite *sprite) +{ sub_8078650(sprite); - if (GetBankSide(gAnimBankAttacker)) { + + if (GetBankSide(gAnimBankAttacker)) + { sprite->pos1.x -= gBattleAnimArgs[0]; sprite->pos1.y += gBattleAnimArgs[1]; sprite->data[2] = -gBattleAnimArgs[4]; - } else { + } + else + { sprite->pos1.x += gBattleAnimArgs[0]; sprite->pos1.y += gBattleAnimArgs[1]; sprite->data[2] = gBattleAnimArgs[4]; } + sprite->data[1] = gBattleAnimArgs[2]; sprite->data[4] = gBattleAnimArgs[3]; sprite->data[3] = gBattleAnimArgs[5]; + sprite->callback = sub_80D5038; } -void sub_80D4FCC(struct Sprite *sprite) { - if (GetBankSide(gAnimBankAttacker)) { +void sub_80D4FCC(struct Sprite *sprite) +{ + if (GetBankSide(gAnimBankAttacker)) + { sprite->pos1.x -= gBattleAnimArgs[0]; sprite->pos1.y += gBattleAnimArgs[1]; sprite->data[2] = gBattleAnimArgs[4]; - } else { + } + else + { sprite->pos1.x += gBattleAnimArgs[0]; sprite->pos1.y += gBattleAnimArgs[1]; sprite->data[2] = -gBattleAnimArgs[4]; } + sprite->data[1] = gBattleAnimArgs[2]; sprite->data[4] = gBattleAnimArgs[3]; sprite->data[3] = gBattleAnimArgs[5]; + sprite->callback = sub_80D5038; } -void sub_80D5038(struct Sprite *sprite) { - if (++sprite->data[0] < sprite->data[4]) { +void sub_80D5038(struct Sprite *sprite) +{ + if (++sprite->data[0] < sprite->data[4]) + { sprite->pos2.x += sprite->data[2]; sprite->pos2.y += sprite->data[3]; } - if (sprite->data[0] == sprite->data[1]) { + + if (sprite->data[0] == sprite->data[1]) move_anim_8074EE0(sprite); - } } -void sub_80D5074(struct Sprite *sprite) { +void sub_80D5074(struct Sprite *sprite) +{ sub_8078650(sprite); - if (GetBankSide(gAnimBankAttacker)) { + + if (GetBankSide(gAnimBankAttacker)) + { sprite->pos1.x -= gBattleAnimArgs[0]; - } else { + } + else + { sprite->pos1.x += gBattleAnimArgs[0]; sprite->subpriority = 8; } + sprite->pos1.y += gBattleAnimArgs[1]; sprite->data[0] = gBattleAnimArgs[2]; sprite->data[1] = gBattleAnimArgs[3]; @@ -88,25 +115,32 @@ void sub_80D5074(struct Sprite *sprite) { sprite->data[3] = gBattleAnimArgs[5]; sprite->data[4] = gBattleAnimArgs[6]; sprite->data[5] = 0; + sprite->callback = sub_80D50E8; } -void sub_80D50E8(struct Sprite *sprite) { - if (sprite->data[3]) { - if(sprite->data[5] > 10000) { +void sub_80D50E8(struct Sprite *sprite) +{ + if (sprite->data[3]) + { + if(sprite->data[5] > 10000) sprite->subpriority = 1; - } + sprite->pos2.x = Sin(sprite->data[0], sprite->data[1] + (sprite->data[5] >> 8)); sprite->pos2.y = Cos(sprite->data[0], sprite->data[1] + (sprite->data[5] >> 8)); + sprite->data[0] += sprite->data[2]; sprite->data[5] += sprite->data[4]; - if (sprite->data[0] > 0xFF) { - sprite->data[0] -= 0x100; - } else if (sprite->data[0] < 0) { - sprite->data[0] += 0x100; - } + + if (sprite->data[0] > 255) + sprite->data[0] -= 256; + else if (sprite->data[0] < 0) + sprite->data[0] += 256; + sprite->data[3]--; - } else { + } + else + { move_anim_8074EE0(sprite); } } \ No newline at end of file -- cgit v1.2.3