summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--asm/easy_chat_2.s640
-rw-r--r--src/easy_chat_3.c227
2 files changed, 225 insertions, 642 deletions
diff --git a/asm/easy_chat_2.s b/asm/easy_chat_2.s
index e21664561..979abfa5e 100644
--- a/asm/easy_chat_2.s
+++ b/asm/easy_chat_2.s
@@ -5,646 +5,6 @@
.text
- thumb_func_start sub_81015BC
-sub_81015BC: @ 81015BC
- push {lr}
- movs r0, 0x2
- movs r1, 0x11
- bl FillWindowPixelBuffer
- movs r0, 0x2
- movs r1, 0x2
- bl CopyWindowToVram
- pop {r0}
- bx r0
- thumb_func_end sub_81015BC
-
- thumb_func_start sub_81015D4
-sub_81015D4: @ 81015D4
- push {lr}
- ldr r1, _081015E8 @ =gUnknown_203ACEC
- cmp r0, 0x6
- bhi _0810168E
- lsls r0, 2
- ldr r1, _081015EC @ =_081015F0
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .align 2, 0
-_081015E8: .4byte gUnknown_203ACEC
-_081015EC: .4byte _081015F0
- .align 2, 0
-_081015F0:
- .4byte _0810160C
- .4byte _08101620
- .4byte _08101630
- .4byte _08101644
- .4byte _08101658
- .4byte _0810166C
- .4byte _08101680
-_0810160C:
- ldr r1, _0810161C @ =gUnknown_203ACEC
- ldr r2, [r1]
- movs r0, 0
- strb r0, [r2, 0x6]
- ldr r2, [r1]
- movs r0, 0xA
- b _0810168C
- .align 2, 0
-_0810161C: .4byte gUnknown_203ACEC
-_08101620:
- ldr r1, _0810162C @ =gUnknown_203ACEC
- ldr r2, [r1]
- movs r3, 0
- movs r0, 0x9
- b _0810164C
- .align 2, 0
-_0810162C: .4byte gUnknown_203ACEC
-_08101630:
- ldr r1, _08101640 @ =gUnknown_203ACEC
- ldr r2, [r1]
- movs r0, 0xB
- strb r0, [r2, 0x6]
- ldr r2, [r1]
- movs r0, 0x11
- b _0810168C
- .align 2, 0
-_08101640: .4byte gUnknown_203ACEC
-_08101644:
- ldr r1, _08101654 @ =gUnknown_203ACEC
- ldr r2, [r1]
- movs r3, 0
- movs r0, 0x11
-_0810164C:
- strb r0, [r2, 0x6]
- ldr r0, [r1]
- strb r3, [r0, 0x7]
- b _0810168E
- .align 2, 0
-_08101654: .4byte gUnknown_203ACEC
-_08101658:
- ldr r1, _08101668 @ =gUnknown_203ACEC
- ldr r2, [r1]
- movs r0, 0x11
- strb r0, [r2, 0x6]
- ldr r2, [r1]
- movs r0, 0xA
- b _0810168C
- .align 2, 0
-_08101668: .4byte gUnknown_203ACEC
-_0810166C:
- ldr r1, _0810167C @ =gUnknown_203ACEC
- ldr r2, [r1]
- movs r0, 0x12
- strb r0, [r2, 0x6]
- ldr r2, [r1]
- movs r0, 0x16
- b _0810168C
- .align 2, 0
-_0810167C: .4byte gUnknown_203ACEC
-_08101680:
- ldr r1, _081016A8 @ =gUnknown_203ACEC
- ldr r2, [r1]
- movs r0, 0x16
- strb r0, [r2, 0x6]
- ldr r2, [r1]
- movs r0, 0x12
-_0810168C:
- strb r0, [r2, 0x7]
-_0810168E:
- ldr r1, [r1]
- ldrb r0, [r1, 0x6]
- movs r3, 0x1
- negs r3, r3
- adds r2, r3, 0
- ldrb r3, [r1, 0x7]
- cmp r0, r3
- bcs _081016A0
- movs r2, 0x1
-_081016A0:
- strb r2, [r1, 0x8]
- pop {r0}
- bx r0
- .align 2, 0
-_081016A8: .4byte gUnknown_203ACEC
- thumb_func_end sub_81015D4
-
- thumb_func_start sub_81016AC
-sub_81016AC: @ 81016AC
- push {r4,lr}
- ldr r4, _081016D8 @ =gUnknown_203ACEC
- ldr r1, [r4]
- ldrb r2, [r1, 0x6]
- ldrb r0, [r1, 0x7]
- cmp r2, r0
- beq _081016DC
- ldrb r0, [r1, 0x8]
- adds r0, r2, r0
- strb r0, [r1, 0x6]
- ldr r0, [r4]
- ldrb r0, [r0, 0x6]
- bl sub_81016E4
- ldr r0, [r4]
- ldrb r1, [r0, 0x6]
- ldrb r0, [r0, 0x7]
- eors r1, r0
- negs r0, r1
- orrs r0, r1
- lsrs r0, 31
- b _081016DE
- .align 2, 0
-_081016D8: .4byte gUnknown_203ACEC
-_081016DC:
- movs r0, 0
-_081016DE:
- pop {r4}
- pop {r1}
- bx r1
- thumb_func_end sub_81016AC
-
- thumb_func_start sub_81016E4
-sub_81016E4: @ 81016E4
- push {r4,lr}
- sub sp, 0x8
- lsls r0, 24
- lsrs r4, r0, 24
- movs r0, 0x1E
- str r0, [sp]
- movs r0, 0xA
- str r0, [sp, 0x4]
- movs r0, 0x1
- movs r1, 0
- movs r2, 0
- movs r3, 0xA
- bl FillBgTilemapBufferRect_Palette0
- cmp r4, 0x16
- bls _08101706
- b _08101822
-_08101706:
- lsls r0, r4, 2
- ldr r1, _08101710 @ =_08101714
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .align 2, 0
-_08101710: .4byte _08101714
- .align 2, 0
-_08101714:
- .4byte _08101822
- .4byte _08101770
- .4byte _08101778
- .4byte _08101780
- .4byte _08101788
- .4byte _08101790
- .4byte _08101798
- .4byte _08101808
- .4byte _081017FA
- .4byte _081017EC
- .4byte _081017DE
- .4byte _081017A6
- .4byte _081017AE
- .4byte _081017B6
- .4byte _081017BE
- .4byte _081017C6
- .4byte _081017CE
- .4byte _081017D6
- .4byte _081017DE
- .4byte _081017EC
- .4byte _081017FA
- .4byte _08101808
- .4byte _08101816
-_08101770:
- movs r0, 0xB
- movs r1, 0xE
- movs r2, 0x3
- b _0810179E
-_08101778:
- movs r0, 0x9
- movs r1, 0xE
- movs r2, 0x7
- b _0810179E
-_08101780:
- movs r0, 0x7
- movs r1, 0xE
- movs r2, 0xB
- b _0810179E
-_08101788:
- movs r0, 0x5
- movs r1, 0xE
- movs r2, 0xF
- b _0810179E
-_08101790:
- movs r0, 0x3
- movs r1, 0xE
- movs r2, 0x13
- b _0810179E
-_08101798:
- movs r0, 0x1
- movs r1, 0xE
- movs r2, 0x17
-_0810179E:
- movs r3, 0x2
- bl sub_8101830
- b _08101822
-_081017A6:
- movs r0, 0x1
- movs r1, 0xA
- movs r2, 0x18
- b _081017E4
-_081017AE:
- movs r0, 0x1
- movs r1, 0xA
- movs r2, 0x19
- b _081017E4
-_081017B6:
- movs r0, 0x1
- movs r1, 0xA
- movs r2, 0x1A
- b _081017E4
-_081017BE:
- movs r0, 0x1
- movs r1, 0xA
- movs r2, 0x1B
- b _081017E4
-_081017C6:
- movs r0, 0x1
- movs r1, 0xA
- movs r2, 0x1C
- b _081017E4
-_081017CE:
- movs r0, 0x1
- movs r1, 0xA
- movs r2, 0x1D
- b _081017E4
-_081017D6:
- movs r0, 0
- movs r1, 0xA
- movs r2, 0x1E
- b _081017E4
-_081017DE:
- movs r0, 0x1
- movs r1, 0xA
- movs r2, 0x17
-_081017E4:
- movs r3, 0xA
- bl sub_8101830
- b _08101822
-_081017EC:
- movs r0, 0x1
- movs r1, 0xB
- movs r2, 0x17
- movs r3, 0x8
- bl sub_8101830
- b _08101822
-_081017FA:
- movs r0, 0x1
- movs r1, 0xC
- movs r2, 0x17
- movs r3, 0x6
- bl sub_8101830
- b _08101822
-_08101808:
- movs r0, 0x1
- movs r1, 0xD
- movs r2, 0x17
- movs r3, 0x4
- bl sub_8101830
- b _08101822
-_08101816:
- movs r0, 0x1
- movs r1, 0xE
- movs r2, 0x17
- movs r3, 0x2
- bl sub_8101830
-_08101822:
- movs r0, 0x1
- bl CopyBgTilemapBufferToVram
- add sp, 0x8
- pop {r4}
- pop {r0}
- bx r0
- thumb_func_end sub_81016E4
-
- thumb_func_start sub_8101830
-sub_8101830: @ 8101830
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- sub sp, 0x8
- mov r12, r0
- adds r7, r1, 0
- mov r9, r2
- mov r10, r3
- ldr r0, _08101968 @ =gUnknown_203ACEC
- ldr r0, [r0]
- movs r1, 0xC0
- lsls r1, 2
- adds r6, r0, r1
- mov r0, r12
- add r0, r9
- subs r5, r0, 0x1
- adds r0, r7, r3
- subs r0, 0x1
- mov r8, r0
- mov r2, r12
- adds r3, r7, 0
- lsls r0, r3, 5
- adds r0, r2
- lsls r0, 1
- adds r0, r6
- ldr r4, _0810196C @ =0x00004001
- adds r1, r4, 0
- strh r1, [r0]
- adds r2, 0x1
- cmp r2, r5
- bge _0810188C
- ldr r0, _08101970 @ =0x00004002
- adds r4, r0, 0
- lsls r1, r2, 1
- lsls r0, r3, 6
- adds r0, r6
- adds r1, r0
- subs r2, r5, r2
-_08101880:
- strh r4, [r1]
- adds r1, 0x2
- subs r2, 0x1
- cmp r2, 0
- bne _08101880
- adds r2, r5, 0
-_0810188C:
- lsls r0, r3, 5
- adds r0, r2
- lsls r0, 1
- adds r0, r6
- ldr r2, _08101974 @ =0x00004003
- adds r1, r2, 0
- strh r1, [r0]
- adds r3, 0x1
- mov r4, r12
- adds r4, 0x1
- adds r0, r7, 0x1
- str r0, [sp, 0x4]
- mov r1, r9
- subs r1, 0x2
- str r1, [sp]
- movs r2, 0x2
- negs r2, r2
- add r10, r2
- cmp r3, r8
- bge _081018FC
- lsls r7, r4, 1
- mov r9, r7
-_081018B8:
- lsls r0, r3, 5
- add r0, r12
- lsls r0, 1
- adds r0, r6
- ldr r2, _08101978 @ =0x00004005
- adds r1, r2, 0
- strh r1, [r0]
- adds r2, r4, 0
- adds r7, r3, 0x1
- cmp r4, r5
- bge _081018E8
- movs r0, 0x80
- lsls r0, 7
- adds r1, r0, 0
- lsls r0, r3, 6
- adds r0, r6
- add r0, r9
- subs r2, r5, r4
-_081018DC:
- strh r1, [r0]
- adds r0, 0x2
- subs r2, 0x1
- cmp r2, 0
- bne _081018DC
- adds r2, r5, 0
-_081018E8:
- lsls r0, r3, 5
- adds r0, r2
- lsls r0, 1
- adds r0, r6
- ldr r2, _0810197C @ =0x00004007
- adds r1, r2, 0
- strh r1, [r0]
- adds r3, r7, 0
- cmp r3, r8
- blt _081018B8
-_081018FC:
- lsls r0, r3, 5
- mov r7, r12
- adds r1, r0, r7
- lsls r1, 1
- adds r1, r6
- ldr r7, _08101980 @ =0x00004009
- adds r2, r7, 0
- strh r2, [r1]
- adds r2, r4, 0
- mov r12, r0
- cmp r4, r5
- bge _0810192E
- ldr r0, _08101984 @ =0x0000400a
- adds r7, r0, 0
- lsls r1, r4, 1
- lsls r0, r3, 6
- adds r0, r6
- adds r0, r1, r0
- subs r2, r5, r4
-_08101922:
- strh r7, [r0]
- adds r0, 0x2
- subs r2, 0x1
- cmp r2, 0
- bne _08101922
- adds r2, r5, 0
-_0810192E:
- mov r1, r12
- adds r0, r1, r2
- lsls r0, 1
- adds r0, r6
- ldr r2, _08101988 @ =0x0000400b
- adds r1, r2, 0
- strh r1, [r0]
- lsls r0, r4, 27
- lsrs r0, 24
- ldr r3, [sp, 0x4]
- lsls r1, r3, 27
- lsrs r1, 24
- ldr r4, [sp]
- lsls r2, r4, 27
- lsrs r2, 24
- mov r7, r10
- lsls r3, r7, 27
- lsrs r3, 24
- bl sub_8101A5C
- add sp, 0x8
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_08101968: .4byte gUnknown_203ACEC
-_0810196C: .4byte 0x00004001
-_08101970: .4byte 0x00004002
-_08101974: .4byte 0x00004003
-_08101978: .4byte 0x00004005
-_0810197C: .4byte 0x00004007
-_08101980: .4byte 0x00004009
-_08101984: .4byte 0x0000400a
-_08101988: .4byte 0x0000400b
- thumb_func_end sub_8101830
-
- thumb_func_start sub_810198C
-sub_810198C: @ 810198C
- push {lr}
- movs r1, 0x80
- lsls r1, 4
- movs r0, 0x2
- movs r2, 0
- bl ChangeBgY
- ldr r0, _081019AC @ =gUnknown_203ACEC
- ldr r0, [r0]
- movs r1, 0xB3
- lsls r1, 2
- adds r0, r1
- movs r1, 0
- strh r1, [r0]
- pop {r0}
- bx r0
- .align 2, 0
-_081019AC: .4byte gUnknown_203ACEC
- thumb_func_end sub_810198C
-
- thumb_func_start sub_81019B0
-sub_81019B0: @ 81019B0
- push {r4,r5,lr}
- adds r4, r0, 0
- lsls r4, 16
- lsrs r4, 16
- lsls r1, 24
- lsrs r5, r1, 24
- movs r0, 0x2
- bl GetBgY
- adds r2, r0, 0
- ldr r0, _081019FC @ =gUnknown_203ACEC
- ldr r3, [r0]
- movs r0, 0xB3
- lsls r0, 2
- adds r1, r3, r0
- ldrh r0, [r1]
- adds r0, r4
- strh r0, [r1]
- lsls r4, 20
- asrs r4, 16
- lsls r0, r4, 8
- adds r2, r0
- cmp r5, 0
- beq _08101A00
- movs r1, 0xB4
- lsls r1, 2
- adds r0, r3, r1
- str r2, [r0]
- movs r0, 0xB5
- lsls r0, 2
- adds r1, r3, r0
- lsls r0, r5, 8
- str r0, [r1]
- cmp r4, 0
- bge _08101A0A
- negs r0, r0
- str r0, [r1]
- b _08101A0A
- .align 2, 0
-_081019FC: .4byte gUnknown_203ACEC
-_08101A00:
- movs r0, 0x2
- adds r1, r2, 0
- movs r2, 0
- bl ChangeBgY
-_08101A0A:
- pop {r4,r5}
- pop {r0}
- bx r0
- thumb_func_end sub_81019B0
-
- thumb_func_start sub_8101A10
-sub_8101A10: @ 8101A10
- push {lr}
- movs r0, 0x2
- bl GetBgY
- ldr r1, _08101A3C @ =gUnknown_203ACEC
- ldr r2, [r1]
- movs r3, 0xB4
- lsls r3, 2
- adds r1, r2, r3
- ldr r1, [r1]
- cmp r0, r1
- beq _08101A40
- movs r1, 0xB5
- lsls r1, 2
- adds r0, r2, r1
- ldr r1, [r0]
- movs r0, 0x2
- movs r2, 0x1
- bl ChangeBgY
- movs r0, 0x1
- b _08101A42
- .align 2, 0
-_08101A3C: .4byte gUnknown_203ACEC
-_08101A40:
- movs r0, 0
-_08101A42:
- pop {r1}
- bx r1
- thumb_func_end sub_8101A10
-
- thumb_func_start sub_8101A48
-sub_8101A48: @ 8101A48
- ldr r0, _08101A58 @ =gUnknown_203ACEC
- ldr r0, [r0]
- movs r1, 0xB3
- lsls r1, 2
- adds r0, r1
- ldrh r0, [r0]
- bx lr
- .align 2, 0
-_08101A58: .4byte gUnknown_203ACEC
- thumb_func_end sub_8101A48
-
- thumb_func_start sub_8101A5C
-sub_8101A5C: @ 8101A5C
- push {r4,r5,lr}
- lsls r0, 24
- lsrs r0, 24
- lsls r1, 24
- lsrs r1, 24
- lsls r2, 24
- lsrs r2, 24
- lsls r3, 24
- lsrs r3, 24
- lsls r4, r0, 8
- adds r0, r2
- orrs r4, r0
- lsls r5, r1, 8
- adds r1, r3
- orrs r5, r1
- movs r0, 0x40
- adds r1, r4, 0
- bl SetGpuReg
- movs r0, 0x44
- adds r1, r5, 0
- bl SetGpuReg
- pop {r4,r5}
- pop {r0}
- bx r0
- thumb_func_end sub_8101A5C
-
thumb_func_start sub_8101A90
sub_8101A90: @ 8101A90
push {r4,r5,lr}
diff --git a/src/easy_chat_3.c b/src/easy_chat_3.c
index 84a53aa1a..75fdb20a3 100644
--- a/src/easy_chat_3.c
+++ b/src/easy_chat_3.c
@@ -17,7 +17,7 @@ struct Unk203A11C
s8 unk8;
u8 unk9;
u8 unkA[0xC1];
- u8 unkCC[0x202];
+ u8 unkCC[0x200];
u16 unk2CE;
int unk2D0;
int unk2D4;
@@ -91,8 +91,10 @@ void sub_8101478(void);
void sub_81014AC(u8 a0, u8 a1);
void sub_8101558(u8 a0, u8 a1);
void sub_81015BC(void);
-void sub_81015D4(u8 a0);
+void sub_81015D4(int a0);
bool8 sub_81016AC(void);
+void sub_81016E4(u8 a0);
+void sub_8101830(int left, int top, int width, int height);
void sub_810198C(void);
void sub_81019B0(s16 a0, u8 a1);
bool8 sub_8101A10(void);
@@ -1417,3 +1419,224 @@ void sub_8101558(u8 arg0, u8 arg1)
if (var1)
FillWindowPixelRect(2, PIXEL_FILL(1), 0, 0, 224, var1);
}
+
+void sub_81015BC(void)
+{
+ FillWindowPixelBuffer(2, PIXEL_FILL(1));
+ CopyWindowToVram(2, 2);
+}
+
+void sub_81015D4(int arg0)
+{
+ switch (arg0)
+ {
+ case 0:
+ gUnknown_203ACEC->unk6 = 0;
+ gUnknown_203ACEC->unk7 = 10;
+ break;
+ case 1:
+ gUnknown_203ACEC->unk6 = 9;
+ gUnknown_203ACEC->unk7 = 0;
+ break;
+ case 2:
+ gUnknown_203ACEC->unk6 = 11;
+ gUnknown_203ACEC->unk7 = 17;
+ break;
+ case 3:
+ gUnknown_203ACEC->unk6 = 17;
+ gUnknown_203ACEC->unk7 = 0;
+ break;
+ case 4:
+ gUnknown_203ACEC->unk6 = 17;
+ gUnknown_203ACEC->unk7 = 10;
+ break;
+ case 5:
+ gUnknown_203ACEC->unk6 = 18;
+ gUnknown_203ACEC->unk7 = 22;
+ break;
+ case 6:
+ gUnknown_203ACEC->unk6 = 22;
+ gUnknown_203ACEC->unk7 = 18;
+ break;
+ }
+
+ gUnknown_203ACEC->unk8 = gUnknown_203ACEC->unk6 < gUnknown_203ACEC->unk7 ? 1 : -1;
+}
+
+bool8 sub_81016AC(void)
+{
+ u8 var0, var1;
+ if (gUnknown_203ACEC->unk6 == gUnknown_203ACEC->unk7)
+ return FALSE;
+
+ gUnknown_203ACEC->unk6 += gUnknown_203ACEC->unk8;
+ sub_81016E4(gUnknown_203ACEC->unk6);
+ var0 = gUnknown_203ACEC->unk6;
+ var1 = gUnknown_203ACEC->unk7;
+ return (var0 ^ var1) > 0;
+}
+
+void sub_81016E4(u8 arg0)
+{
+ FillBgTilemapBufferRect_Palette0(1, 0, 0, 10, 30, 10);
+ switch (arg0)
+ {
+ case 0:
+ break;
+ case 1:
+ sub_8101830(11, 14, 3, 2);
+ break;
+ case 2:
+ sub_8101830(9, 14, 7, 2);
+ break;
+ case 3:
+ sub_8101830(7, 14, 11, 2);
+ break;
+ case 4:
+ sub_8101830(5, 14, 15, 2);
+ break;
+ case 5:
+ sub_8101830(3, 14, 19, 2);
+ break;
+ case 6:
+ sub_8101830(1, 14, 23, 2);
+ break;
+ case 11:
+ sub_8101830(1, 10, 24, 10);
+ break;
+ case 12:
+ sub_8101830(1, 10, 25, 10);
+ break;
+ case 13:
+ sub_8101830(1, 10, 26, 10);
+ break;
+ case 14:
+ sub_8101830(1, 10, 27, 10);
+ break;
+ case 15:
+ sub_8101830(1, 10, 28, 10);
+ break;
+ case 16:
+ sub_8101830(1, 10, 29, 10);
+ break;
+ case 17:
+ sub_8101830(0, 10, 30, 10);
+ break;
+ case 10:
+ case 18:
+ sub_8101830(1, 10, 23, 10);
+ break;
+ case 9:
+ case 19:
+ sub_8101830(1, 11, 23, 8);
+ break;
+ case 8:
+ case 20:
+ sub_8101830(1, 12, 23, 6);
+ break;
+ case 7:
+ case 21:
+ sub_8101830(1, 13, 23, 4);
+ break;
+ case 22:
+ sub_8101830(1, 14, 23, 2);
+ break;
+ }
+
+ CopyBgTilemapBufferToVram(1);
+}
+
+void sub_8101830(int left, int top, int width, int height)
+{
+ u16 *tilemap;
+ int right;
+ int bottom;
+ int x, y;
+
+ tilemap = gUnknown_203ACEC->unk300;
+ right = left + width - 1;
+ bottom = top + height - 1;
+ x = left;
+ y = top;
+ tilemap[y * 32 + x] = 0x4001;
+ x++;
+ for (; x < right; x++)
+ tilemap[y * 32 + x] = 0x4002;
+
+ tilemap[y * 32 + x] = 0x4003;
+ y++;
+ for (; y < bottom; y++)
+ {
+ tilemap[y * 32 + left] = 0x4005;
+ x = left + 1;
+ for (; x < right; x++)
+ tilemap[y * 32 + x] = 0x4000;
+
+ tilemap[y * 32 + x] = 0x4007;
+ }
+
+ tilemap[y * 32 + left] = 0x4009;
+ x = left + 1;
+ for (; x < right; x++)
+ tilemap[y * 32 + x] = 0x400A;
+
+ tilemap[y * 32 + x] = 0x400B;
+ sub_8101A5C((left + 1) * 8, (top + 1) * 8, (width - 2) * 8, (height - 2) * 8);
+}
+
+void sub_810198C(void)
+{
+ ChangeBgY(2, 0x800, 0);
+ gUnknown_203ACEC->unk2CE = 0;
+}
+
+void sub_81019B0(s16 arg0, u8 arg1)
+{
+ int bgY;
+ s16 var0;
+
+ bgY = GetBgY(2);
+ gUnknown_203ACEC->unk2CE += arg0;
+ var0 = arg0 * 16;
+ bgY += var0 << 8;
+ if (arg1)
+ {
+ gUnknown_203ACEC->unk2D0 = bgY;
+ gUnknown_203ACEC->unk2D4 = arg1 * 256;
+ if (var0 < 0)
+ gUnknown_203ACEC->unk2D4 = -gUnknown_203ACEC->unk2D4;
+ }
+ else
+ {
+ ChangeBgY(2, bgY, 0);
+ }
+}
+
+bool8 sub_8101A10(void)
+{
+ int bgY;
+
+ bgY = GetBgY(2);
+ if (bgY == gUnknown_203ACEC->unk2D0)
+ {
+ return FALSE;
+ }
+ else
+ {
+ ChangeBgY(2, gUnknown_203ACEC->unk2D4, 1);
+ return TRUE;
+ }
+}
+
+int sub_8101A48(void)
+{
+ return gUnknown_203ACEC->unk2CE;
+}
+
+void sub_8101A5C(u8 left, u8 top, u8 width, u8 height)
+{
+ u16 horizontalDimensions = WIN_RANGE(left, left + width);
+ u16 verticalDimensions = WIN_RANGE(top, top + height);
+ SetGpuReg(REG_OFFSET_WIN0H, horizontalDimensions);
+ SetGpuReg(REG_OFFSET_WIN0V, verticalDimensions);
+}