diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/easy_chat.c | 141 |
1 files changed, 141 insertions, 0 deletions
diff --git a/src/easy_chat.c b/src/easy_chat.c new file mode 100644 index 000000000..edfab86b7 --- /dev/null +++ b/src/easy_chat.c @@ -0,0 +1,141 @@ + +// Includes +#include "global.h" +#include "songs.h" +#include "sound.h" +#include "rom4.h" +#include "task.h" +#include "main.h" +#include "palette.h" +#include "easy_chat.h" + +// Static type declarations + +// Static RAM declarations +static void sub_811A2C0(u8); +static void sub_811A278(void); +/*static*/ bool8 sub_811A428(u8); +static void sub_811A2FC(u8); +/*static*/ u16 sub_811AAAC(void); +/*static*/ bool32 sub_811A88C(u16); +/*static*/ void sub_811C158(u16); +/*static*/ bool8 sub_811C170(void); +/*static*/ void sub_811A8A4(u16); +/*static*/ void sub_811A4D0(u32); + +// Static ROM declarations + +// .rodata + +// .text + +void sub_811A20C(u8 a0, u32 a1, u32 a2, u8 a3) +{ + u8 taskId; + + ResetTasks(); + taskId = CreateTask(sub_811A2C0, 0); + gTasks[taskId].data[1] = a0; + gTasks[taskId].data[7] = a3; + SetWordTaskArg(taskId, 0x02, a1); + SetWordTaskArg(taskId, 0x04, a2); + SetMainCallback2(sub_811A278); +} + +static void sub_811A278(void) +{ + RunTasks(); + AnimateSprites(); + BuildOamBuffer(); + UpdatePaletteFade(); +} + +static void sub_811A290(void) +{ + TransferPlttBuffer(); + LoadOam(); + ProcessSpriteCopyRequests(); +} + +static void sub_811A2A4(u8 taskId, TaskFunc taskFunc) +{ + gTasks[taskId].func = taskFunc; + gTasks[taskId].data[0] = 0; +} + +static void sub_811A2C0(u8 taskId) +{ + if (!is_c1_link_related_active()) + { + while (sub_811A428(taskId)); + } + else + { + if (sub_811A428(taskId) == TRUE) + { + return; + } + } + sub_811A2A4(taskId, sub_811A2FC); +} + +static void sub_811A2FC(u8 taskId) +{ + u16 v0; + s16 *data; + + data = gTasks[taskId].data; + switch (data[0]) + { + case 0: + SetVBlankCallback(sub_811A290); + BlendPalettes(-1, 16, 0); + BeginNormalPaletteFade(-1, -1, 16, 0, 0); + data[0] = 5; + break; + case 1: + v0 = sub_811AAAC(); + if (sub_811A88C(v0)) + { + BeginNormalPaletteFade(-1, -2, 0, 16, 0); + data[0] = 3; + data[6] = v0; + } + else if (v0 == 0x18) + { + BeginNormalPaletteFade(-1, -1, 0, 16, 0); + data[0] = 4; + } + else if (v0 != 0) + { + PlaySE(SE_SELECT); + sub_811C158(v0); + data[0] ++; + } + break; + case 2: + if (!sub_811C170()) + { + data[0] = 1; + } + break; + case 3: + if (!gPaletteFade.active) + { + sub_811A8A4(data[6]); + } + break; + case 4: + if (!gPaletteFade.active) + { + sub_811A4D0(GetWordTaskArg(taskId, 0x04)); + } + break; + case 5: + if (!gPaletteFade.active) + { + data[0] = 1; + } + break; + } +} |