diff options
author | PikalaxALT <pikalaxalt@gmail.com> | 2018-11-25 08:21:08 -0500 |
---|---|---|
committer | PikalaxALT <pikalaxalt@gmail.com> | 2018-11-25 08:21:08 -0500 |
commit | 5b30b664bebb2ba890b86cd09f40c7c53da05659 (patch) | |
tree | 93b66c47e9f18585f7604889dc0e98d06f9757e2 | |
parent | b09bbc65bed4716bc944306f64b89301dcaaffe6 (diff) |
sub_812D1A8
-rw-r--r-- | asm/fame_checker.s | 169 | ||||
-rw-r--r-- | include/field_map_obj.h | 1 | ||||
-rw-r--r-- | include/global.h | 3 | ||||
-rw-r--r-- | src/fame_checker.c | 47 |
4 files changed, 49 insertions, 171 deletions
diff --git a/asm/fame_checker.s b/asm/fame_checker.s index 49226ae15..6104d97bd 100644 --- a/asm/fame_checker.s +++ b/asm/fame_checker.s @@ -5,175 +5,6 @@ .text - thumb_func_start sub_812D1A8 -sub_812D1A8: @ 812D1A8 - push {r4-r7,lr} - mov r7, r8 - push {r7} - lsls r0, 24 - lsrs r0, 24 - mov r8, r0 - movs r5, 0 - movs r6, 0 - ldr r7, _0812D238 @ =gUnknown_203B0FC -_0812D1BA: - ldr r0, _0812D23C @ =gSaveBlock1Ptr - ldr r1, [r0] - ldr r0, [r7] - adds r0, 0xC - add r0, r8 - ldrb r2, [r0] - lsls r0, r2, 2 - adds r1, r0 - ldr r0, _0812D240 @ =0x00003a54 - adds r1, r0 - ldrh r0, [r1] - lsls r0, 18 - lsrs r0, 20 - asrs r0, r6 - movs r1, 0x1 - ands r0, r1 - cmp r0, 0 - beq _0812D248 - ldr r1, _0812D244 @ =gUnknown_845F83C - lsls r0, r2, 1 - adds r0, r2 - lsls r0, 1 - adds r0, r6 - adds r0, r1 - ldrb r5, [r0] - adds r0, r6, 0 - movs r1, 0x3 - bl __umodsi3 - lsls r0, 24 - lsrs r0, 24 - lsls r4, r0, 1 - adds r4, r0 - lsls r4, 4 - subs r4, r0 - adds r4, 0x72 - lsls r4, 16 - asrs r4, 16 - adds r0, r6, 0 - movs r1, 0x3 - bl __udivsi3 - lsls r0, 24 - lsrs r0, 24 - lsls r3, r0, 3 - subs r3, r0 - lsls r3, 2 - subs r3, r0 - adds r3, 0x2F - lsls r3, 16 - asrs r3, 16 - adds r0, r5, 0 - adds r1, r6, 0 - adds r2, r4, 0 - bl sub_805EB44 - ldr r1, [r7] - adds r1, 0x1D - adds r1, r6 - strb r0, [r1] - movs r5, 0x1 - b _0812D2A0 - .align 2, 0 -_0812D238: .4byte gUnknown_203B0FC -_0812D23C: .4byte gSaveBlock1Ptr -_0812D240: .4byte 0x00003a54 -_0812D244: .4byte gUnknown_845F83C -_0812D248: - adds r0, r6, 0 - movs r1, 0x3 - bl __umodsi3 - lsls r0, 24 - lsrs r0, 24 - lsls r4, r0, 1 - adds r4, r0 - lsls r4, 4 - subs r4, r0 - adds r4, 0x72 - lsls r4, 24 - lsrs r4, 24 - adds r0, r6, 0 - movs r1, 0x3 - bl __udivsi3 - lsls r0, 24 - lsrs r0, 24 - lsls r1, r0, 3 - subs r1, r0 - lsls r1, 2 - subs r1, r0 - adds r1, 0x1F - lsls r1, 24 - lsrs r1, 24 - adds r0, r4, 0 - bl sub_812D780 - ldr r1, [r7] - adds r1, 0x1D - adds r1, r6 - strb r0, [r1] - ldr r2, _0812D2D0 @ =gSprites - ldr r0, [r7] - adds r0, 0x1D - adds r0, r6 - ldrb r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r2 - movs r1, 0xFF - strh r1, [r0, 0x30] -_0812D2A0: - adds r0, r6, 0x1 - lsls r0, 24 - lsrs r6, r0, 24 - cmp r6, 0x5 - bls _0812D1BA - cmp r5, 0x1 - bne _0812D2E0 - ldr r3, _0812D2D4 @ =gUnknown_203B0FC - ldr r2, [r3] - ldrb r0, [r2, 0x7] - movs r1, 0x1 - orrs r0, r1 - strb r0, [r2, 0x7] - ldr r0, [r3] - ldrb r1, [r0, 0x7] - movs r0, 0x2 - ands r0, r1 - cmp r0, 0 - beq _0812D2D8 - movs r0, 0x1 - bl sub_812D0F4 - b _0812D2F4 - .align 2, 0 -_0812D2D0: .4byte gSprites -_0812D2D4: .4byte gUnknown_203B0FC -_0812D2D8: - movs r0, 0 - bl sub_812D0F4 - b _0812D2F4 -_0812D2E0: - ldr r0, _0812D300 @ =gUnknown_203B0FC - ldr r2, [r0] - ldrb r1, [r2, 0x7] - movs r0, 0x2 - negs r0, r0 - ands r0, r1 - strb r0, [r2, 0x7] - movs r0, 0x1 - bl sub_812D0F4 -_0812D2F4: - adds r0, r5, 0 - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r1} - bx r1 - .align 2, 0 -_0812D300: .4byte gUnknown_203B0FC - thumb_func_end sub_812D1A8 - thumb_func_start sub_812D304 sub_812D304: @ 812D304 push {r4-r7,lr} diff --git a/include/field_map_obj.h b/include/field_map_obj.h index ded970a83..685701e89 100644 --- a/include/field_map_obj.h +++ b/include/field_map_obj.h @@ -86,6 +86,7 @@ void npc_set_running_behaviour_etc(struct MapObject *, u8); u8 sub_80634F0(u8 direction); u8 sub_8063500(u8 a0); void sub_805F060(struct MapObject *mapObject, u8 a1); +u8 sub_805EB44(u8, u8, s16, s16); // Exported data declarations diff --git a/include/global.h b/include/global.h index 568ece2be..31bb77f9f 100644 --- a/include/global.h +++ b/include/global.h @@ -572,7 +572,8 @@ struct QuestLog struct FameCheckerSaveData { - /*3a54*/ u8 unk_0_0:2; + /*3a54*/ u16 unk_0_0:2; + u16 unk_0_2:12; }; #define MAP_OBJECTS_COUNT 16 diff --git a/src/fame_checker.c b/src/fame_checker.c index ed7544d98..e13fc1913 100644 --- a/src/fame_checker.c +++ b/src/fame_checker.c @@ -17,6 +17,7 @@ #include "text.h" #include "window.h" #include "string_util.h" +#include "field_map_obj.h" #include "text_window.h" struct FameCheckerData @@ -73,7 +74,7 @@ void sub_812CF3C(u8 taskId); void sub_812CF7C(u8 taskId); void sub_812D094(u8 windowId); void sub_812D0F4(u8 a0); -void sub_812D1A8(u8 a0); +bool8 sub_812D1A8(u8 a0); void sub_812D420(void); void sub_812D558(void); void sub_812D584(void); @@ -83,6 +84,7 @@ void sub_812D70C(void); u8 sub_812D724(s16 a0); void sub_812D764(struct Sprite *sprite); void sub_812D770(void); +u8 sub_812D780(u8, u8); void sub_812D7C8(void); u8 sub_812D7E4(void); void sub_812D800(struct Sprite *sprite); @@ -108,6 +110,7 @@ extern const u16 gUnknown_845C600[]; extern const u8 *const gUnknown_845F63C[]; extern const struct TextColor gUnknown_845F5E0; extern const u8 *const gUnknown_845F6BC[]; +extern const u8 gUnknown_845F83C[]; extern const struct BgTemplate gUnknown_845FBF4[4]; extern const struct SpriteSheet gUnknown_845FB9C[]; extern const struct SpritePalette gUnknown_845FBDC[]; @@ -601,3 +604,45 @@ void sub_812D174(void) DestroySprite(&gSprites[gUnknown_203B0FC->unk_1D[r4]]); } } + +bool8 sub_812D1A8(u8 a0) +{ + // r8 <- a0 + bool8 r5 = FALSE; + u8 r6; + for (r6 = 0; r6 < 6; r6++) + { + if ((gSaveBlock1Ptr->fameChecker[gUnknown_203B0FC->unk_0C[a0]].unk_0_2 >> r6) & 1) + { + gUnknown_203B0FC->unk_1D[r6] = sub_805EB44( + gUnknown_845F83C[gUnknown_203B0FC->unk_0C[a0] * 6 + r6], + r6, + 47 * (r6 % 3) + 0x72, + 27 * (r6 / 3) + 0x2F + ); + r5 = TRUE; + } + else + { + gUnknown_203B0FC->unk_1D[r6] = sub_812D780( + 47 * (r6 % 3) + 0x72, + 27 * (r6 / 3) + 0x1F + ); + gSprites[gUnknown_203B0FC->unk_1D[r6]].data[1] = 0xFF; + } + } + if (r5 == TRUE) + { + gUnknown_203B0FC->unk_07_0 = TRUE; + if (gUnknown_203B0FC->unk_07_1) + sub_812D0F4(TRUE); + else + sub_812D0F4(FALSE); + } + else + { + gUnknown_203B0FC->unk_07_0 = FALSE; + sub_812D0F4(TRUE); + } + return r5; +} |