summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--asm/lilycove_lady.s125
-rw-r--r--src/lilycove_lady.c62
2 files changed, 62 insertions, 125 deletions
diff --git a/asm/lilycove_lady.s b/asm/lilycove_lady.s
index bf3313a97..0f66eae84 100644
--- a/asm/lilycove_lady.s
+++ b/asm/lilycove_lady.s
@@ -5,131 +5,6 @@
.text
- thumb_func_start sub_818E038
-sub_818E038: @ 818E038
- push {lr}
- ldr r1, =gUnknown_0203CD68
- ldr r0, =gSaveBlock1Ptr
- ldr r0, [r0]
- ldr r2, =0x00003b58
- adds r0, r2
- str r0, [r1]
- ldrb r0, [r0, 0x1]
- cmp r0, 0x2
- bne _0818E05C
- movs r0, 0x2
- b _0818E066
- .pool
-_0818E05C:
- cmp r0, 0x1
- beq _0818E064
- movs r0, 0
- b _0818E066
-_0818E064:
- movs r0, 0x1
-_0818E066:
- pop {r1}
- bx r1
- thumb_func_end sub_818E038
-
- thumb_func_start sub_818E06C
-sub_818E06C: @ 818E06C
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- ldr r0, =gSaveBlock1Ptr
- ldr r4, [r0]
- ldr r0, =0x00003b58
- adds r7, r4, r0
- ldrh r0, [r7, 0x14]
- bl sub_811F8D8
- cmp r0, 0
- bne _0818E0EC
- ldr r1, =0x00003b83
- adds r0, r4, r1
- ldrb r5, [r0]
- ldr r0, =0x00003b5a
- adds r0, r4
- mov r8, r0
- adds r1, r4
- mov r10, r1
- ldr r6, =gUnknown_0860B1E4
-_0818E09A:
- adds r5, 0x1
- cmp r5, 0xF
- ble _0818E0A2
- movs r5, 0
-_0818E0A2:
- lsls r4, r5, 1
- adds r0, r4, r6
- ldrh r0, [r0]
- bl sub_811F8D8
- cmp r0, 0
- beq _0818E09A
- movs r3, 0
- ldr r0, =gUnknown_0860B1E4
- mov r12, r0
- lsls r1, r5, 2
- ldr r0, =gUnknown_0860B204
- mov r9, r0
- ldr r0, =gUnknown_0860B1A4
- adds r6, r1, r0
- mov r2, r8
-_0818E0C2:
- lsls r0, r3, 1
- ldr r1, [r6]
- adds r0, r1
- ldrh r0, [r0]
- strh r0, [r2]
- adds r2, 0x2
- adds r3, 0x1
- cmp r3, 0x8
- ble _0818E0C2
- mov r1, r12
- adds r0, r4, r1
- ldrh r0, [r0]
- strh r0, [r7, 0x14]
- mov r1, r9
- adds r0, r4, r1
- ldrh r0, [r0]
- strh r0, [r7, 0x28]
- mov r0, r10
- strb r5, [r0]
- movs r0, 0xFF
- strb r0, [r7, 0x18]
-_0818E0EC:
- bl sub_818E13C
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0
- bne _0818E118
- movs r0, 0x2
- b _0818E12C
- .pool
-_0818E118:
- cmp r0, 0x2
- beq _0818E126
- bl sub_818E1F4
- lsls r0, 24
- cmp r0, 0
- beq _0818E12A
-_0818E126:
- movs r0, 0x1
- b _0818E12C
-_0818E12A:
- movs r0, 0
-_0818E12C:
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r1}
- bx r1
- thumb_func_end sub_818E06C
-
thumb_func_start sub_818E13C
sub_818E13C: @ 818E13C
push {r4-r7,lr}
diff --git a/src/lilycove_lady.c b/src/lilycove_lady.c
index c7a5ef68d..93c3cce67 100644
--- a/src/lilycove_lady.c
+++ b/src/lilycove_lady.c
@@ -20,6 +20,9 @@ void SetLilycoveContestLady(void);
void sub_818E004(void);
void sub_818DBC4(void);
void sub_818E674(void);
+bool32 sub_811F8D8(u16);
+u8 sub_818E13C(void);
+bool8 sub_818E1F4(void);
extern const u16 gUnknown_0860B074[5];
extern const u16 gUnknown_0860B07E[3];
@@ -352,3 +355,62 @@ void sub_818E004(void)
gUnknown_0203CD68->unk_02a = 0;
gUnknown_0203CD68->unk_016 = -1;
}
+
+u8 sub_818E038(void)
+{
+ gUnknown_0203CD68 = &gSaveBlock1Ptr->lilycoveLady.quiz;
+ if (gUnknown_0203CD68->unk_001 == 2)
+ {
+ return 2;
+ }
+ else if (gUnknown_0203CD68->unk_001 == 1)
+ {
+ return 1;
+ }
+ else
+ {
+ return 0;
+ }
+}
+
+u8 sub_818E06C(void)
+{
+ int i;
+ int j;
+ u8 rv;
+ struct LilycoveLadyQuiz *quiz;
+
+ quiz = &gSaveBlock1Ptr->lilycoveLady.quiz;
+ if (sub_811F8D8(quiz->unk_014) == 0)
+ {
+ i = quiz->unk_02b;
+ do
+ {
+ if (++ i >= 16)
+ {
+ i = 0;
+ }
+ } while (sub_811F8D8(gUnknown_0860B1E4[i]) == 0);
+ for (j = 0; j < 9; j ++)
+ {
+ quiz->unk_002[j] = gUnknown_0860B1A4[i][j];
+ }
+ quiz->unk_014 = gUnknown_0860B1E4[i];
+ quiz->unk_028 = gUnknown_0860B204[i];
+ quiz->unk_02b = i;
+ quiz->unk_018 = 0xFF;
+ }
+ rv = sub_818E13C();
+ if (rv == 0)
+ {
+ return 2;
+ }
+ else if (rv == 2 || sub_818E1F4())
+ {
+ return 1;
+ }
+ else
+ {
+ return 0;
+ }
+}