easy_chat_input_maybe

This commit is contained in:
PikalaxALT 2017-11-02 19:26:14 -04:00
parent ed7ded0748
commit 01d6114da2
7 changed files with 126 additions and 377 deletions

View File

@ -5,284 +5,6 @@
.text
thumb_func_start easy_chat_input_maybe
easy_chat_input_maybe: @ 811A4F0
push {r4,r5,lr}
movs r5, 0x3
ldr r0, =gSpecialVar_0x8004
ldrh r0, [r0]
cmp r0, 0x14
bls _0811A4FE
b _0811A7D4
_0811A4FE:
lsls r0, 2
ldr r1, =_0811A510
adds r0, r1
ldr r0, [r0]
mov pc, r0
.pool
.align 2, 0
_0811A510:
.4byte _0811A564
.4byte _0811A578
.4byte _0811A58C
.4byte _0811A5A0
.4byte _0811A5B4
.4byte _0811A604
.4byte _0811A5D8
.4byte _0811A630
.4byte _0811A664
.4byte _0811A688
.4byte _0811A6B4
.4byte _0811A6D4
.4byte _0811A708
.4byte _0811A72C
.4byte _0811A73C
.4byte _0811A770
.4byte _0811A7D4
.4byte _0811A784
.4byte _0811A798
.4byte _0811A7AC
.4byte _0811A7BC
_0811A564:
ldr r0, =gSaveBlock1Ptr
ldr r0, [r0]
ldr r1, =0x00002bb0
adds r4, r0, r1
b _0811A7C2
.pool
_0811A578:
ldr r0, =gSaveBlock1Ptr
ldr r0, [r0]
ldr r2, =0x00002bbc
adds r4, r0, r2
b _0811A7C2
.pool
_0811A58C:
ldr r0, =gSaveBlock1Ptr
ldr r0, [r0]
ldr r3, =0x00002bc8
adds r4, r0, r3
b _0811A7C2
.pool
_0811A5A0:
ldr r0, =gSaveBlock1Ptr
ldr r0, [r0]
ldr r1, =0x00002bd4
adds r4, r0, r1
b _0811A7C2
.pool
_0811A5B4:
ldr r2, =gSaveBlock1Ptr
ldr r0, =gSpecialVar_0x8005
ldrh r1, [r0]
lsls r0, r1, 3
adds r0, r1
lsls r0, 2
ldr r3, =0x00002be0
adds r0, r3
ldr r1, [r2]
adds r4, r1, r0
b _0811A7C2
.pool
_0811A5D8:
ldr r0, =gSaveBlock1Ptr
ldr r0, [r0]
ldr r2, =0x00002e36
adds r1, r0, r2
ldr r3, =0x00002e2a
adds r2, r0, r3
movs r3, 0x5
_0811A5E6:
ldrh r0, [r2]
strh r0, [r2, 0xC]
adds r2, 0x2
subs r3, 0x1
cmp r3, 0
bge _0811A5E6
adds r4, r1, 0
b _0811A7C2
.pool
_0811A604:
ldr r2, =gSaveBlock1Ptr
ldr r0, =gSpecialVar_0x8005
ldrh r1, [r0]
lsls r0, r1, 3
adds r0, r1
lsls r0, 2
ldr r1, [r2]
adds r0, r1
ldr r1, =0x000027d0
adds r4, r0, r1
ldr r0, =gSpecialVar_0x8006
ldrb r5, [r0]
b _0811A7C2
.pool
_0811A630:
ldr r2, =gSaveBlock1Ptr
ldr r0, =gSpecialVar_0x8005
ldrh r1, [r0]
lsls r0, r1, 3
adds r0, r1
lsls r0, 2
ldr r3, =0x000027cc
adds r0, r3
ldr r1, [r2]
adds r1, r0
ldr r0, =gSpecialVar_0x8006
ldrh r0, [r0]
lsls r0, 1
adds r0, 0x1C
adds r4, r1, r0
movs r5, 0x1
b _0811A7C2
.pool
_0811A664:
ldr r2, =gSaveBlock1Ptr
ldr r0, =gSpecialVar_0x8005
ldrh r1, [r0]
lsls r0, r1, 3
adds r0, r1
lsls r0, 2
ldr r1, [r2]
adds r0, r1
ldr r1, =0x000027ce
adds r4, r0, r1
movs r5, 0
b _0811A7C2
.pool
_0811A688:
ldr r4, =gStringVar3
ldr r1, =gSaveBlock1Ptr
ldr r0, [r1]
ldr r2, =0x00002e6c
adds r0, r2
ldrh r0, [r0]
strh r0, [r4]
ldr r0, [r1]
ldr r3, =0x00002e6e
adds r0, r3
ldrh r0, [r0]
strh r0, [r4, 0x2]
b _0811A7C2
.pool
_0811A6B4:
ldr r0, =gSaveBlock1Ptr
ldr r0, [r0]
ldr r1, =0x00002baa
adds r4, r0, r1
ldr r2, =0x0000ffff
adds r0, r2, 0
strh r0, [r4]
movs r5, 0x1
b _0811A7C2
.pool
_0811A6D4:
ldr r2, =gSaveBlock1Ptr
ldr r0, =gSpecialVar_0x8005
ldrh r1, [r0]
lsls r0, r1, 3
adds r0, r1
lsls r0, 2
ldr r3, =0x000027cc
adds r0, r3
ldr r1, [r2]
adds r1, r0
ldr r0, =gSpecialVar_0x8006
ldrh r0, [r0]
lsls r0, 1
adds r0, 0x4
adds r4, r1, r0
movs r5, 0
b _0811A7C2
.pool
_0811A708:
ldr r2, =gSaveBlock1Ptr
ldr r0, =gSpecialVar_0x8005
ldrh r1, [r0]
lsls r0, r1, 3
adds r0, r1
lsls r0, 2
ldr r1, [r2]
adds r0, r1
ldr r1, =0x000027e4
adds r4, r0, r1
movs r5, 0x1
b _0811A7C2
.pool
_0811A72C:
ldr r4, =gStringVar3
adds r0, r4, 0
movs r1, 0x2
bl InitializeEasyChatWordArray
b _0811A7C2
.pool
_0811A73C:
ldr r2, =gSaveBlock1Ptr
ldr r0, =gSpecialVar_0x8005
ldrh r1, [r0]
lsls r0, r1, 3
adds r0, r1
lsls r0, 2
ldr r3, =0x000027cc
adds r0, r3
ldr r1, [r2]
adds r1, r0
adds r4, r1, 0
adds r4, 0x14
ldr r2, =0x0000ffff
adds r0, r2, 0
strh r0, [r1, 0x14]
movs r5, 0x2
b _0811A7C2
.pool
_0811A770:
ldr r0, =gSaveBlock1Ptr
ldr r0, [r0]
ldr r3, =0x00003b6e
adds r4, r0, r3
b _0811A7C2
.pool
_0811A784:
ldr r0, =gSaveBlock1Ptr
ldr r0, [r0]
ldr r1, =0x00003b5a
adds r4, r0, r1
b _0811A7C2
.pool
_0811A798:
ldr r0, =gSaveBlock1Ptr
ldr r0, [r0]
ldr r2, =0x00003b6c
adds r4, r0, r2
b _0811A7C2
.pool
_0811A7AC:
ldr r0, =gSaveBlock2Ptr
ldr r0, [r0]
movs r3, 0x82
lsls r3, 1
adds r4, r0, r3
b _0811A7C2
.pool
_0811A7BC:
bl sub_801B058
adds r4, r0, 0
_0811A7C2:
bl overworld_free_bg_tilemaps
ldr r0, =gSpecialVar_0x8004
ldrb r0, [r0]
ldr r2, =sub_80861B0
adds r1, r4, 0
adds r3, r5, 0
bl sub_811A20C
_0811A7D4:
pop {r4,r5}
pop {r0}
bx r0
.pool
thumb_func_end easy_chat_input_maybe
thumb_func_start sub_811A7E4
sub_811A7E4: @ 811A7E4
push {lr}

View File

@ -192,7 +192,9 @@ struct SaveBlock2
/*0xAC*/ u32 encryptionKey;
// TODO: fix and verify labels
/*0xB0*/ u8 field_B0[316];
/*0xB0*/ u8 field_B0[0x54];
/*0x104*/ u16 unk_104[1];
/*0x106*/ u8 filler_106[0xe6];
/*0x1EC*/ struct BerryCrush berryCrush;
/*0x1FC*/ struct PokemonJumpResults pokeJump;
/*0x20C*/ struct BerryPickingResults berryPick;
@ -460,8 +462,8 @@ struct LilycoveLadyQuiz
/*0x000*/ u8 id;
/*0x001*/ u8 phase;
/*0x002*/ u16 unk_002[9];
/*0x014*/ u16 unk_014;
/*0x016*/ u16 unk_016;
/*0x014*/ u16 unk_014[1];
/*0x016*/ u16 unk_016[1];
/*0x018*/ u8 playerName[8];
/*0x020*/ u16 playerTrainerId[4];
/*0x028*/ u16 itemId;
@ -496,7 +498,7 @@ struct LilycoveLadyContest
/*0x00e*/ u8 language;
};
typedef union // TODO
typedef union // 3b58
{
struct LilycoveLadyQuiz quiz;
struct LilycoveLadyFavour favour;
@ -579,13 +581,12 @@ struct SaveBlock1
/*0x2BB0*/ u16 unk2BB0[6];
/*0x2BBC*/ u16 unk2BBC[6];
/*0x2BC8*/ u16 unk2BC8[6];
/*0x2BD4*/ u16 unk2BD4[3];
/*0x2BD4*/ u16 unk2BD4[6];
/*0x2BE0*/ struct MailStruct mail[16];
/*0x2E20*/ u8 additionalPhrases[5]; // bitfield for 33 additional phrases in easy chat system
/*0x2E25*/ u8 unk2E25[3]; // possibly padding?
/*0x2E28*/ OldMan oldMan;
/*0x2e64*/ struct EasyChatPair easyChatPairs[5]; //Dewford trend [0] and some other stuff
/*0x2e8c*/ u8 filler_2E8C[0x4];
/*0x2e90*/ struct ContestWinner contestWinners[13]; // 0 - 5 used in contest hall, 6 - 7 unused?, 8 - 12 museum
/*0x3030*/ struct DaycareData daycare;
/*0x3150*/ struct LinkBattleRecord linkBattleRecords[5];

View File

@ -91,7 +91,7 @@ typedef union // size = 0x24
/*0x0E*/ u8 pokemonNameLanguage;
/*0x0F*/ u8 filler_0F[1];
/*0x10*/ u8 nickname[8];
/*0x18*/ u8 filler_18[4];
/*0x18*/ u16 words18[2];
/*0x1C*/ u16 words[4];
} fanclubOpinions;
@ -99,7 +99,7 @@ typedef union // size = 0x24
struct {
/*0x00*/ u8 kind;
/*0x01*/ bool8 active;
/*0x02*/ u8 pad02[4];
/*0x02*/ u16 words[2];
/*0x06*/ u16 var06;
/*0x08*/ u8 pad_08[3];
/*0x0b*/ u8 string_0b[12];

View File

@ -192,5 +192,6 @@ void sub_8011BD0(void);
u8 sub_800ABAC(void);
u8 sub_800ABBC(void);
void sub_800AC34(void);
u16 *sub_801B058(void);
#endif // GUARD_LINK_H

View File

@ -64,5 +64,7 @@ void warp1_set_2(s8 mapGroup, s8 mapNum, s8 warpNum);
void c2_load_new_map(void);
void copy_saved_warp2_bank_and_enter_x_to_warp1(u8 unused);
void mapldr_default(void);
void overworld_free_bg_tilemaps(void);
void sub_80861B0(void);
#endif //GUARD_ROM4_H

View File

@ -6,6 +6,7 @@
#include "overworld.h"
#include "task.h"
#include "main.h"
#include "link.h"
#include "window.h"
#include "palette.h"
#include "event_data.h"
@ -14,11 +15,11 @@
// Static type declarations
#define EZCHAT_TASK_STATE 0
#define EZCHAT_TASK_UNK01 1
#define EZCHAT_TASK_UNK02 2
#define EZCHAT_TASK_KIND 1
#define EZCHAT_TASK_WORDS 2
#define EZCHAT_TASK_MAINCALLBACK 4
#define EZCHAT_TASK_UNK06 6
#define EZCHAT_TASK_UNK07 7
#define EZCHAT_TASK_SIZE 7
// Static RAM declarations
static void sub_811A2C0(u8);
@ -45,15 +46,15 @@ void sub_811F2B8(void);
// .text
void sub_811A20C(u8 a0, u32 a1, MainCallback callback, u8 a3)
void sub_811A20C(u8 kind, u16 *words, MainCallback callback, u8 sizeParam)
{
u8 taskId;
ResetTasks();
taskId = CreateTask(sub_811A2C0, 0);
gTasks[taskId].data[EZCHAT_TASK_UNK01] = a0;
gTasks[taskId].data[EZCHAT_TASK_UNK07] = a3;
SetWordTaskArg(taskId, EZCHAT_TASK_UNK02, a1);
gTasks[taskId].data[EZCHAT_TASK_KIND] = kind;
gTasks[taskId].data[EZCHAT_TASK_SIZE] = sizeParam;
SetWordTaskArg(taskId, EZCHAT_TASK_WORDS, (u32)words);
SetWordTaskArg(taskId, EZCHAT_TASK_MAINCALLBACK, (u32)callback);
SetMainCallback2(sub_811A278);
}
@ -176,7 +177,7 @@ static bool8 sub_811A428(u8 taskId)
}
break;
case 2:
if (!sub_811A95C(data[EZCHAT_TASK_UNK01], GetWordTaskArg(taskId, EZCHAT_TASK_UNK02), data[EZCHAT_TASK_UNK07]))
if (!sub_811A95C(data[EZCHAT_TASK_KIND], GetWordTaskArg(taskId, EZCHAT_TASK_WORDS), data[EZCHAT_TASK_SIZE]))
{
sub_811A4D0((MainCallback)GetWordTaskArg(taskId, EZCHAT_TASK_MAINCALLBACK));
}
@ -208,76 +209,98 @@ void sub_811A4D0(MainCallback callback)
FreeAllWindowBuffers();
SetMainCallback2(callback);
}
//
//void easy_chat_input_maybe(void)
//{
// u16 i;
// u16 *words;
// OldMan *oldMan;
// u8 sizeParam = 3;
// switch (gSpecialVar_0x8004)
// {
// case 0:
// words = gSaveBlock1Ptr->unk2BB0;
// break;
// case 1:
// words = gSaveBlock1Ptr->unk2BBC;
// break;
// case 2:
// words = gSaveBlock1Ptr->unk2BC8;
// break;
// case 3:
// words = gSaveBlock1Ptr->unk2BD4;
// break;
// case 4:
// words = gSaveBlock1Ptr->mail[gSpecialVar_0x8005].words;
// break;
// case 6:
// oldMan = &gSaveBlock1Ptr->oldMan;
// for (i=0; i<6; i++)
// {
// oldMan->oldMan1.mauvilleOldMan_ecArray2[i] = oldMan->oldMan1.mauvilleOldMan_ecArray[i];
// }
// words = oldMan->oldMan1.mauvilleOldMan_ecArray2;
// break;
// case 5:
// words = gSaveBlock1Ptr->tvShows[gSpecialVar_0x8005].bravoTrainer.var04;
// sizeParam = gSpecialVar_0x8006;
// break;
// case 7:
// words = &gSaveBlock1Ptr->tvShows[gSpecialVar_0x8005].fanclubOpinions.var1C[gSpecialVar_0x8006];
// sizeParam = 1;
// break;
// case 8:
// words = &gSaveBlock1Ptr->tvShows[gSpecialVar_0x8005].recentHappenings.var02;
// sizeParam = 0;
// break;
// case 9:
// words = NULL;
// break;
// case 10:
// words = &gSaveBlock1Ptr->gabbyAndTyData.quote;
// *words = -1;
// sizeParam = 1;
// break;
// case 11:
// words = &gSaveBlock1Ptr->tvShows[gSpecialVar_0x8005].bravoTrainer.var04[gSpecialVar_0x8006];
// sizeParam = 0;
// break;
// case 12:
// words = gSaveBlock1Ptr->tvShows[gSpecialVar_0x8005].fanclubOpinions.var18;
// sizeParam = 1;
// break;
// case 13:
// words = (u16 *)gStringVar3;
// sub_811F88C(words, 2);
// break;
// case 14:
// words =
// default:
// return;
// }
// overworld_free_bg_tilemaps();
// sub_811A20C(gSpecialVar_0x8004, words, sub_80861B0, sizeParam);
//}
void easy_chat_input_maybe(void)
{
int i;
u16 *words;
OldMan *oldMan;
u8 sizeParam = 3;
switch (gSpecialVar_0x8004)
{
case 0:
words = gSaveBlock1Ptr->unk2BB0;
break;
case 1:
words = gSaveBlock1Ptr->unk2BBC;
break;
case 2:
words = gSaveBlock1Ptr->unk2BC8;
break;
case 3:
words = gSaveBlock1Ptr->unk2BD4;
break;
case 4:
words = gSaveBlock1Ptr->mail[gSpecialVar_0x8005].words;
break;
case 6:
oldMan = &gSaveBlock1Ptr->oldMan;
for (i = 0; i < 6; i ++)
{
oldMan->oldMan1.mauvilleOldMan_ecArray2[i] = oldMan->oldMan1.mauvilleOldMan_ecArray[i];
}
words = oldMan->oldMan1.mauvilleOldMan_ecArray2;
break;
case 5:
words = gSaveBlock1Ptr->tvShows[gSpecialVar_0x8005].bravoTrainer.words;
sizeParam = gSpecialVar_0x8006;
break;
case 7:
words = &gSaveBlock1Ptr->tvShows[gSpecialVar_0x8005].fanclubOpinions.words[gSpecialVar_0x8006];
sizeParam = 1;
break;
case 8:
words = gSaveBlock1Ptr->tvShows[gSpecialVar_0x8005].unkShow04.words;
sizeParam = 0;
break;
case 9:
words = (u16 *)gStringVar3;
words[0] = gSaveBlock1Ptr->easyChatPairs[0].words[0];
words[1] = gSaveBlock1Ptr->easyChatPairs[0].words[1];
break;
case 10:
words = gSaveBlock1Ptr->gabbyAndTyData.quote;
*words = -1;
sizeParam = 1;
break;
case 11:
words = &gSaveBlock1Ptr->tvShows[gSpecialVar_0x8005].bravoTrainer.words[gSpecialVar_0x8006];
sizeParam = 0;
break;
case 12:
words = gSaveBlock1Ptr->tvShows[gSpecialVar_0x8005].fanclubOpinions.words18;
sizeParam = 1;
break;
case 13:
words = (u16 *)gStringVar3;
InitializeEasyChatWordArray(words, 2);
break;
case 14:
words = gSaveBlock1Ptr->tvShows[gSpecialVar_0x8005].fanClubSpecial.words;
words[0] = -1;
sizeParam = 2;
break;
case 15:
words = gSaveBlock1Ptr->lilycoveLady.quiz.unk_016;
break;
case 16:
return;
case 17:
words = gSaveBlock1Ptr->lilycoveLady.quiz.unk_002;
break;
case 18:
words = gSaveBlock1Ptr->lilycoveLady.quiz.unk_014;
break;
case 19:
words = gSaveBlock2Ptr->unk_104;
break;
case 20:
words = sub_801B058();
break;
default:
return;
}
overworld_free_bg_tilemaps();
sub_811A20C(gSpecialVar_0x8004, words, sub_80861B0, sizeParam);
}

View File

@ -508,7 +508,7 @@ static void sub_818DF00(void)
{
gUnknown_0203CD68->unk_002[i] = gUnknown_0860B1A4[v0][i];
}
gUnknown_0203CD68->unk_014 = gUnknown_0860B1E4[v0];
gUnknown_0203CD68->unk_014[0] = gUnknown_0860B1E4[v0];
gUnknown_0203CD68->itemId = gUnknown_0860B204[v0];
gUnknown_0203CD68->unk_02b = v0;
gUnknown_0203CD68->playerName[0] = EOS;
@ -525,8 +525,8 @@ static void SetLilycoveQuizLady(void)
{
gUnknown_0203CD68->unk_002[i] = -1;
}
gUnknown_0203CD68->unk_014 = -1;
gUnknown_0203CD68->unk_016 = -1;
gUnknown_0203CD68->unk_014[0] = -1;
gUnknown_0203CD68->unk_016[0] = -1;
for (i = 0; i < 4; i ++)
{
gUnknown_0203CD68->playerTrainerId[i] = 0;
@ -544,7 +544,7 @@ static void sub_818E004(void)
gUnknown_0203CD68->id = LILYCOVE_LADY_QUIZ;
gUnknown_0203CD68->phase = 0;
gUnknown_0203CD68->unk_02a = 0;
gUnknown_0203CD68->unk_016 = -1;
gUnknown_0203CD68->unk_016[0] = -1;
}
u8 sub_818E038(void)
@ -572,7 +572,7 @@ u8 sub_818E06C(void)
struct LilycoveLadyQuiz *quiz;
quiz = &gSaveBlock1Ptr->lilycoveLady.quiz;
if (sub_811F8D8(quiz->unk_014) == 0)
if (sub_811F8D8(quiz->unk_014[0]) == 0)
{
i = quiz->unk_02b;
do
@ -586,7 +586,7 @@ u8 sub_818E06C(void)
{
quiz->unk_002[j] = gUnknown_0860B1A4[i][j];
}
quiz->unk_014 = gUnknown_0860B1E4[i];
quiz->unk_014[0] = gUnknown_0860B1E4[i];
quiz->itemId = gUnknown_0860B204[i];
quiz->unk_02b = i;
quiz->playerName[0] = EOS;
@ -777,8 +777,8 @@ void sub_818E2FC(void)
bool8 sub_818E308(void)
{
gUnknown_0203CD68 = &gSaveBlock1Ptr->lilycoveLady.quiz;
CopyEasyChatWord(gStringVar1, gUnknown_0203CD68->unk_014);
CopyEasyChatWord(gStringVar2, gUnknown_0203CD68->unk_016);
CopyEasyChatWord(gStringVar1, gUnknown_0203CD68->unk_014[0]);
CopyEasyChatWord(gStringVar2, gUnknown_0203CD68->unk_016[0]);
return StringCompare(gStringVar1, gStringVar2) ? FALSE : TRUE;
}
@ -803,7 +803,7 @@ void sub_818E39C(void)
void sub_818E3BC(void)
{
gUnknown_0203CD68 = &gSaveBlock1Ptr->lilycoveLady.quiz;
gUnknown_0203CD68->unk_016 = -1;
gUnknown_0203CD68->unk_016[0] = -1;
}
void sub_818E3E0(void)
@ -834,7 +834,7 @@ void sub_818E430(void)
{
gUnknown_0203CD68->unk_002[i] = -1;
}
gUnknown_0203CD68->unk_014 = -1;
gUnknown_0203CD68->unk_014[0] = -1;
}
void sub_818E47C(void)
@ -871,7 +871,7 @@ void sub_818E510(void)
void sub_818E538(void)
{
gUnknown_0203CD68 = &gSaveBlock1Ptr->lilycoveLady.quiz;
CopyEasyChatWord(gStringVar3, gUnknown_0203CD68->unk_014);
CopyEasyChatWord(gStringVar3, gUnknown_0203CD68->unk_014[0]);
}
void sub_818E564(void)