sub_811A4D0; constants for ezchat task data offsets
This commit is contained in:
@@ -5,21 +5,6 @@
|
|||||||
|
|
||||||
.text
|
.text
|
||||||
|
|
||||||
thumb_func_start sub_811A4D0
|
|
||||||
sub_811A4D0: @ 811A4D0
|
|
||||||
push {r4,lr}
|
|
||||||
adds r4, r0, 0
|
|
||||||
bl sub_811C13C
|
|
||||||
bl sub_811AA90
|
|
||||||
bl sub_811F2B8
|
|
||||||
bl FreeAllWindowBuffers
|
|
||||||
adds r0, r4, 0
|
|
||||||
bl SetMainCallback2
|
|
||||||
pop {r4}
|
|
||||||
pop {r0}
|
|
||||||
bx r0
|
|
||||||
thumb_func_end sub_811A4D0
|
|
||||||
|
|
||||||
thumb_func_start easy_chat_input_maybe
|
thumb_func_start easy_chat_input_maybe
|
||||||
easy_chat_input_maybe: @ 811A4F0
|
easy_chat_input_maybe: @ 811A4F0
|
||||||
push {r4,r5,lr}
|
push {r4,r5,lr}
|
||||||
|
|||||||
+43
-23
@@ -6,11 +6,19 @@
|
|||||||
#include "rom4.h"
|
#include "rom4.h"
|
||||||
#include "task.h"
|
#include "task.h"
|
||||||
#include "main.h"
|
#include "main.h"
|
||||||
|
#include "window.h"
|
||||||
#include "palette.h"
|
#include "palette.h"
|
||||||
#include "easy_chat.h"
|
#include "easy_chat.h"
|
||||||
|
|
||||||
// Static type declarations
|
// Static type declarations
|
||||||
|
|
||||||
|
#define EZCHAT_TASK_STATE 0
|
||||||
|
#define EZCHAT_TASK_UNK01 1
|
||||||
|
#define EZCHAT_TASK_UNK02 2
|
||||||
|
#define EZCHAT_TASK_MAINCALLBACK 4
|
||||||
|
#define EZCHAT_TASK_UNK06 6
|
||||||
|
#define EZCHAT_TASK_UNK07 7
|
||||||
|
|
||||||
// Static RAM declarations
|
// Static RAM declarations
|
||||||
static void sub_811A2C0(u8);
|
static void sub_811A2C0(u8);
|
||||||
static void sub_811A278(void);
|
static void sub_811A278(void);
|
||||||
@@ -21,11 +29,14 @@ static void sub_811A2FC(u8);
|
|||||||
/*static*/ void sub_811C158(u16);
|
/*static*/ void sub_811C158(u16);
|
||||||
/*static*/ bool8 sub_811C170(void);
|
/*static*/ bool8 sub_811C170(void);
|
||||||
/*static*/ void sub_811A8A4(u16);
|
/*static*/ void sub_811A8A4(u16);
|
||||||
/*static*/ void sub_811A4D0(u32);
|
/*static*/ void sub_811A4D0(MainCallback);
|
||||||
bool8 sub_811F28C(void);
|
bool8 sub_811F28C(void);
|
||||||
bool8 sub_811A95C(u8, u32, u8);
|
bool8 sub_811A95C(u8, u32, u8);
|
||||||
bool8 sub_811BF8C(void);
|
bool8 sub_811BF8C(void);
|
||||||
bool8 sub_811BFA4(void);
|
bool8 sub_811BFA4(void);
|
||||||
|
void sub_811C13C(void);
|
||||||
|
void sub_811AA90(void);
|
||||||
|
void sub_811F2B8(void);
|
||||||
|
|
||||||
// Static ROM declarations
|
// Static ROM declarations
|
||||||
|
|
||||||
@@ -33,16 +44,16 @@ bool8 sub_811BFA4(void);
|
|||||||
|
|
||||||
// .text
|
// .text
|
||||||
|
|
||||||
void sub_811A20C(u8 a0, u32 a1, u32 a2, u8 a3)
|
void sub_811A20C(u8 a0, u32 a1, MainCallback callback, u8 a3)
|
||||||
{
|
{
|
||||||
u8 taskId;
|
u8 taskId;
|
||||||
|
|
||||||
ResetTasks();
|
ResetTasks();
|
||||||
taskId = CreateTask(sub_811A2C0, 0);
|
taskId = CreateTask(sub_811A2C0, 0);
|
||||||
gTasks[taskId].data[1] = a0;
|
gTasks[taskId].data[EZCHAT_TASK_UNK01] = a0;
|
||||||
gTasks[taskId].data[7] = a3;
|
gTasks[taskId].data[EZCHAT_TASK_UNK07] = a3;
|
||||||
SetWordTaskArg(taskId, 0x02, a1);
|
SetWordTaskArg(taskId, EZCHAT_TASK_UNK02, a1);
|
||||||
SetWordTaskArg(taskId, 0x04, a2);
|
SetWordTaskArg(taskId, EZCHAT_TASK_MAINCALLBACK, (u32)callback);
|
||||||
SetMainCallback2(sub_811A278);
|
SetMainCallback2(sub_811A278);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -64,7 +75,7 @@ static void sub_811A290(void)
|
|||||||
static void sub_811A2A4(u8 taskId, TaskFunc taskFunc)
|
static void sub_811A2A4(u8 taskId, TaskFunc taskFunc)
|
||||||
{
|
{
|
||||||
gTasks[taskId].func = taskFunc;
|
gTasks[taskId].func = taskFunc;
|
||||||
gTasks[taskId].data[0] = 0;
|
gTasks[taskId].data[EZCHAT_TASK_STATE] = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
static void sub_811A2C0(u8 taskId)
|
static void sub_811A2C0(u8 taskId)
|
||||||
@@ -89,56 +100,56 @@ static void sub_811A2FC(u8 taskId)
|
|||||||
s16 *data;
|
s16 *data;
|
||||||
|
|
||||||
data = gTasks[taskId].data;
|
data = gTasks[taskId].data;
|
||||||
switch (data[0])
|
switch (data[EZCHAT_TASK_STATE])
|
||||||
{
|
{
|
||||||
case 0:
|
case 0:
|
||||||
SetVBlankCallback(sub_811A290);
|
SetVBlankCallback(sub_811A290);
|
||||||
BlendPalettes(-1, 16, 0);
|
BlendPalettes(-1, 16, 0);
|
||||||
BeginNormalPaletteFade(-1, -1, 16, 0, 0);
|
BeginNormalPaletteFade(-1, -1, 16, 0, 0);
|
||||||
data[0] = 5;
|
data[EZCHAT_TASK_STATE] = 5;
|
||||||
break;
|
break;
|
||||||
case 1:
|
case 1:
|
||||||
v0 = sub_811AAAC();
|
v0 = sub_811AAAC();
|
||||||
if (sub_811A88C(v0))
|
if (sub_811A88C(v0))
|
||||||
{
|
{
|
||||||
BeginNormalPaletteFade(-1, -2, 0, 16, 0);
|
BeginNormalPaletteFade(-1, -2, 0, 16, 0);
|
||||||
data[0] = 3;
|
data[EZCHAT_TASK_STATE] = 3;
|
||||||
data[6] = v0;
|
data[EZCHAT_TASK_UNK06] = v0;
|
||||||
}
|
}
|
||||||
else if (v0 == 0x18)
|
else if (v0 == 0x18)
|
||||||
{
|
{
|
||||||
BeginNormalPaletteFade(-1, -1, 0, 16, 0);
|
BeginNormalPaletteFade(-1, -1, 0, 16, 0);
|
||||||
data[0] = 4;
|
data[EZCHAT_TASK_STATE] = 4;
|
||||||
}
|
}
|
||||||
else if (v0 != 0)
|
else if (v0 != 0)
|
||||||
{
|
{
|
||||||
PlaySE(SE_SELECT);
|
PlaySE(SE_SELECT);
|
||||||
sub_811C158(v0);
|
sub_811C158(v0);
|
||||||
data[0] ++;
|
data[EZCHAT_TASK_STATE] ++;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case 2:
|
case 2:
|
||||||
if (!sub_811C170())
|
if (!sub_811C170())
|
||||||
{
|
{
|
||||||
data[0] = 1;
|
data[EZCHAT_TASK_STATE] = 1;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case 3:
|
case 3:
|
||||||
if (!gPaletteFade.active)
|
if (!gPaletteFade.active)
|
||||||
{
|
{
|
||||||
sub_811A8A4(data[6]);
|
sub_811A8A4(data[EZCHAT_TASK_UNK06]);
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case 4:
|
case 4:
|
||||||
if (!gPaletteFade.active)
|
if (!gPaletteFade.active)
|
||||||
{
|
{
|
||||||
sub_811A4D0(GetWordTaskArg(taskId, 0x04));
|
sub_811A4D0((MainCallback)GetWordTaskArg(taskId, EZCHAT_TASK_MAINCALLBACK));
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case 5:
|
case 5:
|
||||||
if (!gPaletteFade.active)
|
if (!gPaletteFade.active)
|
||||||
{
|
{
|
||||||
data[0] = 1;
|
data[EZCHAT_TASK_STATE] = 1;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
@@ -149,7 +160,7 @@ static bool8 sub_811A428(u8 taskId)
|
|||||||
s16 *data;
|
s16 *data;
|
||||||
|
|
||||||
data = gTasks[taskId].data;
|
data = gTasks[taskId].data;
|
||||||
switch (data[0])
|
switch (data[EZCHAT_TASK_STATE])
|
||||||
{
|
{
|
||||||
case 0:
|
case 0:
|
||||||
SetVBlankCallback(NULL);
|
SetVBlankCallback(NULL);
|
||||||
@@ -160,19 +171,19 @@ static bool8 sub_811A428(u8 taskId)
|
|||||||
case 1:
|
case 1:
|
||||||
if (!sub_811F28C())
|
if (!sub_811F28C())
|
||||||
{
|
{
|
||||||
sub_811A4D0(GetWordTaskArg(taskId, 0x04));
|
sub_811A4D0((MainCallback)GetWordTaskArg(taskId, EZCHAT_TASK_MAINCALLBACK));
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case 2:
|
case 2:
|
||||||
if (!sub_811A95C(data[1], GetWordTaskArg(taskId, 0x02), data[7]))
|
if (!sub_811A95C(data[EZCHAT_TASK_UNK01], GetWordTaskArg(taskId, EZCHAT_TASK_UNK02), data[EZCHAT_TASK_UNK07]))
|
||||||
{
|
{
|
||||||
sub_811A4D0(GetWordTaskArg(taskId, 0x04));
|
sub_811A4D0((MainCallback)GetWordTaskArg(taskId, EZCHAT_TASK_MAINCALLBACK));
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case 3:
|
case 3:
|
||||||
if (!sub_811BF8C())
|
if (!sub_811BF8C())
|
||||||
{
|
{
|
||||||
sub_811A4D0(GetWordTaskArg(taskId, 0x04));
|
sub_811A4D0((MainCallback)GetWordTaskArg(taskId, EZCHAT_TASK_MAINCALLBACK));
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case 4:
|
case 4:
|
||||||
@@ -184,6 +195,15 @@ static bool8 sub_811A428(u8 taskId)
|
|||||||
default:
|
default:
|
||||||
return FALSE;
|
return FALSE;
|
||||||
}
|
}
|
||||||
data[0] ++;
|
data[EZCHAT_TASK_STATE] ++;
|
||||||
return TRUE;
|
return TRUE;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void sub_811A4D0(MainCallback callback)
|
||||||
|
{
|
||||||
|
sub_811C13C();
|
||||||
|
sub_811AA90();
|
||||||
|
sub_811F2B8();
|
||||||
|
FreeAllWindowBuffers();
|
||||||
|
SetMainCallback2(callback);
|
||||||
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user