summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorjiangzhengwenjz <jiangzhengwenjzw@qq.com>2019-06-04 06:28:00 +0800
committerjiangzhengwenjz <jiangzhengwenjzw@qq.com>2019-06-04 06:29:42 +0800
commitf9f66ddeb428857f3e7c3d920fcce807948ef8ab (patch)
tree68a7ad24bcc69381889533450ccda4d9d41be8f3
parent9949dcf0e5266017ae4213e043f5e3662d482be9 (diff)
sub_815B118
-rw-r--r--asm/teachy_tv.s104
-rw-r--r--src/teachy_tv.c31
2 files changed, 37 insertions, 98 deletions
diff --git a/asm/teachy_tv.s b/asm/teachy_tv.s
index f19915d6e..53ca52ccb 100644
--- a/asm/teachy_tv.s
+++ b/asm/teachy_tv.s
@@ -5,96 +5,6 @@
.text
- thumb_func_start TeachyTvSetupPostBattleWindowAndObj
-TeachyTvSetupPostBattleWindowAndObj: @ 815B118
- push {r4-r7,lr}
- sub sp, 0x4
- lsls r0, 24
- lsrs r6, r0, 24
- lsls r0, r6, 2
- adds r0, r6
- lsls r0, 3
- ldr r1, _0815B190 @ =gTasks+0x8
- adds r5, r0, r1
- movs r0, 0x2
- ldrsh r1, [r5, r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- ldr r1, _0815B194 @ =gSprites
- adds r7, r0, r1
- movs r0, 0x1
- bl ClearWindowTilemap
- bl TeachyTvClearWindowRegs
- ldr r0, _0815B198 @ =gTeachyTV_StaticResources
- ldrb r0, [r0, 0x5]
- cmp r0, 0
- blt _0815B1B8
- cmp r0, 0x3
- bgt _0815B1A8
- ldrb r0, [r5, 0x2]
- movs r1, 0x78
- movs r2, 0x38
- movs r3, 0
- bl TeachyTvSetSpriteCoordsAndSwitchFrame
- movs r4, 0xC0
- lsls r4, 6
- movs r0, 0x3
- adds r1, r4, 0
- movs r2, 0x1
- bl ChangeBgX
- movs r0, 0x3
- adds r1, r4, 0
- movs r2, 0x2
- bl ChangeBgY
- ldr r2, _0815B19C @ =gUnknown_203F450
- ldr r1, [r2]
- ldr r0, _0815B1A0 @ =0x00004004
- adds r1, r0
- ldrb r0, [r1]
- adds r0, 0x3
- strb r0, [r1]
- ldr r1, [r2]
- ldr r0, _0815B1A4 @ =0x00004005
- adds r1, r0
- ldrb r0, [r1]
- subs r0, 0x3
- strb r0, [r1]
- b _0815B1B8
- .align 2, 0
-_0815B190: .4byte gTasks+0x8
-_0815B194: .4byte gSprites
-_0815B198: .4byte gTeachyTV_StaticResources
-_0815B19C: .4byte gUnknown_203F450
-_0815B1A0: .4byte 0x00004004
-_0815B1A4: .4byte 0x00004005
-_0815B1A8:
- cmp r0, 0x5
- bgt _0815B1B8
- ldrb r0, [r5, 0x2]
- movs r1, 0x78
- movs r2, 0x38
- movs r3, 0
- bl TeachyTvSetSpriteCoordsAndSwitchFrame
-_0815B1B8:
- movs r0, 0
- strh r0, [r5, 0x8]
- strh r0, [r5, 0xA]
- movs r0, 0x24
- ldrsh r1, [r7, r0]
- movs r0, 0x26
- ldrsh r2, [r7, r0]
- movs r0, 0x1
- str r0, [sp]
- adds r0, r6, 0
- movs r3, 0
- bl sub_815BAA0
- add sp, 0x4
- pop {r4-r7}
- pop {r0}
- bx r0
- thumb_func_end TeachyTvSetupPostBattleWindowAndObj
-
thumb_func_start sub_815B1DC
sub_815B1DC: @ 815B1DC
push {r4,lr}
@@ -758,7 +668,7 @@ sub_815B6A8: @ 815B6A8
str r3, [sp]
adds r0, r5, 0
movs r3, 0
- bl sub_815BAA0
+ bl TeachyTvGrassAnimationMain
_0815B702:
movs r1, 0x4
ldrsh r0, [r4, r1]
@@ -843,7 +753,7 @@ _0815B78A:
str r0, [sp]
adds r0, r5, 0
movs r3, 0
- bl sub_815BAA0
+ bl TeachyTvGrassAnimationMain
_0815B7AC:
movs r1, 0x4
ldrsh r0, [r4, r1]
@@ -907,7 +817,7 @@ sub_815B7E4: @ 815B7E4
str r0, [sp]
adds r0, r6, 0
movs r3, 0
- bl sub_815BAA0
+ bl TeachyTvGrassAnimationMain
add sp, 0x4
pop {r4-r6}
pop {r0}
@@ -948,7 +858,7 @@ sub_815B840: @ 815B840
str r0, [sp]
adds r0, r3, 0
movs r3, 0
- bl sub_815BAA0
+ bl TeachyTvGrassAnimationMain
_0815B87E:
ldrh r1, [r4, 0x24]
movs r2, 0x24
@@ -1225,8 +1135,8 @@ _0815BA98: .4byte gTeachyTV_StaticResources
_0815BA9C: .4byte sub_815B4EC
thumb_func_end TeachyTvPostBattleFadeControl
- thumb_func_start sub_815BAA0
-sub_815BAA0: @ 815BAA0
+ thumb_func_start TeachyTvGrassAnimationMain
+TeachyTvGrassAnimationMain: @ 815BAA0
push {r4-r7,lr}
mov r7, r9
mov r6, r8
@@ -1321,7 +1231,7 @@ _0815BB5C:
bx r0
.align 2, 0
_0815BB68: .4byte gUnknown_84795B8
- thumb_func_end sub_815BAA0
+ thumb_func_end TeachyTvGrassAnimationMain
thumb_func_start sub_815BB6C
sub_815BB6C: @ 815BB6C
diff --git a/src/teachy_tv.c b/src/teachy_tv.c
index 750aa0dfb..48b72c995 100644
--- a/src/teachy_tv.c
+++ b/src/teachy_tv.c
@@ -43,7 +43,7 @@ extern void sub_815AC20();
void TeachyTvCreateAndRenderRbox();
void TeachyTvInitIo();
u8 TeachyTvSetupObjEventAndOam();
-extern void TeachyTvSetupPostBattleWindowAndObj(u8);
+void TeachyTvSetupPostBattleWindowAndObj(u8);
u8 TeachyTvSetupWindow();
void TeachyTvSetupScrollIndicatorArrowPair();
void TeachyTvSetWindowRegs();
@@ -344,3 +344,32 @@ void TeachyTvBg2AnimController()
schedule_bg_copy_tilemap_to_vram(2u);
}
+extern void TeachyTvGrassAnimationMain(u8 taskId, s16 x, s16 y, u8 subpriority, bool8 mode);
+
+void TeachyTvSetupPostBattleWindowAndObj(u8 taskId)
+{
+ u16 *v2 = gTasks[taskId].data;
+ int v1 = ((s16 *)v2)[1];
+ struct Sprite *v3 = &gSprites[v1];
+ int op;
+
+ ClearWindowTilemap(1u);
+ TeachyTvClearWindowRegs();
+ op = gTeachyTV_StaticResources.optionChosen;
+ if ( op >= 0 ) {
+ if ( op <= 3 )
+ {
+ TeachyTvSetSpriteCoordsAndSwitchFrame(((char*)v2)[2], 0x78, 0x38, 0);
+ ChangeBgX(3u, 0x3000u, 1u);
+ ChangeBgY(3u, 0x3000u, 2u);
+ *((u8 *)gUnknown_203F450 + 0x4004) += 3;
+ *((u8 *)gUnknown_203F450 + 0x4005) -= 3;
+ }
+ else if ( op <= 5 )
+ TeachyTvSetSpriteCoordsAndSwitchFrame(((char*)v2)[2], 0x78, 0x38, 0);
+ }
+
+ v2[4] = 0;
+ v2[5] = 0;
+ TeachyTvGrassAnimationMain(taskId, v3->pos2.x, v3->pos2.y, 0, 1u);
+} \ No newline at end of file