diff options
author | PikalaxALT <pikalaxalt@gmail.com> | 2019-05-19 14:36:55 -0400 |
---|---|---|
committer | PikalaxALT <pikalaxalt@gmail.com> | 2019-05-19 14:36:55 -0400 |
commit | b5d753383f0907e2c18222723a862446442bd7a4 (patch) | |
tree | 48bdbdd08b29931636325424c7fbfd58bbeb8cbf | |
parent | 11c9d97898f2ddaa4170271f38c200618eba6b7c (diff) |
braille_text
-rw-r--r-- | asm/braille_text.s | 587 | ||||
-rw-r--r-- | data/data_8468C98.s | 6 | ||||
-rw-r--r-- | data/graphics/fonts/font6.png | bin | 0 -> 220 bytes | |||
-rw-r--r-- | include/window.h | 2 | ||||
-rw-r--r-- | ld_script.txt | 3 | ||||
-rw-r--r-- | src/braille_text.c | 222 |
6 files changed, 226 insertions, 594 deletions
diff --git a/asm/braille_text.s b/asm/braille_text.s index 8297df7e7..2428f2984 100644 --- a/asm/braille_text.s +++ b/asm/braille_text.s @@ -5,591 +5,4 @@ .text - thumb_func_start Font6Func -Font6Func: @ 814F884 - push {r4-r6,lr} - adds r6, r0, 0 - adds r4, r6, 0 - adds r4, 0x14 - ldrb r0, [r6, 0x1C] - cmp r0, 0x6 - bls _0814F894 - b _0814FC94 -_0814F894: - lsls r0, 2 - ldr r1, _0814F8A0 @ =_0814F8A4 - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_0814F8A0: .4byte _0814F8A4 - .align 2, 0 -_0814F8A4: - .4byte _0814F8C0 - .4byte _0814FB88 - .4byte _0814FB9A - .4byte _0814FBC4 - .4byte _0814FBFC - .4byte _0814FC70 - .4byte _0814FC82 -_0814F8C0: - ldr r2, _0814F914 @ =gMain - ldrh r1, [r2, 0x2C] - movs r0, 0x3 - ands r0, r1 - cmp r0, 0 - beq _0814F8DA - ldrb r1, [r4] - movs r0, 0x10 - ands r0, r1 - cmp r0, 0 - beq _0814F8DA - movs r0, 0 - strb r0, [r6, 0x1E] -_0814F8DA: - ldrb r1, [r6, 0x1E] - cmp r1, 0 - beq _0814F91C - ldrb r0, [r6, 0x1D] - cmp r0, 0 - beq _0814F91C - subs r0, r1, 0x1 - strb r0, [r6, 0x1E] - ldr r0, _0814F918 @ =gTextFlags - ldrb r1, [r0] - movs r0, 0x1 - ands r0, r1 - cmp r0, 0 - bne _0814F8F8 - b _0814FB42 -_0814F8F8: - ldrh r1, [r2, 0x2E] - movs r0, 0x3 - ands r0, r1 - cmp r0, 0 - bne _0814F904 - b _0814FB42 -_0814F904: - ldrb r0, [r4] - movs r1, 0x10 - orrs r0, r1 - strb r0, [r4] - movs r0, 0 - strb r0, [r6, 0x1E] - b _0814FB42 - .align 2, 0 -_0814F914: .4byte gMain -_0814F918: .4byte gTextFlags -_0814F91C: - ldr r2, _0814F92C @ =gTextFlags - ldrb r1, [r2] - movs r0, 0x4 - ands r0, r1 - cmp r0, 0 - beq _0814F930 - movs r0, 0x1 - b _0814F932 - .align 2, 0 -_0814F92C: .4byte gTextFlags -_0814F930: - ldrb r0, [r6, 0x1D] -_0814F932: - strb r0, [r6, 0x1E] - ldr r0, [r6] - ldrb r3, [r0] - adds r0, 0x1 - str r0, [r6] - adds r0, r3, 0 - subs r0, 0xF8 - cmp r0, 0x7 - bls _0814F946 - b _0814FB62 -_0814F946: - lsls r0, 2 - ldr r1, _0814F950 @ =_0814F954 - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_0814F950: .4byte _0814F954 - .align 2, 0 -_0814F954: - .4byte _0814FB58 - .4byte _0814FB46 - .4byte _0814FB38 - .4byte _0814FB34 - .4byte _0814F9A2 - .4byte _0814F99C - .4byte _0814F974 - .4byte _0814FC94 -_0814F974: - ldrb r0, [r6, 0x6] - strb r0, [r6, 0x8] - ldrb r1, [r6, 0x5] - ldr r0, _0814F998 @ =gFonts - ldr r2, [r0] - lsls r0, r1, 1 - adds r0, r1 - lsls r0, 2 - adds r0, r2 - ldrb r1, [r6, 0xB] - ldrb r0, [r0, 0x5] - adds r1, r0 - ldrb r0, [r6, 0x9] - adds r0, r1 - strb r0, [r6, 0x9] -_0814F992: - movs r0, 0x2 - b _0814FC96 - .align 2, 0 -_0814F998: .4byte gFonts -_0814F99C: - ldr r0, [r6] - adds r0, 0x1 - b _0814FAF8 -_0814F9A2: - ldr r0, [r6] - ldrb r3, [r0] - adds r0, 0x1 - str r0, [r6] - subs r0, r3, 0x1 - cmp r0, 0xF - bls _0814F9B2 - b _0814FB62 -_0814F9B2: - lsls r0, 2 - ldr r1, _0814F9BC @ =_0814F9C0 - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_0814F9BC: .4byte _0814F9C0 - .align 2, 0 -_0814F9C0: - .4byte _0814FA00 - .4byte _0814FA22 - .4byte _0814FA46 - .4byte _0814FA60 - .4byte _0814FAAC - .4byte _0814FAB2 - .4byte _0814F992 - .4byte _0814FACC - .4byte _0814FADC - .4byte _0814FAF0 - .4byte _0814FAF4 - .4byte _0814FAFC - .4byte _0814FB06 - .4byte _0814FB12 - .4byte _0814FB22 - .4byte _0814FAF4 -_0814FA00: - ldr r2, [r6] - ldrb r1, [r2] - lsls r1, 4 - ldrb r3, [r6, 0xC] - movs r0, 0xF - ands r0, r3 - orrs r0, r1 - strb r0, [r6, 0xC] - adds r2, 0x1 - str r2, [r6] - lsls r0, 24 - lsrs r0, 28 - ldrb r2, [r6, 0xD] - lsls r1, r2, 28 - lsrs r1, 28 - lsrs r2, 4 - b _0814FAA6 -_0814FA22: - ldr r1, [r6] - ldrb r2, [r1] - movs r0, 0xF - ands r0, r2 - ldrb r3, [r6, 0xD] - movs r2, 0x10 - negs r2, r2 - ands r2, r3 - orrs r2, r0 - strb r2, [r6, 0xD] - adds r1, 0x1 - str r1, [r6] - ldrb r0, [r6, 0xC] - lsrs r0, 4 - lsls r1, r2, 28 - lsrs r1, 28 - lsrs r2, 4 - b _0814FAA6 -_0814FA46: - ldr r1, [r6] - ldrb r0, [r1] - lsls r0, 4 - ldrb r3, [r6, 0xD] - movs r2, 0xF - ands r2, r3 - orrs r2, r0 - strb r2, [r6, 0xD] - adds r1, 0x1 - str r1, [r6] - ldrb r0, [r6, 0xC] - lsrs r0, 4 - b _0814FA9E -_0814FA60: - ldr r3, [r6] - ldrb r1, [r3] - lsls r1, 4 - ldrb r4, [r6, 0xC] - movs r2, 0xF - adds r0, r2, 0 - ands r0, r4 - orrs r0, r1 - strb r0, [r6, 0xC] - adds r5, r3, 0x1 - str r5, [r6] - ldrb r3, [r3, 0x1] - adds r1, r2, 0 - ands r1, r3 - ldrb r4, [r6, 0xD] - movs r3, 0x10 - negs r3, r3 - ands r3, r4 - orrs r3, r1 - strb r3, [r6, 0xD] - adds r4, r5, 0x1 - str r4, [r6] - ldrb r1, [r5, 0x1] - lsls r1, 4 - ands r2, r3 - orrs r2, r1 - strb r2, [r6, 0xD] - adds r4, 0x1 - str r4, [r6] - lsls r0, 24 - lsrs r0, 28 -_0814FA9E: - lsls r1, r2, 28 - lsrs r1, 28 - lsls r2, 24 - lsrs r2, 28 -_0814FAA6: - bl GenerateFontHalfRowLookupTable - b _0814F992 -_0814FAAC: - ldr r0, [r6] - adds r0, 0x1 - b _0814FAF8 -_0814FAB2: - ldr r0, [r6] - ldrb r0, [r0] - movs r1, 0xF - ands r1, r0 - ldrb r2, [r4] - movs r0, 0x10 - negs r0, r0 - ands r0, r2 - orrs r0, r1 - strb r0, [r4] - ldr r0, [r6] - adds r0, 0x1 - b _0814FAF8 -_0814FACC: - ldr r0, [r6] - ldrb r1, [r0] - strb r1, [r6, 0x1E] - adds r0, 0x1 - str r0, [r6] - movs r0, 0x6 - strb r0, [r6, 0x1C] - b _0814F992 -_0814FADC: - movs r0, 0x1 - strb r0, [r6, 0x1C] - ldrb r1, [r2] - movs r0, 0x4 - ands r0, r1 - cmp r0, 0 - beq _0814FB42 - movs r0, 0 - strb r0, [r4, 0x2] - b _0814FB42 -_0814FAF0: - movs r0, 0x5 - b _0814FC7E -_0814FAF4: - ldr r0, [r6] - adds r0, 0x2 -_0814FAF8: - str r0, [r6] - b _0814F992 -_0814FAFC: - ldr r1, [r6] - adds r0, r1, 0x1 - str r0, [r6] - ldrb r3, [r1, 0x1] - b _0814FB62 -_0814FB06: - ldr r1, [r6] - ldrb r0, [r1] - ldrb r2, [r6, 0x6] - adds r0, r2 - strb r0, [r6, 0x8] - b _0814FB1C -_0814FB12: - ldr r1, [r6] - ldrb r0, [r1] - ldrb r2, [r6, 0x7] - adds r0, r2 - strb r0, [r6, 0x9] -_0814FB1C: - adds r1, 0x1 - str r1, [r6] - b _0814F992 -_0814FB22: - ldrb r0, [r6, 0x4] - ldrb r2, [r6, 0xD] - lsls r2, 28 - lsrs r1, r2, 4 - orrs r1, r2 - lsrs r1, 24 - bl FillWindowPixelBuffer - b _0814F992 -_0814FB34: - movs r0, 0x2 - b _0814FB3A -_0814FB38: - movs r0, 0x3 -_0814FB3A: - strb r0, [r6, 0x1C] - adds r0, r6, 0 - bl TextPrinterInitDownArrowCounters -_0814FB42: - movs r0, 0x3 - b _0814FC96 -_0814FB46: - ldr r0, [r6] - ldrb r3, [r0] - movs r2, 0x80 - lsls r2, 1 - adds r1, r2, 0 - orrs r3, r1 - adds r0, 0x1 - str r0, [r6] - b _0814FB62 -_0814FB58: - ldr r0, [r6] - adds r0, 0x1 - str r0, [r6] - movs r0, 0 - b _0814FC96 -_0814FB62: - adds r0, r3, 0 - bl DecompressGlyphFont6 - adds r0, r6, 0 - bl CopyGlyphToWindow - ldr r0, _0814FB84 @ =gGlyphInfo - adds r0, 0x80 - ldrb r1, [r6, 0xA] - ldrb r0, [r0] - adds r1, r0 - ldrb r0, [r6, 0x8] - adds r0, r1 - strb r0, [r6, 0x8] - movs r0, 0 - b _0814FC96 - .align 2, 0 -_0814FB84: .4byte gGlyphInfo -_0814FB88: - adds r0, r6, 0 - bl TextPrinterWait - lsls r0, 16 - cmp r0, 0 - beq _0814FB42 - movs r0, 0 - strb r0, [r6, 0x1C] - b _0814FB42 -_0814FB9A: - adds r0, r6, 0 - bl TextPrinterWaitWithDownArrow - lsls r0, 16 - cmp r0, 0 - beq _0814FB42 - ldrb r0, [r6, 0x4] - ldrb r2, [r6, 0xD] - lsls r2, 28 - lsrs r1, r2, 4 - orrs r1, r2 - lsrs r1, 24 - bl FillWindowPixelBuffer - ldrb r0, [r6, 0x6] - movs r1, 0 - strb r0, [r6, 0x8] - ldrb r0, [r6, 0x7] - strb r0, [r6, 0x9] - strb r1, [r6, 0x1C] - b _0814FB42 -_0814FBC4: - adds r0, r6, 0 - bl TextPrinterWaitWithDownArrow - lsls r0, 16 - cmp r0, 0 - beq _0814FB42 - adds r0, r6, 0 - bl TextPrinterClearDownArrow - ldrb r1, [r6, 0x5] - ldr r0, _0814FBF8 @ =gFonts - ldr r2, [r0] - lsls r0, r1, 1 - adds r0, r1 - lsls r0, 2 - adds r0, r2 - ldrb r1, [r6, 0xB] - ldrb r0, [r0, 0x5] - adds r1, r0 - strb r1, [r6, 0x1F] - ldrb r0, [r6, 0x6] - strb r0, [r6, 0x8] - movs r0, 0x4 - strb r0, [r6, 0x1C] - b _0814FB42 - .align 2, 0 -_0814FBF8: .4byte gFonts -_0814FBFC: - ldrb r2, [r6, 0x1F] - cmp r2, 0 - beq _0814FC6C - ldr r4, _0814FC30 @ =gUnknown_846FB08 - ldr r5, _0814FC34 @ =gSaveBlock2Ptr - ldr r0, [r5] - ldrb r0, [r0, 0x14] - lsls r1, r0, 29 - lsrs r0, r1, 29 - adds r0, r4 - ldrb r0, [r0] - cmp r2, r0 - bcs _0814FC38 - ldrb r0, [r6, 0x4] - ldrb r1, [r6, 0xD] - lsls r1, 28 - lsrs r3, r1, 4 - orrs r3, r1 - lsrs r3, 24 - movs r1, 0 - bl ScrollWindow - movs r0, 0 - strb r0, [r6, 0x1F] - b _0814FC62 - .align 2, 0 -_0814FC30: .4byte gUnknown_846FB08 -_0814FC34: .4byte gSaveBlock2Ptr -_0814FC38: - ldrb r0, [r6, 0x4] - lsrs r1, 29 - adds r1, r4 - ldrb r2, [r1] - ldrb r1, [r6, 0xD] - lsls r1, 28 - lsrs r3, r1, 4 - orrs r3, r1 - lsrs r3, 24 - movs r1, 0 - bl ScrollWindow - ldr r0, [r5] - ldrb r0, [r0, 0x14] - lsls r0, 29 - lsrs r0, 29 - adds r0, r4 - ldrb r1, [r6, 0x1F] - ldrb r0, [r0] - subs r1, r0 - strb r1, [r6, 0x1F] -_0814FC62: - ldrb r0, [r6, 0x4] - movs r1, 0x2 - bl CopyWindowToVram - b _0814FB42 -_0814FC6C: - strb r2, [r6, 0x1C] - b _0814FB42 -_0814FC70: - bl IsSEPlaying - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0 - beq _0814FC7E - b _0814FB42 -_0814FC7E: - strb r0, [r6, 0x1C] - b _0814FB42 -_0814FC82: - ldrb r0, [r6, 0x1E] - adds r1, r0, 0 - cmp r1, 0 - beq _0814FC90 - subs r0, 0x1 - strb r0, [r6, 0x1E] - b _0814FB42 -_0814FC90: - strb r1, [r6, 0x1C] - b _0814FB42 -_0814FC94: - movs r0, 0x1 -_0814FC96: - pop {r4-r6} - pop {r1} - bx r1 - thumb_func_end Font6Func - - thumb_func_start DecompressGlyphFont6 -DecompressGlyphFont6: @ 814FC9C - push {r4,r5,lr} - lsls r0, 16 - lsrs r2, r0, 19 - lsls r2, 9 - movs r1, 0xE0 - lsls r1, 11 - ands r1, r0 - lsrs r1, 11 - ldr r0, _0814FCF8 @ =gUnknown_846FB0C - adds r1, r0 - adds r5, r2, r1 - ldr r4, _0814FCFC @ =gGlyphInfo - adds r0, r5, 0 - adds r1, r4, 0 - bl DecompressGlyphTile - adds r0, r5, 0 - adds r0, 0x10 - adds r1, r4, 0 - adds r1, 0x20 - bl DecompressGlyphTile - movs r1, 0x80 - lsls r1, 1 - adds r0, r5, r1 - adds r1, r4, 0 - adds r1, 0x40 - bl DecompressGlyphTile - movs r1, 0x88 - lsls r1, 1 - adds r0, r5, r1 - adds r1, r4, 0 - adds r1, 0x60 - bl DecompressGlyphTile - adds r0, r4, 0 - adds r0, 0x80 - movs r1, 0x10 - strb r1, [r0] - adds r0, 0x1 - strb r1, [r0] - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_0814FCF8: .4byte gUnknown_846FB0C -_0814FCFC: .4byte gGlyphInfo - thumb_func_end DecompressGlyphFont6 - - thumb_func_start GetGlyphWidthFont6 -GetGlyphWidthFont6: @ 814FD00 - movs r0, 0x10 - bx lr - thumb_func_end GetGlyphWidthFont6 - .align 2, 0 @ Don't pad with nop. diff --git a/data/data_8468C98.s b/data/data_8468C98.s index 7f84b6829..abb5c5cc2 100644 --- a/data/data_8468C98.s +++ b/data/data_8468C98.s @@ -313,9 +313,3 @@ gUnknown_846FAAC:: @ 846FAAC gUnknown_846FAC0:: @ 846FAC0 .incbin "baserom.gba", 0x46FAC0, 0x48 - -gUnknown_846FB08:: @ 846FB08 - .incbin "baserom.gba", 0x46FB08, 0x4 - -gUnknown_846FB0C:: @ 846FB0C - .incbin "baserom.gba", 0x46FB0C, 0x1000 diff --git a/data/graphics/fonts/font6.png b/data/graphics/fonts/font6.png Binary files differnew file mode 100644 index 000000000..cb4451bc2 --- /dev/null +++ b/data/graphics/fonts/font6.png diff --git a/include/window.h b/include/window.h index 8edaf73ae..d3ea8fbf0 100644 --- a/include/window.h +++ b/include/window.h @@ -3,6 +3,8 @@ #include "global.h" +#define PIXEL_FILL(num) ((num) | ((num) << 4)) + enum { WINDOW_PRIORITY, diff --git a/ld_script.txt b/ld_script.txt index 159b5d75a..c499b5947 100644 --- a/ld_script.txt +++ b/ld_script.txt @@ -252,7 +252,7 @@ SECTIONS { asm/berry_crush_2.o(.text); asm/berry_crush_3.o(.text); asm/wireless_communication_status_screen.o(.text); - asm/braille_text.o(.text); + src/braille_text.o(.text); asm/text_window.o(.text); src/quest_log_8150454.o(.text); asm/dodrio_berry_picking.o(.text); @@ -428,6 +428,7 @@ SECTIONS { . = ALIGN(4); src/seagallop.o(.rodata); data/data_8468C98.o(.rodata); + src/braille_text.o(.rodata); src/text_window_graphics.o(.rodata); src/quest_log_8150454.o(.rodata); data/data_8471F00.o(.rodata); diff --git a/src/braille_text.c b/src/braille_text.c new file mode 100644 index 000000000..047fcab08 --- /dev/null +++ b/src/braille_text.c @@ -0,0 +1,222 @@ +#include "global.h" +#include "main.h" +#include "window.h" +#include "text.h" +#include "sound.h" + +extern u8 gGlyphInfo[]; + +ALIGNED(4) +static const u8 gUnknown_846FB08[] = {1, 2, 4}; +static const u16 sFont6BrailleGlyphs[] = INCBIN_U16("data/graphics/fonts/font6.fwjpnfont"); + +static void DecompressGlyphFont6(u16); + +u16 Font6Func(struct TextPrinter *textPrinter) +{ + u16 char_; + struct TextPrinterSubStruct *sub; + + sub = &textPrinter->sub_union.sub; + switch (textPrinter->state) + { + case 0: + if (gMain.heldKeys & (A_BUTTON | B_BUTTON) && sub->font_type_upper) + { + textPrinter->delayCounter = 0; + } + if (textPrinter->delayCounter && textPrinter->text_speed) + { + textPrinter->delayCounter --; + if (gTextFlags.canABSpeedUpPrint && gMain.newKeys & (A_BUTTON | B_BUTTON)) + { + sub->font_type_upper = TRUE; + textPrinter->delayCounter = 0; + } + return 3; + } + if (gTextFlags.autoScroll) + { + textPrinter->delayCounter = 1; + } + else + { + textPrinter->delayCounter = textPrinter->text_speed; + } + char_ = *textPrinter->subPrinter.currentChar++; + switch (char_) + { + case EOS: + return 1; + case CHAR_NEWLINE: + textPrinter->subPrinter.currentX = textPrinter->subPrinter.x; + textPrinter->subPrinter.currentY += gFonts[textPrinter->subPrinter.fontId].maxLetterHeight + textPrinter->subPrinter.lineSpacing; + return 2; + case PLACEHOLDER_BEGIN: + textPrinter->subPrinter.currentChar++; + return 2; + case EXT_CTRL_CODE_BEGIN: + char_ = *textPrinter->subPrinter.currentChar++; + switch (char_) + { + case 1: + textPrinter->subPrinter.fgColor = *textPrinter->subPrinter.currentChar++; + GenerateFontHalfRowLookupTable(textPrinter->subPrinter.fgColor, textPrinter->subPrinter.bgColor, textPrinter->subPrinter.shadowColor); + return 2; + case 2: + textPrinter->subPrinter.bgColor = *textPrinter->subPrinter.currentChar++; + GenerateFontHalfRowLookupTable(textPrinter->subPrinter.fgColor, textPrinter->subPrinter.bgColor, textPrinter->subPrinter.shadowColor); + return 2; + case 3: + textPrinter->subPrinter.shadowColor = *textPrinter->subPrinter.currentChar++; + GenerateFontHalfRowLookupTable(textPrinter->subPrinter.fgColor, textPrinter->subPrinter.bgColor, textPrinter->subPrinter.shadowColor); + return 2; + case 4: + textPrinter->subPrinter.fgColor = *textPrinter->subPrinter.currentChar; + textPrinter->subPrinter.bgColor = *++textPrinter->subPrinter.currentChar; + textPrinter->subPrinter.shadowColor = *++textPrinter->subPrinter.currentChar; + textPrinter->subPrinter.currentChar++; + + GenerateFontHalfRowLookupTable(textPrinter->subPrinter.fgColor, textPrinter->subPrinter.bgColor, textPrinter->subPrinter.shadowColor); + return 2; + case 5: + textPrinter->subPrinter.currentChar++; + return 2; + case 6: + sub->font_type = *textPrinter->subPrinter.currentChar; + textPrinter->subPrinter.currentChar++; + return 2; + case 7: + return 2; + case 8: + textPrinter->delayCounter = *textPrinter->subPrinter.currentChar++; + textPrinter->state = 6; + return 2; + case 9: + textPrinter->state = 1; + if (gTextFlags.autoScroll) + { + sub->frames_visible_counter = 0; + } + return 3; + case 10: + textPrinter->state = 5; + return 3; + case 11: + case 16: + textPrinter->subPrinter.currentChar += 2; + return 2; + case 12: + char_ = *++textPrinter->subPrinter.currentChar; + break; + case 13: + textPrinter->subPrinter.currentX = textPrinter->subPrinter.x + *textPrinter->subPrinter.currentChar++; + return 2; + case 14: + textPrinter->subPrinter.currentY = textPrinter->subPrinter.y + *textPrinter->subPrinter.currentChar++; + return 2; + case 15: + FillWindowPixelBuffer(textPrinter->subPrinter.windowId, PIXEL_FILL(textPrinter->subPrinter.bgColor)); + return 2; + } + break; + case CHAR_PROMPT_CLEAR: + textPrinter->state = 2; + TextPrinterInitDownArrowCounters(textPrinter); + return 3; + case CHAR_PROMPT_SCROLL: + textPrinter->state = 3; + TextPrinterInitDownArrowCounters(textPrinter); + return 3; + case 0xF9: + char_ = *textPrinter->subPrinter.currentChar++| 0x100; + break; + case 0xF8: + textPrinter->subPrinter.currentChar++; + return 0; + } + DecompressGlyphFont6(char_); + CopyGlyphToWindow(textPrinter); + textPrinter->subPrinter.currentX += gGlyphInfo[0x80] + textPrinter->subPrinter.letterSpacing; + return 0; + case 1: + if (TextPrinterWait(textPrinter)) + { + textPrinter->state = 0; + } + return 3; + case 2: + if (TextPrinterWaitWithDownArrow(textPrinter)) + { + FillWindowPixelBuffer(textPrinter->subPrinter.windowId, PIXEL_FILL(textPrinter->subPrinter.bgColor)); + textPrinter->subPrinter.currentX = textPrinter->subPrinter.x; + textPrinter->subPrinter.currentY = textPrinter->subPrinter.y; + textPrinter->state = 0; + } + return 3; + case 3: + if (TextPrinterWaitWithDownArrow(textPrinter)) + { + TextPrinterClearDownArrow(textPrinter); + textPrinter->scrollDistance = gFonts[textPrinter->subPrinter.fontId].maxLetterHeight + textPrinter->subPrinter.lineSpacing; + textPrinter->subPrinter.currentX = textPrinter->subPrinter.x; + textPrinter->state = 4; + } + return 3; + case 4: + if (textPrinter->scrollDistance) + { + if (textPrinter->scrollDistance < gUnknown_846FB08[gSaveBlock2Ptr->optionsTextSpeed]) + { + ScrollWindow(textPrinter->subPrinter.windowId, 0, textPrinter->scrollDistance, PIXEL_FILL(textPrinter->subPrinter.bgColor)); + textPrinter->scrollDistance = 0; + } + else + { + ScrollWindow(textPrinter->subPrinter.windowId, 0, gUnknown_846FB08[gSaveBlock2Ptr->optionsTextSpeed], PIXEL_FILL(textPrinter->subPrinter.bgColor)); + textPrinter->scrollDistance -= gUnknown_846FB08[gSaveBlock2Ptr->optionsTextSpeed]; + } + CopyWindowToVram(textPrinter->subPrinter.windowId, 2); + } + else + { + textPrinter->state = 0; + } + return 3; + case 5: + if (!IsSEPlaying()) + { + textPrinter->state = 0; + } + return 3; + case 6: + if (textPrinter->delayCounter) + { + textPrinter->delayCounter --; + } + else + { + textPrinter->state = 0; + } + return 3; + } + return 1; +} + +static void DecompressGlyphFont6(u16 glyph) +{ + const u16 *glyphs; + + glyphs = sFont6BrailleGlyphs + 0x100 * (glyph / 8) + 0x10 * (glyph % 8); + DecompressGlyphTile(glyphs, (u16 *)gGlyphInfo); + DecompressGlyphTile(glyphs + 0x8, (u16 *)(gGlyphInfo + 0x20)); + DecompressGlyphTile(glyphs + 0x80, (u16 *)(gGlyphInfo + 0x40)); + DecompressGlyphTile(glyphs + 0x88, (u16 *)(gGlyphInfo + 0x60)); + gGlyphInfo[0x80] = 0x10; + gGlyphInfo[0x81] = 0x10; +} + +u32 GetGlyphWidthFont6(u16 font_type, bool32 isJapanese) +{ + return 0x10; +} |