summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPikalaxALT <pikalaxalt@gmail.com>2019-06-13 11:15:37 -0400
committerPikalaxALT <pikalaxalt@gmail.com>2019-06-13 11:15:37 -0400
commit2ffcf13f6bd243cac85dff4e2c29ba4b3ae44aa4 (patch)
tree58875c33090495e09370cdd4ad585707569d7816
parent15722bdd2de42ded6cb379140cd7b1103aa44007 (diff)
help_system: through sub_813BFC0
-rw-r--r--asm/help_system.s493
-rw-r--r--src/help_system.c144
2 files changed, 144 insertions, 493 deletions
diff --git a/asm/help_system.s b/asm/help_system.s
index 276195831..af1800458 100644
--- a/asm/help_system.s
+++ b/asm/help_system.s
@@ -5,499 +5,6 @@
.text
- thumb_func_start sub_813BC78
-sub_813BC78: @ 813BC78
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- ldr r4, [sp, 0x20]
- ldr r5, [sp, 0x24]
- lsls r0, 16
- lsrs r6, r0, 16
- lsls r1, 24
- lsrs r1, 24
- mov r9, r1
- lsls r2, 24
- lsls r3, 24
- lsrs r3, 24
- mov r8, r3
- lsls r4, 24
- lsrs r4, 24
- lsls r5, 16
- lsrs r7, r5, 16
- lsrs r0, r2, 24
- adds r2, r0, r4
- cmp r0, r2
- bge _0813BCDE
- mov r12, r2
- ldr r1, _0813BCF0 @ =gDecompressionBuffer + 0x3800
- mov r10, r1
-_0813BCAE:
- mov r4, r9
- mov r2, r8
- adds r1, r4, r2
- adds r3, r0, 0x1
- cmp r4, r1
- bge _0813BCD6
- lsls r2, r0, 6
- mov r5, r10
-_0813BCBE:
- lsls r0, r4, 1
- adds r0, r2, r0
- adds r0, r5
- strh r6, [r0]
- adds r0, r6, r7
- lsls r0, 16
- lsrs r6, r0, 16
- adds r0, r4, 0x1
- lsls r0, 16
- lsrs r4, r0, 16
- cmp r4, r1
- blt _0813BCBE
-_0813BCD6:
- lsls r0, r3, 16
- lsrs r0, 16
- cmp r0, r12
- blt _0813BCAE
-_0813BCDE:
- bl sub_813BC5C
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_0813BCF0: .4byte gDecompressionBuffer + 0x3800
- thumb_func_end sub_813BC78
-
- thumb_func_start sub_813BCF4
-sub_813BCF4: @ 813BCF4
- push {lr}
- sub sp, 0x8
- ldr r0, _0813BD10 @ =0x000001ff
- movs r1, 0x14
- str r1, [sp]
- movs r1, 0
- str r1, [sp, 0x4]
- movs r2, 0
- movs r3, 0x1E
- bl sub_813BC78
- add sp, 0x8
- pop {r0}
- bx r0
- .align 2, 0
-_0813BD10: .4byte 0x000001ff
- thumb_func_end sub_813BCF4
-
- thumb_func_start sub_813BD14
-sub_813BD14: @ 813BD14
- push {lr}
- sub sp, 0x8
- lsls r0, 24
- lsrs r2, r0, 24
- cmp r2, 0
- beq _0813BD26
- cmp r2, 0x1
- beq _0813BD40
- b _0813BD54
-_0813BD26:
- ldr r0, _0813BD3C @ =0x000001ff
- movs r1, 0x2
- str r1, [sp]
- str r2, [sp, 0x4]
- movs r1, 0x1
- movs r2, 0
- movs r3, 0x7
- bl sub_813BC78
- b _0813BD54
- .align 2, 0
-_0813BD3C: .4byte 0x000001ff
-_0813BD40:
- movs r0, 0xF4
- lsls r0, 1
- movs r1, 0x2
- str r1, [sp]
- str r2, [sp, 0x4]
- movs r1, 0x1
- movs r2, 0
- movs r3, 0x7
- bl sub_813BC78
-_0813BD54:
- add sp, 0x8
- pop {r0}
- bx r0
- thumb_func_end sub_813BD14
-
- thumb_func_start sub_813BD5C
-sub_813BD5C: @ 813BD5C
- push {lr}
- sub sp, 0x8
- lsls r0, 24
- lsrs r2, r0, 24
- cmp r2, 0
- beq _0813BD6E
- cmp r2, 0x1
- beq _0813BD88
- b _0813BD9C
-_0813BD6E:
- ldr r0, _0813BD84 @ =0x000001ff
- movs r1, 0x2
- str r1, [sp]
- str r2, [sp, 0x4]
- movs r1, 0xD
- movs r2, 0
- movs r3, 0x10
- bl sub_813BC78
- b _0813BD9C
- .align 2, 0
-_0813BD84: .4byte 0x000001ff
-_0813BD88:
- movs r0, 0xD0
- lsls r0, 1
- movs r1, 0x2
- str r1, [sp]
- str r2, [sp, 0x4]
- movs r1, 0xD
- movs r2, 0
- movs r3, 0x10
- bl sub_813BC78
-_0813BD9C:
- add sp, 0x8
- pop {r0}
- bx r0
- thumb_func_end sub_813BD5C
-
- thumb_func_start sub_813BDA4
-sub_813BDA4: @ 813BDA4
- push {lr}
- sub sp, 0x8
- lsls r0, 24
- lsrs r2, r0, 24
- cmp r2, 0
- beq _0813BDB6
- cmp r2, 0x1
- beq _0813BDD0
- b _0813BDE2
-_0813BDB6:
- ldr r0, _0813BDCC @ =0x000001ff
- movs r1, 0x10
- str r1, [sp]
- str r2, [sp, 0x4]
- movs r1, 0x2
- movs r2, 0x3
- movs r3, 0x1A
- bl sub_813BC78
- b _0813BDE2
- .align 2, 0
-_0813BDCC: .4byte 0x000001ff
-_0813BDD0:
- movs r0, 0x10
- str r0, [sp]
- str r2, [sp, 0x4]
- movs r0, 0
- movs r1, 0x2
- movs r2, 0x3
- movs r3, 0x1A
- bl sub_813BC78
-_0813BDE2:
- add sp, 0x8
- pop {r0}
- bx r0
- thumb_func_end sub_813BDA4
-
- thumb_func_start sub_813BDE8
-sub_813BDE8: @ 813BDE8
- push {lr}
- sub sp, 0x8
- lsls r0, 24
- lsrs r2, r0, 24
- cmp r2, 0
- beq _0813BDFA
- cmp r2, 0x1
- beq _0813BE14
- b _0813BE2A
-_0813BDFA:
- ldr r0, _0813BE10 @ =0x000001ff
- movs r1, 0x10
- str r1, [sp]
- str r2, [sp, 0x4]
- movs r1, 0x1
- movs r2, 0x3
- movs r3, 0x1C
- bl sub_813BC78
- b _0813BE2A
- .align 2, 0
-_0813BE10: .4byte 0x000001ff
-_0813BE14:
- movs r0, 0xFD
- lsls r0, 1
- movs r1, 0x11
- str r1, [sp]
- movs r1, 0
- str r1, [sp, 0x4]
- movs r1, 0x1
- movs r2, 0x3
- movs r3, 0x1C
- bl sub_813BC78
-_0813BE2A:
- add sp, 0x8
- pop {r0}
- bx r0
- thumb_func_end sub_813BDE8
-
- thumb_func_start sub_813BE30
-sub_813BE30: @ 813BE30
- push {lr}
- sub sp, 0x8
- lsls r0, 24
- lsrs r2, r0, 24
- cmp r2, 0
- beq _0813BE42
- cmp r2, 0x1
- beq _0813BE5C
- b _0813BE70
-_0813BE42:
- ldr r0, _0813BE58 @ =0x000001ff
- movs r1, 0x5
- str r1, [sp]
- str r2, [sp, 0x4]
- movs r1, 0x2
- movs r2, 0xE
- movs r3, 0x1A
- bl sub_813BC78
- b _0813BE70
- .align 2, 0
-_0813BE58: .4byte 0x000001ff
-_0813BE5C:
- movs r0, 0x8F
- lsls r0, 1
- movs r1, 0x5
- str r1, [sp]
- str r2, [sp, 0x4]
- movs r1, 0x2
- movs r2, 0xE
- movs r3, 0x1A
- bl sub_813BC78
-_0813BE70:
- add sp, 0x8
- pop {r0}
- bx r0
- thumb_func_end sub_813BE30
-
- thumb_func_start sub_813BE78
-sub_813BE78: @ 813BE78
- push {r4-r6,lr}
- sub sp, 0x8
- lsls r0, 24
- lsrs r6, r0, 24
- cmp r6, 0
- beq _0813BE8A
- cmp r6, 0x1
- beq _0813BEB4
- b _0813BED8
-_0813BE8A:
- ldr r5, _0813BEB0 @ =0x000001ff
- movs r4, 0x1
- str r4, [sp]
- str r6, [sp, 0x4]
- adds r0, r5, 0
- movs r1, 0x1
- movs r2, 0x2
- movs r3, 0x1C
- bl sub_813BC78
- str r4, [sp]
- str r6, [sp, 0x4]
- adds r0, r5, 0
- movs r1, 0x1
- movs r2, 0x13
- movs r3, 0x1C
- bl sub_813BC78
- b _0813BED8
- .align 2, 0
-_0813BEB0: .4byte 0x000001ff
-_0813BEB4:
- ldr r0, _0813BEE0 @ =0x000001f7
- str r6, [sp]
- movs r4, 0
- str r4, [sp, 0x4]
- movs r1, 0x1
- movs r2, 0x2
- movs r3, 0x1C
- bl sub_813BC78
- movs r0, 0xFC
- lsls r0, 1
- str r6, [sp]
- str r4, [sp, 0x4]
- movs r1, 0x1
- movs r2, 0x13
- movs r3, 0x1C
- bl sub_813BC78
-_0813BED8:
- add sp, 0x8
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_0813BEE0: .4byte 0x000001f7
- thumb_func_end sub_813BE78
-
- thumb_func_start sub_813BEE4
-sub_813BEE4: @ 813BEE4
- push {r4-r6,lr}
- sub sp, 0x8
- lsls r0, 24
- lsrs r6, r0, 24
- cmp r6, 0
- beq _0813BEF6
- cmp r6, 0x1
- beq _0813BF20
- b _0813BF44
-_0813BEF6:
- ldr r5, _0813BF1C @ =0x000001ff
- movs r4, 0x1
- str r4, [sp]
- str r6, [sp, 0x4]
- adds r0, r5, 0
- movs r1, 0x1
- movs r2, 0x2
- movs r3, 0x1C
- bl sub_813BC78
- str r4, [sp]
- str r6, [sp, 0x4]
- adds r0, r5, 0
- movs r1, 0x1
- movs r2, 0x13
- movs r3, 0x1C
- bl sub_813BC78
- b _0813BF44
- .align 2, 0
-_0813BF1C: .4byte 0x000001ff
-_0813BF20:
- ldr r0, _0813BF4C @ =0x000001fb
- str r6, [sp]
- movs r4, 0
- str r4, [sp, 0x4]
- movs r1, 0x1
- movs r2, 0x2
- movs r3, 0x1C
- bl sub_813BC78
- movs r0, 0xFE
- lsls r0, 1
- str r6, [sp]
- str r4, [sp, 0x4]
- movs r1, 0x1
- movs r2, 0x13
- movs r3, 0x1C
- bl sub_813BC78
-_0813BF44:
- add sp, 0x8
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_0813BF4C: .4byte 0x000001fb
- thumb_func_end sub_813BEE4
-
- thumb_func_start sub_813BF50
-sub_813BF50: @ 813BF50
- push {r4-r6,lr}
- sub sp, 0x8
- lsls r0, 24
- lsrs r6, r0, 24
- cmp r6, 0
- beq _0813BF62
- cmp r6, 0x1
- beq _0813BF8C
- b _0813BFB2
-_0813BF62:
- ldr r5, _0813BF88 @ =0x000001ff
- movs r4, 0x14
- str r4, [sp]
- str r6, [sp, 0x4]
- adds r0, r5, 0
- movs r1, 0
- movs r2, 0
- movs r3, 0x1
- bl sub_813BC78
- str r4, [sp]
- str r6, [sp, 0x4]
- adds r0, r5, 0
- movs r1, 0x1D
- movs r2, 0
- movs r3, 0x1
- bl sub_813BC78
- b _0813BFB2
- .align 2, 0
-_0813BF88: .4byte 0x000001ff
-_0813BF8C:
- ldr r6, _0813BFBC @ =0x000001f9
- movs r5, 0x14
- str r5, [sp]
- movs r4, 0
- str r4, [sp, 0x4]
- adds r0, r6, 0
- movs r1, 0
- movs r2, 0
- movs r3, 0x1
- bl sub_813BC78
- str r5, [sp]
- str r4, [sp, 0x4]
- adds r0, r6, 0
- movs r1, 0x1D
- movs r2, 0
- movs r3, 0x1
- bl sub_813BC78
-_0813BFB2:
- add sp, 0x8
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_0813BFBC: .4byte 0x000001f9
- thumb_func_end sub_813BF50
-
- thumb_func_start sub_813BFC0
-sub_813BFC0: @ 813BFC0
- push {lr}
- sub sp, 0x8
- lsls r0, 24
- lsrs r2, r0, 24
- cmp r2, 0
- beq _0813BFD2
- cmp r2, 0x1
- beq _0813BFE8
- b _0813BFFC
-_0813BFD2:
- ldr r0, _0813BFE4 @ =0x000001ff
- movs r1, 0x1
- str r1, [sp]
- str r2, [sp, 0x4]
- movs r2, 0x5
- movs r3, 0x1C
- bl sub_813BC78
- b _0813BFFC
- .align 2, 0
-_0813BFE4: .4byte 0x000001ff
-_0813BFE8:
- movs r0, 0xFE
- lsls r0, 1
- str r2, [sp]
- movs r1, 0
- str r1, [sp, 0x4]
- movs r1, 0x1
- movs r2, 0x5
- movs r3, 0x1C
- bl sub_813BC78
-_0813BFFC:
- add sp, 0x8
- pop {r0}
- bx r0
- thumb_func_end sub_813BFC0
-
thumb_func_start sub_813C004
sub_813C004: @ 813C004
push {r4-r6,lr}
diff --git a/src/help_system.c b/src/help_system.c
index 79ae6ac90..08120952f 100644
--- a/src/help_system.c
+++ b/src/help_system.c
@@ -235,3 +235,147 @@ void sub_813BC5C(void)
{
RequestDma3Copy(gDecompressionBuffer, (void *)BG_CHAR_ADDR(3), BG_CHAR_SIZE, 0);
}
+
+void sub_813BC78(u16 baseTile, u8 left, u8 top, u8 width, u8 height, u16 increment)
+{
+ u16 i, j;
+
+ for (i = top; i < top + height; i++)
+ {
+ for (j = left; j < left + width; j++)
+ {
+ *((u16 *)(gDecompressionBuffer + 0x3800 + 64 * i + 2 * j)) = baseTile;
+ baseTile += increment;
+ }
+ }
+
+ sub_813BC5C();
+}
+
+void sub_813BCF4(void)
+{
+ sub_813BC78(0x1FF, 0, 0, 30, 20, 0);
+}
+
+void sub_813BD14(u8 mode)
+{
+ switch (mode)
+ {
+ case 0:
+ sub_813BC78(0x1FF, 1, 0, 7, 2, 0);
+ break;
+ case 1:
+ sub_813BC78(0x1E8, 1, 0, 7, 2, 1);
+ break;
+ }
+}
+
+void sub_813BD5C(u8 mode)
+{
+ switch (mode)
+ {
+ case 0:
+ sub_813BC78(0x1FF, 13, 0, 16, 2, 0);
+ break;
+ case 1:
+ sub_813BC78(0x1A0, 13, 0, 16, 2, 1);
+ break;
+ }
+}
+
+void sub_813BDA4(u8 mode)
+{
+ switch (mode)
+ {
+ case 0:
+ sub_813BC78(0x1FF, 2, 3, 26, 16, 0);
+ break;
+ case 1:
+ sub_813BC78(0x000, 2, 3, 26, 16, 1);
+ break;
+ }
+}
+
+void sub_813BDE8(u8 mode)
+{
+ switch (mode)
+ {
+ case 0:
+ sub_813BC78(0x1FF, 1, 3, 28, 16, 0);
+ break;
+ case 1:
+ sub_813BC78(0x1FA, 1, 3, 28, 17, 0);
+ break;
+ }
+}
+
+void sub_813BE30(u8 mode)
+{
+ switch (mode)
+ {
+ case 0:
+ sub_813BC78(0x1FF, 2, 14, 26, 5, 0);
+ break;
+ case 1:
+ sub_813BC78(0x11E, 2, 14, 26, 5, 1);
+ break;
+ }
+}
+
+void sub_813BE78(u8 mode)
+{
+ switch (mode)
+ {
+ case 0:
+ sub_813BC78(0x1FF, 1, 2, 28, 1, 0);
+ sub_813BC78(0x1FF, 1, 19, 28, 1, 0);
+ break;
+ case 1:
+ sub_813BC78(0x1F7, 1, 2, 28, 1, 0);
+ sub_813BC78(0x1F8, 1, 19, 28, 1, 0);
+ break;
+ }
+}
+
+void sub_813BEE4(u8 mode)
+{
+ switch (mode)
+ {
+ case 0:
+ sub_813BC78(0x1FF, 1, 2, 28, 1, 0);
+ sub_813BC78(0x1FF, 1, 19, 28, 1, 0);
+ break;
+ case 1:
+ sub_813BC78(0x1FB, 1, 2, 28, 1, 0);
+ sub_813BC78(0x1FC, 1, 19, 28, 1, 0);
+ break;
+ }
+}
+
+void sub_813BF50(u8 mode)
+{
+ switch (mode)
+ {
+ case 0:
+ sub_813BC78(0x1FF, 0, 0, 1, 20, 0);
+ sub_813BC78(0x1FF, 29, 0, 1, 20, 0);
+ break;
+ case 1:
+ sub_813BC78(0x1F9, 0, 0, 1, 20, 0);
+ sub_813BC78(0x1F9, 29, 0, 1, 20, 0);
+ break;
+ }
+}
+
+void sub_813BFC0(u8 mode)
+{
+ switch (mode)
+ {
+ case 0:
+ sub_813BC78(0x1FF, 1, 5, 28, 1, 0);
+ break;
+ case 1:
+ sub_813BC78(0x1FC, 1, 5, 28, 1, 0);
+ break;
+ }
+}