summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPikalaxALT <pikalaxalt@gmail.com>2017-05-31 22:57:30 -0400
committerPikalaxALT <pikalaxalt@gmail.com>2017-05-31 22:57:30 -0400
commitbaebe7b6173f4d68996e889fca5f08ac8d1854f7 (patch)
tree52819d4664fe8ab40bac96f3af7c7937388cf44b
parent9c45d48b962eb8f885e5753205673e7a5499d301 (diff)
sub_80FEABC
-rw-r--r--asm/decoration.s233
-rwxr-xr-x[-rw-r--r--]include/decoration.h27
-rwxr-xr-x[-rw-r--r--]src/decoration.c59
3 files changed, 76 insertions, 243 deletions
diff --git a/asm/decoration.s b/asm/decoration.s
index 71d5e3615..8d814f563 100644
--- a/asm/decoration.s
+++ b/asm/decoration.s
@@ -8,239 +8,6 @@
.equiv ewram_1f000, 0x0201f000
- thumb_func_start sub_80FEABC
-sub_80FEABC: @ 80FEABC
- push {r4-r7,lr}
- mov r7, r8
- push {r7}
- sub sp, 0x4
- lsls r0, 24
- lsrs r0, 24
- mov r8, r0
- ldr r4, _080FEB58 @ =gUnknown_020388F4
- ldrb r0, [r4]
- cmp r0, 0
- bne _080FEADE
- movs r0, 0
- bl DestroyVerticalScrollIndicator
- ldrb r0, [r4]
- cmp r0, 0
- beq _080FEAE8
-_080FEADE:
- movs r0, 0
- movs r1, 0x3C
- movs r2, 0x8
- bl CreateVerticalScrollIndicators
-_080FEAE8:
- ldr r5, _080FEB58 @ =gUnknown_020388F4
- ldrb r0, [r5]
- adds r0, 0x7
- ldr r4, _080FEB5C @ =gUnknown_020388D5
- ldrb r1, [r4]
- cmp r0, r1
- bne _080FEAFC
- movs r0, 0x1
- bl DestroyVerticalScrollIndicator
-_080FEAFC:
- ldrb r0, [r5]
- adds r0, 0x7
- ldrb r4, [r4]
- cmp r0, r4
- bge _080FEB10
- movs r0, 0x1
- movs r1, 0x3C
- movs r2, 0x98
- bl CreateVerticalScrollIndicators
-_080FEB10:
- ldrb r4, [r5]
- adds r0, r4, 0
- adds r0, 0x8
- cmp r4, r0
- blt _080FEB1C
- b _080FEC7E
-_080FEB1C:
- adds r7, r5, 0
-_080FEB1E:
- ldrb r1, [r7]
- subs r1, r4, r1
- lsls r0, r1, 25
- movs r2, 0x80
- lsls r2, 18
- adds r0, r2
- lsrs r6, r0, 24
- ldr r0, _080FEB60 @ =gUnknown_020388F7
- adds r1, r0
- ldrb r0, [r1]
- cmp r0, 0
- beq _080FEB3C
- adds r0, r1, 0
- bl sub_80F94F8
-_080FEB3C:
- ldr r0, _080FEB5C @ =gUnknown_020388D5
- ldrb r0, [r0]
- cmp r4, r0
- bne _080FEB68
- lsls r2, r6, 3
- movs r0, 0x1
- str r0, [sp]
- ldr r0, _080FEB64 @ =gUnknownText_Exit
- movs r1, 0x8
- movs r3, 0x68
- bl sub_8072A18
- b _080FEC7E
- .align 2, 0
-_080FEB58: .4byte gUnknown_020388F4
-_080FEB5C: .4byte gUnknown_020388D5
-_080FEB60: .4byte gUnknown_020388F7
-_080FEB64: .4byte gUnknownText_Exit
-_080FEB68:
- ldr r0, _080FEBC0 @ =gUnknown_020388D0
- ldr r1, [r0]
- adds r2, r1, r4
- ldrb r1, [r2]
- mov r12, r0
- adds r5, r4, 0x1
- cmp r1, 0
- bne _080FEB7A
- b _080FEC70
-_080FEB7A:
- ldr r0, _080FEBC4 @ =ewram_1f000
- ldrb r5, [r0, 0x9]
- cmp r5, 0x1
- bne _080FEBDC
- ldr r0, _080FEBC8 @ =gUnknown_020388F6
- ldrb r0, [r0]
- cmp r0, 0x6
- beq _080FEBDC
- cmp r0, 0x7
- beq _080FEBDC
- ldr r0, _080FEBCC @ =gTasks
- mov r3, r8
- lsls r1, r3, 2
- add r1, r8
- lsls r1, 3
- adds r1, r0
- movs r3, 0x1E
- ldrsh r0, [r1, r3]
- cmp r0, 0
- bne _080FEBDC
- ldrb r1, [r2]
- lsls r1, 5
- ldr r0, _080FEBD0 @ =gDecorations + 0x1
- adds r1, r0
- ldr r0, _080FEBD4 @ =gStringVar1
- bl StringCopy
- lsls r2, r6, 3
- str r5, [sp]
- ldr r0, _080FEBD8 @ =gUnknown_083EC65A
- movs r1, 0x8
- movs r3, 0x68
- bl sub_8072A18
- b _080FEBF8
- .align 2, 0
-_080FEBC0: .4byte gUnknown_020388D0
-_080FEBC4: .4byte ewram_1f000
-_080FEBC8: .4byte gUnknown_020388F6
-_080FEBCC: .4byte gTasks
-_080FEBD0: .4byte gDecorations + 0x1
-_080FEBD4: .4byte gStringVar1
-_080FEBD8: .4byte gUnknown_083EC65A
-_080FEBDC:
- mov r1, r12
- ldr r0, [r1]
- adds r0, r4
- ldrb r0, [r0]
- lsls r0, 5
- ldr r1, _080FEC00 @ =gDecorations + 0x1
- adds r0, r1
- lsls r2, r6, 3
- movs r1, 0x1
- str r1, [sp]
- movs r1, 0x8
- movs r3, 0x68
- bl sub_8072A18
-_080FEBF8:
- movs r1, 0
- adds r5, r4, 0x1
- b _080FEC0A
- .align 2, 0
-_080FEC00: .4byte gDecorations + 0x1
-_080FEC04:
- adds r0, r1, 0x1
- lsls r0, 16
- lsrs r1, r0, 16
-_080FEC0A:
- cmp r1, 0xF
- bhi _080FEC34
- ldr r0, _080FEC38 @ =gUnknown_020388D6
- adds r0, r1, r0
- ldrb r0, [r0]
- subs r0, 0x1
- cmp r0, r4
- bne _080FEC04
- ldrb r3, [r7]
- subs r3, r4, r3
- ldr r1, _080FEC3C @ =gUnknown_020388F7
- adds r1, r3, r1
- lsls r3, 20
- movs r2, 0xC0
- lsls r2, 13
- adds r3, r2
- asrs r3, 16
- movs r0, 0x4
- movs r2, 0x6C
- bl sub_80F94A4
-_080FEC34:
- movs r1, 0
- b _080FEC46
- .align 2, 0
-_080FEC38: .4byte gUnknown_020388D6
-_080FEC3C: .4byte gUnknown_020388F7
-_080FEC40:
- adds r0, r1, 0x1
- lsls r0, 16
- lsrs r1, r0, 16
-_080FEC46:
- cmp r1, 0xB
- bhi _080FEC70
- ldr r0, _080FEC8C @ =gUnknown_020388E6
- adds r0, r1, r0
- ldrb r0, [r0]
- subs r0, 0x1
- cmp r0, r4
- bne _080FEC40
- ldrb r3, [r7]
- subs r3, r4, r3
- ldr r1, _080FEC90 @ =gUnknown_020388F7
- adds r1, r3, r1
- lsls r3, 20
- movs r0, 0xC0
- lsls r0, 13
- adds r3, r0
- asrs r3, 16
- movs r0, 0x5
- movs r2, 0x6C
- bl sub_80F94A4
-_080FEC70:
- lsls r0, r5, 16
- lsrs r4, r0, 16
- ldrb r0, [r7]
- adds r0, 0x8
- cmp r4, r0
- bge _080FEC7E
- b _080FEB1E
-_080FEC7E:
- add sp, 0x4
- pop {r3}
- mov r8, r3
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_080FEC8C: .4byte gUnknown_020388E6
-_080FEC90: .4byte gUnknown_020388F7
- thumb_func_end sub_80FEABC
-
thumb_func_start sub_80FEC94
sub_80FEC94: @ 80FEC94
push {r4,lr}
diff --git a/include/decoration.h b/include/decoration.h
index 223527cc8..bad0bd9d6 100644..100755
--- a/include/decoration.h
+++ b/include/decoration.h
@@ -2,14 +2,14 @@
#define GUARD_DECORATION_H
enum {
- DECOCAT_DESK,
- DECOCAT_CHAIR,
- DECOCAT_PLANT,
- DECOCAT_ORNAMENT,
- DECOCAT_MAT,
- DECOCAT_POSTER,
- DECOCAT_DOLL,
- DECOCAT_CUSHION
+ /*0*/ DECOCAT_DESK,
+ /*1*/ DECOCAT_CHAIR,
+ /*2*/ DECOCAT_PLANT,
+ /*3*/ DECOCAT_ORNAMENT,
+ /*4*/ DECOCAT_MAT,
+ /*5*/ DECOCAT_POSTER,
+ /*6*/ DECOCAT_DOLL,
+ /*7*/ DECOCAT_CUSHION
};
struct Decoration
@@ -53,20 +53,27 @@ extern u8 gUnknown_020388F3;
extern u8 gUnknown_020388F4;
extern u8 gUnknown_020388F5;
extern u8 gUnknown_020388F6;
+extern u8 gUnknown_020388D6[16];
+extern u8 gUnknown_020388E6[12];
extern const u16 gUnknown_083EC654[3];
extern const struct DecorationInventory gDecorationInventories[];
extern const u8 *gUnknown_083EC5E4[];
extern const u8 *gUnknown_083EC624[];
-extern u8 *gUnknown_020388F7[];
+extern u8 gUnknown_020388F7[];
extern const struct MenuAction2 gUnknown_083EC604[];
extern const struct MenuAction3 gUnknown_083EC634[];
+extern const u8 gUnknown_083EC65A[];
extern void sub_80B3068(u8); // src/shop
extern u8 sub_8134194(u8); // src/decoration_inventory
extern void sub_8134104(u8); // src/decoration_inventory
extern void sub_80F944C(void); // src/menu_helpers
-extern void sub_80F9480(u8 *[], u8); // src/menu_helpers
+extern void sub_80F9480(u8 *, u8); // src/menu_helpers
+extern void sub_80F94A4(u8, u8 *, u8, s16);
+extern void sub_80F94F8(u8 *); // src/menu_helpers
+extern void DestroyVerticalScrollIndicator(u8); // src/menu_helpers
+extern void CreateVerticalScrollIndicators(u8, u8, u8); // src/menu_helpers
extern void LoadScrollIndicatorPalette(void); // src/menu_helpers
extern void DisplayItemMessageOnField(u8, const u8 *, TaskFunc, u16); // src/menu_helpers
extern void ReshowPlayerPC(u8); // src/player_pc
diff --git a/src/decoration.c b/src/decoration.c
index 599a51eea..59f15e088 100644..100755
--- a/src/decoration.c
+++ b/src/decoration.c
@@ -346,3 +346,62 @@ void sub_80FE948(u8 taskId)
}
}
}
+
+void sub_80FEABC(u8 taskId, u8 dummy1)
+{
+ u16 i;
+ u16 j;
+ u8 ni;
+ if (gUnknown_020388F4 != 0 || (DestroyVerticalScrollIndicator(0), gUnknown_020388F4 != 0))
+ {
+ CreateVerticalScrollIndicators(0, 0x3c, 0x08);
+ }
+ if (gUnknown_020388F4 + 7 == gUnknown_020388D5)
+ {
+ DestroyVerticalScrollIndicator(1);
+ }
+ if (gUnknown_020388F4 + 7 < gUnknown_020388D5)
+ {
+ CreateVerticalScrollIndicators(1, 0x3c, 0x98);
+ }
+ for (i=gUnknown_020388F4; i<gUnknown_020388F4+8; i++)
+ {
+ ni = 2 * (i - gUnknown_020388F4) + 2;
+ if (gUnknown_020388F7[i - gUnknown_020388F4])
+ {
+ sub_80F94F8(&gUnknown_020388F7[i - gUnknown_020388F4]);
+ }
+ if (i == gUnknown_020388D5)
+ {
+ sub_8072A18(gUnknownText_Exit, 0x08, 8 * ni, 0x68, 1);
+ break;
+ }
+ if (gUnknown_020388D0[i])
+ {
+ if (ewram_1f000.isPlayerRoom == 1 && gUnknown_020388F6 != DECOCAT_DOLL && gUnknown_020388F6 != DECOCAT_CUSHION && gTasks[taskId].data[11] == 0)
+ {
+ StringCopy(gStringVar1, gDecorations[gUnknown_020388D0[i]].name);
+ sub_8072A18(gUnknown_083EC65A, 0x08, 8 * ni, 0x68, 1);
+ } else
+ {
+ sub_8072A18(gDecorations[gUnknown_020388D0[i]].name, 0x08, 8 * ni, 0x68, 1);
+ }
+ for (j=0; j<16; j++)
+ {
+ if (gUnknown_020388D6[j] - 1 == i)
+ {
+ sub_80F94A4(4, &gUnknown_020388F7[i - gUnknown_020388F4], 0x6c, (i - gUnknown_020388F4) * 16 + 24);
+ break;
+ }
+ }
+ for (j=0; j<12; j++)
+ {
+ if (gUnknown_020388E6[j] - 1 == i)
+ {
+ sub_80F94A4(5, &gUnknown_020388F7[i - gUnknown_020388F4], 0x6c, (i - gUnknown_020388F4) * 16 + 24);
+ break;
+ }
+ }
+ }
+ }
+}