diff options
author | PikalaxALT <pikalaxalt@gmail.com> | 2017-05-31 22:57:30 -0400 |
---|---|---|
committer | PikalaxALT <pikalaxalt@gmail.com> | 2017-05-31 22:57:30 -0400 |
commit | baebe7b6173f4d68996e889fca5f08ac8d1854f7 (patch) | |
tree | 52819d4664fe8ab40bac96f3af7c7937388cf44b | |
parent | 9c45d48b962eb8f885e5753205673e7a5499d301 (diff) |
sub_80FEABC
-rw-r--r-- | asm/decoration.s | 233 | ||||
-rwxr-xr-x[-rw-r--r--] | include/decoration.h | 27 | ||||
-rwxr-xr-x[-rw-r--r--] | src/decoration.c | 59 |
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; + } + } + } + } +} |