diff options
-rw-r--r-- | asm/lilycove_lady.s | 52 | ||||
-rw-r--r-- | include/global.h | 21 | ||||
-rw-r--r-- | src/lilycove_lady.c | 46 |
3 files changed, 43 insertions, 76 deletions
diff --git a/asm/lilycove_lady.s b/asm/lilycove_lady.s index 0acc81935..7a844c2fb 100644 --- a/asm/lilycove_lady.s +++ b/asm/lilycove_lady.s @@ -5,58 +5,6 @@ .text - thumb_func_start sub_818E604 -sub_818E604: @ 818E604 - push {r4,lr} - ldr r4, =gUnknown_0203CD6C - ldr r1, [r4] - movs r0, 0xFF - strb r0, [r1, 0x4] - ldr r0, [r4] - movs r1, 0 - strb r1, [r0, 0x2] - ldr r0, [r4] - strb r1, [r0, 0x3] - ldr r0, [r4] - strb r1, [r0, 0xC] - bl Random - ldr r4, [r4] - lsls r0, 16 - lsrs r0, 16 - movs r1, 0x5 - bl __umodsi3 - strb r0, [r4, 0xD] - pop {r4} - pop {r0} - bx r0 - .pool - thumb_func_end sub_818E604 - - thumb_func_start SetLilycoveContestLady -SetLilycoveContestLady: @ 818E638 - push {r4,lr} - ldr r4, =gUnknown_0203CD6C - ldr r0, =gSaveBlock1Ptr - ldr r0, [r0] - ldr r1, =0x00003b58 - adds r0, r1 - str r0, [r4] - movs r2, 0 - movs r1, 0x2 - strb r1, [r0] - ldr r0, [r4] - strb r2, [r0, 0x1] - bl sub_818E604 - ldr r1, [r4] - ldr r0, =gGameLanguage - ldrb r0, [r0] - strb r0, [r1, 0xE] - pop {r4} - pop {r0} - bx r0 - .pool - thumb_func_end SetLilycoveContestLady - thumb_func_start sub_818E674 sub_818E674: @ 818E674 push {lr} diff --git a/include/global.h b/include/global.h index 6fa8cb92d..fa7856786 100644 --- a/include/global.h +++ b/include/global.h @@ -670,7 +670,7 @@ enum { struct LilycoveLadyQuiz { /*0x000*/ u8 id; - /*0x001*/ u8 unk_001; + /*0x001*/ u8 phase; /*0x002*/ u16 unk_002[9]; /*0x014*/ u16 unk_014; /*0x016*/ u16 unk_016; @@ -686,7 +686,7 @@ struct LilycoveLadyQuiz struct LilycoveLadyFavour { /*0x000*/ u8 id; - /*0x001*/ u8 unk_001; + /*0x001*/ u8 phase; /*0x002*/ u8 unk_002; /*0x003*/ u8 unk_003; /*0x004*/ u8 playerName[8]; @@ -699,8 +699,13 @@ struct LilycoveLadyFavour struct LilycoveLadyContest { /*0x000*/ u8 id; - /*0x001*/ u8 filler_001[12]; - /*0x00d*/ u8 category; // maybe? + /*0x001*/ u8 phase; + /*0x002*/ u8 fave_pkblk; + /*0x003*/ u8 other_pkblk; + /*0x004*/ u8 playerName[8]; + /*0x00c*/ u8 max_sheen; + /*0x00d*/ u8 category; + /*0x00e*/ u8 language; }; typedef union // TODO @@ -708,12 +713,7 @@ typedef union // TODO struct LilycoveLadyQuiz quiz; struct LilycoveLadyFavour favour; struct LilycoveLadyContest contest; - - struct - { - /*0x000*/ u8 id; - /*0x001*/ u8 filler_001[0x217]; - } common; + u8 id; } LilycoveLady; struct SaveBlock1 @@ -800,6 +800,7 @@ struct SaveBlock1 /*0x3B14*/ struct RecordMixingGift recordMixingGift; /*0x3B24*/ u8 seen2[52]; /*0x3B58*/ LilycoveLady lilycoveLady; + /*0x3B88*/ u8 filler_3B88[0x1E8]; /*0x3D70*/ u8 babyPhrase[24]; // TODO: convert to a struct // sizeof: 0x3D88 }; diff --git a/src/lilycove_lady.c b/src/lilycove_lady.c index 61b5488a1..f6471828b 100644 --- a/src/lilycove_lady.c +++ b/src/lilycove_lady.c @@ -44,7 +44,7 @@ extern EWRAM_DATA u16 gScriptItemId; u8 GetLilycoveLadyId(void) { - return gSaveBlock1Ptr->lilycoveLady.common.id; + return gSaveBlock1Ptr->lilycoveLady.id; } void sub_818D9C0(void) @@ -148,7 +148,7 @@ void SetLilycoveFavourLady(void) { gUnknown_0203CD64 = &gSaveBlock1Ptr->lilycoveLady.favour; gUnknown_0203CD64->id = LILYCOVE_LADY_FAVOUR; - gUnknown_0203CD64->unk_001 = 0; + gUnknown_0203CD64->phase = 0; gUnknown_0203CD64->playerName[0] = EOS; gUnknown_0203CD64->unk_002 = 0; gUnknown_0203CD64->unk_003= 0; @@ -161,17 +161,17 @@ void sub_818DBC4(void) { gUnknown_0203CD64 = &gSaveBlock1Ptr->lilycoveLady.favour; gUnknown_0203CD64->id = LILYCOVE_LADY_FAVOUR; - gUnknown_0203CD64->unk_001 = 0; + gUnknown_0203CD64->phase = 0; } u8 sub_818DBE8(void) { gUnknown_0203CD64 = &gSaveBlock1Ptr->lilycoveLady.favour; - if (gUnknown_0203CD64->unk_001 == 2) + if (gUnknown_0203CD64->phase == 2) { return 2; } - else if (gUnknown_0203CD64->unk_001 == 1) + else if (gUnknown_0203CD64->phase == 1) { return 1; } @@ -247,7 +247,7 @@ bool8 sub_818DD84(u16 itemId) gUnknown_0203CD64 = &gSaveBlock1Ptr->lilycoveLady.favour; len = sub_818DB04(gUnknown_0860B2EC[gUnknown_0203CD64->unk_00c]); - gUnknown_0203CD64->unk_001 = 1; + gUnknown_0203CD64->phase = 1; sub_818DCAC(gStringVar2, itemId); gUnknown_0203CD64->itemId = itemId; sub_818DCF4(gSaveBlock2Ptr->playerName, gUnknown_0203CD64->playerName); @@ -297,14 +297,14 @@ u16 sub_818DEA0(void) gUnknown_0203CD64 = &gSaveBlock1Ptr->lilycoveLady.favour; itemId = gUnknown_0860B304[gUnknown_0203CD64->unk_00c]; sub_818DE88(itemId); - gUnknown_0203CD64->unk_001 = 2; + gUnknown_0203CD64->phase = 2; return itemId; } void sub_818DEDC(void) { SetLilycoveFavourLady(); - gUnknown_0203CD64->unk_001 = 1; + gUnknown_0203CD64->phase = 1; } void sub_818DEF4(void) @@ -334,7 +334,7 @@ void SetLilycoveQuizLady(void) gUnknown_0203CD68 = &gSaveBlock1Ptr->lilycoveLady.quiz; gUnknown_0203CD68->id = LILYCOVE_LADY_QUIZ; - gUnknown_0203CD68->unk_001 = 0; + gUnknown_0203CD68->phase = 0; for (i = 0; i < 9; i ++) { gUnknown_0203CD68->unk_002[i] = -1; @@ -356,7 +356,7 @@ void sub_818E004(void) { gUnknown_0203CD68 = &gSaveBlock1Ptr->lilycoveLady.quiz; gUnknown_0203CD68->id = LILYCOVE_LADY_QUIZ; - gUnknown_0203CD68->unk_001 = 0; + gUnknown_0203CD68->phase = 0; gUnknown_0203CD68->unk_02a = 0; gUnknown_0203CD68->unk_016 = -1; } @@ -364,11 +364,11 @@ void sub_818E004(void) u8 sub_818E038(void) { gUnknown_0203CD68 = &gSaveBlock1Ptr->lilycoveLady.quiz; - if (gUnknown_0203CD68->unk_001 == 2) + if (gUnknown_0203CD68->phase == 2) { return 2; } - else if (gUnknown_0203CD68->unk_001 == 1) + else if (gUnknown_0203CD68->phase == 1) { return 1; } @@ -605,13 +605,13 @@ void sub_818E358(void) void sub_818E37C(void) { gUnknown_0203CD68 = &gSaveBlock1Ptr->lilycoveLady.quiz; - gUnknown_0203CD68->unk_001 = 1; + gUnknown_0203CD68->phase = 1; } void sub_818E39C(void) { gUnknown_0203CD68 = &gSaveBlock1Ptr->lilycoveLady.quiz; - gUnknown_0203CD68->unk_001 = 2; + gUnknown_0203CD68->phase = 2; } void sub_818E3BC(void) @@ -715,3 +715,21 @@ void sub_818E570(const struct LilycoveLadyQuiz *quiz) gUnknown_0203CD68->unk_02c = quiz->unk_02c; } } + +void sub_818E604(void) +{ + gUnknown_0203CD6C->playerName[0] = EOS; + gUnknown_0203CD6C->fave_pkblk = 0; + gUnknown_0203CD6C->other_pkblk = 0; + gUnknown_0203CD6C->max_sheen = 0; + gUnknown_0203CD6C->category = Random() % 5; +} + +void SetLilycoveContestLady(void) +{ + gUnknown_0203CD6C = &gSaveBlock1Ptr->lilycoveLady.contest; + gUnknown_0203CD6C->id = LILYCOVE_LADY_CONTEST; + gUnknown_0203CD6C->phase = 0; + sub_818E604(); + gUnknown_0203CD6C->language = gGameLanguage; +} |