diff options
author | camthesaxman <cameronghall@cox.net> | 2017-01-05 17:53:06 -0600 |
---|---|---|
committer | camthesaxman <cameronghall@cox.net> | 2017-01-05 17:53:06 -0600 |
commit | 9dc9c657b489ae4d5b983ea0cbd12a8e77803dbf (patch) | |
tree | ea9b1fb8597ccb97f58700a01cbb5ec2ef868b8e /src/intro.c | |
parent | e7ea49dc389fde77b9f515c4fc3bebc3fa37b1d1 (diff) |
decompile up to sub_813D908
Diffstat (limited to 'src/intro.c')
-rw-r--r-- | src/intro.c | 95 |
1 files changed, 95 insertions, 0 deletions
diff --git a/src/intro.c b/src/intro.c index 1c695c6b7..cf371c8ee 100644 --- a/src/intro.c +++ b/src/intro.c @@ -1350,3 +1350,98 @@ u8 sub_813D584(u16 a, s16 b, u16 c, u16 d, u16 e, u8 f) return oldSpriteId; } + +void sub_813D788(struct Sprite *sprite) +{ + switch (sprite->data0) + { + case 0: + StartSpriteAnimIfDifferent(sprite, 0); + sprite->pos1.x--; + break; + case 1: + StartSpriteAnimIfDifferent(sprite, 0); + if (gIntroFrameCounter & 7) + return; + sprite->pos1.x++; + break; + case 2: + StartSpriteAnimIfDifferent(sprite, 2); + if (sprite->pos1.x <= 0x78 || (gIntroFrameCounter & 7)) + sprite->pos1.x++; + break; + case 3: + StartSpriteAnimIfDifferent(sprite, 3); + break; + case 4: + StartSpriteAnimIfDifferent(sprite, 0); + if (sprite->pos1.x > -32) + sprite->pos1.x -= 2; + break; + } + if (gIntroFrameCounter & 7) + return; + if (sprite->pos2.y != 0) + { + sprite->pos2.y = 0; + } + else + { + switch (Random() & 3) + { + case 0: + sprite->pos2.y = -1; + break; + case 1: + sprite->pos2.y = 1; + break; + case 2: + case 3: + sprite->pos2.y = 0; + break; + } + } +} + +void sub_813D880(struct Sprite *sprite) +{ + switch (sprite->data0) + { + case 0: + break; + case 1: + if (sprite->pos2.x + sprite->pos1.x < 0x130) + sprite->pos2.x += 8; + else + sprite->data0 = 2; + break; + case 2: + if (sprite->pos2.x + sprite->pos1.x > 0x78) + sprite->pos2.x -= 1; + else + sprite->data0 = 3; + break; + case 3: + if (sprite->pos2.x > 0) + sprite->pos2.x -= 2; + break; + } + sprite->pos2.y = Sin((u8)sprite->data1, 8) - gUnknown_0203935A; + sprite->data1 += 4; +} + +void sub_813D908(struct Sprite *sprite) +{ + if (gTasks[sprite->data0].data[0] == 0) + { + sprite->invisible = TRUE; + } + else if (gTasks[sprite->data0].data[0] != 4) + { + sprite->invisible = FALSE; + } + else + { + DestroySprite(sprite); + } +} |