diff options
author | jiangzhengwenjz <jiangzhengwenjzw@qq.com> | 2019-06-05 14:51:58 +0800 |
---|---|---|
committer | jiangzhengwenjz <jiangzhengwenjzw@qq.com> | 2019-06-05 14:51:58 +0800 |
commit | 39e7cab3680376153b094c390e96f62ba9ec0539 (patch) | |
tree | 60ed6161aab7e4ada415ca06e9696192121ecb5f | |
parent | 66b8dafbfce85a5976f97db464c5001a4347a8fb (diff) |
grass anim main function down
-rw-r--r-- | asm/teachy_tv.s | 116 | ||||
-rw-r--r-- | src/teachy_tv.c | 45 |
2 files changed, 52 insertions, 109 deletions
diff --git a/asm/teachy_tv.s b/asm/teachy_tv.s index 52d3683c2..4150dfd0f 100644 --- a/asm/teachy_tv.s +++ b/asm/teachy_tv.s @@ -5,106 +5,8 @@ .text - thumb_func_start TeachyTvGrassAnimationMain -TeachyTvGrassAnimationMain: @ 815BAA0 - push {r4-r7,lr} - mov r7, r9 - mov r6, r8 - push {r6,r7} - ldr r4, [sp, 0x1C] - lsls r0, 24 - lsrs r0, 24 - mov r9, r0 - lsls r1, 16 - lsrs r6, r1, 16 - lsls r2, 16 - lsrs r1, r2, 16 - lsls r3, 24 - lsrs r7, r3, 24 - lsls r4, 24 - lsrs r4, 24 - mov r8, r4 - ldr r0, _0815BB34 @ =gUnknown_203F450 - ldr r0, [r0] - ldr r2, _0815BB38 @ =0x00004006 - adds r0, r2 - ldrb r0, [r0] - cmp r0, 0x1 - beq _0815BB5C - lsls r0, r6, 16 - ldr r2, _0815BB3C @ =0xfff00000 - adds r0, r2 - asrs r0, 16 - lsls r1, 16 - asrs r5, r1, 16 - adds r1, r5, 0 - bl sub_815BC40 - lsls r0, 24 - cmp r0, 0 - beq _0815BB5C - ldr r0, _0815BB40 @ =gUnknown_83A0010 - ldr r0, [r0, 0x10] - movs r1, 0 - movs r2, 0 - adds r3, r7, 0 - bl CreateSprite - lsls r0, 24 - lsrs r0, 24 - lsls r1, r0, 4 - adds r1, r0 - lsls r1, 2 - ldr r0, _0815BB44 @ =gSprites - adds r4, r1, r0 - strh r6, [r4, 0x24] - adds r0, r5, 0 - adds r0, 0x8 - strh r0, [r4, 0x26] - ldr r0, _0815BB48 @ =sub_815BB6C - str r0, [r4, 0x1C] - mov r0, r9 - strh r0, [r4, 0x2E] - mov r2, r8 - cmp r2, 0x1 - bne _0815BB4C - adds r0, r4, 0 - movs r1, 0x4 - bl SeekSpriteAnim - ldrb r0, [r4, 0x5] - movs r1, 0xD - negs r1, r1 - ands r1, r0 - movs r0, 0x8 - orrs r1, r0 - strb r1, [r4, 0x5] - b _0815BB5C - .align 2, 0 -_0815BB34: .4byte gUnknown_203F450 -_0815BB38: .4byte 0x00004006 -_0815BB3C: .4byte 0xfff00000 -_0815BB40: .4byte gUnknown_83A0010 -_0815BB44: .4byte gSprites -_0815BB48: .4byte sub_815BB6C -_0815BB4C: - ldr r1, _0815BB68 @ =gUnknown_84795B8 - adds r0, r4, 0 - bl SetSubspriteTables - adds r1, r4, 0 - adds r1, 0x42 - movs r0, 0x40 - strb r0, [r1] -_0815BB5C: - pop {r3,r4} - mov r8, r3 - mov r9, r4 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_0815BB68: .4byte gUnknown_84795B8 - thumb_func_end TeachyTvGrassAnimationMain - - thumb_func_start sub_815BB6C -sub_815BB6C: @ 815BB6C + thumb_func_start TeachyTvGrassAnimationObjCallback +TeachyTvGrassAnimationObjCallback: @ 815BB6C push {r4,r5,lr} adds r3, r0, 0 movs r0, 0x2E @@ -210,10 +112,10 @@ _0815BC3A: pop {r4,r5} pop {r0} bx r0 - thumb_func_end sub_815BB6C + thumb_func_end TeachyTvGrassAnimationObjCallback - thumb_func_start sub_815BC40 -sub_815BC40: @ 815BC40 + thumb_func_start TeachyTvGrassAnimationCheckIfNeedsToGenerateGrassObj +TeachyTvGrassAnimationCheckIfNeedsToGenerateGrassObj: @ 815BC40 push {r4,r5,lr} lsls r1, 16 lsrs r1, 16 @@ -253,7 +155,7 @@ _0815BC80: .4byte gUnknown_84795C8 _0815BC84: .4byte gUnknown_203F450 _0815BC88: .4byte 0x00004005 _0815BC8C: .4byte 0x00004004 - thumb_func_end sub_815BC40 + thumb_func_end TeachyTvGrassAnimationCheckIfNeedsToGenerateGrassObj thumb_func_start TeachyTvPrepBattle TeachyTvPrepBattle: @ 815BC90 @@ -374,8 +276,8 @@ _0815BD78: bx r0 thumb_func_end sub_815BD58 - thumb_func_start sub_815BD80 -sub_815BD80: @ 815BD80 + thumb_func_start TeachyTvLoadBg3Map +TeachyTvLoadBg3Map: @ 815BD80 push {r4-r7,lr} mov r7, r10 mov r6, r9 @@ -594,7 +496,7 @@ _0815BF00: bx r0 .align 2, 0 _0815BF44: .4byte 0xfffffd80 - thumb_func_end sub_815BD80 + thumb_func_end TeachyTvLoadBg3Map thumb_func_start sub_815BF48 sub_815BF48: @ 815BF48 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 |