diff options
-rw-r--r-- | asm/quest_log.s | 140 | ||||
-rw-r--r-- | data/graphics/unknown_8456638.bin | 1 | ||||
-rw-r--r-- | data/quest_log.s | 6 | ||||
-rw-r--r-- | src/quest_log.c | 59 |
4 files changed, 60 insertions, 146 deletions
diff --git a/asm/quest_log.s b/asm/quest_log.s index bed681f5b..fd78239ff 100644 --- a/asm/quest_log.s +++ b/asm/quest_log.s @@ -5,146 +5,6 @@ .text - thumb_func_start sub_8111D10 -sub_8111D10: @ 8111D10 - push {r4,r5,lr} - sub sp, 0x14 - movs r4, 0 - movs r1, 0 - ldr r2, _08111D80 @ =gStringVar4 - ldrb r0, [r2] - ldr r5, _08111D84 @ =gUnknown_203ADFE - cmp r0, 0xFF - beq _08111D42 -_08111D22: - adds r0, r1, r2 - ldrb r0, [r0] - cmp r0, 0xFE - bne _08111D30 - adds r0, r4, 0x1 - lsls r0, 24 - lsrs r4, r0, 24 -_08111D30: - adds r0, r1, 0x1 - lsls r0, 16 - lsrs r1, r0, 16 - cmp r1, 0xFF - bhi _08111D42 - adds r0, r1, r2 - ldrb r0, [r0] - cmp r0, 0xFF - bne _08111D22 -_08111D42: - ldrb r0, [r5, 0x2] - bl PutWindowTilemap - ldrb r0, [r5, 0x2] - bl sub_8111D90 - ldrb r0, [r5, 0x2] - ldr r1, _08111D88 @ =gUnknown_8456698 - adds r1, r4, r1 - ldrb r3, [r1] - movs r1, 0x1 - str r1, [sp] - movs r2, 0 - str r2, [sp, 0x4] - ldr r1, _08111D8C @ =gUnknown_8456634 - str r1, [sp, 0x8] - str r2, [sp, 0xC] - ldr r1, _08111D80 @ =gStringVar4 - str r1, [sp, 0x10] - movs r1, 0x2 - movs r2, 0x2 - bl AddTextPrinterParametrized2 - movs r0, 0 - bl schedule_bg_copy_tilemap_to_vram - add sp, 0x14 - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_08111D80: .4byte gStringVar4 -_08111D84: .4byte gUnknown_203ADFE -_08111D88: .4byte gUnknown_8456698 -_08111D8C: .4byte gUnknown_8456634 - thumb_func_end sub_8111D10 - - thumb_func_start sub_8111D90 -sub_8111D90: @ 8111D90 - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - lsls r0, 24 - lsrs r0, 24 - mov r10, r0 - ldr r0, _08111DC0 @ =gUnknown_8456638 - mov r9, r0 - movs r0, 0xB4 - lsls r0, 5 - bl Alloc - mov r8, r0 - cmp r0, 0 - beq _08111E0C - movs r1, 0 -_08111DB4: - cmp r1, 0 - beq _08111DC4 - cmp r1, 0x5 - beq _08111DC8 - movs r0, 0x1 - b _08111DCA - .align 2, 0 -_08111DC0: .4byte gUnknown_8456638 -_08111DC4: - movs r0, 0 - b _08111DCA -_08111DC8: - movs r0, 0x2 -_08111DCA: - movs r4, 0 - lsls r6, r0, 5 - lsls r0, r1, 4 - adds r7, r1, 0x1 - subs r0, r1 - lsls r5, r0, 1 -_08111DD6: - adds r1, r5, r4 - lsls r1, 5 - add r1, r8 - mov r2, r9 - adds r0, r2, r6 - ldr r2, _08111E1C @ =0x04000008 - bl CpuSet - adds r0, r4, 0x1 - lsls r0, 24 - lsrs r4, r0, 24 - cmp r4, 0x1D - bls _08111DD6 - lsls r0, r7, 24 - lsrs r1, r0, 24 - cmp r1, 0x5 - bls _08111DB4 - movs r2, 0xB4 - lsls r2, 5 - mov r0, r10 - mov r1, r8 - movs r3, 0 - bl CopyToWindowPixelBuffer - mov r0, r8 - bl Free -_08111E0C: - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_08111E1C: .4byte 0x04000008 - thumb_func_end sub_8111D90 - thumb_func_start sub_8111E20 sub_8111E20: @ 8111E20 push {r4,lr} diff --git a/data/graphics/unknown_8456638.bin b/data/graphics/unknown_8456638.bin new file mode 100644 index 000000000..53ea8cfb8 --- /dev/null +++ b/data/graphics/unknown_8456638.bin @@ -0,0 +1 @@ +»»»»ÌÌÌÌÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÌÌÌÌ»»»»
\ No newline at end of file diff --git a/data/quest_log.s b/data/quest_log.s index c2e776414..c7956f82d 100644 --- a/data/quest_log.s +++ b/data/quest_log.s @@ -1,12 +1,6 @@ .section .rodata .align 2, 0 -gUnknown_8456638:: @ 8456638 - .incbin "baserom.gba", 0x456638, 0x60 - -gUnknown_8456698:: @ 8456698 - .incbin "baserom.gba", 0x456698, 0x4 - gUnknown_845669C:: @ 845669C .incbin "baserom.gba", 0x45669C, 0x8 diff --git a/src/quest_log.c b/src/quest_log.c index 8131d0573..4cf7e6c95 100644 --- a/src/quest_log.c +++ b/src/quest_log.c @@ -79,6 +79,7 @@ void sub_8111AD8(void); void sub_8111B80(void); u8 sub_8111BD4(void); void sub_8111D10(void); +void sub_8111D90(u8); void sub_8111E20(void); void sub_8111E64(s8); bool8 sub_8111F60(void); @@ -111,6 +112,10 @@ const struct WindowTemplate gUnknown_845661C[3] = { const struct TextColor gUnknown_8456634 = {15, 1, 12}; +const u16 gUnknown_8456638[] = INCBIN_U16("data/graphics/unknown_8456638.bin"); + +const u8 gUnknown_8456698[] = {17, 10, 3}; + void sub_8110840(void * a0) { size_t r1 = (void *)gSaveBlock1Ptr - a0; @@ -1099,3 +1104,57 @@ void sub_8111CF0(void) if (gUnknown_203ADFA == 2) sub_8111070(gUnknown_203ADF9); } + +void sub_8111D10(void) +{ + u16 i; + u8 count = 0; + + for (i = 0; i < 0x100 && gStringVar4[i] != EOS; i++) + { + if (gStringVar4[i] == CHAR_NEWLINE) + count++; + } + + PutWindowTilemap(gUnknown_203ADFE[2]); + sub_8111D90(gUnknown_203ADFE[2]); + AddTextPrinterParametrized2(gUnknown_203ADFE[2], 2, 2, gUnknown_8456698[count], 1, 0, &gUnknown_8456634, 0, gStringVar4); + schedule_bg_copy_tilemap_to_vram(0); +} + +void sub_8111D90(u8 a0) +{ + const u16 * src = gUnknown_8456638; + u16 * buffer = Alloc(0x1680); + u8 i, j, y; + + if (buffer) + { + for (i = 0; i < 6; i++) + { + switch (i) + { + default: + y = 1; + break; + case 0: + y = 0; + break; + case 5: + y = 2; + break; + } + + // r6 = y * 32 + // r5 = 2 * (i % 16) + // r4 = j + for (j = 0; j < 30; j++) + { + CpuCopy32(src + 16 * y, buffer + 16 * (2 * (15 * i) + j), 32); + } + } + + CopyToWindowPixelBuffer(a0, (const u8 *)buffer, 0x1680, 0); + Free(buffer); + } +} |