summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPikalaxALT <pikalaxalt@gmail.com>2017-11-25 13:19:06 -0500
committerPikalaxALT <pikalaxalt@gmail.com>2017-11-25 13:19:06 -0500
commit6b84feaaf2ba492bef23a42c28603bbaa3ccd2e6 (patch)
tree14c6816e18da68c2a3ee00248e7fefbbe3660ff5
parenta875d665b812b4aaa5cde21b5127262e04106755 (diff)
nonmatching sub_811AB68
-rw-r--r--asm/easy_chat.s190
-rw-r--r--src/easy_chat.c282
2 files changed, 277 insertions, 195 deletions
diff --git a/asm/easy_chat.s b/asm/easy_chat.s
index f1aee4b98..abc2e3429 100644
--- a/asm/easy_chat.s
+++ b/asm/easy_chat.s
@@ -5,196 +5,6 @@
.text
- thumb_func_start sub_811AB68
-sub_811AB68: @ 811AB68
- push {r4-r7,lr}
- ldr r0, =gMain
- ldrh r1, [r0, 0x2E]
- movs r0, 0x1
- ands r0, r1
- cmp r0, 0
- beq _0811ABB8
- bl sub_811BF78
- ldr r1, =gUnknown_0203A118
- ldr r3, [r1]
- movs r2, 0
- movs r0, 0x2
- strb r0, [r3, 0x4]
- ldr r0, [r1]
- strb r2, [r0, 0xA]
- ldr r0, [r1]
- strb r2, [r0, 0xB]
- ldr r0, [r1]
- strb r2, [r0, 0xC]
- movs r0, 0x9
- b _0811ACCC
- .pool
-_0811AB9C:
- movs r0, 0x20
- ands r0, r1
- cmp r0, 0
- bne _0811AC68
- movs r0, 0x80
- ands r0, r1
- cmp r0, 0
- bne _0811AC58
- movs r0, 0x10
- ands r0, r1
- cmp r0, 0
- bne _0811AC48
- movs r0, 0
- b _0811ACCC
-_0811ABB8:
- movs r0, 0x2
- ands r0, r1
- cmp r0, 0
- bne _0811AC78
- movs r0, 0x8
- ands r0, r1
- cmp r0, 0
- bne _0811AC7E
- movs r0, 0x40
- ands r0, r1
- cmp r0, 0
- beq _0811AB9C
- ldr r2, =gUnknown_0203A118
- ldr r1, [r2]
- ldrb r0, [r1, 0x6]
- subs r0, 0x1
-_0811ABD8:
- strb r0, [r1, 0x6]
-_0811ABDA:
- adds r7, r2, 0
- adds r4, r7, 0
- ldr r2, [r4]
- movs r0, 0x6
- ldrsb r0, [r2, r0]
- ldr r6, =gUnknown_08597550
- cmp r0, 0
- bge _0811ABF8
- ldrb r0, [r2, 0x1]
- lsls r1, r0, 1
- adds r1, r0
- lsls r1, 3
- adds r1, r6
- ldrb r0, [r1, 0x2]
- strb r0, [r2, 0x6]
-_0811ABF8:
- ldr r3, [r4]
- movs r2, 0x6
- ldrsb r2, [r3, r2]
- adds r5, r6, 0
- ldrb r1, [r3, 0x1]
- lsls r0, r1, 1
- adds r0, r1
- lsls r0, 3
- adds r0, r5
- ldrb r0, [r0, 0x2]
- cmp r2, r0
- ble _0811AC14
- movs r0, 0
- strb r0, [r3, 0x6]
-_0811AC14:
- ldr r3, [r4]
- movs r2, 0x6
- ldrsb r2, [r3, r2]
- ldrb r1, [r3, 0x1]
- lsls r0, r1, 1
- adds r0, r1
- lsls r0, 3
- adds r1, r0, r5
- ldrb r0, [r1, 0x2]
- cmp r2, r0
- bne _0811AC88
- movs r0, 0x5
- ldrsb r0, [r3, r0]
- cmp r0, 0x2
- ble _0811AC36
- movs r0, 0x2
- strb r0, [r3, 0x5]
-_0811AC36:
- ldr r1, [r4]
- movs r0, 0x1
- strb r0, [r1, 0x4]
- movs r0, 0x3
- b _0811ACCC
- .pool
-_0811AC48:
- ldr r2, =gUnknown_0203A118
- ldr r1, [r2]
- ldrb r0, [r1, 0x5]
- adds r0, 0x1
- strb r0, [r1, 0x5]
- b _0811ABDA
- .pool
-_0811AC58:
- ldr r2, =gUnknown_0203A118
- ldr r1, [r2]
- ldrb r0, [r1, 0x6]
- adds r0, 0x1
- b _0811ABD8
- .pool
-_0811AC68:
- ldr r2, =gUnknown_0203A118
- ldr r1, [r2]
- ldrb r0, [r1, 0x5]
- subs r0, 0x1
- strb r0, [r1, 0x5]
- b _0811ABDA
- .pool
-_0811AC78:
- bl sub_811B150
- b _0811AC82
-_0811AC7E:
- bl sub_811B1B4
-_0811AC82:
- lsls r0, 16
- lsrs r0, 16
- b _0811ACCC
-_0811AC88:
- movs r0, 0x5
- ldrsb r0, [r3, r0]
- cmp r0, 0
- bge _0811AC96
- ldrb r0, [r1, 0x1]
- subs r0, 0x1
- strb r0, [r3, 0x5]
-_0811AC96:
- ldr r3, [r4]
- movs r2, 0x5
- ldrsb r2, [r3, r2]
- ldrb r1, [r3, 0x1]
- lsls r0, r1, 1
- adds r0, r1
- lsls r0, 3
- adds r0, r6
- ldrb r0, [r0, 0x1]
- cmp r2, r0
- blt _0811ACB0
- movs r0, 0
- strb r0, [r3, 0x5]
-_0811ACB0:
- bl sub_811AB44
- cmp r0, 0
- beq _0811ACCA
- ldr r2, [r7]
- ldr r0, [r2, 0x4]
- ldr r1, =0x00ffff00
- ands r0, r1
- ldr r1, =0x00040100
- cmp r0, r1
- bne _0811ACCA
- movs r0, 0
- strb r0, [r2, 0x5]
-_0811ACCA:
- movs r0, 0x2
-_0811ACCC:
- pop {r4-r7}
- pop {r1}
- bx r1
- .pool
- thumb_func_end sub_811AB68
-
thumb_func_start sub_811ACDC
sub_811ACDC: @ 811ACDC
push {r4-r6,lr}
diff --git a/src/easy_chat.c b/src/easy_chat.c
index 9b69f1d0a..0ed5bdea9 100644
--- a/src/easy_chat.c
+++ b/src/easy_chat.c
@@ -31,12 +31,14 @@ EWRAM_DATA struct {
u8 unk_02;
u8 unk_03;
u8 unk_04;
- u8 unk_05;
- u8 unk_06;
+ s8 unk_05;
+ s8 unk_06;
u8 unk_07;
u8 unk_08;
u8 unk_09;
- u8 filler_0a[0x3];
+ u8 unk_0a;
+ u8 unk_0b;
+ u8 unk_0c;
u8 unk_0d;
u8 unk_0e[0x4];
u8 sizeParam;
@@ -60,7 +62,7 @@ static void sub_811A8F0(void);
static bool8 EasyChat_AllocateResources(u8, u16 *, u8);
static void EasyChat_FreeResources(void);
static u16 sub_811AAAC(void);
-u16 sub_811AB68(void);
+static u16 sub_811AB68(void);
u16 sub_811ACDC(void);
u16 sub_811AE44(void);
u16 sub_811AF00(void);
@@ -71,9 +73,12 @@ u16 sub_811B08C(void);
u16 sub_811B0BC(void);
u16 sub_811B0E8(void);
u16 sub_811B0F8(void);
+u16 sub_811B150(void);
+u16 sub_811B1B4(void);
u8 sub_811BA68(void);
u8 sub_811BCC8(u8);
void sub_811BDF0(u8 *);
+void sub_811BF78(void);
bool8 sub_811BF8C(void);
bool8 sub_811BFA4(void);
void sub_811C13C(void);
@@ -526,7 +531,7 @@ static u16 sub_811AAAC(void)
return 0;
}
-bool8 sub_811AB44(void)
+bool32 sub_811AB44(void)
{
switch (sub_811BA68())
{
@@ -537,3 +542,270 @@ bool8 sub_811AB44(void)
}
return FALSE;
}
+
+#ifdef NONMATCHING
+static u16 sub_811AB68(void)
+{
+ if (gMain.newKeys & A_BUTTON)
+ {
+ sub_811BF78();
+ gUnknown_0203A118->unk_04 = 2;
+ gUnknown_0203A118->unk_0a = 0;
+ gUnknown_0203A118->unk_0b = 0;
+ gUnknown_0203A118->unk_0c = 0;
+ return 9;
+ }
+ else if (gMain.newKeys & B_BUTTON)
+ { // FIXME: See note below
+ return sub_811B150();
+ }
+ else if (gMain.newKeys & START_BUTTON)
+ { // FIXME: See note below
+ return sub_811B1B4();
+ }
+ else if (gMain.newKeys & DPAD_UP)
+ {
+ gUnknown_0203A118->unk_06--;
+ }
+ else if (gMain.newKeys & DPAD_LEFT)
+ { // FIXME: See note below
+ gUnknown_0203A118->unk_05--;
+ }
+ else if (gMain.newKeys & DPAD_DOWN)
+ { // FIXME: See note below
+ gUnknown_0203A118->unk_06++;
+ }
+ else if (gMain.newKeys & DPAD_RIGHT)
+ { // FIXME: See note below
+ gUnknown_0203A118->unk_05++;
+ }
+ else
+ {
+ return 0;
+ }
+ if (gUnknown_0203A118->unk_06 < 0)
+ {
+ gUnknown_0203A118->unk_06 = gUnknown_08597550[gUnknown_0203A118->unk_01].unk_02;
+ }
+ if (gUnknown_0203A118->unk_06 > gUnknown_08597550[gUnknown_0203A118->unk_01].unk_02)
+ {
+ gUnknown_0203A118->unk_06 = 0;
+ }
+ if (gUnknown_0203A118->unk_06 == gUnknown_08597550[gUnknown_0203A118->unk_01].unk_02)
+ {
+ if (gUnknown_0203A118->unk_05 > 2)
+ {
+ gUnknown_0203A118->unk_05 = 2;
+ }
+ gUnknown_0203A118->unk_04 = 1;
+ return 3;
+ }
+ /*
+ * FIXME: right, down, left, b, and start
+ * should be inserted here, but aren't
+ */
+ if (gUnknown_0203A118->unk_05 < 0)
+ {
+ gUnknown_0203A118->unk_05 = gUnknown_08597550[gUnknown_0203A118->unk_01].unk_01 - 1;
+ }
+ if (gUnknown_0203A118->unk_05 >= gUnknown_08597550[gUnknown_0203A118->unk_01].unk_01)
+ {
+ gUnknown_0203A118->unk_05 = 0;
+ }
+ if (sub_811AB44() && gUnknown_0203A118->unk_05 == 1 && gUnknown_0203A118->unk_06 == 4)
+ {
+ gUnknown_0203A118->unk_05 = 0;
+ }
+ return 2;
+}
+#else
+__attribute__((naked)) static u16 sub_811AB68(void)
+{
+ asm_unified("\tpush {r4-r7,lr}\n"
+ "\tldr r0, =gMain\n"
+ "\tldrh r1, [r0, 0x2E]\n"
+ "\tmovs r0, 0x1\n"
+ "\tands r0, r1\n"
+ "\tcmp r0, 0\n"
+ "\tbeq _0811ABB8\n"
+ "\tbl sub_811BF78\n"
+ "\tldr r1, =gUnknown_0203A118\n"
+ "\tldr r3, [r1]\n"
+ "\tmovs r2, 0\n"
+ "\tmovs r0, 0x2\n"
+ "\tstrb r0, [r3, 0x4]\n"
+ "\tldr r0, [r1]\n"
+ "\tstrb r2, [r0, 0xA]\n"
+ "\tldr r0, [r1]\n"
+ "\tstrb r2, [r0, 0xB]\n"
+ "\tldr r0, [r1]\n"
+ "\tstrb r2, [r0, 0xC]\n"
+ "\tmovs r0, 0x9\n"
+ "\tb _0811ACCC_return_r0\n"
+ "\t.pool\n"
+ "_0811AB9C:\n"
+ "\tmovs r0, 0x20\n"
+ "\tands r0, r1\n"
+ "\tcmp r0, 0\n"
+ "\tbne _0811AC68_dpad_left\n"
+ "\tmovs r0, 0x80\n"
+ "\tands r0, r1\n"
+ "\tcmp r0, 0\n"
+ "\tbne _0811AC58_dpad_down\n"
+ "\tmovs r0, 0x10\n"
+ "\tands r0, r1\n"
+ "\tcmp r0, 0\n"
+ "\tbne _0811AC48_dpad_right\n"
+ "\tmovs r0, 0\n"
+ "\tb _0811ACCC_return_r0\n"
+ "_0811ABB8:\n"
+ "\tmovs r0, 0x2\n"
+ "\tands r0, r1\n"
+ "\tcmp r0, 0\n"
+ "\tbne _0811AC78_b_button\n"
+ "\tmovs r0, 0x8\n"
+ "\tands r0, r1\n"
+ "\tcmp r0, 0\n"
+ "\tbne _0811AC7E_start_button\n"
+ "\tmovs r0, 0x40\n"
+ "\tands r0, r1\n"
+ "\tcmp r0, 0\n"
+ "\tbeq _0811AB9C\n"
+ "\tldr r2, =gUnknown_0203A118\n"
+ "\tldr r1, [r2]\n"
+ "\tldrb r0, [r1, 0x6]\n"
+ "\tsubs r0, 0x1\n"
+ "_0811ABD8:\n"
+ "\tstrb r0, [r1, 0x6]\n"
+ "_0811ABDA:\n"
+ "\tadds r7, r2, 0\n"
+ "\tadds r4, r7, 0\n"
+ "\tldr r2, [r4]\n"
+ "\tmovs r0, 0x6\n"
+ "\tldrsb r0, [r2, r0]\n"
+ "\tldr r6, =gUnknown_08597550\n"
+ "\tcmp r0, 0\n"
+ "\tbge _0811ABF8\n"
+ "\tldrb r0, [r2, 0x1]\n"
+ "\tlsls r1, r0, 1\n"
+ "\tadds r1, r0\n"
+ "\tlsls r1, 3\n"
+ "\tadds r1, r6\n"
+ "\tldrb r0, [r1, 0x2]\n"
+ "\tstrb r0, [r2, 0x6]\n"
+ "_0811ABF8:\n"
+ "\tldr r3, [r4]\n"
+ "\tmovs r2, 0x6\n"
+ "\tldrsb r2, [r3, r2]\n"
+ "\tadds r5, r6, 0\n"
+ "\tldrb r1, [r3, 0x1]\n"
+ "\tlsls r0, r1, 1\n"
+ "\tadds r0, r1\n"
+ "\tlsls r0, 3\n"
+ "\tadds r0, r5\n"
+ "\tldrb r0, [r0, 0x2]\n"
+ "\tcmp r2, r0\n"
+ "\tble _0811AC14\n"
+ "\tmovs r0, 0\n"
+ "\tstrb r0, [r3, 0x6]\n"
+ "_0811AC14:\n"
+ "\tldr r3, [r4]\n"
+ "\tmovs r2, 0x6\n"
+ "\tldrsb r2, [r3, r2]\n"
+ "\tldrb r1, [r3, 0x1]\n"
+ "\tlsls r0, r1, 1\n"
+ "\tadds r0, r1\n"
+ "\tlsls r0, 3\n"
+ "\tadds r1, r0, r5\n"
+ "\tldrb r0, [r1, 0x2]\n"
+ "\tcmp r2, r0\n"
+ "\tbne _0811AC88\n"
+ "\tmovs r0, 0x5\n"
+ "\tldrsb r0, [r3, r0]\n"
+ "\tcmp r0, 0x2\n"
+ "\tble _0811AC36\n"
+ "\tmovs r0, 0x2\n"
+ "\tstrb r0, [r3, 0x5]\n"
+ "_0811AC36:\n"
+ "\tldr r1, [r4]\n"
+ "\tmovs r0, 0x1\n"
+ "\tstrb r0, [r1, 0x4]\n"
+ "\tmovs r0, 0x3\n"
+ "\tb _0811ACCC_return_r0\n"
+ "\t.pool\n"
+ "_0811AC48_dpad_right:\n"
+ "\tldr r2, =gUnknown_0203A118\n"
+ "\tldr r1, [r2]\n"
+ "\tldrb r0, [r1, 0x5]\n"
+ "\tadds r0, 0x1\n"
+ "\tstrb r0, [r1, 0x5]\n"
+ "\tb _0811ABDA\n"
+ "\t.pool\n"
+ "_0811AC58_dpad_down:\n"
+ "\tldr r2, =gUnknown_0203A118\n"
+ "\tldr r1, [r2]\n"
+ "\tldrb r0, [r1, 0x6]\n"
+ "\tadds r0, 0x1\n"
+ "\tb _0811ABD8\n"
+ "\t.pool\n"
+ "_0811AC68_dpad_left:\n"
+ "\tldr r2, =gUnknown_0203A118\n"
+ "\tldr r1, [r2]\n"
+ "\tldrb r0, [r1, 0x5]\n"
+ "\tsubs r0, 0x1\n"
+ "\tstrb r0, [r1, 0x5]\n"
+ "\tb _0811ABDA\n"
+ "\t.pool\n"
+ "_0811AC78_b_button:\n"
+ "\tbl sub_811B150\n"
+ "\tb _0811AC82\n"
+ "_0811AC7E_start_button:\n"
+ "\tbl sub_811B1B4\n"
+ "_0811AC82:\n"
+ "\tlsls r0, 16\n"
+ "\tlsrs r0, 16\n"
+ "\tb _0811ACCC_return_r0\n"
+ "_0811AC88:\n"
+ "\tmovs r0, 0x5\n"
+ "\tldrsb r0, [r3, r0]\n"
+ "\tcmp r0, 0\n"
+ "\tbge _0811AC96\n"
+ "\tldrb r0, [r1, 0x1]\n"
+ "\tsubs r0, 0x1\n"
+ "\tstrb r0, [r3, 0x5]\n"
+ "_0811AC96:\n"
+ "\tldr r3, [r4]\n"
+ "\tmovs r2, 0x5\n"
+ "\tldrsb r2, [r3, r2]\n"
+ "\tldrb r1, [r3, 0x1]\n"
+ "\tlsls r0, r1, 1\n"
+ "\tadds r0, r1\n"
+ "\tlsls r0, 3\n"
+ "\tadds r0, r6\n"
+ "\tldrb r0, [r0, 0x1]\n"
+ "\tcmp r2, r0\n"
+ "\tblt _0811ACB0\n"
+ "\tmovs r0, 0\n"
+ "\tstrb r0, [r3, 0x5]\n"
+ "_0811ACB0:\n"
+ "\tbl sub_811AB44\n"
+ "\tcmp r0, 0\n"
+ "\tbeq _0811ACCA\n"
+ "\tldr r2, [r7]\n"
+ "\tldr r0, [r2, 0x4]\n"
+ "\tldr r1, =0x00ffff00\n"
+ "\tands r0, r1\n"
+ "\tldr r1, =0x00040100\n"
+ "\tcmp r0, r1\n"
+ "\tbne _0811ACCA\n"
+ "\tmovs r0, 0\n"
+ "\tstrb r0, [r2, 0x5]\n"
+ "_0811ACCA:\n"
+ "\tmovs r0, 0x2\n"
+ "_0811ACCC_return_r0:\n"
+ "\tpop {r4-r7}\n"
+ "\tpop {r1}\n"
+ "\tbx r1\n"
+ "\t.pool");
+}
+#endif