summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorjiangzhengwenjz <jiangzhengwenjzw@qq.com>2019-06-05 14:51:58 +0800
committerjiangzhengwenjz <jiangzhengwenjzw@qq.com>2019-06-05 14:51:58 +0800
commit39e7cab3680376153b094c390e96f62ba9ec0539 (patch)
tree60ed6161aab7e4ada415ca06e9696192121ecb5f
parent66b8dafbfce85a5976f97db464c5001a4347a8fb (diff)
grass anim main function down
-rw-r--r--asm/teachy_tv.s116
-rw-r--r--src/teachy_tv.c45
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