diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/teachy_tv.c | 45 |
1 files changed, 43 insertions, 2 deletions
diff --git a/src/teachy_tv.c b/src/teachy_tv.c index d274e18ec..56c9e25cf 100644 --- a/src/teachy_tv.c +++ b/src/teachy_tv.c @@ -55,6 +55,8 @@ extern struct ListMenuItem gUnknown_8479340; extern struct WindowTemplate gUnknown_84792F0; extern u8 gUnknown_8479590; extern u8 gUnknown_8479390; +extern struct SubspriteTable gUnknown_84795B8; +extern struct SpriteTemplate *gUnknown_83A0010; void C2TeachyTv(); void C2TeachyTvMainCallback(); @@ -81,10 +83,12 @@ void TeachyTvBackToOptionList(u8 taskId); void TeachyTvSetupBagItemsByOptionChosen(); void TeachyTvPrepBattle(u8 taskId); void TeachyTvGrassAnimationMain(u8 taskId, s16 x, s16 y, u8 subpriority, bool8 mode); +void TeachyTvLoadBg3Map(void *); +u8 TeachyTvGrassAnimationCheckIfNeedsToGenerateGrassObj(s16 x, s16 y); +void TeachyTvGrassAnimationObjCallback(struct Sprite *sprite); extern void VblankHblankHandlerSetZero(); extern void sub_812B1E0(u16); -extern void sub_815BD80(void *); extern u8 ListMenuInitInternal(struct ListMenuTemplate *, u16 scrollOffset, u16 selectedRow); extern void sub_8055DC4(); extern bool16 sub_80BF518(u8 textPrinterId); @@ -234,7 +238,7 @@ void TeachyTvLoadGraphic() LoadCompressedPalette(&gUnknown_8E86F98, 0, 0x80u); LoadPalette(&src, 0, 2u); LoadSpritePalette((struct SpritePalette *)&gUnknown_83A5348); - sub_815BD80((u8 *)gUnknown_203F450 + 0x2004); + TeachyTvLoadBg3Map((u8 *)gUnknown_203F450 + 0x2004); } void TeachyTvCreateAndRenderRbox() @@ -881,3 +885,40 @@ void TeachyTvPostBattleFadeControl(u8 taskId) } } +void TeachyTvGrassAnimationMain(u8 taskId, s16 x, s16 y, u8 subpriority, bool8 mode) +{ + u8 subprio; + int res; + struct Sprite *obj; + int objId; + struct SpriteTemplate **objTemAddr; + + subprio = subpriority; + if ( ((u8*)gUnknown_203F450)[0x4006] != 1 ) + { + res = TeachyTvGrassAnimationCheckIfNeedsToGenerateGrassObj( + (u32)((x << 16) - 0x100000) >> 16, + y); + if ( res << 24 ) + { + objTemAddr = &gUnknown_83A0010; + objId = CreateSprite(*(objTemAddr+4), 0, 0, subprio); + obj = gSprites + objId; + obj->pos2.x = x; + obj->pos2.y = y + 8; + obj->callback = TeachyTvGrassAnimationObjCallback; + obj->data[0] = taskId; + if ( mode == 1 ) + { + SeekSpriteAnim(obj, 4u); + obj->oam.priority = 2; + } + else + { + SetSubspriteTables(obj, &gUnknown_84795B8); + obj->subspriteTableNum = 0; + obj->subspriteMode = 1; + } + } + } +}
\ No newline at end of file |