summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--asm/easy_chat.s79
-rw-r--r--src/easy_chat.c50
2 files changed, 49 insertions, 80 deletions
diff --git a/asm/easy_chat.s b/asm/easy_chat.s
index bfeef4514..5d7a02a84 100644
--- a/asm/easy_chat.s
+++ b/asm/easy_chat.s
@@ -5,85 +5,6 @@
.text
- thumb_func_start sub_811A428
-sub_811A428: @ 811A428
- push {r4-r6,lr}
- lsls r0, 24
- lsrs r5, r0, 24
- lsls r0, r5, 2
- adds r0, r5
- lsls r0, 3
- ldr r1, =gTasks + 0x8
- adds r6, r0, r1
- movs r1, 0
- ldrsh r0, [r6, r1]
- cmp r0, 0x4
- bhi _0811A4BC
- lsls r0, 2
- ldr r1, =_0811A454
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .pool
- .align 2, 0
-_0811A454:
- .4byte _0811A468
- .4byte _0811A47C
- .4byte _0811A482
- .4byte _0811A498
- .4byte _0811A4B0
-_0811A468:
- movs r0, 0
- bl SetVBlankCallback
- bl ResetSpriteData
- bl FreeAllSpritePalettes
- bl ResetPaletteFade
- b _0811A4C0
-_0811A47C:
- bl sub_811F28C
- b _0811A49C
-_0811A482:
- ldrb r4, [r6, 0x2]
- adds r0, r5, 0
- movs r1, 0x2
- bl GetWordTaskArg
- adds r1, r0, 0
- ldrb r2, [r6, 0xE]
- adds r0, r4, 0
- bl sub_811A95C
- b _0811A49C
-_0811A498:
- bl sub_811BF8C
-_0811A49C:
- lsls r0, 24
- cmp r0, 0
- bne _0811A4C0
- adds r0, r5, 0
- movs r1, 0x4
- bl GetWordTaskArg
- bl sub_811A4D0
- b _0811A4C0
-_0811A4B0:
- bl sub_811BFA4
- lsls r0, 24
- cmp r0, 0
- beq _0811A4C0
- b _0811A4C6
-_0811A4BC:
- movs r0, 0
- b _0811A4C8
-_0811A4C0:
- ldrh r0, [r6]
- adds r0, 0x1
- strh r0, [r6]
-_0811A4C6:
- movs r0, 0x1
-_0811A4C8:
- pop {r4-r6}
- pop {r1}
- bx r1
- thumb_func_end sub_811A428
-
thumb_func_start sub_811A4D0
sub_811A4D0: @ 811A4D0
push {r4,lr}
diff --git a/src/easy_chat.c b/src/easy_chat.c
index edfab86b7..8ee46e215 100644
--- a/src/easy_chat.c
+++ b/src/easy_chat.c
@@ -14,7 +14,7 @@
// Static RAM declarations
static void sub_811A2C0(u8);
static void sub_811A278(void);
-/*static*/ bool8 sub_811A428(u8);
+static bool8 sub_811A428(u8);
static void sub_811A2FC(u8);
/*static*/ u16 sub_811AAAC(void);
/*static*/ bool32 sub_811A88C(u16);
@@ -22,6 +22,10 @@ static void sub_811A2FC(u8);
/*static*/ bool8 sub_811C170(void);
/*static*/ void sub_811A8A4(u16);
/*static*/ void sub_811A4D0(u32);
+bool8 sub_811F28C(void);
+bool8 sub_811A95C(u8, u32, u8);
+bool8 sub_811BF8C(void);
+bool8 sub_811BFA4(void);
// Static ROM declarations
@@ -139,3 +143,47 @@ static void sub_811A2FC(u8 taskId)
break;
}
}
+
+static bool8 sub_811A428(u8 taskId)
+{
+ s16 *data;
+
+ data = gTasks[taskId].data;
+ switch (data[0])
+ {
+ case 0:
+ SetVBlankCallback(NULL);
+ ResetSpriteData();
+ FreeAllSpritePalettes();
+ ResetPaletteFade();
+ break;
+ case 1:
+ if (!sub_811F28C())
+ {
+ sub_811A4D0(GetWordTaskArg(taskId, 0x04));
+ }
+ break;
+ case 2:
+ if (!sub_811A95C(data[1], GetWordTaskArg(taskId, 0x02), data[7]))
+ {
+ sub_811A4D0(GetWordTaskArg(taskId, 0x04));
+ }
+ break;
+ case 3:
+ if (!sub_811BF8C())
+ {
+ sub_811A4D0(GetWordTaskArg(taskId, 0x04));
+ }
+ break;
+ case 4:
+ if (sub_811BFA4())
+ {
+ return TRUE;
+ }
+ break;
+ default:
+ return FALSE;
+ }
+ data[0] ++;
+ return TRUE;
+}