summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPikalaxALT <pikalaxalt@gmail.com>2019-05-19 14:36:55 -0400
committerPikalaxALT <pikalaxalt@gmail.com>2019-05-19 14:36:55 -0400
commitb5d753383f0907e2c18222723a862446442bd7a4 (patch)
tree48bdbdd08b29931636325424c7fbfd58bbeb8cbf
parent11c9d97898f2ddaa4170271f38c200618eba6b7c (diff)
braille_text
-rw-r--r--asm/braille_text.s587
-rw-r--r--data/data_8468C98.s6
-rw-r--r--data/graphics/fonts/font6.pngbin0 -> 220 bytes
-rw-r--r--include/window.h2
-rw-r--r--ld_script.txt3
-rw-r--r--src/braille_text.c222
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
new file mode 100644
index 000000000..cb4451bc2
--- /dev/null
+++ b/data/graphics/fonts/font6.png
Binary files differ
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;
+}