diff options
Diffstat (limited to 'src/ghost.c')
-rw-r--r-- | src/ghost.c | 34 |
1 files changed, 34 insertions, 0 deletions
diff --git a/src/ghost.c b/src/ghost.c index 042707bfb..6c7e36190 100644 --- a/src/ghost.c +++ b/src/ghost.c @@ -73,4 +73,38 @@ void sub_80DDC4C(struct Sprite *sprite) } else sub_80DDCC8(sprite); +} + +void sub_80DDCC8(struct Sprite *sprite) +{ + + s16 r0; + if(sprite->data[6] > 0xFF) + { + if(++sprite->data[6] == 0x10d) + sprite->data[6] = 0; + return; + } + + r0 = sprite->data[7]; + sprite->data[7]++; + + if((r0 & 0xFF) == 0) + { + sprite->data[7] &= 0xff00; + if((sprite->data[7] & 0x100) != 0) + sprite->data[6]++; + else + sprite->data[6]--; + } + else + return; + + REG_BLDALPHA = ((16 - sprite->data[6]) << 8) | sprite->data[6]; + if(sprite->data[6] == 0 || sprite->data[6] == 16) + { + sprite->data[7] ^= 0x100; + } + if(sprite->data[6] == 0) + sprite->data[6] = 0x100; }
\ No newline at end of file |