grass anim main function down

This commit is contained in:
jiangzhengwenjz
2019-06-05 14:51:58 +08:00
parent 66b8dafbfc
commit 39e7cab368
2 changed files with 52 additions and 109 deletions
+9 -107
View File
@@ -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
+43 -2
View File
@@ -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;
}
}
}
}