summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authornotyourav <65437533+notyourav@users.noreply.github.com>2020-12-03 17:58:53 -0800
committerGitHub <noreply@github.com>2020-12-03 20:58:53 -0500
commit294858f751d8f33cc453116a8d8adb8844ddd8a8 (patch)
tree02080c192a7e2379fd1d204888d5493c239c66a3
parente27ed1c55d971c154cb7265d427cb91512156a55 (diff)
JSystem Font classes, SComponent cBgW (#14)
* c_bg_w.cpp OK * JUTFont and JUTResFont partially implemented Co-authored-by: notyouraveragehooman <65437533+notyouraveragehooman@users.noreply.github.com> Co-authored-by: Pheenoh <pheenoh@gmail.com>
-rw-r--r--asm/J2DGraph/J2DMatBlock.s10
-rw-r--r--asm/J2DGraph/J2DPrint.s8
-rw-r--r--asm/J2DGraph/J2DTextBox.s4
-rw-r--r--asm/JFramework/JFWSystem.s2
-rw-r--r--asm/JUtility/JUTAssert.s6
-rw-r--r--asm/JUtility/JUTCacheFont.s24
-rw-r--r--asm/JUtility/JUTConsole.s10
-rw-r--r--asm/JUtility/JUTDbPrint.s4
-rw-r--r--asm/JUtility/JUTFont.s157
-rw-r--r--asm/JUtility/JUTResFont.s1253
-rw-r--r--asm/SComponent/c/bg/c_bg_w.s65
-rw-r--r--asm/d/a/d_a_npc.s2
-rw-r--r--asm/d/bg/d_bg_s.s16
-rw-r--r--asm/d/bg/s/movebg/d_bg_s_movebg_actor.s2
-rw-r--r--asm/d/error/d_error_msg.s4
-rw-r--r--asm/m/Do/m_Do_ext.s4
-rw-r--r--include/JSystem/JUtility/JUTFont/JUTFont.h65
-rw-r--r--include/JSystem/JUtility/JUTFont/asm/drawString_size_scale.s75
-rw-r--r--include/JSystem/JUtility/JUTResFont.h58
-rw-r--r--include/JSystem/JUtility/asm/JUTResFont__convertSjis.s38
-rw-r--r--include/JSystem/JUtility/asm/JUTResFont__countBlock.s71
-rw-r--r--include/JSystem/JUtility/asm/JUTResFont__drawChar_scale.s270
-rw-r--r--include/JSystem/JUtility/asm/JUTResFont__getFontCode.s110
-rw-r--r--include/JSystem/JUtility/asm/JUTResFont__getWidthEntry.s45
-rw-r--r--include/JSystem/JUtility/asm/JUTResFont__loadImage.s95
-rw-r--r--include/JSystem/JUtility/asm/JUTResFont__protected_initiate.s73
-rw-r--r--include/JSystem/JUtility/asm/JUTResFont__setBlock.s92
-rw-r--r--include/SComponent/c_bg_w.h25
-rw-r--r--include/functions.h28
-rw-r--r--include/variables.h3
-rw-r--r--ldscript.lcf9
-rw-r--r--libs/JSystem/JUtility/JUTFont.cpp41
-rw-r--r--libs/JSystem/JUtility/JUTResFont.cpp229
-rw-r--r--libs/SSystem/SComponent/c_bg_w.cpp35
-rw-r--r--obj_files.mk4
35 files changed, 1411 insertions, 1526 deletions
diff --git a/asm/J2DGraph/J2DMatBlock.s b/asm/J2DGraph/J2DMatBlock.s
index 699cefd37a..88d86c1c25 100644
--- a/asm/J2DGraph/J2DMatBlock.s
+++ b/asm/J2DGraph/J2DMatBlock.s
@@ -986,7 +986,7 @@ lbl_802EC14C:
/* 802EC158 002E9098 41 82 00 14 */ beq lbl_802EC16C
/* 802EC15C 002E909C 7F C4 F3 78 */ mr r4, r30
/* 802EC160 002E90A0 38 A0 00 00 */ li r5, 0
-/* 802EC164 002E90A4 4B FF 2E 31 */ bl JUTResFont_X1_
+/* 802EC164 002E90A4 4B FF 2E 31 */ bl __ct__10JUTResFontFPCcP7JKRHeap
/* 802EC168 002E90A8 7C 7F 1B 78 */ mr r31, r3
lbl_802EC16C:
/* 802EC16C 002E90AC 28 1F 00 00 */ cmplwi r31, 0
@@ -2232,7 +2232,7 @@ lbl_802ED318:
/* 802ED324 002EA264 41 82 00 14 */ beq lbl_802ED338
/* 802ED328 002EA268 7F C4 F3 78 */ mr r4, r30
/* 802ED32C 002EA26C 38 A0 00 00 */ li r5, 0
-/* 802ED330 002EA270 4B FF 1C 65 */ bl JUTResFont_X1_
+/* 802ED330 002EA270 4B FF 1C 65 */ bl __ct__10JUTResFontFPCcP7JKRHeap
/* 802ED334 002EA274 7C 7F 1B 78 */ mr r31, r3
lbl_802ED338:
/* 802ED338 002EA278 28 1F 00 00 */ cmplwi r31, 0
@@ -3693,7 +3693,7 @@ lbl_802EE7C0:
/* 802EE7CC 002EB70C 41 82 00 14 */ beq lbl_802EE7E0
/* 802EE7D0 002EB710 7F C4 F3 78 */ mr r4, r30
/* 802EE7D4 002EB714 38 A0 00 00 */ li r5, 0
-/* 802EE7D8 002EB718 4B FF 07 BD */ bl JUTResFont_X1_
+/* 802EE7D8 002EB718 4B FF 07 BD */ bl __ct__10JUTResFontFPCcP7JKRHeap
/* 802EE7DC 002EB71C 7C 7F 1B 78 */ mr r31, r3
lbl_802EE7E0:
/* 802EE7E0 002EB720 28 1F 00 00 */ cmplwi r31, 0
@@ -5154,7 +5154,7 @@ lbl_802EFC68:
/* 802EFC74 002ECBB4 41 82 00 14 */ beq lbl_802EFC88
/* 802EFC78 002ECBB8 7F C4 F3 78 */ mr r4, r30
/* 802EFC7C 002ECBBC 38 A0 00 00 */ li r5, 0
-/* 802EFC80 002ECBC0 4B FE F3 15 */ bl JUTResFont_X1_
+/* 802EFC80 002ECBC0 4B FE F3 15 */ bl __ct__10JUTResFontFPCcP7JKRHeap
/* 802EFC84 002ECBC4 7C 7F 1B 78 */ mr r31, r3
lbl_802EFC88:
/* 802EFC88 002ECBC8 28 1F 00 00 */ cmplwi r31, 0
@@ -6604,7 +6604,7 @@ lbl_802F10E8:
/* 802F10F4 002EE034 41 82 00 14 */ beq lbl_802F1108
/* 802F10F8 002EE038 7F C4 F3 78 */ mr r4, r30
/* 802F10FC 002EE03C 38 A0 00 00 */ li r5, 0
-/* 802F1100 002EE040 4B FE DE 95 */ bl JUTResFont_X1_
+/* 802F1100 002EE040 4B FE DE 95 */ bl __ct__10JUTResFontFPCcP7JKRHeap
/* 802F1104 002EE044 7C 7F 1B 78 */ mr r31, r3
lbl_802F1108:
/* 802F1108 002EE048 28 1F 00 00 */ cmplwi r31, 0
diff --git a/asm/J2DGraph/J2DPrint.s b/asm/J2DGraph/J2DPrint.s
index 4f70c59051..623b7e8ca5 100644
--- a/asm/J2DGraph/J2DPrint.s
+++ b/asm/J2DGraph/J2DPrint.s
@@ -673,7 +673,7 @@ lbl_802F4C6C:
/* 802F4C7C 002F1BBC 80 74 00 04 */ lwz r3, 4(r20)
/* 802F4C80 002F1BC0 38 81 00 14 */ addi r4, r1, 0x14
/* 802F4C84 002F1BC4 38 A1 00 10 */ addi r5, r1, 0x10
-/* 802F4C88 002F1BC8 4B FE A1 3D */ bl JUTFont_NS_setGradColor
+/* 802F4C88 002F1BC8 4B FE A1 3D */ bl setGradColor__7JUTFontF6TColor6TColor
lbl_802F4C8C:
/* 802F4C8C 002F1BCC 3B 80 00 00 */ li r28, 0
/* 802F4C90 002F1BD0 80 74 00 04 */ lwz r3, 4(r20)
@@ -1415,7 +1415,7 @@ lbl_802F571C:
/* 802F572C 002F266C 80 7A 00 04 */ lwz r3, 4(r26)
/* 802F5730 002F2670 38 81 00 20 */ addi r4, r1, 0x20
/* 802F5734 002F2674 38 A1 00 1C */ addi r5, r1, 0x1c
-/* 802F5738 002F2678 4B FE 96 8D */ bl JUTFont_NS_setGradColor
+/* 802F5738 002F2678 4B FE 96 8D */ bl setGradColor__7JUTFontF6TColor6TColor
/* 802F573C 002F267C 48 00 01 F4 */ b lbl_802F5930
lbl_802F5740:
/* 802F5740 002F2680 7F 43 D3 78 */ mr r3, r26
@@ -1463,7 +1463,7 @@ lbl_802F57D4:
/* 802F57E4 002F2724 80 7A 00 04 */ lwz r3, 4(r26)
/* 802F57E8 002F2728 38 81 00 14 */ addi r4, r1, 0x14
/* 802F57EC 002F272C 38 A1 00 10 */ addi r5, r1, 0x10
-/* 802F57F0 002F2730 4B FE 95 D5 */ bl JUTFont_NS_setGradColor
+/* 802F57F0 002F2730 4B FE 95 D5 */ bl setGradColor__7JUTFontF6TColor6TColor
/* 802F57F4 002F2734 48 00 01 3C */ b lbl_802F5930
lbl_802F57F8:
/* 802F57F8 002F2738 7F 43 D3 78 */ mr r3, r26
@@ -1545,7 +1545,7 @@ lbl_802F5904:
/* 802F5914 002F2854 80 7A 00 04 */ lwz r3, 4(r26)
/* 802F5918 002F2858 38 81 00 0C */ addi r4, r1, 0xc
/* 802F591C 002F285C 38 A1 00 08 */ addi r5, r1, 8
-/* 802F5920 002F2860 4B FE 94 A5 */ bl JUTFont_NS_setGradColor
+/* 802F5920 002F2860 4B FE 94 A5 */ bl setGradColor__7JUTFontF6TColor6TColor
/* 802F5924 002F2864 48 00 00 0C */ b lbl_802F5930
lbl_802F5928:
/* 802F5928 002F2868 93 FB 00 00 */ stw r31, 0(r27)
diff --git a/asm/J2DGraph/J2DTextBox.s b/asm/J2DGraph/J2DTextBox.s
index 9c626ae3cb..c4a4365d24 100644
--- a/asm/J2DGraph/J2DTextBox.s
+++ b/asm/J2DGraph/J2DTextBox.s
@@ -424,7 +424,7 @@ J2DTextBox_NS_initiate:
/* 802FFC94 002FCBD4 41 82 00 14 */ beq lbl_802FFCA8
/* 802FFC98 002FCBD8 7F 44 D3 78 */ mr r4, r26
/* 802FFC9C 002FCBDC 38 A0 00 00 */ li r5, 0
-/* 802FFCA0 002FCBE0 4B FD F2 F5 */ bl JUTResFont_X1_
+/* 802FFCA0 002FCBE0 4B FD F2 F5 */ bl __ct__10JUTResFontFPCcP7JKRHeap
/* 802FFCA4 002FCBE4 7C 60 1B 78 */ mr r0, r3
lbl_802FFCA8:
/* 802FFCA8 002FCBE8 90 1B 01 00 */ stw r0, 0x100(r27)
@@ -600,7 +600,7 @@ J2DTextBox_NS_private_readStream:
/* 802FFF2C 002FCE6C 41 82 00 14 */ beq lbl_802FFF40
/* 802FFF30 002FCE70 7F 64 DB 78 */ mr r4, r27
/* 802FFF34 002FCE74 38 A0 00 00 */ li r5, 0
-/* 802FFF38 002FCE78 4B FD F0 5D */ bl JUTResFont_X1_
+/* 802FFF38 002FCE78 4B FD F0 5D */ bl __ct__10JUTResFontFPCcP7JKRHeap
/* 802FFF3C 002FCE7C 7C 60 1B 78 */ mr r0, r3
lbl_802FFF40:
/* 802FFF40 002FCE80 90 1C 01 00 */ stw r0, 0x100(r28)
diff --git a/asm/JFramework/JFWSystem.s b/asm/JFramework/JFWSystem.s
index 3f4743d982..f58e9ac3b6 100644
--- a/asm/JFramework/JFWSystem.s
+++ b/asm/JFramework/JFWSystem.s
@@ -80,7 +80,7 @@ lbl_80271DB4:
/* 80271DD8 0026ED18 41 82 00 14 */ beq lbl_80271DEC
/* 80271DDC 0026ED1C 80 8D 82 10 */ lwz r4, lbl_80450790-_SDA_BASE_(r13)
/* 80271DE0 0026ED20 38 A0 00 00 */ li r5, 0
-/* 80271DE4 0026ED24 48 06 D1 B1 */ bl JUTResFont_X1_
+/* 80271DE4 0026ED24 48 06 D1 B1 */ bl __ct__10JUTResFontFPCcP7JKRHeap
/* 80271DE8 0026ED28 7C 60 1B 78 */ mr r0, r3
lbl_80271DEC:
/* 80271DEC 0026ED2C 90 0D 8C 30 */ stw r0, lbl_804511B0-_SDA_BASE_(r13)
diff --git a/asm/JUtility/JUTAssert.s b/asm/JUtility/JUTAssert.s
index f928ade262..cd16a770c4 100644
--- a/asm/JUtility/JUTAssert.s
+++ b/asm/JUtility/JUTAssert.s
@@ -116,7 +116,7 @@ JUTAssertion_NS_flushMessage_dbPrint:
/* 802E4ADC 002E1A1C 90 01 00 0C */ stw r0, 0xc(r1)
/* 802E4AE0 002E1A20 7F E3 FB 78 */ mr r3, r31
/* 802E4AE4 002E1A24 38 81 00 0C */ addi r4, r1, 0xc
-/* 802E4AE8 002E1A28 4B FF A2 89 */ bl JUTFont_NS_setCharColor
+/* 802E4AE8 002E1A28 4B FF A2 89 */ bl setCharColor__7JUTFontF6TColor
/* 802E4AEC 002E1A2C 3C 60 80 43 */ lis r3, lbl_80434870@ha
/* 802E4AF0 002E1A30 38 63 48 70 */ addi r3, r3, lbl_80434870@l
/* 802E4AF4 002E1A34 48 08 40 F1 */ bl func_80368BE4
@@ -153,7 +153,7 @@ JUTAssertion_NS_flushMessage_dbPrint:
/* 802E4B70 002E1AB0 38 84 48 70 */ addi r4, r4, lbl_80434870@l
/* 802E4B74 002E1AB4 7F C5 F3 78 */ mr r5, r30
/* 802E4B78 002E1AB8 38 C0 00 01 */ li r6, 1
-/* 802E4B7C 002E1ABC 4B FF A2 AD */ bl JUTFont_NS_drawString_size_scale
+/* 802E4B7C 002E1ABC 4B FF A2 AD */ bl drawString_size_scale__7JUTFontFffffPcUlb
/* 802E4B80 002E1AC0 3C 60 80 43 */ lis r3, lbl_804348B0@ha
/* 802E4B84 002E1AC4 38 63 48 B0 */ addi r3, r3, lbl_804348B0@l
/* 802E4B88 002E1AC8 48 08 40 5D */ bl func_80368BE4
@@ -190,7 +190,7 @@ JUTAssertion_NS_flushMessage_dbPrint:
/* 802E4C04 002E1B44 38 84 48 B0 */ addi r4, r4, lbl_804348B0@l
/* 802E4C08 002E1B48 7F C5 F3 78 */ mr r5, r30
/* 802E4C0C 002E1B4C 38 C0 00 01 */ li r6, 1
-/* 802E4C10 002E1B50 4B FF A2 19 */ bl JUTFont_NS_drawString_size_scale
+/* 802E4C10 002E1B50 4B FF A2 19 */ bl drawString_size_scale__7JUTFontFffffPcUlb
lbl_802E4C14:
/* 802E4C14 002E1B54 E3 E1 00 48 */ psq_l f31, 72(r1), 0, qr0
/* 802E4C18 002E1B58 CB E1 00 40 */ lfd f31, 0x40(r1)
diff --git a/asm/JUtility/JUTCacheFont.s b/asm/JUtility/JUTCacheFont.s
index 600f498641..1a52ad7c87 100644
--- a/asm/JUtility/JUTCacheFont.s
+++ b/asm/JUtility/JUTCacheFont.s
@@ -14,16 +14,16 @@ JUTCacheFont:
/* 802DD1A0 002DA0E0 7C 9D 23 78 */ mr r29, r4
/* 802DD1A4 002DA0E4 7C BE 2B 78 */ mr r30, r5
/* 802DD1A8 002DA0E8 7C DF 33 78 */ mr r31, r6
-/* 802DD1AC 002DA0EC 48 00 1D 9D */ bl JUTResFont
+/* 802DD1AC 002DA0EC 48 00 1D 9D */ bl __ct__10JUTResFontFv
/* 802DD1B0 002DA0F0 3C 60 80 3D */ lis r3, lbl_803CC540@ha
/* 802DD1B4 002DA0F4 38 03 C5 40 */ addi r0, r3, lbl_803CC540@l
/* 802DD1B8 002DA0F8 90 1C 00 00 */ stw r0, 0(r28)
/* 802DD1BC 002DA0FC 7F 83 E3 78 */ mr r3, r28
/* 802DD1C0 002DA100 48 00 01 61 */ bl JUTCacheFont_NS_initialize_state
/* 802DD1C4 002DA104 7F 83 E3 78 */ mr r3, r28
-/* 802DD1C8 002DA108 48 00 1E E9 */ bl JUTResFont_NS_initialize_state
+/* 802DD1C8 002DA108 48 00 1E E9 */ bl initialize_state__10JUTResFontFv
/* 802DD1CC 002DA10C 7F 83 E3 78 */ mr r3, r28
-/* 802DD1D0 002DA110 48 00 1B 55 */ bl JUTFont_NS_initialize_state
+/* 802DD1D0 002DA110 48 00 1B 55 */ bl initialize_state__7JUTFontFv
/* 802DD1D4 002DA114 7F 83 E3 78 */ mr r3, r28
/* 802DD1D8 002DA118 7F A4 EB 78 */ mr r4, r29
/* 802DD1DC 002DA11C 38 A0 00 00 */ li r5, 0
@@ -55,15 +55,15 @@ JUTCacheFont:
/* 802DD244 002DA184 7F C3 F3 78 */ mr r3, r30
/* 802DD248 002DA188 48 00 00 D9 */ bl JUTCacheFont_NS_initialize_state
/* 802DD24C 002DA18C 7F C3 F3 78 */ mr r3, r30
-/* 802DD250 002DA190 48 00 1E 3D */ bl JUTResFont_NS_deleteMemBlocks_ResFont
+/* 802DD250 002DA190 48 00 1E 3D */ bl deleteMemBlocks_ResFont__10JUTResFontFv
/* 802DD254 002DA194 7F C3 F3 78 */ mr r3, r30
-/* 802DD258 002DA198 48 00 1E 59 */ bl JUTResFont_NS_initialize_state
+/* 802DD258 002DA198 48 00 1E 59 */ bl initialize_state__10JUTResFontFv
/* 802DD25C 002DA19C 7F C3 F3 78 */ mr r3, r30
-/* 802DD260 002DA1A0 48 00 1A C5 */ bl JUTFont_NS_initialize_state
+/* 802DD260 002DA1A0 48 00 1A C5 */ bl initialize_state__7JUTFontFv
lbl_802DD264:
/* 802DD264 002DA1A4 7F C3 F3 78 */ mr r3, r30
/* 802DD268 002DA1A8 38 80 00 00 */ li r4, 0
-/* 802DD26C 002DA1AC 48 00 1D 95 */ bl JUTResFont_NS_dtor
+/* 802DD26C 002DA1AC 48 00 1D 95 */ bl __dt__10JUTResFontFv
/* 802DD270 002DA1B0 7F E0 07 35 */ extsh. r0, r31
/* 802DD274 002DA1B4 40 81 00 0C */ ble lbl_802DD280
/* 802DD278 002DA1B8 7F C3 F3 78 */ mr r3, r30
@@ -266,9 +266,9 @@ JUTCacheFont_NS_initiate:
/* 802DD50C 002DA44C 7F E3 FB 78 */ mr r3, r31
/* 802DD510 002DA450 4B FF FD 8D */ bl JUTCacheFont_NS_deleteMemBlocks_CacheFont
/* 802DD514 002DA454 7F E3 FB 78 */ mr r3, r31
-/* 802DD518 002DA458 48 00 1B 75 */ bl JUTResFont_NS_deleteMemBlocks_ResFont
+/* 802DD518 002DA458 48 00 1B 75 */ bl deleteMemBlocks_ResFont__10JUTResFontFv
/* 802DD51C 002DA45C 7F E3 FB 78 */ mr r3, r31
-/* 802DD520 002DA460 48 00 18 05 */ bl JUTFont_NS_initialize_state
+/* 802DD520 002DA460 48 00 18 05 */ bl initialize_state__7JUTFontFv
/* 802DD524 002DA464 38 00 00 00 */ li r0, 0
/* 802DD528 002DA468 98 1F 00 04 */ stb r0, 4(r31)
/* 802DD52C 002DA46C 38 60 00 00 */ li r3, 0
@@ -298,11 +298,11 @@ JUTCacheFont_NS_internal_initiate:
/* 802DD578 002DA4B8 7F 63 DB 78 */ mr r3, r27
/* 802DD57C 002DA4BC 4B FF FD A5 */ bl JUTCacheFont_NS_initialize_state
/* 802DD580 002DA4C0 7F 63 DB 78 */ mr r3, r27
-/* 802DD584 002DA4C4 48 00 1B 09 */ bl JUTResFont_NS_deleteMemBlocks_ResFont
+/* 802DD584 002DA4C4 48 00 1B 09 */ bl deleteMemBlocks_ResFont__10JUTResFontFv
/* 802DD588 002DA4C8 7F 63 DB 78 */ mr r3, r27
-/* 802DD58C 002DA4CC 48 00 1B 25 */ bl JUTResFont_NS_initialize_state
+/* 802DD58C 002DA4CC 48 00 1B 25 */ bl initialize_state__10JUTResFontFv
/* 802DD590 002DA4D0 7F 63 DB 78 */ mr r3, r27
-/* 802DD594 002DA4D4 48 00 17 91 */ bl JUTFont_NS_initialize_state
+/* 802DD594 002DA4D4 48 00 17 91 */ bl initialize_state__7JUTFontFv
/* 802DD598 002DA4D8 28 1C 00 00 */ cmplwi r28, 0
/* 802DD59C 002DA4DC 40 82 00 0C */ bne lbl_802DD5A8
/* 802DD5A0 002DA4E0 38 60 00 00 */ li r3, 0
diff --git a/asm/JUtility/JUTConsole.s b/asm/JUtility/JUTConsole.s
index 6b5359101e..2a7d14c2f9 100644
--- a/asm/JUtility/JUTConsole.s
+++ b/asm/JUtility/JUTConsole.s
@@ -399,7 +399,7 @@ lbl_802E78D0:
/* 802E78F4 002E4834 90 01 00 2C */ stw r0, 0x2c(r1)
/* 802E78F8 002E4838 80 79 00 4C */ lwz r3, 0x4c(r25)
/* 802E78FC 002E483C 38 81 00 2C */ addi r4, r1, 0x2c
-/* 802E7900 002E4840 4B FF 74 71 */ bl JUTFont_NS_setCharColor
+/* 802E7900 002E4840 4B FF 74 71 */ bl setCharColor__7JUTFontF6TColor
/* 802E7904 002E4844 48 00 01 18 */ b lbl_802E7A1C
lbl_802E7908:
/* 802E7908 002E4848 80 19 00 34 */ lwz r0, 0x34(r25)
@@ -415,7 +415,7 @@ lbl_802E7908:
/* 802E7930 002E4870 90 01 00 24 */ stw r0, 0x24(r1)
/* 802E7934 002E4874 80 79 00 4C */ lwz r3, 0x4c(r25)
/* 802E7938 002E4878 38 81 00 24 */ addi r4, r1, 0x24
-/* 802E793C 002E487C 4B FF 74 35 */ bl JUTFont_NS_setCharColor
+/* 802E793C 002E487C 4B FF 74 35 */ bl setCharColor__7JUTFontF6TColor
/* 802E7940 002E4880 48 00 00 DC */ b lbl_802E7A1C
lbl_802E7944:
/* 802E7944 002E4884 38 00 00 E6 */ li r0, 0xe6
@@ -428,7 +428,7 @@ lbl_802E7944:
/* 802E7960 002E48A0 90 01 00 1C */ stw r0, 0x1c(r1)
/* 802E7964 002E48A4 80 79 00 4C */ lwz r3, 0x4c(r25)
/* 802E7968 002E48A8 38 81 00 1C */ addi r4, r1, 0x1c
-/* 802E796C 002E48AC 4B FF 74 05 */ bl JUTFont_NS_setCharColor
+/* 802E796C 002E48AC 4B FF 74 05 */ bl setCharColor__7JUTFontF6TColor
/* 802E7970 002E48B0 48 00 00 AC */ b lbl_802E7A1C
lbl_802E7974:
/* 802E7974 002E48B4 38 00 00 E6 */ li r0, 0xe6
@@ -441,7 +441,7 @@ lbl_802E7974:
/* 802E7990 002E48D0 90 01 00 14 */ stw r0, 0x14(r1)
/* 802E7994 002E48D4 80 79 00 4C */ lwz r3, 0x4c(r25)
/* 802E7998 002E48D8 38 81 00 14 */ addi r4, r1, 0x14
-/* 802E799C 002E48DC 4B FF 73 D5 */ bl JUTFont_NS_setCharColor
+/* 802E799C 002E48DC 4B FF 73 D5 */ bl setCharColor__7JUTFontF6TColor
/* 802E79A0 002E48E0 48 00 00 7C */ b lbl_802E7A1C
lbl_802E79A4:
/* 802E79A4 002E48E4 80 6D 8F A8 */ lwz r3, lbl_80451528-_SDA_BASE_(r13)
@@ -527,7 +527,7 @@ lbl_802E7A40:
/* 802E7ADC 002E4A1C FC 80 D8 90 */ fmr f4, f27
/* 802E7AE0 002E4A20 7F A4 EB 78 */ mr r4, r29
/* 802E7AE4 002E4A24 38 C0 00 01 */ li r6, 1
-/* 802E7AE8 002E4A28 4B FF 73 41 */ bl JUTFont_NS_drawString_size_scale
+/* 802E7AE8 002E4A28 4B FF 73 41 */ bl drawString_size_scale__7JUTFontFffffPcUlb
/* 802E7AEC 002E4A2C 48 00 00 60 */ b lbl_802E7B4C
lbl_802E7AF0:
/* 802E7AF0 002E4A30 80 6D 8F A8 */ lwz r3, lbl_80451528-_SDA_BASE_(r13)
diff --git a/asm/JUtility/JUTDbPrint.s b/asm/JUtility/JUTDbPrint.s
index 553b216fb2..b227c605b8 100644
--- a/asm/JUtility/JUTDbPrint.s
+++ b/asm/JUtility/JUTDbPrint.s
@@ -178,7 +178,7 @@ JUTDbPrint_NS_flush_X1_:
/* 802E0398 002DD2D8 90 01 00 08 */ stw r0, 8(r1)
/* 802E039C 002DD2DC 80 7C 00 04 */ lwz r3, 4(r28)
/* 802E03A0 002DD2E0 38 81 00 08 */ addi r4, r1, 8
-/* 802E03A4 002DD2E4 4B FF E9 CD */ bl JUTFont_NS_setCharColor
+/* 802E03A4 002DD2E4 4B FF E9 CD */ bl setCharColor__7JUTFontF6TColor
/* 802E03A8 002DD2E8 48 00 00 60 */ b lbl_802E0408
lbl_802E03AC:
/* 802E03AC 002DD2EC 88 1C 00 0C */ lbz r0, 0xc(r28)
@@ -276,7 +276,7 @@ JUTDbPrint_NS_drawString:
/* 802E0500 002DD440 7F C4 F3 78 */ mr r4, r30
/* 802E0504 002DD444 7F A5 EB 78 */ mr r5, r29
/* 802E0508 002DD448 38 C0 00 01 */ li r6, 1
-/* 802E050C 002DD44C 4B FF E9 1D */ bl JUTFont_NS_drawString_size_scale
+/* 802E050C 002DD44C 4B FF E9 1D */ bl drawString_size_scale__7JUTFontFffffPcUlb
/* 802E0510 002DD450 E3 E1 00 48 */ psq_l f31, 72(r1), 0, qr0
/* 802E0514 002DD454 CB E1 00 40 */ lfd f31, 0x40(r1)
/* 802E0518 002DD458 39 61 00 40 */ addi r11, r1, 0x40
diff --git a/asm/JUtility/JUTFont.s b/asm/JUtility/JUTFont.s
index 77188f1a56..b7a1db1330 100644
--- a/asm/JUtility/JUTFont.s
+++ b/asm/JUtility/JUTFont.s
@@ -3,8 +3,8 @@
.section .text, "ax" # 802decf8
-.global JUTFont
-JUTFont:
+.global __ct__7JUTFontFv
+__ct__7JUTFontFv:
/* 802DECF8 002DBC38 3C 80 80 3A */ lis r4, lbl_803A31F0@ha
/* 802DECFC 002DBC3C 38 04 31 F0 */ addi r0, r4, lbl_803A31F0@l
/* 802DED00 002DBC40 90 03 00 00 */ stw r0, 0(r3)
@@ -16,156 +16,3 @@ JUTFont:
/* 802DED18 002DBC58 38 00 00 00 */ li r0, 0
/* 802DED1C 002DBC5C 98 03 00 04 */ stb r0, 4(r3)
/* 802DED20 002DBC60 4E 80 00 20 */ blr
-
-.global JUTFont_NS_initialize_state
-JUTFont_NS_initialize_state:
-/* 802DED24 002DBC64 94 21 FF E0 */ stwu r1, -0x20(r1)
-/* 802DED28 002DBC68 7C 08 02 A6 */ mflr r0
-/* 802DED2C 002DBC6C 90 01 00 24 */ stw r0, 0x24(r1)
-/* 802DED30 002DBC70 93 E1 00 1C */ stw r31, 0x1c(r1)
-/* 802DED34 002DBC74 7C 7F 1B 78 */ mr r31, r3
-/* 802DED38 002DBC78 38 00 FF FF */ li r0, -1
-/* 802DED3C 002DBC7C 90 01 00 08 */ stw r0, 8(r1)
-/* 802DED40 002DBC80 90 01 00 0C */ stw r0, 0xc(r1)
-/* 802DED44 002DBC84 38 81 00 0C */ addi r4, r1, 0xc
-/* 802DED48 002DBC88 48 00 00 29 */ bl JUTFont_NS_setCharColor
-/* 802DED4C 002DBC8C 38 00 00 00 */ li r0, 0
-/* 802DED50 002DBC90 98 1F 00 05 */ stb r0, 5(r31)
-/* 802DED54 002DBC94 90 1F 00 08 */ stw r0, 8(r31)
-/* 802DED58 002DBC98 98 1F 00 04 */ stb r0, 4(r31)
-/* 802DED5C 002DBC9C 83 E1 00 1C */ lwz r31, 0x1c(r1)
-/* 802DED60 002DBCA0 80 01 00 24 */ lwz r0, 0x24(r1)
-/* 802DED64 002DBCA4 7C 08 03 A6 */ mtlr r0
-/* 802DED68 002DBCA8 38 21 00 20 */ addi r1, r1, 0x20
-/* 802DED6C 002DBCAC 4E 80 00 20 */ blr
-
-.global JUTFont_NS_setCharColor
-JUTFont_NS_setCharColor:
-/* 802DED70 002DBCB0 88 E4 00 00 */ lbz r7, 0(r4)
-/* 802DED74 002DBCB4 98 E3 00 0C */ stb r7, 0xc(r3)
-/* 802DED78 002DBCB8 88 C4 00 01 */ lbz r6, 1(r4)
-/* 802DED7C 002DBCBC 98 C3 00 0D */ stb r6, 0xd(r3)
-/* 802DED80 002DBCC0 88 A4 00 02 */ lbz r5, 2(r4)
-/* 802DED84 002DBCC4 98 A3 00 0E */ stb r5, 0xe(r3)
-/* 802DED88 002DBCC8 88 04 00 03 */ lbz r0, 3(r4)
-/* 802DED8C 002DBCCC 98 03 00 0F */ stb r0, 0xf(r3)
-/* 802DED90 002DBCD0 98 E3 00 10 */ stb r7, 0x10(r3)
-/* 802DED94 002DBCD4 98 C3 00 11 */ stb r6, 0x11(r3)
-/* 802DED98 002DBCD8 98 A3 00 12 */ stb r5, 0x12(r3)
-/* 802DED9C 002DBCDC 98 03 00 13 */ stb r0, 0x13(r3)
-/* 802DEDA0 002DBCE0 98 E3 00 14 */ stb r7, 0x14(r3)
-/* 802DEDA4 002DBCE4 98 C3 00 15 */ stb r6, 0x15(r3)
-/* 802DEDA8 002DBCE8 98 A3 00 16 */ stb r5, 0x16(r3)
-/* 802DEDAC 002DBCEC 98 03 00 17 */ stb r0, 0x17(r3)
-/* 802DEDB0 002DBCF0 98 E3 00 18 */ stb r7, 0x18(r3)
-/* 802DEDB4 002DBCF4 98 C3 00 19 */ stb r6, 0x19(r3)
-/* 802DEDB8 002DBCF8 98 A3 00 1A */ stb r5, 0x1a(r3)
-/* 802DEDBC 002DBCFC 98 03 00 1B */ stb r0, 0x1b(r3)
-/* 802DEDC0 002DBD00 4E 80 00 20 */ blr
-
-.global JUTFont_NS_setGradColor
-JUTFont_NS_setGradColor:
-/* 802DEDC4 002DBD04 89 04 00 00 */ lbz r8, 0(r4)
-/* 802DEDC8 002DBD08 99 03 00 0C */ stb r8, 0xc(r3)
-/* 802DEDCC 002DBD0C 88 E4 00 01 */ lbz r7, 1(r4)
-/* 802DEDD0 002DBD10 98 E3 00 0D */ stb r7, 0xd(r3)
-/* 802DEDD4 002DBD14 88 C4 00 02 */ lbz r6, 2(r4)
-/* 802DEDD8 002DBD18 98 C3 00 0E */ stb r6, 0xe(r3)
-/* 802DEDDC 002DBD1C 88 04 00 03 */ lbz r0, 3(r4)
-/* 802DEDE0 002DBD20 98 03 00 0F */ stb r0, 0xf(r3)
-/* 802DEDE4 002DBD24 99 03 00 10 */ stb r8, 0x10(r3)
-/* 802DEDE8 002DBD28 98 E3 00 11 */ stb r7, 0x11(r3)
-/* 802DEDEC 002DBD2C 98 C3 00 12 */ stb r6, 0x12(r3)
-/* 802DEDF0 002DBD30 98 03 00 13 */ stb r0, 0x13(r3)
-/* 802DEDF4 002DBD34 88 E5 00 00 */ lbz r7, 0(r5)
-/* 802DEDF8 002DBD38 98 E3 00 14 */ stb r7, 0x14(r3)
-/* 802DEDFC 002DBD3C 88 C5 00 01 */ lbz r6, 1(r5)
-/* 802DEE00 002DBD40 98 C3 00 15 */ stb r6, 0x15(r3)
-/* 802DEE04 002DBD44 88 85 00 02 */ lbz r4, 2(r5)
-/* 802DEE08 002DBD48 98 83 00 16 */ stb r4, 0x16(r3)
-/* 802DEE0C 002DBD4C 88 05 00 03 */ lbz r0, 3(r5)
-/* 802DEE10 002DBD50 98 03 00 17 */ stb r0, 0x17(r3)
-/* 802DEE14 002DBD54 98 E3 00 18 */ stb r7, 0x18(r3)
-/* 802DEE18 002DBD58 98 C3 00 19 */ stb r6, 0x19(r3)
-/* 802DEE1C 002DBD5C 98 83 00 1A */ stb r4, 0x1a(r3)
-/* 802DEE20 002DBD60 98 03 00 1B */ stb r0, 0x1b(r3)
-/* 802DEE24 002DBD64 4E 80 00 20 */ blr
-
-.global JUTFont_NS_drawString_size_scale
-JUTFont_NS_drawString_size_scale:
-/* 802DEE28 002DBD68 94 21 FF 90 */ stwu r1, -0x70(r1)
-/* 802DEE2C 002DBD6C 7C 08 02 A6 */ mflr r0
-/* 802DEE30 002DBD70 90 01 00 74 */ stw r0, 0x74(r1)
-/* 802DEE34 002DBD74 DB E1 00 60 */ stfd f31, 0x60(r1)
-/* 802DEE38 002DBD78 F3 E1 00 68 */ psq_st f31, 104(r1), 0, qr0
-/* 802DEE3C 002DBD7C DB C1 00 50 */ stfd f30, 0x50(r1)
-/* 802DEE40 002DBD80 F3 C1 00 58 */ psq_st f30, 88(r1), 0, qr0
-/* 802DEE44 002DBD84 DB A1 00 40 */ stfd f29, 0x40(r1)
-/* 802DEE48 002DBD88 F3 A1 00 48 */ psq_st f29, 72(r1), 0, qr0
-/* 802DEE4C 002DBD8C DB 81 00 30 */ stfd f28, 0x30(r1)
-/* 802DEE50 002DBD90 F3 81 00 38 */ psq_st f28, 56(r1), 0, qr0
-/* 802DEE54 002DBD94 DB 61 00 20 */ stfd f27, 0x20(r1)
-/* 802DEE58 002DBD98 F3 61 00 28 */ psq_st f27, 40(r1), 0, qr0
-/* 802DEE5C 002DBD9C 39 61 00 20 */ addi r11, r1, 0x20
-/* 802DEE60 002DBDA0 48 08 33 75 */ bl _savegpr_27
-/* 802DEE64 002DBDA4 7C 7B 1B 78 */ mr r27, r3
-/* 802DEE68 002DBDA8 FF 60 08 90 */ fmr f27, f1
-/* 802DEE6C 002DBDAC FF 80 10 90 */ fmr f28, f2
-/* 802DEE70 002DBDB0 FF A0 18 90 */ fmr f29, f3
-/* 802DEE74 002DBDB4 FF C0 20 90 */ fmr f30, f4
-/* 802DEE78 002DBDB8 7C 9C 23 78 */ mr r28, r4
-/* 802DEE7C 002DBDBC 7C BD 2B 78 */ mr r29, r5
-/* 802DEE80 002DBDC0 7C DE 33 78 */ mr r30, r6
-/* 802DEE84 002DBDC4 FF E0 D8 90 */ fmr f31, f27
-/* 802DEE88 002DBDC8 48 00 00 74 */ b lbl_802DEEFC
-lbl_802DEE8C:
-/* 802DEE8C 002DBDCC 88 9C 00 00 */ lbz r4, 0(r28)
-/* 802DEE90 002DBDD0 7C 9F 23 78 */ mr r31, r4
-/* 802DEE94 002DBDD4 7F 63 DB 78 */ mr r3, r27
-/* 802DEE98 002DBDD8 81 9B 00 00 */ lwz r12, 0(r27)
-/* 802DEE9C 002DBDDC 81 8C 00 40 */ lwz r12, 0x40(r12)
-/* 802DEEA0 002DBDE0 7D 89 03 A6 */ mtctr r12
-/* 802DEEA4 002DBDE4 4E 80 04 21 */ bctrl
-/* 802DEEA8 002DBDE8 54 60 06 3F */ clrlwi. r0, r3, 0x18
-/* 802DEEAC 002DBDEC 41 82 00 14 */ beq lbl_802DEEC0
-/* 802DEEB0 002DBDF0 57 FF 40 2E */ slwi r31, r31, 8
-/* 802DEEB4 002DBDF4 8C 1C 00 01 */ lbzu r0, 1(r28)
-/* 802DEEB8 002DBDF8 7F FF 03 78 */ or r31, r31, r0
-/* 802DEEBC 002DBDFC 3B BD FF FF */ addi r29, r29, -1
-lbl_802DEEC0:
-/* 802DEEC0 002DBE00 7F 63 DB 78 */ mr r3, r27
-/* 802DEEC4 002DBE04 FC 20 D8 90 */ fmr f1, f27
-/* 802DEEC8 002DBE08 FC 40 E0 90 */ fmr f2, f28
-/* 802DEECC 002DBE0C FC 60 E8 90 */ fmr f3, f29
-/* 802DEED0 002DBE10 FC 80 F0 90 */ fmr f4, f30
-/* 802DEED4 002DBE14 7F E4 FB 78 */ mr r4, r31
-/* 802DEED8 002DBE18 7F C5 F3 78 */ mr r5, r30
-/* 802DEEDC 002DBE1C 81 9B 00 00 */ lwz r12, 0(r27)
-/* 802DEEE0 002DBE20 81 8C 00 14 */ lwz r12, 0x14(r12)
-/* 802DEEE4 002DBE24 7D 89 03 A6 */ mtctr r12
-/* 802DEEE8 002DBE28 4E 80 04 21 */ bctrl
-/* 802DEEEC 002DBE2C EF 7B 08 2A */ fadds f27, f27, f1
-/* 802DEEF0 002DBE30 3B C0 00 01 */ li r30, 1
-/* 802DEEF4 002DBE34 3B BD FF FF */ addi r29, r29, -1
-/* 802DEEF8 002DBE38 3B 9C 00 01 */ addi r28, r28, 1
-lbl_802DEEFC:
-/* 802DEEFC 002DBE3C 28 1D 00 00 */ cmplwi r29, 0
-/* 802DEF00 002DBE40 40 82 FF 8C */ bne lbl_802DEE8C
-/* 802DEF04 002DBE44 EC 3B F8 28 */ fsubs f1, f27, f31
-/* 802DEF08 002DBE48 E3 E1 00 68 */ psq_l f31, 104(r1), 0, qr0
-/* 802DEF0C 002DBE4C CB E1 00 60 */ lfd f31, 0x60(r1)
-/* 802DEF10 002DBE50 E3 C1 00 58 */ psq_l f30, 88(r1), 0, qr0
-/* 802DEF14 002DBE54 CB C1 00 50 */ lfd f30, 0x50(r1)
-/* 802DEF18 002DBE58 E3 A1 00 48 */ psq_l f29, 72(r1), 0, qr0
-/* 802DEF1C 002DBE5C CB A1 00 40 */ lfd f29, 0x40(r1)
-/* 802DEF20 002DBE60 E3 81 00 38 */ psq_l f28, 56(r1), 0, qr0
-/* 802DEF24 002DBE64 CB 81 00 30 */ lfd f28, 0x30(r1)
-/* 802DEF28 002DBE68 E3 61 00 28 */ psq_l f27, 40(r1), 0, qr0
-/* 802DEF2C 002DBE6C CB 61 00 20 */ lfd f27, 0x20(r1)
-/* 802DEF30 002DBE70 39 61 00 20 */ addi r11, r1, 0x20
-/* 802DEF34 002DBE74 48 08 32 ED */ bl _restgpr_27
-/* 802DEF38 002DBE78 80 01 00 74 */ lwz r0, 0x74(r1)
-/* 802DEF3C 002DBE7C 7C 08 03 A6 */ mtlr r0
-/* 802DEF40 002DBE80 38 21 00 70 */ addi r1, r1, 0x70
-/* 802DEF44 002DBE84 4E 80 00 20 */ blr
-
diff --git a/asm/JUtility/JUTResFont.s b/asm/JUtility/JUTResFont.s
index 0991642095..6e57e6e726 100644
--- a/asm/JUtility/JUTResFont.s
+++ b/asm/JUtility/JUTResFont.s
@@ -2,1256 +2,3 @@
.section .text, "ax" # 802def48
-
-.global JUTResFont
-JUTResFont:
-/* 802DEF48 002DBE88 94 21 FF F0 */ stwu r1, -0x10(r1)
-/* 802DEF4C 002DBE8C 7C 08 02 A6 */ mflr r0
-/* 802DEF50 002DBE90 90 01 00 14 */ stw r0, 0x14(r1)
-/* 802DEF54 002DBE94 93 E1 00 0C */ stw r31, 0xc(r1)
-/* 802DEF58 002DBE98 7C 7F 1B 78 */ mr r31, r3
-/* 802DEF5C 002DBE9C 4B FF FD 9D */ bl JUTFont
-/* 802DEF60 002DBEA0 3C 60 80 3D */ lis r3, lbl_803CC5A0@ha
-/* 802DEF64 002DBEA4 38 03 C5 A0 */ addi r0, r3, lbl_803CC5A0@l
-/* 802DEF68 002DBEA8 90 1F 00 00 */ stw r0, 0(r31)
-/* 802DEF6C 002DBEAC 7F E3 FB 78 */ mr r3, r31
-/* 802DEF70 002DBEB0 48 00 01 41 */ bl JUTResFont_NS_initialize_state
-/* 802DEF74 002DBEB4 7F E3 FB 78 */ mr r3, r31
-/* 802DEF78 002DBEB8 4B FF FD AD */ bl JUTFont_NS_initialize_state
-/* 802DEF7C 002DBEBC 7F E3 FB 78 */ mr r3, r31
-/* 802DEF80 002DBEC0 83 E1 00 0C */ lwz r31, 0xc(r1)
-/* 802DEF84 002DBEC4 80 01 00 14 */ lwz r0, 0x14(r1)
-/* 802DEF88 002DBEC8 7C 08 03 A6 */ mtlr r0
-/* 802DEF8C 002DBECC 38 21 00 10 */ addi r1, r1, 0x10
-/* 802DEF90 002DBED0 4E 80 00 20 */ blr
-
-.global JUTResFont_X1_
-JUTResFont_X1_:
-/* 802DEF94 002DBED4 94 21 FF E0 */ stwu r1, -0x20(r1)
-/* 802DEF98 002DBED8 7C 08 02 A6 */ mflr r0
-/* 802DEF9C 002DBEDC 90 01 00 24 */ stw r0, 0x24(r1)
-/* 802DEFA0 002DBEE0 39 61 00 20 */ addi r11, r1, 0x20
-/* 802DEFA4 002DBEE4 48 08 32 39 */ bl _savegpr_29
-/* 802DEFA8 002DBEE8 7C 7D 1B 78 */ mr r29, r3
-/* 802DEFAC 002DBEEC 7C 9E 23 78 */ mr r30, r4
-/* 802DEFB0 002DBEF0 7C BF 2B 78 */ mr r31, r5
-/* 802DEFB4 002DBEF4 4B FF FD 45 */ bl JUTFont
-/* 802DEFB8 002DBEF8 3C 60 80 3D */ lis r3, lbl_803CC5A0@ha
-/* 802DEFBC 002DBEFC 38 03 C5 A0 */ addi r0, r3, lbl_803CC5A0@l
-/* 802DEFC0 002DBF00 90 1D 00 00 */ stw r0, 0(r29)
-/* 802DEFC4 002DBF04 7F A3 EB 78 */ mr r3, r29
-/* 802DEFC8 002DBF08 48 00 00 E9 */ bl JUTResFont_NS_initialize_state
-/* 802DEFCC 002DBF0C 7F A3 EB 78 */ mr r3, r29
-/* 802DEFD0 002DBF10 4B FF FD 55 */ bl JUTFont_NS_initialize_state
-/* 802DEFD4 002DBF14 7F A3 EB 78 */ mr r3, r29
-/* 802DEFD8 002DBF18 7F C4 F3 78 */ mr r4, r30
-/* 802DEFDC 002DBF1C 7F E5 FB 78 */ mr r5, r31
-/* 802DEFE0 002DBF20 48 00 00 FD */ bl JUTResFont_NS_initiate
-/* 802DEFE4 002DBF24 7F A3 EB 78 */ mr r3, r29
-/* 802DEFE8 002DBF28 39 61 00 20 */ addi r11, r1, 0x20
-/* 802DEFEC 002DBF2C 48 08 32 3D */ bl _restgpr_29
-/* 802DEFF0 002DBF30 80 01 00 24 */ lwz r0, 0x24(r1)
-/* 802DEFF4 002DBF34 7C 08 03 A6 */ mtlr r0
-/* 802DEFF8 002DBF38 38 21 00 20 */ addi r1, r1, 0x20
-/* 802DEFFC 002DBF3C 4E 80 00 20 */ blr
-
-.global JUTResFont_NS_dtor
-JUTResFont_NS_dtor:
-/* 802DF000 002DBF40 94 21 FF F0 */ stwu r1, -0x10(r1)
-/* 802DF004 002DBF44 7C 08 02 A6 */ mflr r0
-/* 802DF008 002DBF48 90 01 00 14 */ stw r0, 0x14(r1)
-/* 802DF00C 002DBF4C 93 E1 00 0C */ stw r31, 0xc(r1)
-/* 802DF010 002DBF50 93 C1 00 08 */ stw r30, 8(r1)
-/* 802DF014 002DBF54 7C 7E 1B 79 */ or. r30, r3, r3
-/* 802DF018 002DBF58 7C 9F 23 78 */ mr r31, r4
-/* 802DF01C 002DBF5C 41 82 00 54 */ beq lbl_802DF070
-/* 802DF020 002DBF60 3C 80 80 3D */ lis r4, lbl_803CC5A0@ha
-/* 802DF024 002DBF64 38 04 C5 A0 */ addi r0, r4, lbl_803CC5A0@l
-/* 802DF028 002DBF68 90 1E 00 00 */ stw r0, 0(r30)
-/* 802DF02C 002DBF6C 88 1E 00 04 */ lbz r0, 4(r30)
-/* 802DF030 002DBF70 28 00 00 00 */ cmplwi r0, 0
-/* 802DF034 002DBF74 41 82 00 18 */ beq lbl_802DF04C
-/* 802DF038 002DBF78 48 00 00 55 */ bl JUTResFont_NS_deleteMemBlocks_ResFont
-/* 802DF03C 002DBF7C 7F C3 F3 78 */ mr r3, r30
-/* 802DF040 002DBF80 48 00 00 71 */ bl JUTResFont_NS_initialize_state
-/* 802DF044 002DBF84 7F C3 F3 78 */ mr r3, r30
-/* 802DF048 002DBF88 4B FF FC DD */ bl JUTFont_NS_initialize_state
-lbl_802DF04C:
-/* 802DF04C 002DBF8C 28 1E 00 00 */ cmplwi r30, 0
-/* 802DF050 002DBF90 41 82 00 10 */ beq lbl_802DF060
-/* 802DF054 002DBF94 3C 60 80 3A */ lis r3, lbl_803A31F0@ha
-/* 802DF058 002DBF98 38 03 31 F0 */ addi r0, r3, lbl_803A31F0@l
-/* 802DF05C 002DBF9C 90 1E 00 00 */ stw r0, 0(r30)
-lbl_802DF060:
-/* 802DF060 002DBFA0 7F E0 07 35 */ extsh. r0, r31
-/* 802DF064 002DBFA4 40 81 00 0C */ ble lbl_802DF070
-/* 802DF068 002DBFA8 7F C3 F3 78 */ mr r3, r30
-/* 802DF06C 002DBFAC 4B FE FC D1 */ bl __dl__FPv
-lbl_802DF070:
-/* 802DF070 002DBFB0 7F C3 F3 78 */ mr r3, r30
-/* 802DF074 002DBFB4 83 E1 00 0C */ lwz r31, 0xc(r1)
-/* 802DF078 002DBFB8 83 C1 00 08 */ lwz r30, 8(r1)
-/* 802DF07C 002DBFBC 80 01 00 14 */ lwz r0, 0x14(r1)
-/* 802DF080 002DBFC0 7C 08 03 A6 */ mtlr r0
-/* 802DF084 002DBFC4 38 21 00 10 */ addi r1, r1, 0x10
-/* 802DF088 002DBFC8 4E 80 00 20 */ blr
-
-.global JUTResFont_NS_deleteMemBlocks_ResFont
-JUTResFont_NS_deleteMemBlocks_ResFont:
-/* 802DF08C 002DBFCC 94 21 FF F0 */ stwu r1, -0x10(r1)
-/* 802DF090 002DBFD0 7C 08 02 A6 */ mflr r0
-/* 802DF094 002DBFD4 90 01 00 14 */ stw r0, 0x14(r1)
-/* 802DF098 002DBFD8 80 63 00 50 */ lwz r3, 0x50(r3)
-/* 802DF09C 002DBFDC 4B FE FC C5 */ bl __dla__FPv
-/* 802DF0A0 002DBFE0 80 01 00 14 */ lwz r0, 0x14(r1)
-/* 802DF0A4 002DBFE4 7C 08 03 A6 */ mtlr r0
-/* 802DF0A8 002DBFE8 38 21 00 10 */ addi r1, r1, 0x10
-/* 802DF0AC 002DBFEC 4E 80 00 20 */ blr
-
-.global JUTResFont_NS_initialize_state
-JUTResFont_NS_initialize_state:
-/* 802DF0B0 002DBFF0 38 00 00 00 */ li r0, 0
-/* 802DF0B4 002DBFF4 90 03 00 48 */ stw r0, 0x48(r3)
-/* 802DF0B8 002DBFF8 90 03 00 50 */ stw r0, 0x50(r3)
-/* 802DF0BC 002DBFFC 90 03 00 54 */ stw r0, 0x54(r3)
-/* 802DF0C0 002DC000 90 03 00 58 */ stw r0, 0x58(r3)
-/* 802DF0C4 002DC004 90 03 00 5C */ stw r0, 0x5c(r3)
-/* 802DF0C8 002DC008 90 03 00 1C */ stw r0, 0x1c(r3)
-/* 802DF0CC 002DC00C 90 03 00 20 */ stw r0, 0x20(r3)
-/* 802DF0D0 002DC010 38 00 FF FF */ li r0, -1
-/* 802DF0D4 002DC014 90 03 00 44 */ stw r0, 0x44(r3)
-/* 802DF0D8 002DC018 4E 80 00 20 */ blr
-
-.global JUTResFont_NS_initiate
-JUTResFont_NS_initiate:
-/* 802DF0DC 002DC01C 94 21 FF F0 */ stwu r1, -0x10(r1)
-/* 802DF0E0 002DC020 7C 08 02 A6 */ mflr r0
-/* 802DF0E4 002DC024 90 01 00 14 */ stw r0, 0x14(r1)
-/* 802DF0E8 002DC028 93 E1 00 0C */ stw r31, 0xc(r1)
-/* 802DF0EC 002DC02C 7C 7F 1B 78 */ mr r31, r3
-/* 802DF0F0 002DC030 48 00 00 4D */ bl JUTResFont_NS_protected_initiate
-/* 802DF0F4 002DC034 54 60 06 3F */ clrlwi. r0, r3, 0x18
-/* 802DF0F8 002DC038 40 82 00 2C */ bne lbl_802DF124
-/* 802DF0FC 002DC03C 7F E3 FB 78 */ mr r3, r31
-/* 802DF100 002DC040 4B FF FF 8D */ bl JUTResFont_NS_deleteMemBlocks_ResFont
-/* 802DF104 002DC044 7F E3 FB 78 */ mr r3, r31
-/* 802DF108 002DC048 4B FF FF A9 */ bl JUTResFont_NS_initialize_state
-/* 802DF10C 002DC04C 7F E3 FB 78 */ mr r3, r31
-/* 802DF110 002DC050 4B FF FC 15 */ bl JUTFont_NS_initialize_state
-/* 802DF114 002DC054 38 00 00 00 */ li r0, 0
-/* 802DF118 002DC058 98 1F 00 04 */ stb r0, 4(r31)
-/* 802DF11C 002DC05C 38 60 00 00 */ li r3, 0
-/* 802DF120 002DC060 48 00 00 08 */ b lbl_802DF128
-lbl_802DF124:
-/* 802DF124 002DC064 38 60 00 01 */ li r3, 1
-lbl_802DF128:
-/* 802DF128 002DC068 83 E1 00 0C */ lwz r31, 0xc(r1)
-/* 802DF12C 002DC06C 80 01 00 14 */ lwz r0, 0x14(r1)
-/* 802DF130 002DC070 7C 08 03 A6 */ mtlr r0
-/* 802DF134 002DC074 38 21 00 10 */ addi r1, r1, 0x10
-/* 802DF138 002DC078 4E 80 00 20 */ blr
-
-.global JUTResFont_NS_protected_initiate
-JUTResFont_NS_protected_initiate:
-/* 802DF13C 002DC07C 94 21 FF E0 */ stwu r1, -0x20(r1)
-/* 802DF140 002DC080 7C 08 02 A6 */ mflr r0
-/* 802DF144 002DC084 90 01 00 24 */ stw r0, 0x24(r1)
-/* 802DF148 002DC088 39 61 00 20 */ addi r11, r1, 0x20
-/* 802DF14C 002DC08C 48 08 30 91 */ bl _savegpr_29
-/* 802DF150 002DC090 7C 7D 1B 78 */ mr r29, r3
-/* 802DF154 002DC094 7C 9E 23 78 */ mr r30, r4
-/* 802DF158 002DC098 7C BF 2B 78 */ mr r31, r5
-/* 802DF15C 002DC09C 4B FF FF 31 */ bl JUTResFont_NS_deleteMemBlocks_ResFont
-/* 802DF160 002DC0A0 7F A3 EB 78 */ mr r3, r29
-/* 802DF164 002DC0A4 4B FF FF 4D */ bl JUTResFont_NS_initialize_state
-/* 802DF168 002DC0A8 7F A3 EB 78 */ mr r3, r29
-/* 802DF16C 002DC0AC 4B FF FB B9 */ bl JUTFont_NS_initialize_state
-/* 802DF170 002DC0B0 28 1E 00 00 */ cmplwi r30, 0
-/* 802DF174 002DC0B4 40 82 00 0C */ bne lbl_802DF180
-/* 802DF178 002DC0B8 38 60 00 00 */ li r3, 0
-/* 802DF17C 002DC0BC 48 00 00 B4 */ b lbl_802DF230
-lbl_802DF180:
-/* 802DF180 002DC0C0 93 DD 00 48 */ stw r30, 0x48(r29)
-/* 802DF184 002DC0C4 38 00 00 01 */ li r0, 1
-/* 802DF188 002DC0C8 98 1D 00 04 */ stb r0, 4(r29)
-/* 802DF18C 002DC0CC 7F A3 EB 78 */ mr r3, r29
-/* 802DF190 002DC0D0 48 00 00 B9 */ bl JUTResFont_NS_countBlock
-/* 802DF194 002DC0D4 A0 9D 00 64 */ lhz r4, 0x64(r29)
-/* 802DF198 002DC0D8 A0 7D 00 60 */ lhz r3, 0x60(r29)
-/* 802DF19C 002DC0DC A0 1D 00 62 */ lhz r0, 0x62(r29)
-/* 802DF1A0 002DC0E0 7C 00 22 14 */ add r0, r0, r4
-/* 802DF1A4 002DC0E4 7C 03 02 14 */ add r0, r3, r0
-/* 802DF1A8 002DC0E8 54 03 10 3A */ slwi r3, r0, 2
-/* 802DF1AC 002DC0EC 7F E4 FB 78 */ mr r4, r31
-/* 802DF1B0 002DC0F0 38 A0 00 00 */ li r5, 0
-/* 802DF1B4 002DC0F4 4B FE FB 5D */ bl __nwa__FUlP7JKRHeapi
-/* 802DF1B8 002DC0F8 90 7D 00 50 */ stw r3, 0x50(r29)
-/* 802DF1BC 002DC0FC 80 7D 00 50 */ lwz r3, 0x50(r29)
-/* 802DF1C0 002DC100 28 03 00 00 */ cmplwi r3, 0
-/* 802DF1C4 002DC104 40 82 00 0C */ bne lbl_802DF1D0
-/* 802DF1C8 002DC108 38 60 00 00 */ li r3, 0
-/* 802DF1CC 002DC10C 48 00 00 64 */ b lbl_802DF230
-lbl_802DF1D0:
-/* 802DF1D0 002DC110 A0 1D 00 60 */ lhz r0, 0x60(r29)
-/* 802DF1D4 002DC114 28 00 00 00 */ cmplwi r0, 0
-/* 802DF1D8 002DC118 41 82 00 14 */ beq lbl_802DF1EC
-/* 802DF1DC 002DC11C 90 7D 00 54 */ stw r3, 0x54(r29)
-/* 802DF1E0 002DC120 A0 1D 00 60 */ lhz r0, 0x60(r29)
-/* 802DF1E4 002DC124 54 00 10 3A */ slwi r0, r0, 2
-/* 802DF1E8 002DC128 7C 63 02 14 */ add r3, r3, r0
-lbl_802DF1EC:
-/* 802DF1EC 002DC12C A0 1D 00 62 */ lhz r0, 0x62(r29)
-/* 802DF1F0 002DC130 28 00 00 00 */ cmplwi r0, 0
-/* 802DF1F4 002DC134 41 82 00 14 */ beq lbl_802DF208
-/* 802DF1F8 002DC138 90 7D 00 58 */ stw r3, 0x58(r29)
-/* 802DF1FC 002DC13C A0 1D 00 62 */ lhz r0, 0x62(r29)
-/* 802DF200 002DC140 54 00 10 3A */ slwi r0, r0, 2
-/* 802DF204 002DC144 7C 63 02 14 */ add r3, r3, r0
-lbl_802DF208:
-/* 802DF208 002DC148 A0 1D 00 64 */ lhz r0, 0x64(r29)
-/* 802DF20C 002DC14C 28 00 00 00 */ cmplwi r0, 0
-/* 802DF210 002DC150 41 82 00 08 */ beq lbl_802DF218
-/* 802DF214 002DC154 90 7D 00 5C */ stw r3, 0x5c(r29)
-lbl_802DF218:
-/* 802DF218 002DC158 7F A3 EB 78 */ mr r3, r29
-/* 802DF21C 002DC15C 81 9D 00 00 */ lwz r12, 0(r29)
-/* 802DF220 002DC160 81 8C 00 48 */ lwz r12, 0x48(r12)
-/* 802DF224 002DC164 7D 89 03 A6 */ mtctr r12
-/* 802DF228 002DC168 4E 80 04 21 */ bctrl
-/* 802DF22C 002DC16C 38 60 00 01 */ li r3, 1
-lbl_802DF230:
-/* 802DF230 002DC170 39 61 00 20 */ addi r11, r1, 0x20
-/* 802DF234 002DC174 48 08 2F F5 */ bl _restgpr_29
-/* 802DF238 002DC178 80 01 00 24 */ lwz r0, 0x24(r1)
-/* 802DF23C 002DC17C 7C 08 03 A6 */ mtlr r0
-/* 802DF240 002DC180 38 21 00 20 */ addi r1, r1, 0x20
-/* 802DF244 002DC184 4E 80 00 20 */ blr
-
-.global JUTResFont_NS_countBlock
-JUTResFont_NS_countBlock:
-/* 802DF248 002DC188 94 21 FF E0 */ stwu r1, -0x20(r1)
-/* 802DF24C 002DC18C 7C 08 02 A6 */ mflr r0
-/* 802DF250 002DC190 90 01 00 24 */ stw r0, 0x24(r1)
-/* 802DF254 002DC194 39 61 00 20 */ addi r11, r1, 0x20
-/* 802DF258 002DC198 48 08 2F 81 */ bl _savegpr_28
-/* 802DF25C 002DC19C 7C 7C 1B 78 */ mr r28, r3
-/* 802DF260 002DC1A0 38 00 00 00 */ li r0, 0
-/* 802DF264 002DC1A4 B0 03 00 60 */ sth r0, 0x60(r3)
-/* 802DF268 002DC1A8 B0 03 00 62 */ sth r0, 0x62(r3)
-/* 802DF26C 002DC1AC B0 03 00 64 */ sth r0, 0x64(r3)
-/* 802DF270 002DC1B0 80 63 00 48 */ lwz r3, 0x48(r3)
-/* 802DF274 002DC1B4 3B C3 00 20 */ addi r30, r3, 0x20
-/* 802DF278 002DC1B8 3B A0 00 00 */ li r29, 0
-/* 802DF27C 002DC1BC 3C 60 4D 41 */ lis r3, 0x4D415031@ha
-/* 802DF280 002DC1C0 3B E3 50 31 */ addi r31, r3, 0x4D415031@l
-/* 802DF284 002DC1C4 48 00 00 98 */ b lbl_802DF31C
-lbl_802DF288:
-/* 802DF288 002DC1C8 80 9E 00 00 */ lwz r4, 0(r30)
-/* 802DF28C 002DC1CC 7C 04 F8 00 */ cmpw r4, r31
-/* 802DF290 002DC1D0 41 82 00 64 */ beq lbl_802DF2F4
-/* 802DF294 002DC1D4 40 80 00 2C */ bge lbl_802DF2C0
-/* 802DF298 002DC1D8 3C 60 49 4E */ lis r3, 0x494E4631@ha
-/* 802DF29C 002DC1DC 38 03 46 31 */ addi r0, r3, 0x494E4631@l
-/* 802DF2A0 002DC1E0 7C 04 00 00 */ cmpw r4, r0
-/* 802DF2A4 002DC1E4 41 82 00 6C */ beq lbl_802DF310
-/* 802DF2A8 002DC1E8 40 80 00 5C */ bge lbl_802DF304
-/* 802DF2AC 002DC1EC 3C 60 47 4C */ lis r3, 0x474C5931@ha
-/* 802DF2B0 002DC1F0 38 03 59 31 */ addi r0, r3, 0x474C5931@l
-/* 802DF2B4 002DC1F4 7C 04 00 00 */ cmpw r4, r0
-/* 802DF2B8 002DC1F8 41 82 00 2C */ beq lbl_802DF2E4
-/* 802DF2BC 002DC1FC 48 00 00 48 */ b lbl_802DF304
-lbl_802DF2C0:
-/* 802DF2C0 002DC200 3C 60 57 49 */ lis r3, 0x57494431@ha
-/* 802DF2C4 002DC204 38 03 44 31 */ addi r0, r3, 0x57494431@l
-/* 802DF2C8 002DC208 7C 04 00 00 */ cmpw r4, r0
-/* 802DF2CC 002DC20C 41 82 00 08 */ beq lbl_802DF2D4
-/* 802DF2D0 002DC210 48 00 00 34 */ b lbl_802DF304
-lbl_802DF2D4:
-/* 802DF2D4 002DC214 A0 7C 00 60 */ lhz r3, 0x60(r28)
-/* 802DF2D8 002DC218 38 03 00 01 */ addi r0, r3, 1
-/* 802DF2DC 002DC21C B0 1C 00 60 */ sth r0, 0x60(r28)
-/* 802DF2E0 002DC220 48 00 00 30 */ b lbl_802DF310
-lbl_802DF2E4:
-/* 802DF2E4 002DC224 A0 7C 00 62 */ lhz r3, 0x62(r28)
-/* 802DF2E8 002DC228 38 03 00 01 */ addi r0, r3, 1
-/* 802DF2EC 002DC22C B0 1C 00 62 */ sth r0, 0x62(r28)
-/* 802DF2F0 002DC230 48 00 00 20 */ b lbl_802DF310
-lbl_802DF2F4:
-/* 802DF2F4 002DC234 A0 7C 00 64 */ lhz r3, 0x64(r28)
-/* 802DF2F8 002DC238 38 03 00 01 */ addi r0, r3, 1
-/* 802DF2FC 002DC23C B0 1C 00 64 */ sth r0, 0x64(r28)
-/* 802DF300 002DC240 48 00 00 10 */ b lbl_802DF310
-lbl_802DF304:
-/* 802DF304 002DC244 3C 60 80 3A */ lis r3, lbl_8039D45C@ha
-/* 802DF308 002DC248 38 63 D4 5C */ addi r3, r3, lbl_8039D45C@l
-/* 802DF30C 002DC24C 48 00 93 3D */ bl JUTReportConsole
-lbl_802DF310:
-/* 802DF310 002DC250 80 1E 00 04 */ lwz r0, 4(r30)
-/* 802DF314 002DC254 7F DE 02 14 */ add r30, r30, r0
-/* 802DF318 002DC258 3B BD 00 01 */ addi r29, r29, 1
-lbl_802DF31C:
-/* 802DF31C 002DC25C 80 7C 00 48 */ lwz r3, 0x48(r28)
-/* 802DF320 002DC260 80 03 00 0C */ lwz r0, 0xc(r3)
-/* 802DF324 002DC264 7C 1D 00 40 */ cmplw r29, r0
-/* 802DF328 002DC268 41 80 FF 60 */ blt lbl_802DF288
-/* 802DF32C 002DC26C 39 61 00 20 */ addi r11, r1, 0x20
-/* 802DF330 002DC270 48 08 2E F5 */ bl _restgpr_28
-/* 802DF334 002DC274 80 01 00 24 */ lwz r0, 0x24(r1)
-/* 802DF338 002DC278 7C 08 03 A6 */ mtlr r0
-/* 802DF33C 002DC27C 38 21 00 20 */ addi r1, r1, 0x20
-/* 802DF340 002DC280 4E 80 00 20 */ blr
-/* 802DF344 002DC284 94 21 FF D0 */ stwu r1, -0x30(r1)
-/* 802DF348 002DC288 7C 08 02 A6 */ mflr r0
-/* 802DF34C 002DC28C 90 01 00 34 */ stw r0, 0x34(r1)
-/* 802DF350 002DC290 39 61 00 30 */ addi r11, r1, 0x30
-/* 802DF354 002DC294 48 08 2E 79 */ bl func_803621CC
-/* 802DF358 002DC298 7C 7C 1B 78 */ mr r28, r3
-/* 802DF35C 002DC29C 3B 60 00 00 */ li r27, 0
-/* 802DF360 002DC2A0 3B 40 00 00 */ li r26, 0
-/* 802DF364 002DC2A4 3B 20 00 00 */ li r25, 0
-/* 802DF368 002DC2A8 3C 60 00 01 */ lis r3, 0x0000FFFF@ha
-/* 802DF36C 002DC2AC 38 03 FF FF */ addi r0, r3, 0x0000FFFF@l
-/* 802DF370 002DC2B0 B0 1C 00 68 */ sth r0, 0x68(r28)
-/* 802DF374 002DC2B4 80 7C 00 48 */ lwz r3, 0x48(r28)
-/* 802DF378 002DC2B8 3B C3 00 20 */ addi r30, r3, 0x20
-/* 802DF37C 002DC2BC 3B A0 00 00 */ li r29, 0
-/* 802DF380 002DC2C0 3C 60 4D 41 */ lis r3, 0x4D415031@ha
-/* 802DF384 002DC2C4 3B E3 50 31 */ addi r31, r3, 0x4D415031@l
-/* 802DF388 002DC2C8 48 00 00 DC */ b lbl_802DF464
-lbl_802DF38C:
-/* 802DF38C 002DC2CC 80 9E 00 00 */ lwz r4, 0(r30)
-/* 802DF390 002DC2D0 7C 04 F8 00 */ cmpw r4, r31
-/* 802DF394 002DC2D4 41 82 00 88 */ beq lbl_802DF41C
-/* 802DF398 002DC2D8 40 80 00 2C */ bge lbl_802DF3C4
-/* 802DF39C 002DC2DC 3C 60 49 4E */ lis r3, 0x494E4631@ha
-/* 802DF3A0 002DC2E0 38 03 46 31 */ addi r0, r3, 0x494E4631@l
-/* 802DF3A4 002DC2E4 7C 04 00 00 */ cmpw r4, r0
-/* 802DF3A8 002DC2E8 41 82 00 30 */ beq lbl_802DF3D8
-/* 802DF3AC 002DC2EC 40 80 00 9C */ bge lbl_802DF448
-/* 802DF3B0 002DC2F0 3C 60 47 4C */ lis r3, 0x474C5931@ha
-/* 802DF3B4 002DC2F4 38 03 59 31 */ addi r0, r3, 0x474C5931@l
-/* 802DF3B8 002DC2F8 7C 04 00 00 */ cmpw r4, r0
-/* 802DF3BC 002DC2FC 41 82 00 50 */ beq lbl_802DF40C
-/* 802DF3C0 002DC300 48 00 00 88 */ b lbl_802DF448
-lbl_802DF3C4:
-/* 802DF3C4 002DC304 3C 60 57 49 */ lis r3, 0x57494431@ha
-/* 802DF3C8 002DC308 38 03 44 31 */ addi r0, r3, 0x57494431@l
-/* 802DF3CC 002DC30C 7C 04 00 00 */ cmpw r4, r0
-/* 802DF3D0 002DC310 41 82 00 2C */ beq lbl_802DF3FC
-/* 802DF3D4 002DC314 48 00 00 74 */ b lbl_802DF448
-lbl_802DF3D8:
-/* 802DF3D8 002DC318 93 DC 00 4C */ stw r30, 0x4c(r28)
-/* 802DF3DC 002DC31C 80 7C 00 4C */ lwz r3, 0x4c(r28)
-/* 802DF3E0 002DC320 A0 03 00 08 */ lhz r0, 8(r3)
-/* 802DF3E4 002DC324 54 04 10 3A */ slwi r4, r0, 2
-/* 802DF3E8 002DC328 3C 60 80 3A */ lis r3, lbl_8039D390@ha
-/* 802DF3EC 002DC32C 38 03 D3 90 */ addi r0, r3, lbl_8039D390@l
-/* 802DF3F0 002DC330 7C 00 22 14 */ add r0, r0, r4
-/* 802DF3F4 002DC334 90 1C 00 6C */ stw r0, 0x6c(r28)
-/* 802DF3F8 002DC338 48 00 00 60 */ b lbl_802DF458
-lbl_802DF3FC:
-/* 802DF3FC 002DC33C 80 7C 00 54 */ lwz r3, 0x54(r28)
-/* 802DF400 002DC340 7F C3 D9 2E */ stwx r30, r3, r27
-/* 802DF404 002DC344 3B 7B 00 04 */ addi r27, r27, 4
-/* 802DF408 002DC348 48 00 00 50 */ b lbl_802DF458
-lbl_802DF40C:
-/* 802DF40C 002DC34C 80 7C 00 58 */ lwz r3, 0x58(r28)
-/* 802DF410 002DC350 7F C3 D1 2E */ stwx r30, r3, r26
-/* 802DF414 002DC354 3B 5A 00 04 */ addi r26, r26, 4
-/* 802DF418 002DC358 48 00 00 40 */ b lbl_802DF458
-lbl_802DF41C:
-/* 802DF41C 002DC35C 80 7C 00 5C */ lwz r3, 0x5c(r28)
-/* 802DF420 002DC360 7F C3 C9 2E */ stwx r30, r3, r25
-/* 802DF424 002DC364 A0 1C 00 68 */ lhz r0, 0x68(r28)
-/* 802DF428 002DC368 80 7C 00 5C */ lwz r3, 0x5c(r28)
-/* 802DF42C 002DC36C 7C 63 C8 2E */ lwzx r3, r3, r25
-/* 802DF430 002DC370 A0 63 00 0A */ lhz r3, 0xa(r3)
-/* 802DF434 002DC374 7C 00 18 40 */ cmplw r0, r3
-/* 802DF438 002DC378 40 81 00 08 */ ble lbl_802DF440
-/* 802DF43C 002DC37C B0 7C 00 68 */ sth r3, 0x68(r28)
-lbl_802DF440:
-/* 802DF440 002DC380 3B 39 00 04 */ addi r25, r25, 4
-/* 802DF444 002DC384 48 00 00 14 */ b lbl_802DF458
-lbl_802DF448:
-/* 802DF448 002DC388 3C 60 80 3A */ lis r3, lbl_8039D45C@ha
-/* 802DF44C 002DC38C 38 63 D4 5C */ addi r3, r3, lbl_8039D45C@l
-/* 802DF450 002DC390 38 63 00 20 */ addi r3, r3, 0x20
-/* 802DF454 002DC394 48 00 91 F5 */ bl JUTReportConsole
-lbl_802DF458:
-/* 802DF458 002DC398 80 1E 00 04 */ lwz r0, 4(r30)
-/* 802DF45C 002DC39C 7F DE 02 14 */ add r30, r30, r0
-/* 802DF460 002DC3A0 3B BD 00 01 */ addi r29, r29, 1
-lbl_802DF464:
-/* 802DF464 002DC3A4 80 7C 00 48 */ lwz r3, 0x48(r28)
-/* 802DF468 002DC3A8 80 03 00 0C */ lwz r0, 0xc(r3)
-/* 802DF46C 002DC3AC 7C 1D 00 40 */ cmplw r29, r0
-/* 802DF470 002DC3B0 41 80 FF 1C */ blt lbl_802DF38C
-/* 802DF474 002DC3B4 39 61 00 30 */ addi r11, r1, 0x30
-/* 802DF478 002DC3B8 48 08 2D A1 */ bl func_80362218
-/* 802DF47C 002DC3BC 80 01 00 34 */ lwz r0, 0x34(r1)
-/* 802DF480 002DC3C0 7C 08 03 A6 */ mtlr r0
-/* 802DF484 002DC3C4 38 21 00 30 */ addi r1, r1, 0x30
-/* 802DF488 002DC3C8 4E 80 00 20 */ blr
-/* 802DF48C 002DC3CC 94 21 FF F0 */ stwu r1, -0x10(r1)
-/* 802DF490 002DC3D0 7C 08 02 A6 */ mflr r0
-/* 802DF494 002DC3D4 90 01 00 14 */ stw r0, 0x14(r1)
-/* 802DF498 002DC3D8 38 60 00 01 */ li r3, 1
-/* 802DF49C 002DC3DC 48 07 E6 95 */ bl GXSetNumChans
-/* 802DF4A0 002DC3E0 38 60 00 01 */ li r3, 1
-/* 802DF4A4 002DC3E4 48 08 03 ED */ bl GXSetNumTevStages
-/* 802DF4A8 002DC3E8 38 60 00 01 */ li r3, 1
-/* 802DF4AC 002DC3EC 48 07 C9 51 */ bl GXSetNumTexGens
-/* 802DF4B0 002DC3F0 38 60 00 00 */ li r3, 0
-/* 802DF4B4 002DC3F4 38 80 00 00 */ li r4, 0
-/* 802DF4B8 002DC3F8 38 A0 00 00 */ li r5, 0
-/* 802DF4BC 002DC3FC 38 C0 00 04 */ li r6, 4
-/* 802DF4C0 002DC400 48 08 02 35 */ bl GXSetTevOrder
-/* 802DF4C4 002DC404 38 60 00 04 */ li r3, 4
-/* 802DF4C8 002DC408 38 80 00 00 */ li r4, 0
-/* 802DF4CC 002DC40C 38 A0 00 00 */ li r5, 0
-/* 802DF4D0 002DC410 38 C0 00 01 */ li r6, 1
-/* 802DF4D4 002DC414 38 E0 00 00 */ li r7, 0
-/* 802DF4D8 002DC418 39 00 00 00 */ li r8, 0
-/* 802DF4DC 002DC41C 39 20 00 02 */ li r9, 2
-/* 802DF4E0 002DC420 48 07 E6 8D */ bl GXSetChanCtrl
-/* 802DF4E4 002DC424 38 60 00 00 */ li r3, 0
-/* 802DF4E8 002DC428 38 80 00 00 */ li r4, 0
-/* 802DF4EC 002DC42C 48 07 FC AD */ bl GXSetTevOp
-/* 802DF4F0 002DC430 38 60 00 01 */ li r3, 1
-/* 802DF4F4 002DC434 38 80 00 04 */ li r4, 4
-/* 802DF4F8 002DC438 38 A0 00 05 */ li r5, 5
-/* 802DF4FC 002DC43C 38 C0 00 0F */ li r6, 0xf
-/* 802DF500 002DC440 48 08 06 F1 */ bl GXSetBlendMode
-/* 802DF504 002DC444 38 60 00 00 */ li r3, 0
-/* 802DF508 002DC448 38 80 00 09 */ li r4, 9
-/* 802DF50C 002DC44C 38 A0 00 01 */ li r5, 1
-/* 802DF510 002DC450 38 C0 00 03 */ li r6, 3
-/* 802DF514 002DC454 38 E0 00 00 */ li r7, 0
-/* 802DF518 002DC458 48 07 C0 AD */ bl GXSetVtxAttrFmt
-/* 802DF51C 002DC45C 38 60 00 00 */ li r3, 0
-/* 802DF520 002DC460 38 80 00 0B */ li r4, 0xb
-/* 802DF524 002DC464 38 A0 00 01 */ li r5, 1
-/* 802DF528 002DC468 38 C0 00 05 */ li r6, 5
-/* 802DF52C 002DC46C 38 E0 00 00 */ li r7, 0
-/* 802DF530 002DC470 48 07 C0 95 */ bl GXSetVtxAttrFmt
-/* 802DF534 002DC474 38 60 00 00 */ li r3, 0
-/* 802DF538 002DC478 38 80 00 0D */ li r4, 0xd
-/* 802DF53C 002DC47C 38 A0 00 01 */ li r5, 1
-/* 802DF540 002DC480 38 C0 00 02 */ li r6, 2
-/* 802DF544 002DC484 38 E0 00 0F */ li r7, 0xf
-/* 802DF548 002DC488 48 07 C0 7D */ bl GXSetVtxAttrFmt
-/* 802DF54C 002DC48C 48 07 C0 41 */ bl GXClearVtxDesc
-/* 802DF550 002DC490 38 60 00 09 */ li r3, 9
-/* 802DF554 002DC494 38 80 00 01 */ li r4, 1
-/* 802DF558 002DC498 48 07 B9 61 */ bl GXSetVtxDesc
-/* 802DF55C 002DC49C 38 60 00 0B */ li r3, 0xb
-/* 802DF560 002DC4A0 38 80 00 01 */ li r4, 1
-/* 802DF564 002DC4A4 48 07 B9 55 */ bl GXSetVtxDesc
-/* 802DF568 002DC4A8 38 60 00 0D */ li r3, 0xd
-/* 802DF56C 002DC4AC 38 80 00 01 */ li r4, 1
-/* 802DF570 002DC4B0 48 07 B9 49 */ bl GXSetVtxDesc
-/* 802DF574 002DC4B4 80 01 00 14 */ lwz r0, 0x14(r1)
-/* 802DF578 002DC4B8 7C 08 03 A6 */ mtlr r0
-/* 802DF57C 002DC4BC 38 21 00 10 */ addi r1, r1, 0x10
-/* 802DF580 002DC4C0 4E 80 00 20 */ blr
-/* 802DF584 002DC4C4 94 21 FF E0 */ stwu r1, -0x20(r1)
-/* 802DF588 002DC4C8 7C 08 02 A6 */ mflr r0
-/* 802DF58C 002DC4CC 90 01 00 24 */ stw r0, 0x24(r1)
-/* 802DF590 002DC4D0 93 E1 00 1C */ stw r31, 0x1c(r1)
-/* 802DF594 002DC4D4 93 C1 00 18 */ stw r30, 0x18(r1)
-/* 802DF598 002DC4D8 7C 9E 23 78 */ mr r30, r4
-/* 802DF59C 002DC4DC 7C BF 2B 78 */ mr r31, r5
-/* 802DF5A0 002DC4E0 80 04 00 00 */ lwz r0, 0(r4)
-/* 802DF5A4 002DC4E4 28 00 00 00 */ cmplwi r0, 0
-/* 802DF5A8 002DC4E8 40 82 00 28 */ bne lbl_802DF5D0
-/* 802DF5AC 002DC4EC 80 9F 00 00 */ lwz r4, 0(r31)
-/* 802DF5B0 002DC4F0 3C 04 00 01 */ addis r0, r4, 1
-/* 802DF5B4 002DC4F4 28 00 FF FF */ cmplwi r0, 0xffff
-/* 802DF5B8 002DC4F8 40 82 00 18 */ bne lbl_802DF5D0
-/* 802DF5BC 002DC4FC 81 83 00 00 */ lwz r12, 0(r3)
-/* 802DF5C0 002DC500 81 8C 00 0C */ lwz r12, 0xc(r12)
-/* 802DF5C4 002DC504 7D 89 03 A6 */ mtctr r12
-/* 802DF5C8 002DC508 4E 80 04 21 */ bctrl
-/* 802DF5CC 002DC50C 48 00 01 E0 */ b lbl_802DF7AC
-lbl_802DF5D0:
-/* 802DF5D0 002DC510 38 60 00 01 */ li r3, 1
-/* 802DF5D4 002DC514 48 07 E5 5D */ bl GXSetNumChans
-/* 802DF5D8 002DC518 38 60 00 02 */ li r3, 2
-/* 802DF5DC 002DC51C 48 08 02 B5 */ bl GXSetNumTevStages
-/* 802DF5E0 002DC520 38 60 00 01 */ li r3, 1
-/* 802DF5E4 002DC524 48 07 C8 19 */ bl GXSetNumTexGens
-/* 802DF5E8 002DC528 38 60 00 00 */ li r3, 0
-/* 802DF5EC 002DC52C 38 80 00 00 */ li r4, 0
-/* 802DF5F0 002DC530 38 A0 00 00 */ li r5, 0
-/* 802DF5F4 002DC534 38 C0 00 FF */ li r6, 0xff
-/* 802DF5F8 002DC538 48 08 00 FD */ bl GXSetTevOrder
-/* 802DF5FC 002DC53C 38 60 00 04 */ li r3, 4
-/* 802DF600 002DC540 38 80 00 00 */ li r4, 0
-/* 802DF604 002DC544 38 A0 00 00 */ li r5, 0
-/* 802DF608 002DC548 38 C0 00 01 */ li r6, 1
-/* 802DF60C 002DC54C 38 E0 00 00 */ li r7, 0
-/* 802DF610 002DC550 39 00 00 00 */ li r8, 0
-/* 802DF614 002DC554 39 20 00 02 */ li r9, 2
-/* 802DF618 002DC558 48 07 E5 55 */ bl GXSetChanCtrl
-/* 802DF61C 002DC55C 80 1E 00 00 */ lwz r0, 0(r30)
-/* 802DF620 002DC560 90 01 00 0C */ stw r0, 0xc(r1)
-/* 802DF624 002DC564 38 60 00 01 */ li r3, 1
-/* 802DF628 002DC568 38 81 00 0C */ addi r4, r1, 0xc
-/* 802DF62C 002DC56C 48 07 FD 51 */ bl GXSetTevColor
-/* 802DF630 002DC570 80 1F 00 00 */ lwz r0, 0(r31)
-/* 802DF634 002DC574 90 01 00 08 */ stw r0, 8(r1)
-/* 802DF638 002DC578 38 60 00 02 */ li r3, 2
-/* 802DF63C 002DC57C 38 81 00 08 */ addi r4, r1, 8
-/* 802DF640 002DC580 48 07 FD 3D */ bl GXSetTevColor
-/* 802DF644 002DC584 38 60 00 00 */ li r3, 0
-/* 802DF648 002DC588 38 80 00 02 */ li r4, 2
-/* 802DF64C 002DC58C 38 A0 00 04 */ li r5, 4
-/* 802DF650 002DC590 38 C0 00 08 */ li r6, 8
-/* 802DF654 002DC594 38 E0 00 0F */ li r7, 0xf
-/* 802DF658 002DC598 48 07 FB CD */ bl GXSetTevColorIn
-/* 802DF65C 002DC59C 38 60 00 00 */ li r3, 0
-/* 802DF660 002DC5A0 38 80 00 01 */ li r4, 1
-/* 802DF664 002DC5A4 38 A0 00 02 */ li r5, 2
-/* 802DF668 002DC5A8 38 C0 00 04 */ li r6, 4
-/* 802DF66C 002DC5AC 38 E0 00 07 */ li r7, 7
-/* 802DF670 002DC5B0 48 07 FB F9 */ bl GXSetTevAlphaIn
-/* 802DF674 002DC5B4 38 60 00 00 */ li r3, 0
-/* 802DF678 002DC5B8 38 80 00 00 */ li r4, 0
-/* 802DF67C 002DC5BC 38 A0 00 00 */ li r5, 0
-/* 802DF680 002DC5C0 38 C0 00 00 */ li r6, 0
-/* 802DF684 002DC5C4 38 E0 00 01 */ li r7, 1
-/* 802DF688 002DC5C8 39 00 00 00 */ li r8, 0
-/* 802DF68C 002DC5CC 48 07 FC 21 */ bl GXSetTevColorOp
-/* 802DF690 002DC5D0 38 60 00 00 */ li r3, 0
-/* 802DF694 002DC5D4 38 80 00 00 */ li r4, 0
-/* 802DF698 002DC5D8 38 A0 00 00 */ li r5, 0
-/* 802DF69C 002DC5DC 38 C0 00 00 */ li r6, 0
-/* 802DF6A0 002DC5E0 38 E0 00 01 */ li r7, 1
-/* 802DF6A4 002DC5E4 39 00 00 00 */ li r8, 0
-/* 802DF6A8 002DC5E8 48 07 FC 6D */ bl GXSetTevAlphaOp
-/* 802DF6AC 002DC5EC 38 60 00 01 */ li r3, 1
-/* 802DF6B0 002DC5F0 38 80 00 FF */ li r4, 0xff
-/* 802DF6B4 002DC5F4 38 A0 00 FF */ li r5, 0xff
-/* 802DF6B8 002DC5F8 38 C0 00 04 */ li r6, 4
-/* 802DF6BC 002DC5FC 48 08 00 39 */ bl GXSetTevOrder
-/* 802DF6C0 002DC600 38 60 00 01 */ li r3, 1
-/* 802DF6C4 002DC604 38 80 00 0F */ li r4, 0xf
-/* 802DF6C8 002DC608 38 A0 00 00 */ li r5, 0
-/* 802DF6CC 002DC60C 38 C0 00 0A */ li r6, 0xa
-/* 802DF6D0 002DC610 38 E0 00 0F */ li r7, 0xf
-/* 802DF6D4 002DC614 48 07 FB 51 */ bl GXSetTevColorIn
-/* 802DF6D8 002DC618 38 60 00 01 */ li r3, 1
-/* 802DF6DC 002DC61C 38 80 00 07 */ li r4, 7
-/* 802DF6E0 002DC620 38 A0 00 00 */ li r5, 0
-/* 802DF6E4 002DC624 38 C0 00 05 */ li r6, 5
-/* 802DF6E8 002DC628 38 E0 00 07 */ li r7, 7
-/* 802DF6EC 002DC62C 48 07 FB 7D */ bl GXSetTevAlphaIn
-/* 802DF6F0 002DC630 38 60 00 01 */ li r3, 1
-/* 802DF6F4 002DC634 38 80 00 00 */ li r4, 0
-/* 802DF6F8 002DC638 38 A0 00 00 */ li r5, 0
-/* 802DF6FC 002DC63C 38 C0 00 00 */ li r6, 0
-/* 802DF700 002DC640 38 E0 00 01 */ li r7, 1
-/* 802DF704 002DC644 39 00 00 00 */ li r8, 0
-/* 802DF708 002DC648 48 07 FB A5 */ bl GXSetTevColorOp
-/* 802DF70C 002DC64C 38 60 00 01 */ li r3, 1
-/* 802DF710 002DC650 38 80 00 00 */ li r4, 0
-/* 802DF714 002DC654 38 A0 00 00 */ li r5, 0
-/* 802DF718 002DC658 38 C0 00 00 */ li r6, 0
-/* 802DF71C 002DC65C 38 E0 00 01 */ li r7, 1
-/* 802DF720 002DC660 39 00 00 00 */ li r8, 0
-/* 802DF724 002DC664 48 07 FB F1 */ bl GXSetTevAlphaOp
-/* 802DF728 002DC668 38 60 00 01 */ li r3, 1
-/* 802DF72C 002DC66C 38 80 00 04 */ li r4, 4
-/* 802DF730 002DC670 38 A0 00 05 */ li r5, 5
-/* 802DF734 002DC674 38 C0 00 0F */ li r6, 0xf
-/* 802DF738 002DC678 48 08 04 B9 */ bl GXSetBlendMode
-/* 802DF73C 002DC67C 38 60 00 00 */ li r3, 0
-/* 802DF740 002DC680 38 80 00 09 */ li r4, 9
-/* 802DF744 002DC684 38 A0 00 01 */ li r5, 1
-/* 802DF748 002DC688 38 C0 00 03 */ li r6, 3
-/* 802DF74C 002DC68C 38 E0 00 00 */ li r7, 0
-/* 802DF750 002DC690 48 07 BE 75 */ bl GXSetVtxAttrFmt
-/* 802DF754 002DC694 38 60 00 00 */ li r3, 0
-/* 802DF758 002DC698 38 80 00 0B */ li r4, 0xb
-/* 802DF75C 002DC69C 38 A0 00 01 */ li r5, 1
-/* 802DF760 002DC6A0 38 C0 00 05 */ li r6, 5
-/* 802DF764 002DC6A4 38 E0 00 00 */ li r7, 0
-/* 802DF768 002DC6A8 48 07 BE 5D */ bl GXSetVtxAttrFmt
-/* 802DF76C 002DC6AC 38 60 00 00 */ li r3, 0
-/* 802DF770 002DC6B0 38 80 00 0D */ li r4, 0xd
-/* 802DF774 002DC6B4 38 A0 00 01 */ li r5, 1
-/* 802DF778 002DC6B8 38 C0 00 02 */ li r6, 2
-/* 802DF77C 002DC6BC 38 E0 00 0F */ li r7, 0xf
-/* 802DF780 002DC6C0 48 07 BE 45 */ bl GXSetVtxAttrFmt
-/* 802DF784 002DC6C4 48 07 BE 09 */ bl GXClearVtxDesc
-/* 802DF788 002DC6C8 38 60 00 09 */ li r3, 9
-/* 802DF78C 002DC6CC 38 80 00 01 */ li r4, 1
-/* 802DF790 002DC6D0 48 07 B7 29 */ bl GXSetVtxDesc
-/* 802DF794 002DC6D4 38 60 00 0B */ li r3, 0xb
-/* 802DF798 002DC6D8 38 80 00 01 */ li r4, 1
-/* 802DF79C 002DC6DC 48 07 B7 1D */ bl GXSetVtxDesc
-/* 802DF7A0 002DC6E0 38 60 00 0D */ li r3, 0xd
-/* 802DF7A4 002DC6E4 38 80 00 01 */ li r4, 1
-/* 802DF7A8 002DC6E8 48 07 B7 11 */ bl GXSetVtxDesc
-lbl_802DF7AC:
-/* 802DF7AC 002DC6EC 83 E1 00 1C */ lwz r31, 0x1c(r1)
-/* 802DF7B0 002DC6F0 83 C1 00 18 */ lwz r30, 0x18(r1)
-/* 802DF7B4 002DC6F4 80 01 00 24 */ lwz r0, 0x24(r1)
-/* 802DF7B8 002DC6F8 7C 08 03 A6 */ mtlr r0
-/* 802DF7BC 002DC6FC 38 21 00 20 */ addi r1, r1, 0x20
-/* 802DF7C0 002DC700 4E 80 00 20 */ blr
-/* 802DF7C4 002DC704 94 21 FF 50 */ stwu r1, -0xb0(r1)
-/* 802DF7C8 002DC708 7C 08 02 A6 */ mflr r0
-/* 802DF7CC 002DC70C 90 01 00 B4 */ stw r0, 0xb4(r1)
-/* 802DF7D0 002DC710 DB E1 00 A0 */ stfd f31, 0xa0(r1)
-/* 802DF7D4 002DC714 F3 E1 00 A8 */ psq_st f31, 168(r1), 0, qr0
-/* 802DF7D8 002DC718 DB C1 00 90 */ stfd f30, 0x90(r1)
-/* 802DF7DC 002DC71C F3 C1 00 98 */ psq_st f30, 152(r1), 0, qr0
-/* 802DF7E0 002DC720 DB A1 00 80 */ stfd f29, 0x80(r1)
-/* 802DF7E4 002DC724 F3 A1 00 88 */ psq_st f29, 136(r1), 0, qr0
-/* 802DF7E8 002DC728 DB 81 00 70 */ stfd f28, 0x70(r1)
-/* 802DF7EC 002DC72C F3 81 00 78 */ psq_st f28, 120(r1), 0, qr0
-/* 802DF7F0 002DC730 DB 61 00 60 */ stfd f27, 0x60(r1)
-/* 802DF7F4 002DC734 F3 61 00 68 */ psq_st f27, 104(r1), 0, qr0
-/* 802DF7F8 002DC738 DB 41 00 50 */ stfd f26, 0x50(r1)
-/* 802DF7FC 002DC73C F3 41 00 58 */ psq_st f26, 88(r1), 0, qr0
-/* 802DF800 002DC740 39 61 00 50 */ addi r11, r1, 0x50
-/* 802DF804 002DC744 48 08 29 D1 */ bl _savegpr_27
-/* 802DF808 002DC748 7C 7E 1B 78 */ mr r30, r3
-/* 802DF80C 002DC74C FF 40 08 90 */ fmr f26, f1
-/* 802DF810 002DC750 FF 60 10 90 */ fmr f27, f2
-/* 802DF814 002DC754 FF C0 18 90 */ fmr f30, f3
-/* 802DF818 002DC758 FF 80 20 90 */ fmr f28, f4
-/* 802DF81C 002DC75C 7C BB 2B 78 */ mr r27, r5
-/* 802DF820 002DC760 38 A0 00 00 */ li r5, 0
-/* 802DF824 002DC764 38 C1 00 08 */ addi r6, r1, 8
-/* 802DF828 002DC768 48 00 03 C1 */ bl JUTResFont_NS_loadFont
-/* 802DF82C 002DC76C 88 1E 00 05 */ lbz r0, 5(r30)
-/* 802DF830 002DC770 28 00 00 00 */ cmplwi r0, 0
-/* 802DF834 002DC774 40 82 00 0C */ bne lbl_802DF840
-/* 802DF838 002DC778 57 60 06 3F */ clrlwi. r0, r27, 0x18
-/* 802DF83C 002DC77C 40 82 00 0C */ bne lbl_802DF848
-lbl_802DF840:
-/* 802DF840 002DC780 FF E0 D0 90 */ fmr f31, f26
-/* 802DF844 002DC784 48 00 00 58 */ b lbl_802DF89C
-lbl_802DF848:
-/* 802DF848 002DC788 7F C3 F3 78 */ mr r3, r30
-/* 802DF84C 002DC78C 81 9E 00 00 */ lwz r12, 0(r30)
-/* 802DF850 002DC790 81 8C 00 30 */ lwz r12, 0x30(r12)
-/* 802DF854 002DC794 7D 89 03 A6 */ mtctr r12
-/* 802DF858 002DC798 4E 80 04 21 */ bctrl
-/* 802DF85C 002DC79C C8 22 C5 F8 */ lfd f1, lbl_80455FF8-_SDA2_BASE_(r2)
-/* 802DF860 002DC7A0 6C 60 80 00 */ xoris r0, r3, 0x8000
-/* 802DF864 002DC7A4 90 01 00 14 */ stw r0, 0x14(r1)
-/* 802DF868 002DC7A8 3C 60 43 30 */ lis r3, 0x4330
-/* 802DF86C 002DC7AC 90 61 00 10 */ stw r3, 0x10(r1)
-/* 802DF870 002DC7B0 C8 01 00 10 */ lfd f0, 0x10(r1)
-/* 802DF874 002DC7B4 EC 00 08 28 */ fsubs f0, f0, f1
-/* 802DF878 002DC7B8 EC 5E 00 24 */ fdivs f2, f30, f0
-/* 802DF87C 002DC7BC 88 01 00 08 */ lbz r0, 8(r1)
-/* 802DF880 002DC7C0 C8 22 C6 00 */ lfd f1, lbl_80456000-_SDA2_BASE_(r2)
-/* 802DF884 002DC7C4 90 01 00 1C */ stw r0, 0x1c(r1)
-/* 802DF888 002DC7C8 90 61 00 18 */ stw r3, 0x18(r1)
-/* 802DF88C 002DC7CC C8 01 00 18 */ lfd f0, 0x18(r1)
-/* 802DF890 002DC7D0 EC 00 08 28 */ fsubs f0, f0, f1
-/* 802DF894 002DC7D4 EC 00 00 B2 */ fmuls f0, f0, f2
-/* 802DF898 002DC7D8 EF FA 00 28 */ fsubs f31, f26, f0
-lbl_802DF89C:
-/* 802DF89C 002DC7DC 7F C3 F3 78 */ mr r3, r30
-/* 802DF8A0 002DC7E0 81 9E 00 00 */ lwz r12, 0(r30)
-/* 802DF8A4 002DC7E4 81 8C 00 30 */ lwz r12, 0x30(r12)
-/* 802DF8A8 002DC7E8 7D 89 03 A6 */ mtctr r12
-/* 802DF8AC 002DC7EC 4E 80 04 21 */ bctrl
-/* 802DF8B0 002DC7F0 C8 42 C5 F8 */ lfd f2, lbl_80455FF8-_SDA2_BASE_(r2)
-/* 802DF8B4 002DC7F4 6C 60 80 00 */ xoris r0, r3, 0x8000
-/* 802DF8B8 002DC7F8 90 01 00 1C */ stw r0, 0x1c(r1)
-/* 802DF8BC 002DC7FC 3C 60 43 30 */ lis r3, 0x4330
-/* 802DF8C0 002DC800 90 61 00 18 */ stw r3, 0x18(r1)
-/* 802DF8C4 002DC804 C8 01 00 18 */ lfd f0, 0x18(r1)
-/* 802DF8C8 002DC808 EC 00 10 28 */ fsubs f0, f0, f2
-/* 802DF8CC 002DC80C EC 3E 00 24 */ fdivs f1, f30, f0
-/* 802DF8D0 002DC810 80 1E 00 08 */ lwz r0, 8(r30)
-/* 802DF8D4 002DC814 6C 00 80 00 */ xoris r0, r0, 0x8000
-/* 802DF8D8 002DC818 90 01 00 14 */ stw r0, 0x14(r1)
-/* 802DF8DC 002DC81C 90 61 00 10 */ stw r3, 0x10(r1)
-/* 802DF8E0 002DC820 C8 01 00 10 */ lfd f0, 0x10(r1)
-/* 802DF8E4 002DC824 EC 00 10 28 */ fsubs f0, f0, f2
-/* 802DF8E8 002DC828 EF A0 00 72 */ fmuls f29, f0, f1
-/* 802DF8EC 002DC82C 88 1E 00 05 */ lbz r0, 5(r30)
-/* 802DF8F0 002DC830 28 00 00 00 */ cmplwi r0, 0
-/* 802DF8F4 002DC834 40 82 00 B8 */ bne lbl_802DF9AC
-/* 802DF8F8 002DC838 57 60 06 3F */ clrlwi. r0, r27, 0x18
-/* 802DF8FC 002DC83C 40 82 00 60 */ bne lbl_802DF95C
-/* 802DF900 002DC840 7F C3 F3 78 */ mr r3, r30
-/* 802DF904 002DC844 81 9E 00 00 */ lwz r12, 0(r30)
-/* 802DF908 002DC848 81 8C 00 30 */ lwz r12, 0x30(r12)
-/* 802DF90C 002DC84C 7D 89 03 A6 */ mtctr r12
-/* 802DF910 002DC850 4E 80 04 21 */ bctrl
-/* 802DF914 002DC854 C8 42 C5 F8 */ lfd f2, lbl_80455FF8-_SDA2_BASE_(r2)
-/* 802DF918 002DC858 6C 60 80 00 */ xoris r0, r3, 0x8000
-/* 802DF91C 002DC85C 90 01 00 1C */ stw r0, 0x1c(r1)
-/* 802DF920 002DC860 3C 80 43 30 */ lis r4, 0x4330
-/* 802DF924 002DC864 90 81 00 18 */ stw r4, 0x18(r1)
-/* 802DF928 002DC868 C8 01 00 18 */ lfd f0, 0x18(r1)
-/* 802DF92C 002DC86C EC 00 10 28 */ fsubs f0, f0, f2
-/* 802DF930 002DC870 EC 3E 00 24 */ fdivs f1, f30, f0
-/* 802DF934 002DC874 88 61 00 09 */ lbz r3, 9(r1)
-/* 802DF938 002DC878 88 01 00 08 */ lbz r0, 8(r1)
-/* 802DF93C 002DC87C 7C 03 02 14 */ add r0, r3, r0
-/* 802DF940 002DC880 6C 00 80 00 */ xoris r0, r0, 0x8000
-/* 802DF944 002DC884 90 01 00 14 */ stw r0, 0x14(r1)
-/* 802DF948 002DC888 90 81 00 10 */ stw r4, 0x10(r1)
-/* 802DF94C 002DC88C C8 01 00 10 */ lfd f0, 0x10(r1)
-/* 802DF950 002DC890 EC 00 10 28 */ fsubs f0, f0, f2
-/* 802DF954 002DC894 EF A0 00 72 */ fmuls f29, f0, f1
-/* 802DF958 002DC898 48 00 00 54 */ b lbl_802DF9AC
-lbl_802DF95C:
-/* 802DF95C 002DC89C 7F C3 F3 78 */ mr r3, r30
-/* 802DF960 002DC8A0 81 9E 00 00 */ lwz r12, 0(r30)
-/* 802DF964 002DC8A4 81 8C 00 30 */ lwz r12, 0x30(r12)
-/* 802DF968 002DC8A8 7D 89 03 A6 */ mtctr r12
-/* 802DF96C 002DC8AC 4E 80 04 21 */ bctrl
-/* 802DF970 002DC8B0 C8 22 C5 F8 */ lfd f1, lbl_80455FF8-_SDA2_BASE_(r2)
-/* 802DF974 002DC8B4 6C 60 80 00 */ xoris r0, r3, 0x8000
-/* 802DF978 002DC8B8 90 01 00 1C */ stw r0, 0x1c(r1)
-/* 802DF97C 002DC8BC 3C 60 43 30 */ lis r3, 0x4330
-/* 802DF980 002DC8C0 90 61 00 18 */ stw r3, 0x18(r1)
-/* 802DF984 002DC8C4 C8 01 00 18 */ lfd f0, 0x18(r1)
-/* 802DF988 002DC8C8 EC 00 08 28 */ fsubs f0, f0, f1
-/* 802DF98C 002DC8CC EC 5E 00 24 */ fdivs f2, f30, f0
-/* 802DF990 002DC8D0 88 01 00 09 */ lbz r0, 9(r1)
-/* 802DF994 002DC8D4 C8 22 C6 00 */ lfd f1, lbl_80456000-_SDA2_BASE_(r2)
-/* 802DF998 002DC8D8 90 01 00 14 */ stw r0, 0x14(r1)
-/* 802DF99C 002DC8DC 90 61 00 10 */ stw r3, 0x10(r1)
-/* 802DF9A0 002DC8E0 C8 01 00 10 */ lfd f0, 0x10(r1)
-/* 802DF9A4 002DC8E4 EC 00 08 28 */ fsubs f0, f0, f1
-/* 802DF9A8 002DC8E8 EF A0 00 B2 */ fmuls f29, f0, f2
-lbl_802DF9AC:
-/* 802DF9AC 002DC8EC EF DF F0 2A */ fadds f30, f31, f30
-/* 802DF9B0 002DC8F0 7F C3 F3 78 */ mr r3, r30
-/* 802DF9B4 002DC8F4 81 9E 00 00 */ lwz r12, 0(r30)
-/* 802DF9B8 002DC8F8 81 8C 00 24 */ lwz r12, 0x24(r12)
-/* 802DF9BC 002DC8FC 7D 89 03 A6 */ mtctr r12
-/* 802DF9C0 002DC900 4E 80 04 21 */ bctrl
-/* 802DF9C4 002DC904 C8 22 C5 F8 */ lfd f1, lbl_80455FF8-_SDA2_BASE_(r2)
-/* 802DF9C8 002DC908 6C 60 80 00 */ xoris r0, r3, 0x8000
-/* 802DF9CC 002DC90C 90 01 00 1C */ stw r0, 0x1c(r1)
-/* 802DF9D0 002DC910 3C 00 43 30 */ lis r0, 0x4330
-/* 802DF9D4 002DC914 90 01 00 18 */ stw r0, 0x18(r1)
-/* 802DF9D8 002DC918 C8 01 00 18 */ lfd f0, 0x18(r1)
-/* 802DF9DC 002DC91C EC 00 08 28 */ fsubs f0, f0, f1
-/* 802DF9E0 002DC920 EF 5C 00 24 */ fdivs f26, f28, f0
-/* 802DF9E4 002DC924 7F C3 F3 78 */ mr r3, r30
-/* 802DF9E8 002DC928 81 9E 00 00 */ lwz r12, 0(r30)
-/* 802DF9EC 002DC92C 81 8C 00 1C */ lwz r12, 0x1c(r12)
-/* 802DF9F0 002DC930 7D 89 03 A6 */ mtctr r12
-/* 802DF9F4 002DC934 4E 80 04 21 */ bctrl
-/* 802DF9F8 002DC938 C8 22 C5 F8 */ lfd f1, lbl_80455FF8-_SDA2_BASE_(r2)
-/* 802DF9FC 002DC93C 6C 60 80 00 */ xoris r0, r3, 0x8000
-/* 802DFA00 002DC940 90 01 00 14 */ stw r0, 0x14(r1)
-/* 802DFA04 002DC944 3C 00 43 30 */ lis r0, 0x4330
-/* 802DFA08 002DC948 90 01 00 10 */ stw r0, 0x10(r1)
-/* 802DFA0C 002DC94C C8 01 00 10 */ lfd f0, 0x10(r1)
-/* 802DFA10 002DC950 EC 00 08 28 */ fsubs f0, f0, f1
-/* 802DFA14 002DC954 EC 00 06 B2 */ fmuls f0, f0, f26
-/* 802DFA18 002DC958 EF 5B 00 28 */ fsubs f26, f27, f0
-/* 802DFA1C 002DC95C 7F C3 F3 78 */ mr r3, r30
-/* 802DFA20 002DC960 81 9E 00 00 */ lwz r12, 0(r30)
-/* 802DFA24 002DC964 81 8C 00 24 */ lwz r12, 0x24(r12)
-/* 802DFA28 002DC968 7D 89 03 A6 */ mtctr r12
-/* 802DFA2C 002DC96C 4E 80 04 21 */ bctrl
-/* 802DFA30 002DC970 C8 22 C5 F8 */ lfd f1, lbl_80455FF8-_SDA2_BASE_(r2)
-/* 802DFA34 002DC974 6C 60 80 00 */ xoris r0, r3, 0x8000
-/* 802DFA38 002DC978 90 01 00 24 */ stw r0, 0x24(r1)
-/* 802DFA3C 002DC97C 3C 00 43 30 */ lis r0, 0x4330
-/* 802DFA40 002DC980 90 01 00 20 */ stw r0, 0x20(r1)
-/* 802DFA44 002DC984 C8 01 00 20 */ lfd f0, 0x20(r1)
-/* 802DFA48 002DC988 EC 00 08 28 */ fsubs f0, f0, f1
-/* 802DFA4C 002DC98C EF 9C 00 24 */ fdivs f28, f28, f0
-/* 802DFA50 002DC990 7F C3 F3 78 */ mr r3, r30
-/* 802DFA54 002DC994 81 9E 00 00 */ lwz r12, 0(r30)
-/* 802DFA58 002DC998 81 8C 00 20 */ lwz r12, 0x20(r12)
-/* 802DFA5C 002DC99C 7D 89 03 A6 */ mtctr r12
-/* 802DFA60 002DC9A0 4E 80 04 21 */ bctrl
-/* 802DFA64 002DC9A4 C8 22 C5 F8 */ lfd f1, lbl_80455FF8-_SDA2_BASE_(r2)
-/* 802DFA68 002DC9A8 6C 60 80 00 */ xoris r0, r3, 0x8000
-/* 802DFA6C 002DC9AC 90 01 00 2C */ stw r0, 0x2c(r1)
-/* 802DFA70 002DC9B0 3C 00 43 30 */ lis r0, 0x4330
-/* 802DFA74 002DC9B4 90 01 00 28 */ stw r0, 0x28(r1)
-/* 802DFA78 002DC9B8 C8 01 00 28 */ lfd f0, 0x28(r1)
-/* 802DFA7C 002DC9BC EC 00 08 28 */ fsubs f0, f0, f1
-/* 802DFA80 002DC9C0 EC 00 07 32 */ fmuls f0, f0, f28
-/* 802DFA84 002DC9C4 EF 7B 00 2A */ fadds f27, f27, f0
-/* 802DFA88 002DC9C8 80 BE 00 1C */ lwz r5, 0x1c(r30)
-/* 802DFA8C 002DC9CC 54 A4 78 20 */ slwi r4, r5, 0xf
-/* 802DFA90 002DC9D0 80 7E 00 58 */ lwz r3, 0x58(r30)
-/* 802DFA94 002DC9D4 A0 1E 00 66 */ lhz r0, 0x66(r30)
-/* 802DFA98 002DC9D8 54 00 10 3A */ slwi r0, r0, 2
-/* 802DFA9C 002DC9DC 7C 63 00 2E */ lwzx r3, r3, r0
-/* 802DFAA0 002DC9E0 A0 C3 00 1A */ lhz r6, 0x1a(r3)
-/* 802DFAA4 002DC9E4 7F E4 33 D6 */ divw r31, r4, r6
-/* 802DFAA8 002DC9E8 80 9E 00 20 */ lwz r4, 0x20(r30)
-/* 802DFAAC 002DC9EC 54 80 78 20 */ slwi r0, r4, 0xf
-/* 802DFAB0 002DC9F0 A0 E3 00 1C */ lhz r7, 0x1c(r3)
-/* 802DFAB4 002DC9F4 7F A0 3B D6 */ divw r29, r0, r7
-/* 802DFAB8 002DC9F8 A0 03 00 0C */ lhz r0, 0xc(r3)
-/* 802DFABC 002DC9FC 7C 05 02 14 */ add r0, r5, r0
-/* 802DFAC0 002DCA00 54 00 78 20 */ slwi r0, r0, 0xf
-/* 802DFAC4 002DCA04 7F 80 33 D6 */ divw r28, r0, r6
-/* 802DFAC8 002DCA08 A0 03 00 0E */ lhz r0, 0xe(r3)
-/* 802DFACC 002DCA0C 7C 04 02 14 */ add r0, r4, r0
-/* 802DFAD0 002DCA10 54 00 78 20 */ slwi r0, r0, 0xf
-/* 802DFAD4 002DCA14 7F 60 3B D6 */ divw r27, r0, r7
-/* 802DFAD8 002DCA18 38 60 00 00 */ li r3, 0
-/* 802DFADC 002DCA1C 38 80 00 09 */ li r4, 9
-/* 802DFAE0 002DCA20 38 A0 00 01 */ li r5, 1
-/* 802DFAE4 002DCA24 38 C0 00 04 */ li r6, 4
-/* 802DFAE8 002DCA28 38 E0 00 00 */ li r7, 0
-/* 802DFAEC 002DCA2C 48 07 BA D9 */ bl GXSetVtxAttrFmt
-/* 802DFAF0 002DCA30 38 60 00 80 */ li r3, 0x80
-/* 802DFAF4 002DCA34 38 80 00 00 */ li r4, 0
-/* 802DFAF8 002DCA38 38 A0 00 04 */ li r5, 4
-/* 802DFAFC 002DCA3C 48 07 CC 69 */ bl GXBegin
-/* 802DFB00 002DCA40 3C 60 CC 01 */ lis r3, 0xCC008000@ha
-/* 802DFB04 002DCA44 D3 E3 80 00 */ stfs f31, 0xCC008000@l(r3)
-/* 802DFB08 002DCA48 D3 43 80 00 */ stfs f26, -0x8000(r3)
-/* 802DFB0C 002DCA4C C0 02 C5 F0 */ lfs f0, lbl_80455FF0-_SDA2_BASE_(r2)
-/* 802DFB10 002DCA50 D0 03 80 00 */ stfs f0, -0x8000(r3)
-/* 802DFB14 002DCA54 80 1E 00 0C */ lwz r0, 0xc(r30)
-/* 802DFB18 002DCA58 90 03 80 00 */ stw r0, -0x8000(r3)
-/* 802DFB1C 002DCA5C B3 E3 80 00 */ sth r31, -0x8000(r3)
-/* 802DFB20 002DCA60 B3 A3 80 00 */ sth r29, -0x8000(r3)
-/* 802DFB24 002DCA64 D3 C3 80 00 */ stfs f30, -0x8000(r3)
-/* 802DFB28 002DCA68 D3 43 80 00 */ stfs f26, -0x8000(r3)
-/* 802DFB2C 002DCA6C C0 02 C5 F0 */ lfs f0, lbl_80455FF0-_SDA2_BASE_(r2)
-/* 802DFB30 002DCA70 D0 03 80 00 */ stfs f0, -0x8000(r3)
-/* 802DFB34 002DCA74 80 1E 00 10 */ lwz r0, 0x10(r30)
-/* 802DFB38 002DCA78 90 03 80 00 */ stw r0, -0x8000(r3)
-/* 802DFB3C 002DCA7C B3 83 80 00 */ sth r28, -0x8000(r3)
-/* 802DFB40 002DCA80 B3 A3 80 00 */ sth r29, -0x8000(r3)
-/* 802DFB44 002DCA84 D3 C3 80 00 */ stfs f30, -0x8000(r3)
-/* 802DFB48 002DCA88 D3 63 80 00 */ stfs f27, -0x8000(r3)
-/* 802DFB4C 002DCA8C C0 02 C5 F0 */ lfs f0, lbl_80455FF0-_SDA2_BASE_(r2)
-/* 802DFB50 002DCA90 D0 03 80 00 */ stfs f0, -0x8000(r3)
-/* 802DFB54 002DCA94 80 1E 00 18 */ lwz r0, 0x18(r30)
-/* 802DFB58 002DCA98 90 03 80 00 */ stw r0, -0x8000(r3)
-/* 802DFB5C 002DCA9C B3 83 80 00 */ sth r28, -0x8000(r3)
-/* 802DFB60 002DCAA0 B3 63 80 00 */ sth r27, -0x8000(r3)
-/* 802DFB64 002DCAA4 D3 E3 80 00 */ stfs f31, -0x8000(r3)
-/* 802DFB68 002DCAA8 D3 63 80 00 */ stfs f27, -0x8000(r3)
-/* 802DFB6C 002DCAAC C0 02 C5 F0 */ lfs f0, lbl_80455FF0-_SDA2_BASE_(r2)
-/* 802DFB70 002DCAB0 D0 03 80 00 */ stfs f0, -0x8000(r3)
-/* 802DFB74 002DCAB4 80 1E 00 14 */ lwz r0, 0x14(r30)
-/* 802DFB78 002DCAB8 90 03 80 00 */ stw r0, -0x8000(r3)
-/* 802DFB7C 002DCABC B3 E3 80 00 */ sth r31, -0x8000(r3)
-/* 802DFB80 002DCAC0 B3 63 80 00 */ sth r27, -0x8000(r3)
-/* 802DFB84 002DCAC4 38 60 00 00 */ li r3, 0
-/* 802DFB88 002DCAC8 38 80 00 09 */ li r4, 9
-/* 802DFB8C 002DCACC 38 A0 00 01 */ li r5, 1
-/* 802DFB90 002DCAD0 38 C0 00 03 */ li r6, 3
-/* 802DFB94 002DCAD4 38 E0 00 00 */ li r7, 0
-/* 802DFB98 002DCAD8 48 07 BA 2D */ bl GXSetVtxAttrFmt
-/* 802DFB9C 002DCADC FC 20 E8 90 */ fmr f1, f29
-/* 802DFBA0 002DCAE0 E3 E1 00 A8 */ psq_l f31, 168(r1), 0, qr0
-/* 802DFBA4 002DCAE4 CB E1 00 A0 */ lfd f31, 0xa0(r1)
-/* 802DFBA8 002DCAE8 E3 C1 00 98 */ psq_l f30, 152(r1), 0, qr0
-/* 802DFBAC 002DCAEC CB C1 00 90 */ lfd f30, 0x90(r1)
-/* 802DFBB0 002DCAF0 E3 A1 00 88 */ psq_l f29, 136(r1), 0, qr0
-/* 802DFBB4 002DCAF4 CB A1 00 80 */ lfd f29, 0x80(r1)
-/* 802DFBB8 002DCAF8 E3 81 00 78 */ psq_l f28, 120(r1), 0, qr0
-/* 802DFBBC 002DCAFC CB 81 00 70 */ lfd f28, 0x70(r1)
-/* 802DFBC0 002DCB00 E3 61 00 68 */ psq_l f27, 104(r1), 0, qr0
-/* 802DFBC4 002DCB04 CB 61 00 60 */ lfd f27, 0x60(r1)
-/* 802DFBC8 002DCB08 E3 41 00 58 */ psq_l f26, 88(r1), 0, qr0
-/* 802DFBCC 002DCB0C CB 41 00 50 */ lfd f26, 0x50(r1)
-/* 802DFBD0 002DCB10 39 61 00 50 */ addi r11, r1, 0x50
-/* 802DFBD4 002DCB14 48 08 26 4D */ bl _restgpr_27
-/* 802DFBD8 002DCB18 80 01 00 B4 */ lwz r0, 0xb4(r1)
-/* 802DFBDC 002DCB1C 7C 08 03 A6 */ mtlr r0
-/* 802DFBE0 002DCB20 38 21 00 B0 */ addi r1, r1, 0xb0
-/* 802DFBE4 002DCB24 4E 80 00 20 */ blr
-
-.global JUTResFont_NS_loadFont
-JUTResFont_NS_loadFont:
-/* 802DFBE8 002DCB28 94 21 FF E0 */ stwu r1, -0x20(r1)
-/* 802DFBEC 002DCB2C 7C 08 02 A6 */ mflr r0
-/* 802DFBF0 002DCB30 90 01 00 24 */ stw r0, 0x24(r1)
-/* 802DFBF4 002DCB34 39 61 00 20 */ addi r11, r1, 0x20
-/* 802DFBF8 002DCB38 48 08 25 E5 */ bl _savegpr_29
-/* 802DFBFC 002DCB3C 7C 7D 1B 78 */ mr r29, r3
-/* 802DFC00 002DCB40 7C 9E 23 78 */ mr r30, r4
-/* 802DFC04 002DCB44 7C BF 2B 78 */ mr r31, r5
-/* 802DFC08 002DCB48 28 06 00 00 */ cmplwi r6, 0
-/* 802DFC0C 002DCB4C 41 82 00 18 */ beq lbl_802DFC24
-/* 802DFC10 002DCB50 7C C5 33 78 */ mr r5, r6
-/* 802DFC14 002DCB54 81 83 00 00 */ lwz r12, 0(r3)
-/* 802DFC18 002DCB58 81 8C 00 2C */ lwz r12, 0x2c(r12)
-/* 802DFC1C 002DCB5C 7D 89 03 A6 */ mtctr r12
-/* 802DFC20 002DCB60 4E 80 04 21 */ bctrl
-lbl_802DFC24:
-/* 802DFC24 002DCB64 7F A3 EB 78 */ mr r3, r29
-/* 802DFC28 002DCB68 7F C4 F3 78 */ mr r4, r30
-/* 802DFC2C 002DCB6C 48 00 01 AD */ bl JUTResFont_NS_getFontCode
-/* 802DFC30 002DCB70 7C 64 1B 78 */ mr r4, r3
-/* 802DFC34 002DCB74 7F A3 EB 78 */ mr r3, r29
-/* 802DFC38 002DCB78 7F E5 FB 78 */ mr r5, r31
-/* 802DFC3C 002DCB7C 81 9D 00 00 */ lwz r12, 0(r29)
-/* 802DFC40 002DCB80 81 8C 00 44 */ lwz r12, 0x44(r12)
-/* 802DFC44 002DCB84 7D 89 03 A6 */ mtctr r12
-/* 802DFC48 002DCB88 4E 80 04 21 */ bctrl
-/* 802DFC4C 002DCB8C 39 61 00 20 */ addi r11, r1, 0x20
-/* 802DFC50 002DCB90 48 08 25 D9 */ bl _restgpr_29
-/* 802DFC54 002DCB94 80 01 00 24 */ lwz r0, 0x24(r1)
-/* 802DFC58 002DCB98 7C 08 03 A6 */ mtlr r0
-/* 802DFC5C 002DCB9C 38 21 00 20 */ addi r1, r1, 0x20
-/* 802DFC60 002DCBA0 4E 80 00 20 */ blr
-/* 802DFC64 002DCBA4 94 21 FF F0 */ stwu r1, -0x10(r1)
-/* 802DFC68 002DCBA8 7C 08 02 A6 */ mflr r0
-/* 802DFC6C 002DCBAC 90 01 00 14 */ stw r0, 0x14(r1)
-/* 802DFC70 002DCBB0 93 E1 00 0C */ stw r31, 0xc(r1)
-/* 802DFC74 002DCBB4 93 C1 00 08 */ stw r30, 8(r1)
-/* 802DFC78 002DCBB8 7C 7E 1B 78 */ mr r30, r3
-/* 802DFC7C 002DCBBC 7C BF 2B 78 */ mr r31, r5
-/* 802DFC80 002DCBC0 48 00 01 59 */ bl JUTResFont_NS_getFontCode
-/* 802DFC84 002DCBC4 38 A0 00 00 */ li r5, 0
-/* 802DFC88 002DCBC8 98 BF 00 00 */ stb r5, 0(r31)
-/* 802DFC8C 002DCBCC 80 9E 00 4C */ lwz r4, 0x4c(r30)
-/* 802DFC90 002DCBD0 A0 04 00 0E */ lhz r0, 0xe(r4)
-/* 802DFC94 002DCBD4 98 1F 00 01 */ stb r0, 1(r31)
-/* 802DFC98 002DCBD8 A0 1E 00 60 */ lhz r0, 0x60(r30)
-/* 802DFC9C 002DCBDC 80 9E 00 54 */ lwz r4, 0x54(r30)
-/* 802DFCA0 002DCBE0 7C 09 03 A6 */ mtctr r0
-/* 802DFCA4 002DCBE4 2C 00 00 00 */ cmpwi r0, 0
-/* 802DFCA8 002DCBE8 40 81 00 4C */ ble lbl_802DFCF4
-lbl_802DFCAC:
-/* 802DFCAC 002DCBEC 7C C4 28 2E */ lwzx r6, r4, r5
-/* 802DFCB0 002DCBF0 A0 E6 00 08 */ lhz r7, 8(r6)
-/* 802DFCB4 002DCBF4 7C 07 18 00 */ cmpw r7, r3
-/* 802DFCB8 002DCBF8 41 81 00 34 */ bgt lbl_802DFCEC
-/* 802DFCBC 002DCBFC A0 06 00 0A */ lhz r0, 0xa(r6)
-/* 802DFCC0 002DCC00 7C 03 00 00 */ cmpw r3, r0
-/* 802DFCC4 002DCC04 41 81 00 28 */ bgt lbl_802DFCEC
-/* 802DFCC8 002DCC08 7C 07 18 50 */ subf r0, r7, r3
-/* 802DFCCC 002DCC0C 54 03 08 3C */ slwi r3, r0, 1
-/* 802DFCD0 002DCC10 38 63 00 0C */ addi r3, r3, 0xc
-/* 802DFCD4 002DCC14 7C 66 1A 14 */ add r3, r6, r3
-/* 802DFCD8 002DCC18 88 03 00 00 */ lbz r0, 0(r3)
-/* 802DFCDC 002DCC1C 98 1F 00 00 */ stb r0, 0(r31)
-/* 802DFCE0 002DCC20 88 03 00 01 */ lbz r0, 1(r3)
-/* 802DFCE4 002DCC24 98 1F 00 01 */ stb r0, 1(r31)
-/* 802DFCE8 002DCC28 48 00 00 0C */ b lbl_802DFCF4
-lbl_802DFCEC:
-/* 802DFCEC 002DCC2C 38 A5 00 04 */ addi r5, r5, 4
-/* 802DFCF0 002DCC30 42 00 FF BC */ bdnz lbl_802DFCAC
-lbl_802DFCF4:
-/* 802DFCF4 002DCC34 83 E1 00 0C */ lwz r31, 0xc(r1)
-/* 802DFCF8 002DCC38 83 C1 00 08 */ lwz r30, 8(r1)
-/* 802DFCFC 002DCC3C 80 01 00 14 */ lwz r0, 0x14(r1)
-/* 802DFD00 002DCC40 7C 08 03 A6 */ mtlr r0
-/* 802DFD04 002DCC44 38 21 00 10 */ addi r1, r1, 0x10
-/* 802DFD08 002DCC48 4E 80 00 20 */ blr
-/* 802DFD0C 002DCC4C 94 21 FF F0 */ stwu r1, -0x10(r1)
-/* 802DFD10 002DCC50 7C 08 02 A6 */ mflr r0
-/* 802DFD14 002DCC54 90 01 00 14 */ stw r0, 0x14(r1)
-/* 802DFD18 002DCC58 80 83 00 58 */ lwz r4, 0x58(r3)
-/* 802DFD1C 002DCC5C 28 04 00 00 */ cmplwi r4, 0
-/* 802DFD20 002DCC60 41 82 00 18 */ beq lbl_802DFD38
-/* 802DFD24 002DCC64 80 84 00 00 */ lwz r4, 0(r4)
-/* 802DFD28 002DCC68 28 04 00 00 */ cmplwi r4, 0
-/* 802DFD2C 002DCC6C 41 82 00 0C */ beq lbl_802DFD38
-/* 802DFD30 002DCC70 A0 64 00 0C */ lhz r3, 0xc(r4)
-/* 802DFD34 002DCC74 48 00 00 14 */ b lbl_802DFD48
-lbl_802DFD38:
-/* 802DFD38 002DCC78 81 83 00 00 */ lwz r12, 0(r3)
-/* 802DFD3C 002DCC7C 81 8C 00 28 */ lwz r12, 0x28(r12)
-/* 802DFD40 002DCC80 7D 89 03 A6 */ mtctr r12
-/* 802DFD44 002DCC84 4E 80 04 21 */ bctrl
-lbl_802DFD48:
-/* 802DFD48 002DCC88 80 01 00 14 */ lwz r0, 0x14(r1)
-/* 802DFD4C 002DCC8C 7C 08 03 A6 */ mtlr r0
-/* 802DFD50 002DCC90 38 21 00 10 */ addi r1, r1, 0x10
-/* 802DFD54 002DCC94 4E 80 00 20 */ blr
-/* 802DFD58 002DCC98 94 21 FF F0 */ stwu r1, -0x10(r1)
-/* 802DFD5C 002DCC9C 7C 08 02 A6 */ mflr r0
-/* 802DFD60 002DCCA0 90 01 00 14 */ stw r0, 0x14(r1)
-/* 802DFD64 002DCCA4 80 83 00 58 */ lwz r4, 0x58(r3)
-/* 802DFD68 002DCCA8 28 04 00 00 */ cmplwi r4, 0
-/* 802DFD6C 002DCCAC 41 82 00 18 */ beq lbl_802DFD84
-/* 802DFD70 002DCCB0 80 84 00 00 */ lwz r4, 0(r4)
-/* 802DFD74 002DCCB4 28 04 00 00 */ cmplwi r4, 0
-/* 802DFD78 002DCCB8 41 82 00 0C */ beq lbl_802DFD84
-/* 802DFD7C 002DCCBC A0 64 00 0E */ lhz r3, 0xe(r4)
-/* 802DFD80 002DCCC0 48 00 00 14 */ b lbl_802DFD94
-lbl_802DFD84:
-/* 802DFD84 002DCCC4 81 83 00 00 */ lwz r12, 0(r3)
-/* 802DFD88 002DCCC8 81 8C 00 24 */ lwz r12, 0x24(r12)
-/* 802DFD8C 002DCCCC 7D 89 03 A6 */ mtctr r12
-/* 802DFD90 002DCCD0 4E 80 04 21 */ bctrl
-lbl_802DFD94:
-/* 802DFD94 002DCCD4 80 01 00 14 */ lwz r0, 0x14(r1)
-/* 802DFD98 002DCCD8 7C 08 03 A6 */ mtlr r0
-/* 802DFD9C 002DCCDC 38 21 00 10 */ addi r1, r1, 0x10
-/* 802DFDA0 002DCCE0 4E 80 00 20 */ blr
-/* 802DFDA4 002DCCE4 94 21 FF F0 */ stwu r1, -0x10(r1)
-/* 802DFDA8 002DCCE8 7C 08 02 A6 */ mflr r0
-/* 802DFDAC 002DCCEC 90 01 00 14 */ stw r0, 0x14(r1)
-/* 802DFDB0 002DCCF0 7C 65 1B 78 */ mr r5, r3
-/* 802DFDB4 002DCCF4 7C 83 23 78 */ mr r3, r4
-/* 802DFDB8 002DCCF8 80 85 00 6C */ lwz r4, 0x6c(r5)
-/* 802DFDBC 002DCCFC 81 84 00 00 */ lwz r12, 0(r4)
-/* 802DFDC0 002DCD00 7D 89 03 A6 */ mtctr r12
-/* 802DFDC4 002DCD04 4E 80 04 21 */ bctrl
-/* 802DFDC8 002DCD08 80 01 00 14 */ lwz r0, 0x14(r1)
-/* 802DFDCC 002DCD0C 7C 08 03 A6 */ mtlr r0
-/* 802DFDD0 002DCD10 38 21 00 10 */ addi r1, r1, 0x10
-/* 802DFDD4 002DCD14 4E 80 00 20 */ blr
-
-.global JUTResFont_NS_getFontCode
-JUTResFont_NS_getFontCode:
-/* 802DFDD8 002DCD18 94 21 FF E0 */ stwu r1, -0x20(r1)
-/* 802DFDDC 002DCD1C 7C 08 02 A6 */ mflr r0
-/* 802DFDE0 002DCD20 90 01 00 24 */ stw r0, 0x24(r1)
-/* 802DFDE4 002DCD24 39 61 00 20 */ addi r11, r1, 0x20
-/* 802DFDE8 002DCD28 48 08 23 F5 */ bl _savegpr_29
-/* 802DFDEC 002DCD2C 7C 7D 1B 78 */ mr r29, r3
-/* 802DFDF0 002DCD30 7C 9E 23 78 */ mr r30, r4
-/* 802DFDF4 002DCD34 80 83 00 4C */ lwz r4, 0x4c(r3)
-/* 802DFDF8 002DCD38 A3 E4 00 12 */ lhz r31, 0x12(r4)
-/* 802DFDFC 002DCD3C 81 83 00 00 */ lwz r12, 0(r3)
-/* 802DFE00 002DCD40 81 8C 00 38 */ lwz r12, 0x38(r12)
-/* 802DFE04 002DCD44 7D 89 03 A6 */ mtctr r12
-/* 802DFE08 002DCD48 4E 80 04 21 */ bctrl
-/* 802DFE0C 002DCD4C 2C 03 00 02 */ cmpwi r3, 2
-/* 802DFE10 002DCD50 40 82 00 34 */ bne lbl_802DFE44
-/* 802DFE14 002DCD54 A0 1D 00 68 */ lhz r0, 0x68(r29)
-/* 802DFE18 002DCD58 28 00 80 00 */ cmplwi r0, 0x8000
-/* 802DFE1C 002DCD5C 41 80 00 28 */ blt lbl_802DFE44
-/* 802DFE20 002DCD60 2C 1E 00 20 */ cmpwi r30, 0x20
-/* 802DFE24 002DCD64 41 80 00 20 */ blt lbl_802DFE44
-/* 802DFE28 002DCD68 28 1E 00 7F */ cmplwi r30, 0x7f
-/* 802DFE2C 002DCD6C 40 80 00 18 */ bge lbl_802DFE44
-/* 802DFE30 002DCD70 3C 60 80 3A */ lis r3, lbl_8039D39C@ha
-/* 802DFE34 002DCD74 38 63 D3 9C */ addi r3, r3, lbl_8039D39C@l
-/* 802DFE38 002DCD78 57 C0 08 3C */ slwi r0, r30, 1
-/* 802DFE3C 002DCD7C 7C 63 02 14 */ add r3, r3, r0
-/* 802DFE40 002DCD80 A3 C3 FF C0 */ lhz r30, -0x40(r3)
-lbl_802DFE44:
-/* 802DFE44 002DCD84 38 60 00 00 */ li r3, 0
-/* 802DFE48 002DCD88 A0 1D 00 64 */ lhz r0, 0x64(r29)
-/* 802DFE4C 002DCD8C 80 9D 00 5C */ lwz r4, 0x5c(r29)
-/* 802DFE50 002DCD90 7C 09 03 A6 */ mtctr r0
-/* 802DFE54 002DCD94 2C 00 00 00 */ cmpwi r0, 0
-/* 802DFE58 002DCD98 40 81 00 EC */ ble lbl_802DFF44
-lbl_802DFE5C:
-/* 802DFE5C 002DCD9C 7C C4 18 2E */ lwzx r6, r4, r3
-/* 802DFE60 002DCDA0 A0 A6 00 0A */ lhz r5, 0xa(r6)
-/* 802DFE64 002DCDA4 7C 05 F0 00 */ cmpw r5, r30
-/* 802DFE68 002DCDA8 41 81 00 D4 */ bgt lbl_802DFF3C
-/* 802DFE6C 002DCDAC A0 06 00 0C */ lhz r0, 0xc(r6)
-/* 802DFE70 002DCDB0 7C 1E 00 00 */ cmpw r30, r0
-/* 802DFE74 002DCDB4 41 81 00 C8 */ bgt lbl_802DFF3C
-/* 802DFE78 002DCDB8 A0 06 00 08 */ lhz r0, 8(r6)
-/* 802DFE7C 002DCDBC 28 00 00 00 */ cmplwi r0, 0
-/* 802DFE80 002DCDC0 40 82 00 0C */ bne lbl_802DFE8C
-/* 802DFE84 002DCDC4 7F E5 F0 50 */ subf r31, r5, r30
-/* 802DFE88 002DCDC8 48 00 00 BC */ b lbl_802DFF44
-lbl_802DFE8C:
-/* 802DFE8C 002DCDCC 28 00 00 02 */ cmplwi r0, 2
-/* 802DFE90 002DCDD0 40 82 00 18 */ bne lbl_802DFEA8
-/* 802DFE94 002DCDD4 7C 05 F0 50 */ subf r0, r5, r30
-/* 802DFE98 002DCDD8 54 00 08 3C */ slwi r0, r0, 1
-/* 802DFE9C 002DCDDC 7C 66 02 14 */ add r3, r6, r0
-/* 802DFEA0 002DCDE0 A3 E3 00 10 */ lhz r31, 0x10(r3)
-/* 802DFEA4 002DCDE4 48 00 00 A0 */ b lbl_802DFF44
-lbl_802DFEA8:
-/* 802DFEA8 002DCDE8 28 00 00 03 */ cmplwi r0, 3
-/* 802DFEAC 002DCDEC 40 82 00 60 */ bne lbl_802DFF0C
-/* 802DFEB0 002DCDF0 38 86 00 10 */ addi r4, r6, 0x10
-/* 802DFEB4 002DCDF4 38 A0 00 00 */ li r5, 0
-/* 802DFEB8 002DCDF8 A0 66 00 0E */ lhz r3, 0xe(r6)
-/* 802DFEBC 002DCDFC 38 C3 FF FF */ addi r6, r3, -1
-/* 802DFEC0 002DCE00 48 00 00 40 */ b lbl_802DFF00
-lbl_802DFEC4:
-/* 802DFEC4 002DCE04 7C 06 2A 14 */ add r0, r6, r5
-/* 802DFEC8 002DCE08 7C 00 0E 70 */ srawi r0, r0, 1
-/* 802DFECC 002DCE0C 7C E0 01 94 */ addze r7, r0
-/* 802DFED0 002DCE10 54 E3 10 3A */ slwi r3, r7, 2
-/* 802DFED4 002DCE14 7C 04 1A 2E */ lhzx r0, r4, r3
-/* 802DFED8 002DCE18 7C 1E 00 00 */ cmpw r30, r0
-/* 802DFEDC 002DCE1C 40 80 00 0C */ bge lbl_802DFEE8
-/* 802DFEE0 002DCE20 38 C7 FF FF */ addi r6, r7, -1
-/* 802DFEE4 002DCE24 48 00 00 1C */ b lbl_802DFF00
-lbl_802DFEE8:
-/* 802DFEE8 002DCE28 40 81 00 0C */ ble lbl_802DFEF4
-/* 802DFEEC 002DCE2C 38 A7 00 01 */ addi r5, r7, 1
-/* 802DFEF0 002DCE30 48 00 00 10 */ b lbl_802DFF00
-lbl_802DFEF4:
-/* 802DFEF4 002DCE34 7C 64 1A 14 */ add r3, r4, r3
-/* 802DFEF8 002DCE38 A3 E3 00 02 */ lhz r31, 2(r3)
-/* 802DFEFC 002DCE3C 48 00 00 48 */ b lbl_802DFF44
-lbl_802DFF00:
-/* 802DFF00 002DCE40 7C 06 28 00 */ cmpw r6, r5
-/* 802DFF04 002DCE44 40 80 FF C0 */ bge lbl_802DFEC4
-/* 802DFF08 002DCE48 48 00 00 3C */ b lbl_802DFF44
-lbl_802DFF0C:
-/* 802DFF0C 002DCE4C 28 00 00 01 */ cmplwi r0, 1
-/* 802DFF10 002DCE50 40 82 00 34 */ bne lbl_802DFF44
-/* 802DFF14 002DCE54 38 A0 00 00 */ li r5, 0
-/* 802DFF18 002DCE58 A0 06 00 0E */ lhz r0, 0xe(r6)
-/* 802DFF1C 002DCE5C 28 00 00 01 */ cmplwi r0, 1
-/* 802DFF20 002DCE60 40 82 00 08 */ bne lbl_802DFF28
-/* 802DFF24 002DCE64 38 A6 00 10 */ addi r5, r6, 0x10
-lbl_802DFF28:
-/* 802DFF28 002DCE68 7F A3 EB 78 */ mr r3, r29
-/* 802DFF2C 002DCE6C 7F C4 F3 78 */ mr r4, r30
-/* 802DFF30 002DCE70 48 00 01 95 */ bl JUTResFont_NS_convertSjis
-/* 802DFF34 002DCE74 7C 7F 1B 78 */ mr r31, r3
-/* 802DFF38 002DCE78 48 00 00 0C */ b lbl_802DFF44
-lbl_802DFF3C:
-/* 802DFF3C 002DCE7C 38 63 00 04 */ addi r3, r3, 4
-/* 802DFF40 002DCE80 42 00 FF 1C */ bdnz lbl_802DFE5C
-lbl_802DFF44:
-/* 802DFF44 002DCE84 7F E3 FB 78 */ mr r3, r31
-/* 802DFF48 002DCE88 39 61 00 20 */ addi r11, r1, 0x20
-/* 802DFF4C 002DCE8C 48 08 22 DD */ bl _restgpr_29
-/* 802DFF50 002DCE90 80 01 00 24 */ lwz r0, 0x24(r1)
-/* 802DFF54 002DCE94 7C 08 03 A6 */ mtlr r0
-/* 802DFF58 002DCE98 38 21 00 20 */ addi r1, r1, 0x20
-/* 802DFF5C 002DCE9C 4E 80 00 20 */ blr
-/* 802DFF60 002DCEA0 94 21 FF E0 */ stwu r1, -0x20(r1)
-/* 802DFF64 002DCEA4 7C 08 02 A6 */ mflr r0
-/* 802DFF68 002DCEA8 90 01 00 24 */ stw r0, 0x24(r1)
-/* 802DFF6C 002DCEAC 39 61 00 20 */ addi r11, r1, 0x20
-/* 802DFF70 002DCEB0 48 08 22 69 */ bl _savegpr_28
-/* 802DFF74 002DCEB4 7C 7C 1B 78 */ mr r28, r3
-/* 802DFF78 002DCEB8 7C BD 2B 78 */ mr r29, r5
-/* 802DFF7C 002DCEBC 3B E0 00 00 */ li r31, 0
-/* 802DFF80 002DCEC0 38 60 00 00 */ li r3, 0
-/* 802DFF84 002DCEC4 A0 FC 00 62 */ lhz r7, 0x62(r28)
-/* 802DFF88 002DCEC8 7C E9 03 A6 */ mtctr r7
-/* 802DFF8C 002DCECC 2C 07 00 00 */ cmpwi r7, 0
-/* 802DFF90 002DCED0 40 81 00 38 */ ble lbl_802DFFC8
-lbl_802DFF94:
-/* 802DFF94 002DCED4 80 BC 00 58 */ lwz r5, 0x58(r28)
-/* 802DFF98 002DCED8 7C A5 18 2E */ lwzx r5, r5, r3
-/* 802DFF9C 002DCEDC A0 C5 00 08 */ lhz r6, 8(r5)
-/* 802DFFA0 002DCEE0 7C 06 20 00 */ cmpw r6, r4
-/* 802DFFA4 002DCEE4 41 81 00 18 */ bgt lbl_802DFFBC
-/* 802DFFA8 002DCEE8 A0 05 00 0A */ lhz r0, 0xa(r5)
-/* 802DFFAC 002DCEEC 7C 04 00 00 */ cmpw r4, r0
-/* 802DFFB0 002DCEF0 41 81 00 0C */ bgt lbl_802DFFBC
-/* 802DFFB4 002DCEF4 7C 86 20 50 */ subf r4, r6, r4
-/* 802DFFB8 002DCEF8 48 00 00 10 */ b lbl_802DFFC8
-lbl_802DFFBC:
-/* 802DFFBC 002DCEFC 3B FF 00 01 */ addi r31, r31, 1
-/* 802DFFC0 002DCF00 38 63 00 04 */ addi r3, r3, 4
-/* 802DFFC4 002DCF04 42 00 FF D0 */ bdnz lbl_802DFF94
-lbl_802DFFC8:
-/* 802DFFC8 002DCF08 7C 1F 38 00 */ cmpw r31, r7
-/* 802DFFCC 002DCF0C 41 82 00 E0 */ beq lbl_802E00AC
-/* 802DFFD0 002DCF10 80 7C 00 58 */ lwz r3, 0x58(r28)
-/* 802DFFD4 002DCF14 57 E6 10 3A */ slwi r6, r31, 2
-/* 802DFFD8 002DCF18 7C A3 30 2E */ lwzx r5, r3, r6
-/* 802DFFDC 002DCF1C A0 65 00 16 */ lhz r3, 0x16(r5)
-/* 802DFFE0 002DCF20 A0 05 00 18 */ lhz r0, 0x18(r5)
-/* 802DFFE4 002DCF24 7C 03 01 D6 */ mullw r0, r3, r0
-/* 802DFFE8 002DCF28 7F C4 03 D6 */ divw r30, r4, r0
-/* 802DFFEC 002DCF2C 7C 1E 01 D6 */ mullw r0, r30, r0
-/* 802DFFF0 002DCF30 7C 80 20 50 */ subf r4, r0, r4
-/* 802DFFF4 002DCF34 7C E4 1B D6 */ divw r7, r4, r3
-/* 802DFFF8 002DCF38 7C 07 19 D6 */ mullw r0, r7, r3
-/* 802DFFFC 002DCF3C 7C 60 20 50 */ subf r3, r0, r4
-/* 802E0000 002DCF40 A0 05 00 0C */ lhz r0, 0xc(r5)
-/* 802E0004 002DCF44 7C 03 01 D6 */ mullw r0, r3, r0
-/* 802E0008 002DCF48 90 1C 00 1C */ stw r0, 0x1c(r28)
-/* 802E000C 002DCF4C 80 7C 00 58 */ lwz r3, 0x58(r28)
-/* 802E0010 002DCF50 7C 63 30 2E */ lwzx r3, r3, r6
-/* 802E0014 002DCF54 A0 03 00 0E */ lhz r0, 0xe(r3)
-/* 802E0018 002DCF58 7C 07 01 D6 */ mullw r0, r7, r0
-/* 802E001C 002DCF5C 90 1C 00 20 */ stw r0, 0x20(r28)
-/* 802E0020 002DCF60 80 1C 00 44 */ lwz r0, 0x44(r28)
-/* 802E0024 002DCF64 7C 1E 00 00 */ cmpw r30, r0
-/* 802E0028 002DCF68 40 82 00 10 */ bne lbl_802E0038
-/* 802E002C 002DCF6C A0 1C 00 66 */ lhz r0, 0x66(r28)
-/* 802E0030 002DCF70 7C 1F 00 00 */ cmpw r31, r0
-/* 802E0034 002DCF74 41 82 00 6C */ beq lbl_802E00A0
-lbl_802E0038:
-/* 802E0038 002DCF78 80 7C 00 58 */ lwz r3, 0x58(r28)
-/* 802E003C 002DCF7C 7C E3 30 2E */ lwzx r7, r3, r6
-/* 802E0040 002DCF80 38 7C 00 24 */ addi r3, r28, 0x24
-/* 802E0044 002DCF84 80 07 00 10 */ lwz r0, 0x10(r7)
-/* 802E0048 002DCF88 7C 9E 01 D6 */ mullw r4, r30, r0
-/* 802E004C 002DCF8C 38 84 00 20 */ addi r4, r4, 0x20
-/* 802E0050 002DCF90 7C 87 22 14 */ add r4, r7, r4
-/* 802E0054 002DCF94 A0 A7 00 1A */ lhz r5, 0x1a(r7)
-/* 802E0058 002DCF98 A0 C7 00 1C */ lhz r6, 0x1c(r7)
-/* 802E005C 002DCF9C A0 E7 00 14 */ lhz r7, 0x14(r7)
-/* 802E0060 002DCFA0 39 00 00 00 */ li r8, 0
-/* 802E0064 002DCFA4 39 20 00 00 */ li r9, 0
-/* 802E0068 002DCFA8 39 40 00 00 */ li r10, 0
-/* 802E006C 002DCFAC 48 07 DD D5 */ bl GXInitTexObj
-/* 802E0070 002DCFB0 38 7C 00 24 */ addi r3, r28, 0x24
-/* 802E0074 002DCFB4 38 80 00 01 */ li r4, 1
-/* 802E0078 002DCFB8 38 A0 00 01 */ li r5, 1
-/* 802E007C 002DCFBC C0 22 C5 F0 */ lfs f1, lbl_80455FF0-_SDA2_BASE_(r2)
-/* 802E0080 002DCFC0 FC 40 08 90 */ fmr f2, f1
-/* 802E0084 002DCFC4 FC 60 08 90 */ fmr f3, f1
-/* 802E0088 002DCFC8 38 C0 00 00 */ li r6, 0
-/* 802E008C 002DCFCC 38 E0 00 00 */ li r7, 0
-/* 802E0090 002DCFD0 39 00 00 00 */ li r8, 0
-/* 802E0094 002DCFD4 48 07 E0 41 */ bl GXInitTexObjLOD
-/* 802E0098 002DCFD8 93 DC 00 44 */ stw r30, 0x44(r28)
-/* 802E009C 002DCFDC B3 FC 00 66 */ sth r31, 0x66(r28)
-lbl_802E00A0:
-/* 802E00A0 002DCFE0 38 7C 00 24 */ addi r3, r28, 0x24
-/* 802E00A4 002DCFE4 7F A4 EB 78 */ mr r4, r29
-/* 802E00A8 002DCFE8 48 07 E3 6D */ bl GXLoadTexObj
-lbl_802E00AC:
-/* 802E00AC 002DCFEC 39 61 00 20 */ addi r11, r1, 0x20
-/* 802E00B0 002DCFF0 48 08 21 75 */ bl _restgpr_28
-/* 802E00B4 002DCFF4 80 01 00 24 */ lwz r0, 0x24(r1)
-/* 802E00B8 002DCFF8 7C 08 03 A6 */ mtlr r0
-/* 802E00BC 002DCFFC 38 21 00 20 */ addi r1, r1, 0x20
-/* 802E00C0 002DD000 4E 80 00 20 */ blr
-
-.global JUTResFont_NS_convertSjis
-JUTResFont_NS_convertSjis:
-/* 802E00C4 002DD004 54 86 C6 3E */ rlwinm r6, r4, 0x18, 0x18, 0x1f
-/* 802E00C8 002DD008 54 83 06 3E */ clrlwi r3, r4, 0x18
-/* 802E00CC 002DD00C 38 E3 FF C0 */ addi r7, r3, -64
-/* 802E00D0 002DD010 2C 07 00 40 */ cmpwi r7, 0x40
-/* 802E00D4 002DD014 41 80 00 08 */ blt lbl_802E00DC
-/* 802E00D8 002DD018 38 E7 FF FF */ addi r7, r7, -1
-lbl_802E00DC:
-/* 802E00DC 002DD01C 38 00 03 1C */ li r0, 0x31c
-/* 802E00E0 002DD020 28 05 00 00 */ cmplwi r5, 0
-/* 802E00E4 002DD024 41 82 00 08 */ beq lbl_802E00EC
-/* 802E00E8 002DD028 A0 05 00 00 */ lhz r0, 0(r5)
-lbl_802E00EC:
-/* 802E00EC 002DD02C 54 04 04 3E */ clrlwi r4, r0, 0x10
-/* 802E00F0 002DD030 38 06 FF 78 */ addi r0, r6, -136
-/* 802E00F4 002DD034 1C 60 00 BC */ mulli r3, r0, 0xbc
-/* 802E00F8 002DD038 38 03 FF A2 */ addi r0, r3, -94
-/* 802E00FC 002DD03C 7C 60 22 14 */ add r3, r0, r4
-/* 802E0100 002DD040 7C 67 1A 14 */ add r3, r7, r3
-/* 802E0104 002DD044 4E 80 00 20 */ blr
-/* 802E0108 002DD048 38 60 00 00 */ li r3, 0
-/* 802E010C 002DD04C 4E 80 00 20 */ blr
-/* 802E0110 002DD050 38 60 00 01 */ li r3, 1
-/* 802E0114 002DD054 4E 80 00 20 */ blr
-/* 802E0118 002DD058 38 00 00 00 */ li r0, 0
-/* 802E011C 002DD05C 2C 03 00 81 */ cmpwi r3, 0x81
-/* 802E0120 002DD060 41 80 00 0C */ blt lbl_802E012C
-/* 802E0124 002DD064 2C 03 00 9F */ cmpwi r3, 0x9f
-/* 802E0128 002DD068 40 81 00 14 */ ble lbl_802E013C
-lbl_802E012C:
-/* 802E012C 002DD06C 2C 03 00 E0 */ cmpwi r3, 0xe0
-/* 802E0130 002DD070 41 80 00 10 */ blt lbl_802E0140
-/* 802E0134 002DD074 2C 03 00 FC */ cmpwi r3, 0xfc
-/* 802E0138 002DD078 41 81 00 08 */ bgt lbl_802E0140
-lbl_802E013C:
-/* 802E013C 002DD07C 38 00 00 01 */ li r0, 1
-lbl_802E0140:
-/* 802E0140 002DD080 7C 03 03 78 */ mr r3, r0
-/* 802E0144 002DD084 4E 80 00 20 */ blr
-
diff --git a/asm/SComponent/c/bg/c_bg_w.s b/asm/SComponent/c/bg/c_bg_w.s
deleted file mode 100644
index d3672bc5d0..0000000000
--- a/asm/SComponent/c/bg/c_bg_w.s
+++ /dev/null
@@ -1,65 +0,0 @@
-.include "macros.inc"
-
-.section .text, "ax" # 802681c0
-
-
-.global cBgW_BgId_NS_Regist
-cBgW_BgId_NS_Regist:
-/* 802681C0 00265100 B0 83 00 00 */ sth r4, 0(r3)
-/* 802681C4 00265104 4E 80 00 20 */ blr
-
-.global cBgW_BgId_NS_Release
-cBgW_BgId_NS_Release:
-/* 802681C8 00265108 38 00 01 00 */ li r0, 0x100
-/* 802681CC 0026510C B0 03 00 00 */ sth r0, 0(r3)
-/* 802681D0 00265110 4E 80 00 20 */ blr
-
-.global cBgW_BgId_NS_ChkUsed
-cBgW_BgId_NS_ChkUsed:
-/* 802681D4 00265114 A0 63 00 00 */ lhz r3, 0(r3)
-/* 802681D8 00265118 38 03 FF 00 */ addi r0, r3, -256
-/* 802681DC 0026511C 54 03 0F FE */ srwi r3, r0, 0x1f
-/* 802681E0 00265120 4E 80 00 20 */ blr
-
-.global cBgW_CheckBGround
-cBgW_CheckBGround:
-/* 802681E4 00265124 C0 02 B6 E8 */ lfs f0, lbl_804550E8-_SDA2_BASE_(r2)
-/* 802681E8 00265128 FC 01 00 40 */ fcmpo cr0, f1, f0
-/* 802681EC 0026512C 4C 41 13 82 */ cror 2, 1, 2
-/* 802681F0 00265130 7C 00 00 26 */ mfcr r0
-/* 802681F4 00265134 54 03 1F FE */ rlwinm r3, r0, 3, 0x1f, 0x1f
-/* 802681F8 00265138 4E 80 00 20 */ blr
-
-.global cBgW_CheckBRoof
-cBgW_CheckBRoof:
-/* 802681FC 0026513C C0 02 B6 EC */ lfs f0, lbl_804550EC-_SDA2_BASE_(r2)
-/* 80268200 00265140 FC 01 00 40 */ fcmpo cr0, f1, f0
-/* 80268204 00265144 7C 00 00 26 */ mfcr r0
-/* 80268208 00265148 54 03 0F FE */ srwi r3, r0, 0x1f
-/* 8026820C 0026514C 4E 80 00 20 */ blr
-
-.global cBgW_CheckBWall
-cBgW_CheckBWall:
-/* 80268210 00265150 94 21 FF F0 */ stwu r1, -0x10(r1)
-/* 80268214 00265154 7C 08 02 A6 */ mflr r0
-/* 80268218 00265158 90 01 00 14 */ stw r0, 0x14(r1)
-/* 8026821C 0026515C DB E1 00 08 */ stfd f31, 8(r1)
-/* 80268220 00265160 FF E0 08 90 */ fmr f31, f1
-/* 80268224 00265164 4B FF FF C1 */ bl cBgW_CheckBGround
-/* 80268228 00265168 54 60 06 3F */ clrlwi. r0, r3, 0x18
-/* 8026822C 0026516C 40 82 00 1C */ bne lbl_80268248
-/* 80268230 00265170 FC 20 F8 90 */ fmr f1, f31
-/* 80268234 00265174 4B FF FF C9 */ bl cBgW_CheckBRoof
-/* 80268238 00265178 54 60 06 3F */ clrlwi. r0, r3, 0x18
-/* 8026823C 0026517C 40 82 00 0C */ bne lbl_80268248
-/* 80268240 00265180 38 60 00 01 */ li r3, 1
-/* 80268244 00265184 48 00 00 08 */ b lbl_8026824C
-lbl_80268248:
-/* 80268248 00265188 38 60 00 00 */ li r3, 0
-lbl_8026824C:
-/* 8026824C 0026518C CB E1 00 08 */ lfd f31, 8(r1)
-/* 80268250 00265190 80 01 00 14 */ lwz r0, 0x14(r1)
-/* 80268254 00265194 7C 08 03 A6 */ mtlr r0
-/* 80268258 00265198 38 21 00 10 */ addi r1, r1, 0x10
-/* 8026825C 0026519C 4E 80 00 20 */ blr
-
diff --git a/asm/d/a/d_a_npc.s b/asm/d/a/d_a_npc.s
index 8170834da4..af75e1d701 100644
--- a/asm/d/a/d_a_npc.s
+++ b/asm/d/a/d_a_npc.s
@@ -11098,7 +11098,7 @@ lbl_8014F6E4:
/* 8014F728 0014C668 80 7E 0A 14 */ lwz r3, 0xa14(r30)
/* 8014F72C 0014C66C 28 03 00 00 */ cmplwi r3, 0
/* 8014F730 0014C670 41 82 00 24 */ beq lbl_8014F754
-/* 8014F734 0014C674 48 11 8A A1 */ bl cBgW_BgId_NS_ChkUsed
+/* 8014F734 0014C674 48 11 8A A1 */ bl ChkUsed__9cBgW_BgIdCFv
/* 8014F738 0014C678 54 60 06 3F */ clrlwi. r0, r3, 0x18
/* 8014F73C 0014C67C 41 82 00 18 */ beq lbl_8014F754
/* 8014F740 0014C680 3C 60 80 40 */ lis r3, lbl_804061C0@ha
diff --git a/asm/d/bg/d_bg_s.s b/asm/d/bg/d_bg_s.s
index 19b2b79a32..ff0f908ec9 100644
--- a/asm/d/bg/d_bg_s.s
+++ b/asm/d/bg/d_bg_s.s
@@ -45,7 +45,7 @@ cBgS_NS_Regist:
/* 80074170 000710B0 48 00 00 C8 */ b lbl_80074238
lbl_80074174:
/* 80074174 000710B4 7F 83 E3 78 */ mr r3, r28
-/* 80074178 000710B8 48 1F 40 5D */ bl cBgW_BgId_NS_ChkUsed
+/* 80074178 000710B8 48 1F 40 5D */ bl ChkUsed__9cBgW_BgIdCFv
/* 8007417C 000710BC 54 60 06 3F */ clrlwi. r0, r3, 0x18
/* 80074180 000710C0 41 82 00 0C */ beq lbl_8007418C
/* 80074184 000710C4 38 60 00 01 */ li r3, 1
@@ -78,7 +78,7 @@ lbl_800741B8:
/* 800741E4 00071124 4E 80 04 21 */ bctrl
/* 800741E8 00071128 7F 83 E3 78 */ mr r3, r28
/* 800741EC 0007112C 7F E4 FB 78 */ mr r4, r31
-/* 800741F0 00071130 48 1F 3F D1 */ bl cBgW_BgId_NS_Regist
+/* 800741F0 00071130 48 1F 3F D1 */ bl Regist__9cBgW_BgIdFi
/* 800741F4 00071134 38 1F 00 01 */ addi r0, r31, 1
/* 800741F8 00071138 90 0D 89 E0 */ stw r0, lbl_80450F60-_SDA_BASE_(r13)
/* 800741FC 0007113C 2C 00 01 00 */ cmpwi r0, 0x100
@@ -97,7 +97,7 @@ lbl_80074224:
/* 80074224 00071164 7C 04 F8 00 */ cmpw r4, r31
/* 80074228 00071168 40 82 FF 90 */ bne lbl_800741B8
/* 8007422C 0007116C 7F 83 E3 78 */ mr r3, r28
-/* 80074230 00071170 48 1F 3F 99 */ bl cBgW_BgId_NS_Release
+/* 80074230 00071170 48 1F 3F 99 */ bl Release__9cBgW_BgIdFv
/* 80074234 00071174 38 60 00 01 */ li r3, 1
lbl_80074238:
/* 80074238 00071178 39 61 00 20 */ addi r11, r1, 0x20
@@ -122,7 +122,7 @@ cBgS_NS_Release:
lbl_80074278:
/* 80074278 000711B8 A3 FE 00 00 */ lhz r31, 0(r30)
/* 8007427C 000711BC 7F C3 F3 78 */ mr r3, r30
-/* 80074280 000711C0 48 1F 3F 55 */ bl cBgW_BgId_NS_ChkUsed
+/* 80074280 000711C0 48 1F 3F 55 */ bl ChkUsed__9cBgW_BgIdCFv
/* 80074284 000711C4 54 60 06 3F */ clrlwi. r0, r3, 0x18
/* 80074288 000711C8 41 82 00 38 */ beq lbl_800742C0
/* 8007428C 000711CC 2C 1F 00 00 */ cmpwi r31, 0
@@ -136,7 +136,7 @@ lbl_80074278:
/* 800742AC 000711EC 41 82 00 14 */ beq lbl_800742C0
/* 800742B0 000711F0 4B FF FE 79 */ bl cBgS_ChkElm_NS_Release
/* 800742B4 000711F4 7F C3 F3 78 */ mr r3, r30
-/* 800742B8 000711F8 48 1F 3F 11 */ bl cBgW_BgId_NS_Release
+/* 800742B8 000711F8 48 1F 3F 11 */ bl Release__9cBgW_BgIdFv
/* 800742BC 000711FC 48 00 00 0C */ b lbl_800742C8
lbl_800742C0:
/* 800742C0 00071200 38 60 00 01 */ li r3, 1
@@ -1992,7 +1992,7 @@ dBgS_NS_RideCallBack:
/* 80075BA4 00072AE4 1F E0 00 14 */ mulli r31, r0, 0x14
/* 80075BA8 00072AE8 7F DC F8 2E */ lwzx r30, r28, r31
/* 80075BAC 00072AEC 7F C3 F3 78 */ mr r3, r30
-/* 80075BB0 00072AF0 48 1F 26 25 */ bl cBgW_BgId_NS_ChkUsed
+/* 80075BB0 00072AF0 48 1F 26 25 */ bl ChkUsed__9cBgW_BgIdCFv
/* 80075BB4 00072AF4 54 60 06 3F */ clrlwi. r0, r3, 0x18
/* 80075BB8 00072AF8 41 82 00 24 */ beq lbl_80075BDC
/* 80075BBC 00072AFC 7F C3 F3 78 */ mr r3, r30
@@ -2022,7 +2022,7 @@ lbl_80075BDC:
/* 80075C18 00072B58 1F E0 00 14 */ mulli r31, r0, 0x14
/* 80075C1C 00072B5C 7F DB F8 2E */ lwzx r30, r27, r31
/* 80075C20 00072B60 7F C3 F3 78 */ mr r3, r30
-/* 80075C24 00072B64 48 1F 25 B1 */ bl cBgW_BgId_NS_ChkUsed
+/* 80075C24 00072B64 48 1F 25 B1 */ bl ChkUsed__9cBgW_BgIdCFv
/* 80075C28 00072B68 54 60 06 3F */ clrlwi. r0, r3, 0x18
/* 80075C2C 00072B6C 41 82 00 28 */ beq lbl_80075C54
/* 80075C30 00072B70 7F C3 F3 78 */ mr r3, r30
@@ -2057,7 +2057,7 @@ dBgS_NS_PushPullCallBack:
/* 80075C94 00072BD4 1F E0 00 14 */ mulli r31, r0, 0x14
/* 80075C98 00072BD8 7F DA F8 2E */ lwzx r30, r26, r31
/* 80075C9C 00072BDC 7F C3 F3 78 */ mr r3, r30
-/* 80075CA0 00072BE0 48 1F 25 35 */ bl cBgW_BgId_NS_ChkUsed
+/* 80075CA0 00072BE0 48 1F 25 35 */ bl ChkUsed__9cBgW_BgIdCFv
/* 80075CA4 00072BE4 54 60 06 3F */ clrlwi. r0, r3, 0x18
/* 80075CA8 00072BE8 40 82 00 0C */ bne lbl_80075CB4
/* 80075CAC 00072BEC 38 60 00 00 */ li r3, 0
diff --git a/asm/d/bg/s/movebg/d_bg_s_movebg_actor.s b/asm/d/bg/s/movebg/d_bg_s_movebg_actor.s
index e91b02e81d..fc9fb0fbed 100644
--- a/asm/d/bg/s/movebg/d_bg_s_movebg_actor.s
+++ b/asm/d/bg/s/movebg/d_bg_s_movebg_actor.s
@@ -209,7 +209,7 @@ lbl_800788C4:
/* 80078908 00075848 80 7E 05 68 */ lwz r3, 0x568(r30)
/* 8007890C 0007584C 28 03 00 00 */ cmplwi r3, 0
/* 80078910 00075850 41 82 00 24 */ beq lbl_80078934
-/* 80078914 00075854 48 1E F8 C1 */ bl cBgW_BgId_NS_ChkUsed
+/* 80078914 00075854 48 1E F8 C1 */ bl ChkUsed__9cBgW_BgIdCFv
/* 80078918 00075858 54 60 06 3F */ clrlwi. r0, r3, 0x18
/* 8007891C 0007585C 41 82 00 18 */ beq lbl_80078934
/* 80078920 00075860 3C 60 80 40 */ lis r3, lbl_804061C0@ha
diff --git a/asm/d/error/d_error_msg.s b/asm/d/error/d_error_msg.s
index a2209b3a68..edbc97507d 100644
--- a/asm/d/error/d_error_msg.s
+++ b/asm/d/error/d_error_msg.s
@@ -85,7 +85,7 @@ messageSet:
/* 8009CCBC 00099BFC 3C 80 80 38 */ lis r4, lbl_8037B3E0@ha
/* 8009CCC0 00099C00 38 84 B3 E0 */ addi r4, r4, lbl_8037B3E0@l
/* 8009CCC4 00099C04 38 A0 00 00 */ li r5, 0
-/* 8009CCC8 00099C08 48 24 22 CD */ bl JUTResFont_X1_
+/* 8009CCC8 00099C08 48 24 22 CD */ bl __ct__10JUTResFontFPCcP7JKRHeap
/* 8009CCCC 00099C0C 3B C1 00 D4 */ addi r30, r1, 0xd4
/* 8009CCD0 00099C10 38 80 00 C8 */ li r4, 0xc8
/* 8009CCD4 00099C14 98 81 00 60 */ stb r4, 0x60(r1)
@@ -392,7 +392,7 @@ lbl_8009D100:
/* 8009D138 0009A078 48 26 33 59 */ bl J2DTextBox_NS_draw_X1_
/* 8009D13C 0009A07C 38 61 00 D4 */ addi r3, r1, 0xd4
/* 8009D140 0009A080 38 80 FF FF */ li r4, -1
-/* 8009D144 0009A084 48 24 1E BD */ bl JUTResFont_NS_dtor
+/* 8009D144 0009A084 48 24 1E BD */ bl __dt__10JUTResFontFv
/* 8009D148 0009A088 38 61 01 48 */ addi r3, r1, 0x148
/* 8009D14C 0009A08C 38 80 FF FF */ li r4, -1
/* 8009D150 0009A090 48 25 FE A1 */ bl J2DPicture_NS_dtor
diff --git a/asm/m/Do/m_Do_ext.s b/asm/m/Do/m_Do_ext.s
index 56c49f3e9b..aef6aec17b 100644
--- a/asm/m/Do/m_Do_ext.s
+++ b/asm/m/Do/m_Do_ext.s
@@ -8377,7 +8377,7 @@ lbl_800148BC:
/* 800148C8 00011808 41 82 00 14 */ beq lbl_800148DC
/* 800148CC 0001180C 80 9F 00 00 */ lwz r4, 0(r31)
/* 800148D0 00011810 7F 45 D3 78 */ mr r5, r26
-/* 800148D4 00011814 48 2C A6 C1 */ bl JUTResFont_X1_
+/* 800148D4 00011814 48 2C A6 C1 */ bl __ct__10JUTResFontFPCcP7JKRHeap
/* 800148D8 00011818 7C 60 1B 78 */ mr r0, r3
lbl_800148DC:
/* 800148DC 0001181C 90 1E 00 00 */ stw r0, 0(r30)
@@ -8411,6 +8411,8 @@ lbl_80014934:
/* 80014940 00011880 7C 08 03 A6 */ mtlr r0
/* 80014944 00011884 38 21 00 20 */ addi r1, r1, 0x20
/* 80014948 00011888 4E 80 00 20 */ blr
+.global __dt__7JUTFontFv
+__dt__7JUTFontFv:
/* 8001494C 0001188C 94 21 FF F0 */ stwu r1, -0x10(r1)
/* 80014950 00011890 7C 08 02 A6 */ mflr r0
/* 80014954 00011894 90 01 00 14 */ stw r0, 0x14(r1)
diff --git a/include/JSystem/JUtility/JUTFont/JUTFont.h b/include/JSystem/JUtility/JUTFont/JUTFont.h
index 7a663aa588..0c51043c7f 100644
--- a/include/JSystem/JUtility/JUTFont/JUTFont.h
+++ b/include/JSystem/JUtility/JUTFont/JUTFont.h
@@ -1,3 +1,66 @@
+#ifndef JSYSTEM_JUTILITY_JUTFONT_H
+#define JSYSTEM_JUTILITY_JUTFONT_H
+
+#include "global.h"
+
+static const unsigned int CLR_WHITE = 0xFFFFFFFF;
+static const unsigned int CLR_BLACK = 0;
+
+typedef const char* ResFONT;
+
+struct TColor {
+ TColor() {
+ *(u32*)&r = 0xFFFFFFFF;
+ }
+
+ TColor(u32 raw) {
+ *(u32*)&r = raw;
+ }
+
+ u32 Raw() { return *(u32*)&r; }
+
+ u8 r;
+ u8 g;
+ u8 b;
+ u8 a;
+};
+
class JUTFont {
+public:
+ JUTFont();
+ virtual ~JUTFont();
+
+ struct TWidth {};
+
+ virtual void setGX() = 0;
+ virtual void setGX(TColor col1, TColor col2);
+
+ virtual void drawChar_scale(float a1, float a2, float a3, float a4, int a5, bool a6);
+ virtual u16 getLeading() = 0;
+ virtual u16 getAscent() = 0;
+ virtual u16 getDescent() = 0;
+ virtual u32 getHeight() = 0;
+ virtual u32 getWidth() = 0;
+ virtual void getWidthEntry(s32 i_no, TWidth* width);
+ virtual u32 getCellWidth();
+ virtual u32 getCellHeight();
+ virtual u32 getFontType() = 0;
+ virtual TColor getResFont() = 0;
+ virtual bool isLeadByte(s32 a1) = 0;
+
+ void initialize_state();
+ void setCharColor(TColor col1);
+ void setGradColor(TColor col1, TColor col2);
+ float drawString_size_scale(float a1, float a2, float a3, float a4, char* a5, unsigned long usz, bool a7);
+
+ bool unk4;
+ bool unk5;
+ int unk8;
+ TColor mColor1;
+ TColor mColor2;
+ TColor mColor3;
+ TColor mColor4;
+ int unk1C;
+};
-}; \ No newline at end of file
+#endif // JSYSTEM_JUTILITY_JUTFONT_H
diff --git a/include/JSystem/JUtility/JUTFont/asm/drawString_size_scale.s b/include/JSystem/JUtility/JUTFont/asm/drawString_size_scale.s
new file mode 100644
index 0000000000..9d63bc1624
--- /dev/null
+++ b/include/JSystem/JUtility/JUTFont/asm/drawString_size_scale.s
@@ -0,0 +1,75 @@
+/* 802DEE28 002DBD68 94 21 FF 90 */ stwu r1, -0x70(r1)
+/* 802DEE2C 002DBD6C 7C 08 02 A6 */ mflr r0
+/* 802DEE30 002DBD70 90 01 00 74 */ stw r0, 0x74(r1)
+/* 802DEE34 002DBD74 DB E1 00 60 */ stfd f31, 0x60(r1)
+/* 802DEE38 002DBD78 F3 E1 00 68 */ psq_st f31, 104(r1), 0, 0
+/* 802DEE3C 002DBD7C DB C1 00 50 */ stfd f30, 0x50(r1)
+/* 802DEE40 002DBD80 F3 C1 00 58 */ psq_st f30, 88(r1), 0, 0
+/* 802DEE44 002DBD84 DB A1 00 40 */ stfd f29, 0x40(r1)
+/* 802DEE48 002DBD88 F3 A1 00 48 */ psq_st f29, 72(r1), 0, 0
+/* 802DEE4C 002DBD8C DB 81 00 30 */ stfd f28, 0x30(r1)
+/* 802DEE50 002DBD90 F3 81 00 38 */ psq_st f28, 56(r1), 0, 0
+/* 802DEE54 002DBD94 DB 61 00 20 */ stfd f27, 0x20(r1)
+/* 802DEE58 002DBD98 F3 61 00 28 */ psq_st f27, 40(r1), 0, 0
+/* 802DEE5C 002DBD9C 39 61 00 20 */ addi r11, r1, 0x20
+/* 802DEE60 002DBDA0 48 08 33 75 */ bl _savegpr_27
+/* 802DEE64 002DBDA4 7C 7B 1B 78 */ mr r27, r3
+/* 802DEE68 002DBDA8 FF 60 08 90 */ fmr f27, f1
+/* 802DEE6C 002DBDAC FF 80 10 90 */ fmr f28, f2
+/* 802DEE70 002DBDB0 FF A0 18 90 */ fmr f29, f3
+/* 802DEE74 002DBDB4 FF C0 20 90 */ fmr f30, f4
+/* 802DEE78 002DBDB8 7C 9C 23 78 */ mr r28, r4
+/* 802DEE7C 002DBDBC 7C BD 2B 78 */ mr r29, r5
+/* 802DEE80 002DBDC0 7C DE 33 78 */ mr r30, r6
+/* 802DEE84 002DBDC4 FF E0 D8 90 */ fmr f31, f27
+/* 802DEE88 002DBDC8 48 00 00 74 */ b lbl_802DEEFC
+lbl_802DEE8C:
+/* 802DEE8C 002DBDCC 88 9C 00 00 */ lbz r4, 0(r28)
+/* 802DEE90 002DBDD0 7C 9F 23 78 */ mr r31, r4
+/* 802DEE94 002DBDD4 7F 63 DB 78 */ mr r3, r27
+/* 802DEE98 002DBDD8 81 9B 00 00 */ lwz r12, 0(r27)
+/* 802DEE9C 002DBDDC 81 8C 00 40 */ lwz r12, 0x40(r12)
+/* 802DEEA0 002DBDE0 7D 89 03 A6 */ mtctr r12
+/* 802DEEA4 002DBDE4 4E 80 04 21 */ bctrl
+/* 802DEEA8 002DBDE8 54 60 06 3F */ clrlwi. r0, r3, 0x18
+/* 802DEEAC 002DBDEC 41 82 00 14 */ beq lbl_802DEEC0
+/* 802DEEB0 002DBDF0 57 FF 40 2E */ slwi r31, r31, 8
+/* 802DEEB4 002DBDF4 8C 1C 00 01 */ lbzu r0, 1(r28)
+/* 802DEEB8 002DBDF8 7F FF 03 78 */ or r31, r31, r0
+/* 802DEEBC 002DBDFC 3B BD FF FF */ addi r29, r29, -1
+lbl_802DEEC0:
+/* 802DEEC0 002DBE00 7F 63 DB 78 */ mr r3, r27
+/* 802DEEC4 002DBE04 FC 20 D8 90 */ fmr f1, f27
+/* 802DEEC8 002DBE08 FC 40 E0 90 */ fmr f2, f28
+/* 802DEECC 002DBE0C FC 60 E8 90 */ fmr f3, f29
+/* 802DEED0 002DBE10 FC 80 F0 90 */ fmr f4, f30
+/* 802DEED4 002DBE14 7F E4 FB 78 */ mr r4, r31
+/* 802DEED8 002DBE18 7F C5 F3 78 */ mr r5, r30
+/* 802DEEDC 002DBE1C 81 9B 00 00 */ lwz r12, 0(r27)
+/* 802DEEE0 002DBE20 81 8C 00 14 */ lwz r12, 0x14(r12)
+/* 802DEEE4 002DBE24 7D 89 03 A6 */ mtctr r12
+/* 802DEEE8 002DBE28 4E 80 04 21 */ bctrl
+/* 802DEEEC 002DBE2C EF 7B 08 2A */ fadds f27, f27, f1
+/* 802DEEF0 002DBE30 3B C0 00 01 */ li r30, 1
+/* 802DEEF4 002DBE34 3B BD FF FF */ addi r29, r29, -1
+/* 802DEEF8 002DBE38 3B 9C 00 01 */ addi r28, r28, 1
+lbl_802DEEFC:
+/* 802DEEFC 002DBE3C 28 1D 00 00 */ cmplwi r29, 0
+/* 802DEF00 002DBE40 40 82 FF 8C */ bne lbl_802DEE8C
+/* 802DEF04 002DBE44 EC 3B F8 28 */ fsubs f1, f27, f31
+/* 802DEF08 002DBE48 E3 E1 00 68 */ psq_l f31, 104(r1), 0, 0
+/* 802DEF0C 002DBE4C CB E1 00 60 */ lfd f31, 0x60(r1)
+/* 802DEF10 002DBE50 E3 C1 00 58 */ psq_l f30, 88(r1), 0, 0
+/* 802DEF14 002DBE54 CB C1 00 50 */ lfd f30, 0x50(r1)
+/* 802DEF18 002DBE58 E3 A1 00 48 */ psq_l f29, 72(r1), 0, 0
+/* 802DEF1C 002DBE5C CB A1 00 40 */ lfd f29, 0x40(r1)
+/* 802DEF20 002DBE60 E3 81 00 38 */ psq_l f28, 56(r1), 0, 0
+/* 802DEF24 002DBE64 CB 81 00 30 */ lfd f28, 0x30(r1)
+/* 802DEF28 002DBE68 E3 61 00 28 */ psq_l f27, 40(r1), 0, 0
+/* 802DEF2C 002DBE6C CB 61 00 20 */ lfd f27, 0x20(r1)
+/* 802DEF30 002DBE70 39 61 00 20 */ addi r11, r1, 0x20
+/* 802DEF34 002DBE74 48 08 32 ED */ bl _restgpr_27
+/* 802DEF38 002DBE78 80 01 00 74 */ lwz r0, 0x74(r1)
+/* 802DEF3C 002DBE7C 7C 08 03 A6 */ mtlr r0
+/* 802DEF40 002DBE80 38 21 00 70 */ addi r1, r1, 0x70
+/* 802DEF44 002DBE84 4E 80 00 20 */ blr
diff --git a/include/JSystem/JUtility/JUTResFont.h b/include/JSystem/JUtility/JUTResFont.h
new file mode 100644
index 0000000000..6721221db8
--- /dev/null
+++ b/include/JSystem/JUtility/JUTResFont.h
@@ -0,0 +1,58 @@
+#ifndef JSYSTEM_JUTILITY_JUT_RES_FONT
+#define JSYSTEM_JUTILITY_JUT_RES_FONT
+
+#include "JSystem/JUtility/JUTFont/JUTFont.h"
+#include "JSystem/JKernel/JKRHeap/JKRHeap.h"
+
+class JUTResFont : JUTFont {
+public:
+ JUTResFont();
+ JUTResFont(ResFONT font, JKRHeap* heap);
+ ~JUTResFont();
+
+ struct Unknown {
+ struct Unknown2 {
+ u32 filler0;
+ u32 filler4;
+ u32 filler8;
+ u16 unkC;
+ u16 unkE;
+ };
+ Unknown2* unk0;
+ };
+
+ virtual void setGX();
+ virtual void setGX(TColor col1, TColor col2);
+ virtual void drawChar_scale(float a1, float a2, float a3, float a4, int a5, bool a6);
+ virtual void getWidthEntry(s32 i_no, TWidth* width);
+ virtual u32 getCellWidth();
+ virtual u32 getCellHeight();
+ virtual bool isLeadByte(s32 a1);
+
+ virtual void loadImage(s32 a1, u32 a2);
+ virtual void setBlock();
+
+ void deleteMemBlocks_ResFont();
+ void initialize_state();
+ bool initiate(ResFONT font, JKRHeap* heap);
+ bool protected_initiate(ResFONT font, JKRHeap* heap);
+ u32 countBlock();
+ void loadFont(s32 a1, u32 a2, TWidth* a3);
+ u32 getFontCode(s32 a1);
+ s32 convertSjis(s32 a1, u16* a2);
+
+ u32 unk20;
+ u8 filler24[0x20];
+ u32 unk44;
+ u32 unk48;
+ u32 filler4C;
+ JKRHeap* unk50;
+ u32 unk54;
+ Unknown* unk58;
+ u32 unk5C;
+ u8 filler60[0xC];
+ bool (**unk6C)(s32 a1);
+};
+
+
+#endif // JSYSTEM_JUTILITY_JUT_RES_FONT
diff --git a/include/JSystem/JUtility/asm/JUTResFont__convertSjis.s b/include/JSystem/JUtility/asm/JUTResFont__convertSjis.s
new file mode 100644
index 0000000000..82c67638a9
--- /dev/null
+++ b/include/JSystem/JUtility/asm/JUTResFont__convertSjis.s
@@ -0,0 +1,38 @@
+/* 802E00C4 002DD004 54 86 C6 3E */ rlwinm r6, r4, 0x18, 0x18, 0x1f
+/* 802E00C8 002DD008 54 83 06 3E */ clrlwi r3, r4, 0x18
+/* 802E00CC 002DD00C 38 E3 FF C0 */ addi r7, r3, -64
+/* 802E00D0 002DD010 2C 07 00 40 */ cmpwi r7, 0x40
+/* 802E00D4 002DD014 41 80 00 08 */ blt lbl_802E00DC
+/* 802E00D8 002DD018 38 E7 FF FF */ addi r7, r7, -1
+lbl_802E00DC:
+/* 802E00DC 002DD01C 38 00 03 1C */ li r0, 0x31c
+/* 802E00E0 002DD020 28 05 00 00 */ cmplwi r5, 0
+/* 802E00E4 002DD024 41 82 00 08 */ beq lbl_802E00EC
+/* 802E00E8 002DD028 A0 05 00 00 */ lhz r0, 0(r5)
+lbl_802E00EC:
+/* 802E00EC 002DD02C 54 04 04 3E */ clrlwi r4, r0, 0x10
+/* 802E00F0 002DD030 38 06 FF 78 */ addi r0, r6, -136
+/* 802E00F4 002DD034 1C 60 00 BC */ mulli r3, r0, 0xbc
+/* 802E00F8 002DD038 38 03 FF A2 */ addi r0, r3, -94
+/* 802E00FC 002DD03C 7C 60 22 14 */ add r3, r0, r4
+/* 802E0100 002DD040 7C 67 1A 14 */ add r3, r7, r3
+/* 802E0104 002DD044 4E 80 00 20 */ blr
+/* 802E0108 002DD048 38 60 00 00 */ li r3, 0
+/* 802E010C 002DD04C 4E 80 00 20 */ blr
+/* 802E0110 002DD050 38 60 00 01 */ li r3, 1
+/* 802E0114 002DD054 4E 80 00 20 */ blr
+/* 802E0118 002DD058 38 00 00 00 */ li r0, 0
+/* 802E011C 002DD05C 2C 03 00 81 */ cmpwi r3, 0x81
+/* 802E0120 002DD060 41 80 00 0C */ blt lbl_802E012C
+/* 802E0124 002DD064 2C 03 00 9F */ cmpwi r3, 0x9f
+/* 802E0128 002DD068 40 81 00 14 */ ble lbl_802E013C
+lbl_802E012C:
+/* 802E012C 002DD06C 2C 03 00 E0 */ cmpwi r3, 0xe0
+/* 802E0130 002DD070 41 80 00 10 */ blt lbl_802E0140
+/* 802E0134 002DD074 2C 03 00 FC */ cmpwi r3, 0xfc
+/* 802E0138 002DD078 41 81 00 08 */ bgt lbl_802E0140
+lbl_802E013C:
+/* 802E013C 002DD07C 38 00 00 01 */ li r0, 1
+lbl_802E0140:
+/* 802E0140 002DD080 7C 03 03 78 */ mr r3, r0
+/* 802E0144 002DD084 4E 80 00 20 */ blr \ No newline at end of file
diff --git a/include/JSystem/JUtility/asm/JUTResFont__countBlock.s b/include/JSystem/JUtility/asm/JUTResFont__countBlock.s
new file mode 100644
index 0000000000..f34c718bee
--- /dev/null
+++ b/include/JSystem/JUtility/asm/JUTResFont__countBlock.s
@@ -0,0 +1,71 @@
+/* 802DF248 002DC188 94 21 FF E0 */ stwu r1, -0x20(r1)
+/* 802DF24C 002DC18C 7C 08 02 A6 */ mflr r0
+/* 802DF250 002DC190 90 01 00 24 */ stw r0, 0x24(r1)
+/* 802DF254 002DC194 39 61 00 20 */ addi r11, r1, 0x20
+/* 802DF258 002DC198 48 08 2F 81 */ bl _savegpr_28
+/* 802DF25C 002DC19C 7C 7C 1B 78 */ mr r28, r3
+/* 802DF260 002DC1A0 38 00 00 00 */ li r0, 0
+/* 802DF264 002DC1A4 B0 03 00 60 */ sth r0, 0x60(r3)
+/* 802DF268 002DC1A8 B0 03 00 62 */ sth r0, 0x62(r3)
+/* 802DF26C 002DC1AC B0 03 00 64 */ sth r0, 0x64(r3)
+/* 802DF270 002DC1B0 80 63 00 48 */ lwz r3, 0x48(r3)
+/* 802DF274 002DC1B4 3B C3 00 20 */ addi r30, r3, 0x20
+/* 802DF278 002DC1B8 3B A0 00 00 */ li r29, 0
+/* 802DF27C 002DC1BC 3C 60 4D 41 */ lis r3, 0x4D415031@ha
+/* 802DF280 002DC1C0 3B E3 50 31 */ addi r31, r3, 0x4D415031@l
+/* 802DF284 002DC1C4 48 00 00 98 */ b lbl_802DF31C
+lbl_802DF288:
+/* 802DF288 002DC1C8 80 9E 00 00 */ lwz r4, 0(r30)
+/* 802DF28C 002DC1CC 7C 04 F8 00 */ cmpw r4, r31
+/* 802DF290 002DC1D0 41 82 00 64 */ beq lbl_802DF2F4
+/* 802DF294 002DC1D4 40 80 00 2C */ bge lbl_802DF2C0
+/* 802DF298 002DC1D8 3C 60 49 4E */ lis r3, 0x494E4631@ha
+/* 802DF29C 002DC1DC 38 03 46 31 */ addi r0, r3, 0x494E4631@l
+/* 802DF2A0 002DC1E0 7C 04 00 00 */ cmpw r4, r0
+/* 802DF2A4 002DC1E4 41 82 00 6C */ beq lbl_802DF310
+/* 802DF2A8 002DC1E8 40 80 00 5C */ bge lbl_802DF304
+/* 802DF2AC 002DC1EC 3C 60 47 4C */ lis r3, 0x474C5931@ha
+/* 802DF2B0 002DC1F0 38 03 59 31 */ addi r0, r3, 0x474C5931@l
+/* 802DF2B4 002DC1F4 7C 04 00 00 */ cmpw r4, r0
+/* 802DF2B8 002DC1F8 41 82 00 2C */ beq lbl_802DF2E4
+/* 802DF2BC 002DC1FC 48 00 00 48 */ b lbl_802DF304
+lbl_802DF2C0:
+/* 802DF2C0 002DC200 3C 60 57 49 */ lis r3, 0x57494431@ha
+/* 802DF2C4 002DC204 38 03 44 31 */ addi r0, r3, 0x57494431@l
+/* 802DF2C8 002DC208 7C 04 00 00 */ cmpw r4, r0
+/* 802DF2CC 002DC20C 41 82 00 08 */ beq lbl_802DF2D4
+/* 802DF2D0 002DC210 48 00 00 34 */ b lbl_802DF304
+lbl_802DF2D4:
+/* 802DF2D4 002DC214 A0 7C 00 60 */ lhz r3, 0x60(r28)
+/* 802DF2D8 002DC218 38 03 00 01 */ addi r0, r3, 1
+/* 802DF2DC 002DC21C B0 1C 00 60 */ sth r0, 0x60(r28)
+/* 802DF2E0 002DC220 48 00 00 30 */ b lbl_802DF310
+lbl_802DF2E4:
+/* 802DF2E4 002DC224 A0 7C 00 62 */ lhz r3, 0x62(r28)
+/* 802DF2E8 002DC228 38 03 00 01 */ addi r0, r3, 1
+/* 802DF2EC 002DC22C B0 1C 00 62 */ sth r0, 0x62(r28)
+/* 802DF2F0 002DC230 48 00 00 20 */ b lbl_802DF310
+lbl_802DF2F4:
+/* 802DF2F4 002DC234 A0 7C 00 64 */ lhz r3, 0x64(r28)
+/* 802DF2F8 002DC238 38 03 00 01 */ addi r0, r3, 1
+/* 802DF2FC 002DC23C B0 1C 00 64 */ sth r0, 0x64(r28)
+/* 802DF300 002DC240 48 00 00 10 */ b lbl_802DF310
+lbl_802DF304:
+/* 802DF304 002DC244 3C 60 80 3A */ lis r3, lbl_8039D45C@ha
+/* 802DF308 002DC248 38 63 D4 5C */ addi r3, r3, lbl_8039D45C@l
+/* 802DF30C 002DC24C 48 00 93 3D */ bl JUTReportConsole
+lbl_802DF310:
+/* 802DF310 002DC250 80 1E 00 04 */ lwz r0, 4(r30)
+/* 802DF314 002DC254 7F DE 02 14 */ add r30, r30, r0
+/* 802DF318 002DC258 3B BD 00 01 */ addi r29, r29, 1
+lbl_802DF31C:
+/* 802DF31C 002DC25C 80 7C 00 48 */ lwz r3, 0x48(r28)
+/* 802DF320 002DC260 80 03 00 0C */ lwz r0, 0xc(r3)
+/* 802DF324 002DC264 7C 1D 00 40 */ cmplw r29, r0
+/* 802DF328 002DC268 41 80 FF 60 */ blt lbl_802DF288
+/* 802DF32C 002DC26C 39 61 00 20 */ addi r11, r1, 0x20
+/* 802DF330 002DC270 48 08 2E F5 */ bl _restgpr_28
+/* 802DF334 002DC274 80 01 00 24 */ lwz r0, 0x24(r1)
+/* 802DF338 002DC278 7C 08 03 A6 */ mtlr r0
+/* 802DF33C 002DC27C 38 21 00 20 */ addi r1, r1, 0x20
+/* 802DF340 002DC280 4E 80 00 20 */ blr
diff --git a/include/JSystem/JUtility/asm/JUTResFont__drawChar_scale.s b/include/JSystem/JUtility/asm/JUTResFont__drawChar_scale.s
new file mode 100644
index 0000000000..12e2cc5c56
--- /dev/null
+++ b/include/JSystem/JUtility/asm/JUTResFont__drawChar_scale.s
@@ -0,0 +1,270 @@
+/* 802DF7C4 002DC704 94 21 FF 50 */ stwu r1, -0xb0(r1)
+/* 802DF7C8 002DC708 7C 08 02 A6 */ mflr r0
+/* 802DF7CC 002DC70C 90 01 00 B4 */ stw r0, 0xb4(r1)
+/* 802DF7D0 002DC710 DB E1 00 A0 */ stfd f31, 0xa0(r1)
+/* 802DF7D4 002DC714 F3 E1 00 A8 */ psq_st f31, 168(r1), 0, 0
+/* 802DF7D8 002DC718 DB C1 00 90 */ stfd f30, 0x90(r1)
+/* 802DF7DC 002DC71C F3 C1 00 98 */ psq_st f30, 152(r1), 0, 0
+/* 802DF7E0 002DC720 DB A1 00 80 */ stfd f29, 0x80(r1)
+/* 802DF7E4 002DC724 F3 A1 00 88 */ psq_st f29, 136(r1), 0, 0
+/* 802DF7E8 002DC728 DB 81 00 70 */ stfd f28, 0x70(r1)
+/* 802DF7EC 002DC72C F3 81 00 78 */ psq_st f28, 120(r1), 0, 0
+/* 802DF7F0 002DC730 DB 61 00 60 */ stfd f27, 0x60(r1)
+/* 802DF7F4 002DC734 F3 61 00 68 */ psq_st f27, 104(r1), 0, 0
+/* 802DF7F8 002DC738 DB 41 00 50 */ stfd f26, 0x50(r1)
+/* 802DF7FC 002DC73C F3 41 00 58 */ psq_st f26, 88(r1), 0, 0
+/* 802DF800 002DC740 39 61 00 50 */ addi r11, r1, 0x50
+/* 802DF804 002DC744 48 08 29 D1 */ bl _savegpr_27
+/* 802DF808 002DC748 7C 7E 1B 78 */ mr r30, r3
+/* 802DF80C 002DC74C FF 40 08 90 */ fmr f26, f1
+/* 802DF810 002DC750 FF 60 10 90 */ fmr f27, f2
+/* 802DF814 002DC754 FF C0 18 90 */ fmr f30, f3
+/* 802DF818 002DC758 FF 80 20 90 */ fmr f28, f4
+/* 802DF81C 002DC75C 7C BB 2B 78 */ mr r27, r5
+/* 802DF820 002DC760 38 A0 00 00 */ li r5, 0
+/* 802DF824 002DC764 38 C1 00 08 */ addi r6, r1, 8
+/* 802DF828 002DC768 48 00 03 C1 */ bl loadFont__10JUTResFontFlUlPQ27JUTFont6TWidth
+/* 802DF82C 002DC76C 88 1E 00 05 */ lbz r0, 5(r30)
+/* 802DF830 002DC770 28 00 00 00 */ cmplwi r0, 0
+/* 802DF834 002DC774 40 82 00 0C */ bne lbl_802DF840
+/* 802DF838 002DC778 57 60 06 3F */ clrlwi. r0, r27, 0x18
+/* 802DF83C 002DC77C 40 82 00 0C */ bne lbl_802DF848
+lbl_802DF840:
+/* 802DF840 002DC780 FF E0 D0 90 */ fmr f31, f26
+/* 802DF844 002DC784 48 00 00 58 */ b lbl_802DF89C
+lbl_802DF848:
+/* 802DF848 002DC788 7F C3 F3 78 */ mr r3, r30
+/* 802DF84C 002DC78C 81 9E 00 00 */ lwz r12, 0(r30)
+/* 802DF850 002DC790 81 8C 00 30 */ lwz r12, 0x30(r12)
+/* 802DF854 002DC794 7D 89 03 A6 */ mtctr r12
+/* 802DF858 002DC798 4E 80 04 21 */ bctrl
+/* 802DF85C 002DC79C C8 22 C5 F8 */ lfd f1, lbl_80455FF8-_SDA2_BASE_(r2)
+/* 802DF860 002DC7A0 6C 60 80 00 */ xoris r0, r3, 0x8000
+/* 802DF864 002DC7A4 90 01 00 14 */ stw r0, 0x14(r1)
+/* 802DF868 002DC7A8 3C 60 43 30 */ lis r3, 0x4330
+/* 802DF86C 002DC7AC 90 61 00 10 */ stw r3, 0x10(r1)
+/* 802DF870 002DC7B0 C8 01 00 10 */ lfd f0, 0x10(r1)
+/* 802DF874 002DC7B4 EC 00 08 28 */ fsubs f0, f0, f1
+/* 802DF878 002DC7B8 EC 5E 00 24 */ fdivs f2, f30, f0
+/* 802DF87C 002DC7BC 88 01 00 08 */ lbz r0, 8(r1)
+/* 802DF880 002DC7C0 C8 22 C6 00 */ lfd f1, lbl_80456000-_SDA2_BASE_(r2)
+/* 802DF884 002DC7C4 90 01 00 1C */ stw r0, 0x1c(r1)
+/* 802DF888 002DC7C8 90 61 00 18 */ stw r3, 0x18(r1)
+/* 802DF88C 002DC7CC C8 01 00 18 */ lfd f0, 0x18(r1)
+/* 802DF890 002DC7D0 EC 00 08 28 */ fsubs f0, f0, f1
+/* 802DF894 002DC7D4 EC 00 00 B2 */ fmuls f0, f0, f2
+/* 802DF898 002DC7D8 EF FA 00 28 */ fsubs f31, f26, f0
+lbl_802DF89C:
+/* 802DF89C 002DC7DC 7F C3 F3 78 */ mr r3, r30
+/* 802DF8A0 002DC7E0 81 9E 00 00 */ lwz r12, 0(r30)
+/* 802DF8A4 002DC7E4 81 8C 00 30 */ lwz r12, 0x30(r12)
+/* 802DF8A8 002DC7E8 7D 89 03 A6 */ mtctr r12
+/* 802DF8AC 002DC7EC 4E 80 04 21 */ bctrl
+/* 802DF8B0 002DC7F0 C8 42 C5 F8 */ lfd f2, lbl_80455FF8-_SDA2_BASE_(r2)
+/* 802DF8B4 002DC7F4 6C 60 80 00 */ xoris r0, r3, 0x8000
+/* 802DF8B8 002DC7F8 90 01 00 1C */ stw r0, 0x1c(r1)
+/* 802DF8BC 002DC7FC 3C 60 43 30 */ lis r3, 0x4330
+/* 802DF8C0 002DC800 90 61 00 18 */ stw r3, 0x18(r1)
+/* 802DF8C4 002DC804 C8 01 00 18 */ lfd f0, 0x18(r1)
+/* 802DF8C8 002DC808 EC 00 10 28 */ fsubs f0, f0, f2
+/* 802DF8CC 002DC80C EC 3E 00 24 */ fdivs f1, f30, f0
+/* 802DF8D0 002DC810 80 1E 00 08 */ lwz r0, 8(r30)
+/* 802DF8D4 002DC814 6C 00 80 00 */ xoris r0, r0, 0x8000
+/* 802DF8D8 002DC818 90 01 00 14 */ stw r0, 0x14(r1)
+/* 802DF8DC 002DC81C 90 61 00 10 */ stw r3, 0x10(r1)
+/* 802DF8E0 002DC820 C8 01 00 10 */ lfd f0, 0x10(r1)
+/* 802DF8E4 002DC824 EC 00 10 28 */ fsubs f0, f0, f2
+/* 802DF8E8 002DC828 EF A0 00 72 */ fmuls f29, f0, f1
+/* 802DF8EC 002DC82C 88 1E 00 05 */ lbz r0, 5(r30)
+/* 802DF8F0 002DC830 28 00 00 00 */ cmplwi r0, 0
+/* 802DF8F4 002DC834 40 82 00 B8 */ bne lbl_802DF9AC
+/* 802DF8F8 002DC838 57 60 06 3F */ clrlwi. r0, r27, 0x18
+/* 802DF8FC 002DC83C 40 82 00 60 */ bne lbl_802DF95C
+/* 802DF900 002DC840 7F C3 F3 78 */ mr r3, r30
+/* 802DF904 002DC844 81 9E 00 00 */ lwz r12, 0(r30)
+/* 802DF908 002DC848 81 8C 00 30 */ lwz r12, 0x30(r12)
+/* 802DF90C 002DC84C 7D 89 03 A6 */ mtctr r12
+/* 802DF910 002DC850 4E 80 04 21 */ bctrl
+/* 802DF914 002DC854 C8 42 C5 F8 */ lfd f2, lbl_80455FF8-_SDA2_BASE_(r2)
+/* 802DF918 002DC858 6C 60 80 00 */ xoris r0, r3, 0x8000
+/* 802DF91C 002DC85C 90 01 00 1C */ stw r0, 0x1c(r1)
+/* 802DF920 002DC860 3C 80 43 30 */ lis r4, 0x4330
+/* 802DF924 002DC864 90 81 00 18 */ stw r4, 0x18(r1)
+/* 802DF928 002DC868 C8 01 00 18 */ lfd f0, 0x18(r1)
+/* 802DF92C 002DC86C EC 00 10 28 */ fsubs f0, f0, f2
+/* 802DF930 002DC870 EC 3E 00 24 */ fdivs f1, f30, f0
+/* 802DF934 002DC874 88 61 00 09 */ lbz r3, 9(r1)
+/* 802DF938 002DC878 88 01 00 08 */ lbz r0, 8(r1)
+/* 802DF93C 002DC87C 7C 03 02 14 */ add r0, r3, r0
+/* 802DF940 002DC880 6C 00 80 00 */ xoris r0, r0, 0x8000
+/* 802DF944 002DC884 90 01 00 14 */ stw r0, 0x14(r1)
+/* 802DF948 002DC888 90 81 00 10 */ stw r4, 0x10(r1)
+/* 802DF94C 002DC88C C8 01 00 10 */ lfd f0, 0x10(r1)
+/* 802DF950 002DC890 EC 00 10 28 */ fsubs f0, f0, f2
+/* 802DF954 002DC894 EF A0 00 72 */ fmuls f29, f0, f1
+/* 802DF958 002DC898 48 00 00 54 */ b lbl_802DF9AC
+lbl_802DF95C:
+/* 802DF95C 002DC89C 7F C3 F3 78 */ mr r3, r30
+/* 802DF960 002DC8A0 81 9E 00 00 */ lwz r12, 0(r30)
+/* 802DF964 002DC8A4 81 8C 00 30 */ lwz r12, 0x30(r12)
+/* 802DF968 002DC8A8 7D 89 03 A6 */ mtctr r12
+/* 802DF96C 002DC8AC 4E 80 04 21 */ bctrl
+/* 802DF970 002DC8B0 C8 22 C5 F8 */ lfd f1, lbl_80455FF8-_SDA2_BASE_(r2)
+/* 802DF974 002DC8B4 6C 60 80 00 */ xoris r0, r3, 0x8000
+/* 802DF978 002DC8B8 90 01 00 1C */ stw r0, 0x1c(r1)
+/* 802DF97C 002DC8BC 3C 60 43 30 */ lis r3, 0x4330
+/* 802DF980 002DC8C0 90 61 00 18 */ stw r3, 0x18(r1)
+/* 802DF984 002DC8C4 C8 01 00 18 */ lfd f0, 0x18(r1)
+/* 802DF988 002DC8C8 EC 00 08 28 */ fsubs f0, f0, f1
+/* 802DF98C 002DC8CC EC 5E 00 24 */ fdivs f2, f30, f0
+/* 802DF990 002DC8D0 88 01 00 09 */ lbz r0, 9(r1)
+/* 802DF994 002DC8D4 C8 22 C6 00 */ lfd f1, lbl_80456000-_SDA2_BASE_(r2)
+/* 802DF998 002DC8D8 90 01 00 14 */ stw r0, 0x14(r1)
+/* 802DF99C 002DC8DC 90 61 00 10 */ stw r3, 0x10(r1)
+/* 802DF9A0 002DC8E0 C8 01 00 10 */ lfd f0, 0x10(r1)
+/* 802DF9A4 002DC8E4 EC 00 08 28 */ fsubs f0, f0, f1
+/* 802DF9A8 002DC8E8 EF A0 00 B2 */ fmuls f29, f0, f2
+lbl_802DF9AC:
+/* 802DF9AC 002DC8EC EF DF F0 2A */ fadds f30, f31, f30
+/* 802DF9B0 002DC8F0 7F C3 F3 78 */ mr r3, r30
+/* 802DF9B4 002DC8F4 81 9E 00 00 */ lwz r12, 0(r30)
+/* 802DF9B8 002DC8F8 81 8C 00 24 */ lwz r12, 0x24(r12)
+/* 802DF9BC 002DC8FC 7D 89 03 A6 */ mtctr r12
+/* 802DF9C0 002DC900 4E 80 04 21 */ bctrl
+/* 802DF9C4 002DC904 C8 22 C5 F8 */ lfd f1, lbl_80455FF8-_SDA2_BASE_(r2)
+/* 802DF9C8 002DC908 6C 60 80 00 */ xoris r0, r3, 0x8000
+/* 802DF9CC 002DC90C 90 01 00 1C */ stw r0, 0x1c(r1)
+/* 802DF9D0 002DC910 3C 00 43 30 */ lis r0, 0x4330
+/* 802DF9D4 002DC914 90 01 00 18 */ stw r0, 0x18(r1)
+/* 802DF9D8 002DC918 C8 01 00 18 */ lfd f0, 0x18(r1)
+/* 802DF9DC 002DC91C EC 00 08 28 */ fsubs f0, f0, f1
+/* 802DF9E0 002DC920 EF 5C 00 24 */ fdivs f26, f28, f0
+/* 802DF9E4 002DC924 7F C3 F3 78 */ mr r3, r30
+/* 802DF9E8 002DC928 81 9E 00 00 */ lwz r12, 0(r30)
+/* 802DF9EC 002DC92C 81 8C 00 1C */ lwz r12, 0x1c(r12)
+/* 802DF9F0 002DC930 7D 89 03 A6 */ mtctr r12
+/* 802DF9F4 002DC934 4E 80 04 21 */ bctrl
+/* 802DF9F8 002DC938 C8 22 C5 F8 */ lfd f1, lbl_80455FF8-_SDA2_BASE_(r2)
+/* 802DF9FC 002DC93C 6C 60 80 00 */ xoris r0, r3, 0x8000
+/* 802DFA00 002DC940 90 01 00 14 */ stw r0, 0x14(r1)
+/* 802DFA04 002DC944 3C 00 43 30 */ lis r0, 0x4330
+/* 802DFA08 002DC948 90 01 00 10 */ stw r0, 0x10(r1)
+/* 802DFA0C 002DC94C C8 01 00 10 */ lfd f0, 0x10(r1)
+/* 802DFA10 002DC950 EC 00 08 28 */ fsubs f0, f0, f1
+/* 802DFA14 002DC954 EC 00 06 B2 */ fmuls f0, f0, f26
+/* 802DFA18 002DC958 EF 5B 00 28 */ fsubs f26, f27, f0
+/* 802DFA1C 002DC95C 7F C3 F3 78 */ mr r3, r30
+/* 802DFA20 002DC960 81 9E 00 00 */ lwz r12, 0(r30)
+/* 802DFA24 002DC964 81 8C 00 24 */ lwz r12, 0x24(r12)
+/* 802DFA28 002DC968 7D 89 03 A6 */ mtctr r12
+/* 802DFA2C 002DC96C 4E 80 04 21 */ bctrl
+/* 802DFA30 002DC970 C8 22 C5 F8 */ lfd f1, lbl_80455FF8-_SDA2_BASE_(r2)
+/* 802DFA34 002DC974 6C 60 80 00 */ xoris r0, r3, 0x8000
+/* 802DFA38 002DC978 90 01 00 24 */ stw r0, 0x24(r1)
+/* 802DFA3C 002DC97C 3C 00 43 30 */ lis r0, 0x4330
+/* 802DFA40 002DC980 90 01 00 20 */ stw r0, 0x20(r1)
+/* 802DFA44 002DC984 C8 01 00 20 */ lfd f0, 0x20(r1)
+/* 802DFA48 002DC988 EC 00 08 28 */ fsubs f0, f0, f1
+/* 802DFA4C 002DC98C EF 9C 00 24 */ fdivs f28, f28, f0
+/* 802DFA50 002DC990 7F C3 F3 78 */ mr r3, r30
+/* 802DFA54 002DC994 81 9E 00 00 */ lwz r12, 0(r30)
+/* 802DFA58 002DC998 81 8C 00 20 */ lwz r12, 0x20(r12)
+/* 802DFA5C 002DC99C 7D 89 03 A6 */ mtctr r12
+/* 802DFA60 002DC9A0 4E 80 04 21 */ bctrl
+/* 802DFA64 002DC9A4 C8 22 C5 F8 */ lfd f1, lbl_80455FF8-_SDA2_BASE_(r2)
+/* 802DFA68 002DC9A8 6C 60 80 00 */ xoris r0, r3, 0x8000
+/* 802DFA6C 002DC9AC 90 01 00 2C */ stw r0, 0x2c(r1)
+/* 802DFA70 002DC9B0 3C 00 43 30 */ lis r0, 0x4330
+/* 802DFA74 002DC9B4 90 01 00 28 */ stw r0, 0x28(r1)
+/* 802DFA78 002DC9B8 C8 01 00 28 */ lfd f0, 0x28(r1)
+/* 802DFA7C 002DC9BC EC 00 08 28 */ fsubs f0, f0, f1
+/* 802DFA80 002DC9C0 EC 00 07 32 */ fmuls f0, f0, f28
+/* 802DFA84 002DC9C4 EF 7B 00 2A */ fadds f27, f27, f0
+/* 802DFA88 002DC9C8 80 BE 00 1C */ lwz r5, 0x1c(r30)
+/* 802DFA8C 002DC9CC 54 A4 78 20 */ slwi r4, r5, 0xf
+/* 802DFA90 002DC9D0 80 7E 00 58 */ lwz r3, 0x58(r30)
+/* 802DFA94 002DC9D4 A0 1E 00 66 */ lhz r0, 0x66(r30)
+/* 802DFA98 002DC9D8 54 00 10 3A */ slwi r0, r0, 2
+/* 802DFA9C 002DC9DC 7C 63 00 2E */ lwzx r3, r3, r0
+/* 802DFAA0 002DC9E0 A0 C3 00 1A */ lhz r6, 0x1a(r3)
+/* 802DFAA4 002DC9E4 7F E4 33 D6 */ divw r31, r4, r6
+/* 802DFAA8 002DC9E8 80 9E 00 20 */ lwz r4, 0x20(r30)
+/* 802DFAAC 002DC9EC 54 80 78 20 */ slwi r0, r4, 0xf
+/* 802DFAB0 002DC9F0 A0 E3 00 1C */ lhz r7, 0x1c(r3)
+/* 802DFAB4 002DC9F4 7F A0 3B D6 */ divw r29, r0, r7
+/* 802DFAB8 002DC9F8 A0 03 00 0C */ lhz r0, 0xc(r3)
+/* 802DFABC 002DC9FC 7C 05 02 14 */ add r0, r5, r0
+/* 802DFAC0 002DCA00 54 00 78 20 */ slwi r0, r0, 0xf
+/* 802DFAC4 002DCA04 7F 80 33 D6 */ divw r28, r0, r6
+/* 802DFAC8 002DCA08 A0 03 00 0E */ lhz r0, 0xe(r3)
+/* 802DFACC 002DCA0C 7C 04 02 14 */ add r0, r4, r0
+/* 802DFAD0 002DCA10 54 00 78 20 */ slwi r0, r0, 0xf
+/* 802DFAD4 002DCA14 7F 60 3B D6 */ divw r27, r0, r7
+/* 802DFAD8 002DCA18 38 60 00 00 */ li r3, 0
+/* 802DFADC 002DCA1C 38 80 00 09 */ li r4, 9
+/* 802DFAE0 002DCA20 38 A0 00 01 */ li r5, 1
+/* 802DFAE4 002DCA24 38 C0 00 04 */ li r6, 4
+/* 802DFAE8 002DCA28 38 E0 00 00 */ li r7, 0
+/* 802DFAEC 002DCA2C 48 07 BA D9 */ bl GXSetVtxAttrFmt
+/* 802DFAF0 002DCA30 38 60 00 80 */ li r3, 0x80
+/* 802DFAF4 002DCA34 38 80 00 00 */ li r4, 0
+/* 802DFAF8 002DCA38 38 A0 00 04 */ li r5, 4
+/* 802DFAFC 002DCA3C 48 07 CC 69 */ bl GXBegin
+/* 802DFB00 002DCA40 3C 60 CC 01 */ lis r3, 0xCC008000@ha
+/* 802DFB04 002DCA44 D3 E3 80 00 */ stfs f31, 0xCC008000@l(r3)
+/* 802DFB08 002DCA48 D3 43 80 00 */ stfs f26, -0x8000(r3)
+/* 802DFB0C 002DCA4C C0 02 C5 F0 */ lfs f0, lbl_80455FF0-_SDA2_BASE_(r2)
+/* 802DFB10 002DCA50 D0 03 80 00 */ stfs f0, -0x8000(r3)
+/* 802DFB14 002DCA54 80 1E 00 0C */ lwz r0, 0xc(r30)
+/* 802DFB18 002DCA58 90 03 80 00 */ stw r0, -0x8000(r3)
+/* 802DFB1C 002DCA5C B3 E3 80 00 */ sth r31, -0x8000(r3)
+/* 802DFB20 002DCA60 B3 A3 80 00 */ sth r29, -0x8000(r3)
+/* 802DFB24 002DCA64 D3 C3 80 00 */ stfs f30, -0x8000(r3)
+/* 802DFB28 002DCA68 D3 43 80 00 */ stfs f26, -0x8000(r3)
+/* 802DFB2C 002DCA6C C0 02 C5 F0 */ lfs f0, lbl_80455FF0-_SDA2_BASE_(r2)
+/* 802DFB30 002DCA70 D0 03 80 00 */ stfs f0, -0x8000(r3)
+/* 802DFB34 002DCA74 80 1E 00 10 */ lwz r0, 0x10(r30)
+/* 802DFB38 002DCA78 90 03 80 00 */ stw r0, -0x8000(r3)
+/* 802DFB3C 002DCA7C B3 83 80 00 */ sth r28, -0x8000(r3)
+/* 802DFB40 002DCA80 B3 A3 80 00 */ sth r29, -0x8000(r3)
+/* 802DFB44 002DCA84 D3 C3 80 00 */ stfs f30, -0x8000(r3)
+/* 802DFB48 002DCA88 D3 63 80 00 */ stfs f27, -0x8000(r3)
+/* 802DFB4C 002DCA8C C0 02 C5 F0 */ lfs f0, lbl_80455FF0-_SDA2_BASE_(r2)
+/* 802DFB50 002DCA90 D0 03 80 00 */ stfs f0, -0x8000(r3)
+/* 802DFB54 002DCA94 80 1E 00 18 */ lwz r0, 0x18(r30)
+/* 802DFB58 002DCA98 90 03 80 00 */ stw r0, -0x8000(r3)
+/* 802DFB5C 002DCA9C B3 83 80 00 */ sth r28, -0x8000(r3)
+/* 802DFB60 002DCAA0 B3 63 80 00 */ sth r27, -0x8000(r3)
+/* 802DFB64 002DCAA4 D3 E3 80 00 */ stfs f31, -0x8000(r3)
+/* 802DFB68 002DCAA8 D3 63 80 00 */ stfs f27, -0x8000(r3)
+/* 802DFB6C 002DCAAC C0 02 C5 F0 */ lfs f0, lbl_80455FF0-_SDA2_BASE_(r2)
+/* 802DFB70 002DCAB0 D0 03 80 00 */ stfs f0, -0x8000(r3)
+/* 802DFB74 002DCAB4 80 1E 00 14 */ lwz r0, 0x14(r30)
+/* 802DFB78 002DCAB8 90 03 80 00 */ stw r0, -0x8000(r3)
+/* 802DFB7C 002DCABC B3 E3 80 00 */ sth r31, -0x8000(r3)
+/* 802DFB80 002DCAC0 B3 63 80 00 */ sth r27, -0x8000(r3)
+/* 802DFB84 002DCAC4 38 60 00 00 */ li r3, 0
+/* 802DFB88 002DCAC8 38 80 00 09 */ li r4, 9
+/* 802DFB8C 002DCACC 38 A0 00 01 */ li r5, 1
+/* 802DFB90 002DCAD0 38 C0 00 03 */ li r6, 3
+/* 802DFB94 002DCAD4 38 E0 00 00 */ li r7, 0
+/* 802DFB98 002DCAD8 48 07 BA 2D */ bl GXSetVtxAttrFmt
+/* 802DFB9C 002DCADC FC 20 E8 90 */ fmr f1, f29
+/* 802DFBA0 002DCAE0 E3 E1 00 A8 */ psq_l f31, 168(r1), 0, 0
+/* 802DFBA4 002DCAE4 CB E1 00 A0 */ lfd f31, 0xa0(r1)
+/* 802DFBA8 002DCAE8 E3 C1 00 98 */ psq_l f30, 152(r1), 0, 0
+/* 802DFBAC 002DCAEC CB C1 00 90 */ lfd f30, 0x90(r1)
+/* 802DFBB0 002DCAF0 E3 A1 00 88 */ psq_l f29, 136(r1), 0, 0
+/* 802DFBB4 002DCAF4 CB A1 00 80 */ lfd f29, 0x80(r1)
+/* 802DFBB8 002DCAF8 E3 81 00 78 */ psq_l f28, 120(r1), 0, 0
+/* 802DFBBC 002DCAFC CB 81 00 70 */ lfd f28, 0x70(r1)
+/* 802DFBC0 002DCB00 E3 61 00 68 */ psq_l f27, 104(r1), 0, 0
+/* 802DFBC4 002DCB04 CB 61 00 60 */ lfd f27, 0x60(r1)
+/* 802DFBC8 002DCB08 E3 41 00 58 */ psq_l f26, 88(r1), 0, 0
+/* 802DFBCC 002DCB0C CB 41 00 50 */ lfd f26, 0x50(r1)
+/* 802DFBD0 002DCB10 39 61 00 50 */ addi r11, r1, 0x50
+/* 802DFBD4 002DCB14 48 08 26 4D */ bl _restgpr_27
+/* 802DFBD8 002DCB18 80 01 00 B4 */ lwz r0, 0xb4(r1)
+/* 802DFBDC 002DCB1C 7C 08 03 A6 */ mtlr r0
+/* 802DFBE0 002DCB20 38 21 00 B0 */ addi r1, r1, 0xb0
+/* 802DFBE4 002DCB24 4E 80 00 20 */ blr
diff --git a/include/JSystem/JUtility/asm/JUTResFont__getFontCode.s b/include/JSystem/JUtility/asm/JUTResFont__getFontCode.s
new file mode 100644
index 0000000000..4a4eea0d6b
--- /dev/null
+++ b/include/JSystem/JUtility/asm/JUTResFont__getFontCode.s
@@ -0,0 +1,110 @@
+/* 802DFDD8 002DCD18 94 21 FF E0 */ stwu r1, -0x20(r1)
+/* 802DFDDC 002DCD1C 7C 08 02 A6 */ mflr r0
+/* 802DFDE0 002DCD20 90 01 00 24 */ stw r0, 0x24(r1)
+/* 802DFDE4 002DCD24 39 61 00 20 */ addi r11, r1, 0x20
+/* 802DFDE8 002DCD28 48 08 23 F5 */ bl _savegpr_29
+/* 802DFDEC 002DCD2C 7C 7D 1B 78 */ mr r29, r3
+/* 802DFDF0 002DCD30 7C 9E 23 78 */ mr r30, r4
+/* 802DFDF4 002DCD34 80 83 00 4C */ lwz r4, 0x4c(r3)
+/* 802DFDF8 002DCD38 A3 E4 00 12 */ lhz r31, 0x12(r4)
+/* 802DFDFC 002DCD3C 81 83 00 00 */ lwz r12, 0(r3)
+/* 802DFE00 002DCD40 81 8C 00 38 */ lwz r12, 0x38(r12)
+/* 802DFE04 002DCD44 7D 89 03 A6 */ mtctr r12
+/* 802DFE08 002DCD48 4E 80 04 21 */ bctrl
+/* 802DFE0C 002DCD4C 2C 03 00 02 */ cmpwi r3, 2
+/* 802DFE10 002DCD50 40 82 00 34 */ bne lbl_802DFE44
+/* 802DFE14 002DCD54 A0 1D 00 68 */ lhz r0, 0x68(r29)
+/* 802DFE18 002DCD58 28 00 80 00 */ cmplwi r0, 0x8000
+/* 802DFE1C 002DCD5C 41 80 00 28 */ blt lbl_802DFE44
+/* 802DFE20 002DCD60 2C 1E 00 20 */ cmpwi r30, 0x20
+/* 802DFE24 002DCD64 41 80 00 20 */ blt lbl_802DFE44
+/* 802DFE28 002DCD68 28 1E 00 7F */ cmplwi r30, 0x7f
+/* 802DFE2C 002DCD6C 40 80 00 18 */ bge lbl_802DFE44
+/* 802DFE30 002DCD70 3C 60 80 3A */ lis r3, lbl_8039D39C@ha
+/* 802DFE34 002DCD74 38 63 D3 9C */ addi r3, r3, lbl_8039D39C@l
+/* 802DFE38 002DCD78 57 C0 08 3C */ slwi r0, r30, 1
+/* 802DFE3C 002DCD7C 7C 63 02 14 */ add r3, r3, r0
+/* 802DFE40 002DCD80 A3 C3 FF C0 */ lhz r30, -0x40(r3)
+lbl_802DFE44:
+/* 802DFE44 002DCD84 38 60 00 00 */ li r3, 0
+/* 802DFE48 002DCD88 A0 1D 00 64 */ lhz r0, 0x64(r29)
+/* 802DFE4C 002DCD8C 80 9D 00 5C */ lwz r4, 0x5c(r29)
+/* 802DFE50 002DCD90 7C 09 03 A6 */ mtctr r0
+/* 802DFE54 002DCD94 2C 00 00 00 */ cmpwi r0, 0
+/* 802DFE58 002DCD98 40 81 00 EC */ ble lbl_802DFF44
+lbl_802DFE5C:
+/* 802DFE5C 002DCD9C 7C C4 18 2E */ lwzx r6, r4, r3
+/* 802DFE60 002DCDA0 A0 A6 00 0A */ lhz r5, 0xa(r6)
+/* 802DFE64 002DCDA4 7C 05 F0 00 */ cmpw r5, r30
+/* 802DFE68 002DCDA8 41 81 00 D4 */ bgt lbl_802DFF3C
+/* 802DFE6C 002DCDAC A0 06 00 0C */ lhz r0, 0xc(r6)
+/* 802DFE70 002DCDB0 7C 1E 00 00 */ cmpw r30, r0
+/* 802DFE74 002DCDB4 41 81 00 C8 */ bgt lbl_802DFF3C
+/* 802DFE78 002DCDB8 A0 06 00 08 */ lhz r0, 8(r6)
+/* 802DFE7C 002DCDBC 28 00 00 00 */ cmplwi r0, 0
+/* 802DFE80 002DCDC0 40 82 00 0C */ bne lbl_802DFE8C
+/* 802DFE84 002DCDC4 7F E5 F0 50 */ subf r31, r5, r30
+/* 802DFE88 002DCDC8 48 00 00 BC */ b lbl_802DFF44
+lbl_802DFE8C:
+/* 802DFE8C 002DCDCC 28 00 00 02 */ cmplwi r0, 2
+/* 802DFE90 002DCDD0 40 82 00 18 */ bne lbl_802DFEA8
+/* 802DFE94 002DCDD4 7C 05 F0 50 */ subf r0, r5, r30
+/* 802DFE98 002DCDD8 54 00 08 3C */ slwi r0, r0, 1
+/* 802DFE9C 002DCDDC 7C 66 02 14 */ add r3, r6, r0
+/* 802DFEA0 002DCDE0 A3 E3 00 10 */ lhz r31, 0x10(r3)
+/* 802DFEA4 002DCDE4 48 00 00 A0 */ b lbl_802DFF44
+lbl_802DFEA8:
+/* 802DFEA8 002DCDE8 28 00 00 03 */ cmplwi r0, 3
+/* 802DFEAC 002DCDEC 40 82 00 60 */ bne lbl_802DFF0C
+/* 802DFEB0 002DCDF0 38 86 00 10 */ addi r4, r6, 0x10
+/* 802DFEB4 002DCDF4 38 A0 00 00 */ li r5, 0
+/* 802DFEB8 002DCDF8 A0 66 00 0E */ lhz r3, 0xe(r6)
+/* 802DFEBC 002DCDFC 38 C3 FF FF */ addi r6, r3, -1
+/* 802DFEC0 002DCE00 48 00 00 40 */ b lbl_802DFF00
+lbl_802DFEC4:
+/* 802DFEC4 002DCE04 7C 06 2A 14 */ add r0, r6, r5
+/* 802DFEC8 002DCE08 7C 00 0E 70 */ srawi r0, r0, 1
+/* 802DFECC 002DCE0C 7C E0 01 94 */ addze r7, r0
+/* 802DFED0 002DCE10 54 E3 10 3A */ slwi r3, r7, 2
+/* 802DFED4 002DCE14 7C 04 1A 2E */ lhzx r0, r4, r3
+/* 802DFED8 002DCE18 7C 1E 00 00 */ cmpw r30, r0
+/* 802DFEDC 002DCE1C 40 80 00 0C */ bge lbl_802DFEE8
+/* 802DFEE0 002DCE20 38 C7 FF FF */ addi r6, r7, -1
+/* 802DFEE4 002DCE24 48 00 00 1C */ b lbl_802DFF00
+lbl_802DFEE8:
+/* 802DFEE8 002DCE28 40 81 00 0C */ ble lbl_802DFEF4
+/* 802DFEEC 002DCE2C 38 A7 00 01 */ addi r5, r7, 1
+/* 802DFEF0 002DCE30 48 00 00 10 */ b lbl_802DFF00
+lbl_802DFEF4:
+/* 802DFEF4 002DCE34 7C 64 1A 14 */ add r3, r4, r3
+/* 802DFEF8 002DCE38 A3 E3 00 02 */ lhz r31, 2(r3)
+/* 802DFEFC 002DCE3C 48 00 00 48 */ b lbl_802DFF44
+lbl_802DFF00:
+/* 802DFF00 002DCE40 7C 06 28 00 */ cmpw r6, r5
+/* 802DFF04 002DCE44 40 80 FF C0 */ bge lbl_802DFEC4
+/* 802DFF08 002DCE48 48 00 00 3C */ b lbl_802DFF44
+lbl_802DFF0C:
+/* 802DFF0C 002DCE4C 28 00 00 01 */ cmplwi r0, 1
+/* 802DFF10 002DCE50 40 82 00 34 */ bne lbl_802DFF44
+/* 802DFF14 002DCE54 38 A0 00 00 */ li r5, 0
+/* 802DFF18 002DCE58 A0 06 00 0E */ lhz r0, 0xe(r6)
+/* 802DFF1C 002DCE5C 28 00 00 01 */ cmplwi r0, 1
+/* 802DFF20 002DCE60 40 82 00 08 */ bne lbl_802DFF28
+/* 802DFF24 002DCE64 38 A6 00 10 */ addi r5, r6, 0x10
+lbl_802DFF28:
+/* 802DFF28 002DCE68 7F A3 EB 78 */ mr r3, r29
+/* 802DFF2C 002DCE6C 7F C4 F3 78 */ mr r4, r30
+/* 802DFF30 002DCE70 48 00 01 95 */ bl convertSjis__10JUTResFontFlPUs
+/* 802DFF34 002DCE74 7C 7F 1B 78 */ mr r31, r3
+/* 802DFF38 002DCE78 48 00 00 0C */ b lbl_802DFF44
+lbl_802DFF3C:
+/* 802DFF3C 002DCE7C 38 63 00 04 */ addi r3, r3, 4
+/* 802DFF40 002DCE80 42 00 FF 1C */ bdnz lbl_802DFE5C
+lbl_802DFF44:
+/* 802DFF44 002DCE84 7F E3 FB 78 */ mr r3, r31
+/* 802DFF48 002DCE88 39 61 00 20 */ addi r11, r1, 0x20
+/* 802DFF4C 002DCE8C 48 08 22 DD */ bl _restgpr_29
+/* 802DFF50 002DCE90 80 01 00 24 */ lwz r0, 0x24(r1)
+/* 802DFF54 002DCE94 7C 08 03 A6 */ mtlr r0
+/* 802DFF58 002DCE98 38 21 00 20 */ addi r1, r1, 0x20
+/* 802DFF5C 002DCE9C 4E 80 00 20 */ blr
diff --git a/include/JSystem/JUtility/asm/JUTResFont__getWidthEntry.s b/include/JSystem/JUtility/asm/JUTResFont__getWidthEntry.s
new file mode 100644
index 0000000000..66d3fb9843
--- /dev/null
+++ b/include/JSystem/JUtility/asm/JUTResFont__getWidthEntry.s
@@ -0,0 +1,45 @@
+/* 802DFC64 002DCBA4 94 21 FF F0 */ stwu r1, -0x10(r1)
+/* 802DFC68 002DCBA8 7C 08 02 A6 */ mflr r0
+/* 802DFC6C 002DCBAC 90 01 00 14 */ stw r0, 0x14(r1)
+/* 802DFC70 002DCBB0 93 E1 00 0C */ stw r31, 0xc(r1)
+/* 802DFC74 002DCBB4 93 C1 00 08 */ stw r30, 8(r1)
+/* 802DFC78 002DCBB8 7C 7E 1B 78 */ mr r30, r3
+/* 802DFC7C 002DCBBC 7C BF 2B 78 */ mr r31, r5
+/* 802DFC80 002DCBC0 48 00 01 59 */ bl getFontCode__10JUTResFontFl
+/* 802DFC84 002DCBC4 38 A0 00 00 */ li r5, 0
+/* 802DFC88 002DCBC8 98 BF 00 00 */ stb r5, 0(r31)
+/* 802DFC8C 002DCBCC 80 9E 00 4C */ lwz r4, 0x4c(r30)
+/* 802DFC90 002DCBD0 A0 04 00 0E */ lhz r0, 0xe(r4)
+/* 802DFC94 002DCBD4 98 1F 00 01 */ stb r0, 1(r31)
+/* 802DFC98 002DCBD8 A0 1E 00 60 */ lhz r0, 0x60(r30)
+/* 802DFC9C 002DCBDC 80 9E 00 54 */ lwz r4, 0x54(r30)
+/* 802DFCA0 002DCBE0 7C 09 03 A6 */ mtctr r0
+/* 802DFCA4 002DCBE4 2C 00 00 00 */ cmpwi r0, 0
+/* 802DFCA8 002DCBE8 40 81 00 4C */ ble lbl_802DFCF4
+lbl_802DFCAC:
+/* 802DFCAC 002DCBEC 7C C4 28 2E */ lwzx r6, r4, r5
+/* 802DFCB0 002DCBF0 A0 E6 00 08 */ lhz r7, 8(r6)
+/* 802DFCB4 002DCBF4 7C 07 18 00 */ cmpw r7, r3
+/* 802DFCB8 002DCBF8 41 81 00 34 */ bgt lbl_802DFCEC
+/* 802DFCBC 002DCBFC A0 06 00 0A */ lhz r0, 0xa(r6)
+/* 802DFCC0 002DCC00 7C 03 00 00 */ cmpw r3, r0
+/* 802DFCC4 002DCC04 41 81 00 28 */ bgt lbl_802DFCEC
+/* 802DFCC8 002DCC08 7C 07 18 50 */ subf r0, r7, r3
+/* 802DFCCC 002DCC0C 54 03 08 3C */ slwi r3, r0, 1
+/* 802DFCD0 002DCC10 38 63 00 0C */ addi r3, r3, 0xc
+/* 802DFCD4 002DCC14 7C 66 1A 14 */ add r3, r6, r3
+/* 802DFCD8 002DCC18 88 03 00 00 */ lbz r0, 0(r3)
+/* 802DFCDC 002DCC1C 98 1F 00 00 */ stb r0, 0(r31)
+/* 802DFCE0 002DCC20 88 03 00 01 */ lbz r0, 1(r3)
+/* 802DFCE4 002DCC24 98 1F 00 01 */ stb r0, 1(r31)
+/* 802DFCE8 002DCC28 48 00 00 0C */ b lbl_802DFCF4
+lbl_802DFCEC:
+/* 802DFCEC 002DCC2C 38 A5 00 04 */ addi r5, r5, 4
+/* 802DFCF0 002DCC30 42 00 FF BC */ bdnz lbl_802DFCAC
+lbl_802DFCF4:
+/* 802DFCF4 002DCC34 83 E1 00 0C */ lwz r31, 0xc(r1)
+/* 802DFCF8 002DCC38 83 C1 00 08 */ lwz r30, 8(r1)
+/* 802DFCFC 002DCC3C 80 01 00 14 */ lwz r0, 0x14(r1)
+/* 802DFD00 002DCC40 7C 08 03 A6 */ mtlr r0
+/* 802DFD04 002DCC44 38 21 00 10 */ addi r1, r1, 0x10
+/* 802DFD08 002DCC48 4E 80 00 20 */ blr
diff --git a/include/JSystem/JUtility/asm/JUTResFont__loadImage.s b/include/JSystem/JUtility/asm/JUTResFont__loadImage.s
new file mode 100644
index 0000000000..f506f08945
--- /dev/null
+++ b/include/JSystem/JUtility/asm/JUTResFont__loadImage.s
@@ -0,0 +1,95 @@
+/* 802DFF60 002DCEA0 94 21 FF E0 */ stwu r1, -0x20(r1)
+/* 802DFF64 002DCEA4 7C 08 02 A6 */ mflr r0
+/* 802DFF68 002DCEA8 90 01 00 24 */ stw r0, 0x24(r1)
+/* 802DFF6C 002DCEAC 39 61 00 20 */ addi r11, r1, 0x20
+/* 802DFF70 002DCEB0 48 08 22 69 */ bl _savegpr_28
+/* 802DFF74 002DCEB4 7C 7C 1B 78 */ mr r28, r3
+/* 802DFF78 002DCEB8 7C BD 2B 78 */ mr r29, r5
+/* 802DFF7C 002DCEBC 3B E0 00 00 */ li r31, 0
+/* 802DFF80 002DCEC0 38 60 00 00 */ li r3, 0
+/* 802DFF84 002DCEC4 A0 FC 00 62 */ lhz r7, 0x62(r28)
+/* 802DFF88 002DCEC8 7C E9 03 A6 */ mtctr r7
+/* 802DFF8C 002DCECC 2C 07 00 00 */ cmpwi r7, 0
+/* 802DFF90 002DCED0 40 81 00 38 */ ble lbl_802DFFC8
+lbl_802DFF94:
+/* 802DFF94 002DCED4 80 BC 00 58 */ lwz r5, 0x58(r28)
+/* 802DFF98 002DCED8 7C A5 18 2E */ lwzx r5, r5, r3
+/* 802DFF9C 002DCEDC A0 C5 00 08 */ lhz r6, 8(r5)
+/* 802DFFA0 002DCEE0 7C 06 20 00 */ cmpw r6, r4
+/* 802DFFA4 002DCEE4 41 81 00 18 */ bgt lbl_802DFFBC
+/* 802DFFA8 002DCEE8 A0 05 00 0A */ lhz r0, 0xa(r5)
+/* 802DFFAC 002DCEEC 7C 04 00 00 */ cmpw r4, r0
+/* 802DFFB0 002DCEF0 41 81 00 0C */ bgt lbl_802DFFBC
+/* 802DFFB4 002DCEF4 7C 86 20 50 */ subf r4, r6, r4
+/* 802DFFB8 002DCEF8 48 00 00 10 */ b lbl_802DFFC8
+lbl_802DFFBC:
+/* 802DFFBC 002DCEFC 3B FF 00 01 */ addi r31, r31, 1
+/* 802DFFC0 002DCF00 38 63 00 04 */ addi r3, r3, 4
+/* 802DFFC4 002DCF04 42 00 FF D0 */ bdnz lbl_802DFF94
+lbl_802DFFC8:
+/* 802DFFC8 002DCF08 7C 1F 38 00 */ cmpw r31, r7
+/* 802DFFCC 002DCF0C 41 82 00 E0 */ beq lbl_802E00AC
+/* 802DFFD0 002DCF10 80 7C 00 58 */ lwz r3, 0x58(r28)
+/* 802DFFD4 002DCF14 57 E6 10 3A */ slwi r6, r31, 2
+/* 802DFFD8 002DCF18 7C A3 30 2E */ lwzx r5, r3, r6
+/* 802DFFDC 002DCF1C A0 65 00 16 */ lhz r3, 0x16(r5)
+/* 802DFFE0 002DCF20 A0 05 00 18 */ lhz r0, 0x18(r5)
+/* 802DFFE4 002DCF24 7C 03 01 D6 */ mullw r0, r3, r0
+/* 802DFFE8 002DCF28 7F C4 03 D6 */ divw r30, r4, r0
+/* 802DFFEC 002DCF2C 7C 1E 01 D6 */ mullw r0, r30, r0
+/* 802DFFF0 002DCF30 7C 80 20 50 */ subf r4, r0, r4
+/* 802DFFF4 002DCF34 7C E4 1B D6 */ divw r7, r4, r3
+/* 802DFFF8 002DCF38 7C 07 19 D6 */ mullw r0, r7, r3
+/* 802DFFFC 002DCF3C 7C 60 20 50 */ subf r3, r0, r4
+/* 802E0000 002DCF40 A0 05 00 0C */ lhz r0, 0xc(r5)
+/* 802E0004 002DCF44 7C 03 01 D6 */ mullw r0, r3, r0
+/* 802E0008 002DCF48 90 1C 00 1C */ stw r0, 0x1c(r28)
+/* 802E000C 002DCF4C 80 7C 00 58 */ lwz r3, 0x58(r28)
+/* 802E0010 002DCF50 7C 63 30 2E */ lwzx r3, r3, r6
+/* 802E0014 002DCF54 A0 03 00 0E */ lhz r0, 0xe(r3)
+/* 802E0018 002DCF58 7C 07 01 D6 */ mullw r0, r7, r0
+/* 802E001C 002DCF5C 90 1C 00 20 */ stw r0, 0x20(r28)
+/* 802E0020 002DCF60 80 1C 00 44 */ lwz r0, 0x44(r28)
+/* 802E0024 002DCF64 7C 1E 00 00 */ cmpw r30, r0
+/* 802E0028 002DCF68 40 82 00 10 */ bne lbl_802E0038
+/* 802E002C 002DCF6C A0 1C 00 66 */ lhz r0, 0x66(r28)
+/* 802E0030 002DCF70 7C 1F 00 00 */ cmpw r31, r0
+/* 802E0034 002DCF74 41 82 00 6C */ beq lbl_802E00A0
+lbl_802E0038:
+/* 802E0038 002DCF78 80 7C 00 58 */ lwz r3, 0x58(r28)
+/* 802E003C 002DCF7C 7C E3 30 2E */ lwzx r7, r3, r6
+/* 802E0040 002DCF80 38 7C 00 24 */ addi r3, r28, 0x24
+/* 802E0044 002DCF84 80 07 00 10 */ lwz r0, 0x10(r7)
+/* 802E0048 002DCF88 7C 9E 01 D6 */ mullw r4, r30, r0
+/* 802E004C 002DCF8C 38 84 00 20 */ addi r4, r4, 0x20
+/* 802E0050 002DCF90 7C 87 22 14 */ add r4, r7, r4
+/* 802E0054 002DCF94 A0 A7 00 1A */ lhz r5, 0x1a(r7)
+/* 802E0058 002DCF98 A0 C7 00 1C */ lhz r6, 0x1c(r7)
+/* 802E005C 002DCF9C A0 E7 00 14 */ lhz r7, 0x14(r7)
+/* 802E0060 002DCFA0 39 00 00 00 */ li r8, 0
+/* 802E0064 002DCFA4 39 20 00 00 */ li r9, 0
+/* 802E0068 002DCFA8 39 40 00 00 */ li r10, 0
+/* 802E006C 002DCFAC 48 07 DD D5 */ bl GXInitTexObj
+/* 802E0070 002DCFB0 38 7C 00 24 */ addi r3, r28, 0x24
+/* 802E0074 002DCFB4 38 80 00 01 */ li r4, 1
+/* 802E0078 002DCFB8 38 A0 00 01 */ li r5, 1
+/* 802E007C 002DCFBC C0 22 C5 F0 */ lfs f1, lbl_80455FF0-_SDA2_BASE_(r2)
+/* 802E0080 002DCFC0 FC 40 08 90 */ fmr f2, f1
+/* 802E0084 002DCFC4 FC 60 08 90 */ fmr f3, f1
+/* 802E0088 002DCFC8 38 C0 00 00 */ li r6, 0
+/* 802E008C 002DCFCC 38 E0 00 00 */ li r7, 0
+/* 802E0090 002DCFD0 39 00 00 00 */ li r8, 0
+/* 802E0094 002DCFD4 48 07 E0 41 */ bl GXInitTexObjLOD
+/* 802E0098 002DCFD8 93 DC 00 44 */ stw r30, 0x44(r28)
+/* 802E009C 002DCFDC B3 FC 00 66 */ sth r31, 0x66(r28)
+lbl_802E00A0:
+/* 802E00A0 002DCFE0 38 7C 00 24 */ addi r3, r28, 0x24
+/* 802E00A4 002DCFE4 7F A4 EB 78 */ mr r4, r29
+/* 802E00A8 002DCFE8 48 07 E3 6D */ bl GXLoadTexObj
+lbl_802E00AC:
+/* 802E00AC 002DCFEC 39 61 00 20 */ addi r11, r1, 0x20
+/* 802E00B0 002DCFF0 48 08 21 75 */ bl _restgpr_28
+/* 802E00B4 002DCFF4 80 01 00 24 */ lwz r0, 0x24(r1)
+/* 802E00B8 002DCFF8 7C 08 03 A6 */ mtlr r0
+/* 802E00BC 002DCFFC 38 21 00 20 */ addi r1, r1, 0x20
+/* 802E00C0 002DD000 4E 80 00 20 */ blr
diff --git a/include/JSystem/JUtility/asm/JUTResFont__protected_initiate.s b/include/JSystem/JUtility/asm/JUTResFont__protected_initiate.s
new file mode 100644
index 0000000000..0b1081eb4c
--- /dev/null
+++ b/include/JSystem/JUtility/asm/JUTResFont__protected_initiate.s
@@ -0,0 +1,73 @@
+/* 802DF13C 002DC07C 94 21 FF E0 */ stwu r1, -0x20(r1)
+/* 802DF140 002DC080 7C 08 02 A6 */ mflr r0
+/* 802DF144 002DC084 90 01 00 24 */ stw r0, 0x24(r1)
+/* 802DF148 002DC088 39 61 00 20 */ addi r11, r1, 0x20
+/* 802DF14C 002DC08C 48 08 30 91 */ bl _savegpr_29
+/* 802DF150 002DC090 7C 7D 1B 78 */ mr r29, r3
+/* 802DF154 002DC094 7C 9E 23 78 */ mr r30, r4
+/* 802DF158 002DC098 7C BF 2B 78 */ mr r31, r5
+/* 802DF15C 002DC09C 4B FF FF 31 */ bl deleteMemBlocks_ResFont__10JUTResFontFv
+/* 802DF160 002DC0A0 7F A3 EB 78 */ mr r3, r29
+/* 802DF164 002DC0A4 4B FF FF 4D */ bl initialize_state__10JUTResFontFv
+/* 802DF168 002DC0A8 7F A3 EB 78 */ mr r3, r29
+/* 802DF16C 002DC0AC 4B FF FB B9 */ bl initialize_state__7JUTFontFv
+/* 802DF170 002DC0B0 28 1E 00 00 */ cmplwi r30, 0
+/* 802DF174 002DC0B4 40 82 00 0C */ bne lbl_802DF180
+/* 802DF178 002DC0B8 38 60 00 00 */ li r3, 0
+/* 802DF17C 002DC0BC 48 00 00 B4 */ b lbl_802DF230
+lbl_802DF180:
+/* 802DF180 002DC0C0 93 DD 00 48 */ stw r30, 0x48(r29)
+/* 802DF184 002DC0C4 38 00 00 01 */ li r0, 1
+/* 802DF188 002DC0C8 98 1D 00 04 */ stb r0, 4(r29)
+/* 802DF18C 002DC0CC 7F A3 EB 78 */ mr r3, r29
+/* 802DF190 002DC0D0 48 00 00 B9 */ bl countBlock__10JUTResFontFv
+/* 802DF194 002DC0D4 A0 9D 00 64 */ lhz r4, 0x64(r29)
+/* 802DF198 002DC0D8 A0 7D 00 60 */ lhz r3, 0x60(r29)
+/* 802DF19C 002DC0DC A0 1D 00 62 */ lhz r0, 0x62(r29)
+/* 802DF1A0 002DC0E0 7C 00 22 14 */ add r0, r0, r4
+/* 802DF1A4 002DC0E4 7C 03 02 14 */ add r0, r3, r0
+/* 802DF1A8 002DC0E8 54 03 10 3A */ slwi r3, r0, 2
+/* 802DF1AC 002DC0EC 7F E4 FB 78 */ mr r4, r31
+/* 802DF1B0 002DC0F0 38 A0 00 00 */ li r5, 0
+/* 802DF1B4 002DC0F4 4B FE FB 5D */ bl __nwa__FUlP7JKRHeapi
+/* 802DF1B8 002DC0F8 90 7D 00 50 */ stw r3, 0x50(r29)
+/* 802DF1BC 002DC0FC 80 7D 00 50 */ lwz r3, 0x50(r29)
+/* 802DF1C0 002DC100 28 03 00 00 */ cmplwi r3, 0
+/* 802DF1C4 002DC104 40 82 00 0C */ bne lbl_802DF1D0
+/* 802DF1C8 002DC108 38 60 00 00 */ li r3, 0
+/* 802DF1CC 002DC10C 48 00 00 64 */ b lbl_802DF230
+lbl_802DF1D0:
+/* 802DF1D0 002DC110 A0 1D 00 60 */ lhz r0, 0x60(r29)
+/* 802DF1D4 002DC114 28 00 00 00 */ cmplwi r0, 0
+/* 802DF1D8 002DC118 41 82 00 14 */ beq lbl_802DF1EC
+/* 802DF1DC 002DC11C 90 7D 00 54 */ stw r3, 0x54(r29)
+/* 802DF1E0 002DC120 A0 1D 00 60 */ lhz r0, 0x60(r29)
+/* 802DF1E4 002DC124 54 00 10 3A */ slwi r0, r0, 2
+/* 802DF1E8 002DC128 7C 63 02 14 */ add r3, r3, r0
+lbl_802DF1EC:
+/* 802DF1EC 002DC12C A0 1D 00 62 */ lhz r0, 0x62(r29)
+/* 802DF1F0 002DC130 28 00 00 00 */ cmplwi r0, 0
+/* 802DF1F4 002DC134 41 82 00 14 */ beq lbl_802DF208
+/* 802DF1F8 002DC138 90 7D 00 58 */ stw r3, 0x58(r29)
+/* 802DF1FC 002DC13C A0 1D 00 62 */ lhz r0, 0x62(r29)
+/* 802DF200 002DC140 54 00 10 3A */ slwi r0, r0, 2
+/* 802DF204 002DC144 7C 63 02 14 */ add r3, r3, r0
+lbl_802DF208:
+/* 802DF208 002DC148 A0 1D 00 64 */ lhz r0, 0x64(r29)
+/* 802DF20C 002DC14C 28 00 00 00 */ cmplwi r0, 0
+/* 802DF210 002DC150 41 82 00 08 */ beq lbl_802DF218
+/* 802DF214 002DC154 90 7D 00 5C */ stw r3, 0x5c(r29)
+lbl_802DF218:
+/* 802DF218 002DC158 7F A3 EB 78 */ mr r3, r29
+/* 802DF21C 002DC15C 81 9D 00 00 */ lwz r12, 0(r29)
+/* 802DF220 002DC160 81 8C 00 48 */ lwz r12, 0x48(r12)
+/* 802DF224 002DC164 7D 89 03 A6 */ mtctr r12
+/* 802DF228 002DC168 4E 80 04 21 */ bctrl
+/* 802DF22C 002DC16C 38 60 00 01 */ li r3, 1
+lbl_802DF230:
+/* 802DF230 002DC170 39 61 00 20 */ addi r11, r1, 0x20
+/* 802DF234 002DC174 48 08 2F F5 */ bl _restgpr_29
+/* 802DF238 002DC178 80 01 00 24 */ lwz r0, 0x24(r1)
+/* 802DF23C 002DC17C 7C 08 03 A6 */ mtlr r0
+/* 802DF240 002DC180 38 21 00 20 */ addi r1, r1, 0x20
+/* 802DF244 002DC184 4E 80 00 20 */ blr
diff --git a/include/JSystem/JUtility/asm/JUTResFont__setBlock.s b/include/JSystem/JUtility/asm/JUTResFont__setBlock.s
new file mode 100644
index 0000000000..445bbb3003
--- /dev/null
+++ b/include/JSystem/JUtility/asm/JUTResFont__setBlock.s
@@ -0,0 +1,92 @@
+/* 802DF344 002DC284 94 21 FF D0 */ stwu r1, -0x30(r1)
+/* 802DF348 002DC288 7C 08 02 A6 */ mflr r0
+/* 802DF34C 002DC28C 90 01 00 34 */ stw r0, 0x34(r1)
+/* 802DF350 002DC290 39 61 00 30 */ addi r11, r1, 0x30
+/* 802DF354 002DC294 48 08 2E 79 */ bl func_803621CC
+/* 802DF358 002DC298 7C 7C 1B 78 */ mr r28, r3
+/* 802DF35C 002DC29C 3B 60 00 00 */ li r27, 0
+/* 802DF360 002DC2A0 3B 40 00 00 */ li r26, 0
+/* 802DF364 002DC2A4 3B 20 00 00 */ li r25, 0
+/* 802DF368 002DC2A8 3C 60 00 01 */ lis r3, 0x0000FFFF@ha
+/* 802DF36C 002DC2AC 38 03 FF FF */ addi r0, r3, 0x0000FFFF@l
+/* 802DF370 002DC2B0 B0 1C 00 68 */ sth r0, 0x68(r28)
+/* 802DF374 002DC2B4 80 7C 00 48 */ lwz r3, 0x48(r28)
+/* 802DF378 002DC2B8 3B C3 00 20 */ addi r30, r3, 0x20
+/* 802DF37C 002DC2BC 3B A0 00 00 */ li r29, 0
+/* 802DF380 002DC2C0 3C 60 4D 41 */ lis r3, 0x4D415031@ha
+/* 802DF384 002DC2C4 3B E3 50 31 */ addi r31, r3, 0x4D415031@l
+/* 802DF388 002DC2C8 48 00 00 DC */ b lbl_802DF464
+lbl_802DF38C:
+/* 802DF38C 002DC2CC 80 9E 00 00 */ lwz r4, 0(r30)
+/* 802DF390 002DC2D0 7C 04 F8 00 */ cmpw r4, r31
+/* 802DF394 002DC2D4 41 82 00 88 */ beq lbl_802DF41C
+/* 802DF398 002DC2D8 40 80 00 2C */ bge lbl_802DF3C4
+/* 802DF39C 002DC2DC 3C 60 49 4E */ lis r3, 0x494E4631@ha
+/* 802DF3A0 002DC2E0 38 03 46 31 */ addi r0, r3, 0x494E4631@l
+/* 802DF3A4 002DC2E4 7C 04 00 00 */ cmpw r4, r0
+/* 802DF3A8 002DC2E8 41 82 00 30 */ beq lbl_802DF3D8
+/* 802DF3AC 002DC2EC 40 80 00 9C */ bge lbl_802DF448
+/* 802DF3B0 002DC2F0 3C 60 47 4C */ lis r3, 0x474C5931@ha
+/* 802DF3B4 002DC2F4 38 03 59 31 */ addi r0, r3, 0x474C5931@l
+/* 802DF3B8 002DC2F8 7C 04 00 00 */ cmpw r4, r0
+/* 802DF3BC 002DC2FC 41 82 00 50 */ beq lbl_802DF40C
+/* 802DF3C0 002DC300 48 00 00 88 */ b lbl_802DF448
+lbl_802DF3C4:
+/* 802DF3C4 002DC304 3C 60 57 49 */ lis r3, 0x57494431@ha
+/* 802DF3C8 002DC308 38 03 44 31 */ addi r0, r3, 0x57494431@l
+/* 802DF3CC 002DC30C 7C 04 00 00 */ cmpw r4, r0
+/* 802DF3D0 002DC310 41 82 00 2C */ beq lbl_802DF3FC
+/* 802DF3D4 002DC314 48 00 00 74 */ b lbl_802DF448
+lbl_802DF3D8:
+/* 802DF3D8 002DC318 93 DC 00 4C */ stw r30, 0x4c(r28)
+/* 802DF3DC 002DC31C 80 7C 00 4C */ lwz r3, 0x4c(r28)
+/* 802DF3E0 002DC320 A0 03 00 08 */ lhz r0, 8(r3)
+/* 802DF3E4 002DC324 54 04 10 3A */ slwi r4, r0, 2
+/* 802DF3E8 002DC328 3C 60 80 3A */ lis r3, lbl_8039D390@ha
+/* 802DF3EC 002DC32C 38 03 D3 90 */ addi r0, r3, lbl_8039D390@l
+/* 802DF3F0 002DC330 7C 00 22 14 */ add r0, r0, r4
+/* 802DF3F4 002DC334 90 1C 00 6C */ stw r0, 0x6c(r28)
+/* 802DF3F8 002DC338 48 00 00 60 */ b lbl_802DF458
+lbl_802DF3FC:
+/* 802DF3FC 002DC33C 80 7C 00 54 */ lwz r3, 0x54(r28)
+/* 802DF400 002DC340 7F C3 D9 2E */ stwx r30, r3, r27
+/* 802DF404 002DC344 3B 7B 00 04 */ addi r27, r27, 4
+/* 802DF408 002DC348 48 00 00 50 */ b lbl_802DF458
+lbl_802DF40C:
+/* 802DF40C 002DC34C 80 7C 00 58 */ lwz r3, 0x58(r28)
+/* 802DF410 002DC350 7F C3 D1 2E */ stwx r30, r3, r26
+/* 802DF414 002DC354 3B 5A 00 04 */ addi r26, r26, 4
+/* 802DF418 002DC358 48 00 00 40 */ b lbl_802DF458
+lbl_802DF41C:
+/* 802DF41C 002DC35C 80 7C 00 5C */ lwz r3, 0x5c(r28)
+/* 802DF420 002DC360 7F C3 C9 2E */ stwx r30, r3, r25
+/* 802DF424 002DC364 A0 1C 00 68 */ lhz r0, 0x68(r28)
+/* 802DF428 002DC368 80 7C 00 5C */ lwz r3, 0x5c(r28)
+/* 802DF42C 002DC36C 7C 63 C8 2E */ lwzx r3, r3, r25
+/* 802DF430 002DC370 A0 63 00 0A */ lhz r3, 0xa(r3)
+/* 802DF434 002DC374 7C 00 18 40 */ cmplw r0, r3
+/* 802DF438 002DC378 40 81 00 08 */ ble lbl_802DF440
+/* 802DF43C 002DC37C B0 7C 00 68 */ sth r3, 0x68(r28)
+lbl_802DF440:
+/* 802DF440 002DC380 3B 39 00 04 */ addi r25, r25, 4
+/* 802DF444 002DC384 48 00 00 14 */ b lbl_802DF458
+lbl_802DF448:
+/* 802DF448 002DC388 3C 60 80 3A */ lis r3, lbl_8039D45C@ha
+/* 802DF44C 002DC38C 38 63 D4 5C */ addi r3, r3, lbl_8039D45C@l
+/* 802DF450 002DC390 38 63 00 20 */ addi r3, r3, 0x20
+/* 802DF454 002DC394 48 00 91 F5 */ bl JUTReportConsole
+lbl_802DF458:
+/* 802DF458 002DC398 80 1E 00 04 */ lwz r0, 4(r30)
+/* 802DF45C 002DC39C 7F DE 02 14 */ add r30, r30, r0
+/* 802DF460 002DC3A0 3B BD 00 01 */ addi r29, r29, 1
+lbl_802DF464:
+/* 802DF464 002DC3A4 80 7C 00 48 */ lwz r3, 0x48(r28)
+/* 802DF468 002DC3A8 80 03 00 0C */ lwz r0, 0xc(r3)
+/* 802DF46C 002DC3AC 7C 1D 00 40 */ cmplw r29, r0
+/* 802DF470 002DC3B0 41 80 FF 1C */ blt lbl_802DF38C
+/* 802DF474 002DC3B4 39 61 00 30 */ addi r11, r1, 0x30
+/* 802DF478 002DC3B8 48 08 2D A1 */ bl func_80362218
+/* 802DF47C 002DC3BC 80 01 00 34 */ lwz r0, 0x34(r1)
+/* 802DF480 002DC3C0 7C 08 03 A6 */ mtlr r0
+/* 802DF484 002DC3C4 38 21 00 30 */ addi r1, r1, 0x30
+/* 802DF488 002DC3C8 4E 80 00 20 */ blr
diff --git a/include/SComponent/c_bg_w.h b/include/SComponent/c_bg_w.h
new file mode 100644
index 0000000000..7ac9034b95
--- /dev/null
+++ b/include/SComponent/c_bg_w.h
@@ -0,0 +1,25 @@
+#ifndef SCOMPONENT_C_BG_W_H
+#define SCOMPONENT_C_BG_W_H
+
+#include "global.h"
+
+class cBgW_BgId {
+public:
+ void Regist(int a1);
+ void Release();
+
+ unsigned int ChkUsed() const;
+
+private:
+ unsigned short mId;
+};
+
+extern "C" {
+
+bool cBgW_CheckBGround(float a1);
+bool cBgW_CheckBRoof(float a1);
+bool cBgW_CheckBWall(float a1);
+
+} // extern "C"
+
+#endif
diff --git a/include/functions.h b/include/functions.h
index d062a3b5df..390d47fac9 100644
--- a/include/functions.h
+++ b/include/functions.h
@@ -24,6 +24,8 @@ extern "C" {
void setBombNum__21dSv_player_item_max_cFUcUc(void);
void func_80362224(void);
void func_803621D8(void);
+ void func_803621CC(void);
+ void func_80362218(void);
void _restgpr_26(void);
void _savegpr_26(void);
void _restgpr_29(void);
@@ -253,7 +255,33 @@ extern "C" {
}
extern "C" {
+struct TColor;
+
+extern void GXBegin(u8, u8, u16);
+extern void GXLoadTexObj(u32*, s32);
+extern void GXInitTexObjLOD(f32, f32, f32, u32*, s32, s32, u32, u8, u32);
+extern void GXInitTexObj(u32*, u32, u32, u32, u32, u32, u8);
+
+extern void GXSetNumChans(u32);
+extern void GXSetNumTevStages(u32);
+extern void GXSetNumTexGens(u32);
+extern void GXSetTevOrder(u32, u32, u32, u32);
+extern void GXSetChanCtrl(u32, u32, u32, u32, u32, u32, s32);
+extern void GXSetTevOp(s32, s32);
+extern void GXSetTevColor(s32, TColor);
+extern void GXSetTevColorIn(s32, u32, u32, u32, u32);
+extern void GXSetTevAlphaIn(s32, u32, u32, u32, u32);
+extern void GXSetTevColorOp(s32, u32, u32, u32, u32, u32);
+extern void GXSetTevAlphaOp(s32, u32, u32, u32, u32, u32);
+extern void GXSetBlendMode(u32, u32, u32, u32);
+extern void GXSetVtxAttrFmt(u32, u32, u32, u32, u32);
+extern void GXClearVtxDesc();
+extern void GXSetVtxDesc(u32, u32);
+}
+
+extern "C" {
void JUTReport__FiiPCce(int, int, const char*, ...);
+ extern void JUTReportConsole(const char*);
}
// m_Do_main.h
diff --git a/include/variables.h b/include/variables.h
index 90e6a2544c..55b82561dc 100644
--- a/include/variables.h
+++ b/include/variables.h
@@ -75,7 +75,8 @@ extern u8 lbl_803BB4A8;
extern u8 lbl_804539F8;
extern u8 lbl_804539FC;
extern u8 lbl_803BB498;
-
+extern float lbl_804550E8;
+extern float lbl_804550EC;
#define _SDA_BASE_(dummy) 0
#define _SDA2_BASE_(dummy) 0
diff --git a/ldscript.lcf b/ldscript.lcf
index dfc81f45fd..44e425b7e0 100644
--- a/ldscript.lcf
+++ b/ldscript.lcf
@@ -777,6 +777,15 @@ FORCEACTIVE {
startCtrl__8daItem_cFv
startControl__8daItem_cFv
endControl__8daItem_cFv
+ loadImage__10JUTResFontFlUl
+ isLeadByte__10JUTResFontFl
+ getCellHeight__10JUTResFontFv
+ getCellWidth__10JUTResFontFv
+ getWidthEntry__10JUTResFontFlPQ27JUTFont6TWidth
+ drawChar_scale__10JUTResFontFffffib
+ setGX__10JUTResFontF6TColor6TColor
+ setGX__10JUTResFontFv
+ setBlock__10JUTResFontFv
}
/*
.init 80003100 - 80005600
diff --git a/libs/JSystem/JUtility/JUTFont.cpp b/libs/JSystem/JUtility/JUTFont.cpp
index 4bf93c8658..1e755532a4 100644
--- a/libs/JSystem/JUtility/JUTFont.cpp
+++ b/libs/JSystem/JUtility/JUTFont.cpp
@@ -1 +1,40 @@
-// ok
+#include "JSystem/JUtility/JUTFont/JUTFont.h"
+
+#ifdef NONMATCHING
+JUTFont::JUTFont()
+{
+ mColor1 = TColor();
+ mColor2 = TColor();
+ mColor3 = TColor();
+ mColor4 = TColor();
+ unk4 = false;
+}
+#endif
+
+void JUTFont::initialize_state()
+{
+ setCharColor(TColor());
+ unk5 = false;
+ unk8 = 0;
+ unk4 = false;
+}
+
+void JUTFont::setCharColor(TColor col1) {
+ mColor1 = col1;
+ mColor2 = col1;
+ mColor3 = col1;
+ mColor4 = col1;
+}
+
+void JUTFont::setGradColor(TColor col1, TColor col2) {
+ mColor1 = col1;
+ mColor2 = col1;
+ mColor3 = col2;
+ mColor4 = col2;
+}
+
+asm float JUTFont::drawString_size_scale(float a1, float a2, float a3, float a4, char* a5, unsigned long usz, bool a7) {
+ nofralloc
+
+#include "JSystem/JUtility/JUTFont/asm/drawString_size_scale.s"
+} \ No newline at end of file
diff --git a/libs/JSystem/JUtility/JUTResFont.cpp b/libs/JSystem/JUtility/JUTResFont.cpp
index 4bf93c8658..5d32654f37 100644
--- a/libs/JSystem/JUtility/JUTResFont.cpp
+++ b/libs/JSystem/JUtility/JUTResFont.cpp
@@ -1 +1,228 @@
-// ok
+#include "JSystem/JUtility/JUTResFont.h"
+
+extern "C" {
+extern void convertSjis__10JUTResFontFlPUs(); // remove when JUTResFont::getFontCode decompiled
+extern void getFontCode__10JUTResFontFl(); // remove when JUTResFont::getWidthEntry decompiled
+extern void loadFont__10JUTResFontFlUlPQ27JUTFont6TWidth(); // remove when JUTResFont::drawChar_scale decompiled
+extern void countBlock__10JUTResFontFv(); // remove when JUTResFont::protected_initiate decompiled
+extern void initialize_state__7JUTFontFv(); // remove when JUTResFont::protected_initiate decompiled
+extern void initialize_state__10JUTResFontFv(); // remove when JUTResFont::protected_initiate decompiled
+extern void deleteMemBlocks_ResFont__10JUTResFontFv(); // remove when JUTResFont::protected_initiate decompiled
+}
+
+extern float lbl_80455FF0;
+extern const char* lbl_8039D39C;
+extern double lbl_80455FF8;
+extern double lbl_80456000;
+
+extern const bool (*const lbl_8039D390[])(u32);
+
+extern const char* lbl_8039D45C;
+
+extern void* lbl_803CC5A0;
+extern void* lbl_803A31F0;
+
+JUTResFont::JUTResFont() {
+ initialize_state();
+ ((JUTFont*)this)->initialize_state();
+}
+
+JUTResFont::JUTResFont(ResFONT font, JKRHeap* heap) {
+ initialize_state();
+ ((JUTFont*)this)->initialize_state();
+ initiate(font, heap);
+}
+
+#ifdef NONMATCHING
+JUTResFont::~JUTResFont() {
+ if (unk4) {
+ deleteMemBlocks_ResFont();
+ initialize_state();
+ ((JUTFont*)this)->initialize_state();
+ }
+}
+#else
+asm JUTResFont::~JUTResFont() {
+ nofralloc
+/* 802DF000 002DBF40 94 21 FF F0 */ stwu r1, -0x10(r1)
+/* 802DF004 002DBF44 7C 08 02 A6 */ mflr r0
+/* 802DF008 002DBF48 90 01 00 14 */ stw r0, 0x14(r1)
+/* 802DF00C 002DBF4C 93 E1 00 0C */ stw r31, 0xc(r1)
+/* 802DF010 002DBF50 93 C1 00 08 */ stw r30, 8(r1)
+/* 802DF014 002DBF54 7C 7E 1B 79 */ or. r30, r3, r3
+/* 802DF018 002DBF58 7C 9F 23 78 */ mr r31, r4
+/* 802DF01C 002DBF5C 41 82 00 54 */ beq lbl_802DF070
+/* 802DF020 002DBF60 3C 80 80 3D */ lis r4, lbl_803CC5A0@ha
+/* 802DF024 002DBF64 38 04 C5 A0 */ addi r0, r4, lbl_803CC5A0@l
+/* 802DF028 002DBF68 90 1E 00 00 */ stw r0, 0(r30)
+/* 802DF02C 002DBF6C 88 1E 00 04 */ lbz r0, 4(r30)
+/* 802DF030 002DBF70 28 00 00 00 */ cmplwi r0, 0
+/* 802DF034 002DBF74 41 82 00 18 */ beq lbl_802DF04C
+/* 802DF038 002DBF78 48 00 00 55 */ bl deleteMemBlocks_ResFont__10JUTResFontFv
+/* 802DF03C 002DBF7C 7F C3 F3 78 */ mr r3, r30
+/* 802DF040 002DBF80 48 00 00 71 */ bl initialize_state__10JUTResFontFv
+/* 802DF044 002DBF84 7F C3 F3 78 */ mr r3, r30
+/* 802DF048 002DBF88 4B FF FC DD */ bl initialize_state__7JUTFontFv
+lbl_802DF04C:
+/* 802DF04C 002DBF8C 28 1E 00 00 */ cmplwi r30, 0
+/* 802DF050 002DBF90 41 82 00 10 */ beq lbl_802DF060
+/* 802DF054 002DBF94 3C 60 80 3A */ lis r3, lbl_803A31F0@ha
+/* 802DF058 002DBF98 38 03 31 F0 */ addi r0, r3, lbl_803A31F0@l
+/* 802DF05C 002DBF9C 90 1E 00 00 */ stw r0, 0(r30)
+lbl_802DF060:
+/* 802DF060 002DBFA0 7F E0 07 35 */ extsh. r0, r31
+/* 802DF064 002DBFA4 40 81 00 0C */ ble lbl_802DF070
+/* 802DF068 002DBFA8 7F C3 F3 78 */ mr r3, r30
+/* 802DF06C 002DBFAC 4B FE FC D1 */ bl __dl__FPv
+lbl_802DF070:
+/* 802DF070 002DBFB0 7F C3 F3 78 */ mr r3, r30
+/* 802DF074 002DBFB4 83 E1 00 0C */ lwz r31, 0xc(r1)
+/* 802DF078 002DBFB8 83 C1 00 08 */ lwz r30, 8(r1)
+/* 802DF07C 002DBFBC 80 01 00 14 */ lwz r0, 0x14(r1)
+/* 802DF080 002DBFC0 7C 08 03 A6 */ mtlr r0
+/* 802DF084 002DBFC4 38 21 00 10 */ addi r1, r1, 0x10
+/* 802DF088 002DBFC8 4E 80 00 20 */ blr
+}
+#endif
+
+void JUTResFont::deleteMemBlocks_ResFont() {
+ delete[] (void*)unk50;
+}
+
+void JUTResFont::initialize_state() {
+ unk48 = 0;
+ unk50 = NULL;
+ unk54 = 0;
+ unk58 = NULL;
+ unk5C = 0;
+ unk1C = 0;
+ unk20 = 0;
+ unk44 = 0xFFFFFFFF;
+}
+
+bool JUTResFont::initiate(ResFONT font, JKRHeap* heap) {
+ if (!protected_initiate(font, heap)) {
+ deleteMemBlocks_ResFont();
+ initialize_state();
+ ((JUTFont*)this)->initialize_state();
+ unk4 = false;
+ return false;
+ }
+
+ return true;
+}
+
+asm bool JUTResFont::protected_initiate(ResFONT font, JKRHeap* heap) {
+ nofralloc
+#include "JSystem/JUtility/asm/JUTResFont__protected_initiate.s"
+}
+
+asm u32 JUTResFont::countBlock() {
+ nofralloc
+#include "JSystem/JUtility/asm/JUTResFont__countBlock.s"
+}
+
+asm void JUTResFont::setBlock() {
+ nofralloc
+#include "JSystem/JUtility/asm/JUTResFont__setBlock.s"
+}
+
+void JUTResFont::setGX() {
+ GXSetNumChans(0x1);
+ GXSetNumTevStages(0x1);
+ GXSetNumTexGens(0x1);
+ GXSetTevOrder(0x0, 0x0, 0x0, 0x4);
+ GXSetChanCtrl(0x4, 0x0, 0x0, 0x1, 0x0, 0x0, 0x2);
+ GXSetTevOp(0x0, 0x0);
+ GXSetBlendMode(0x1, 0x4, 0x5, 0xf);
+ GXSetVtxAttrFmt(0x0, 0x9, 0x1, 0x3, 0x0);
+ GXSetVtxAttrFmt(0x0, 0xb, 0x1, 0x5, 0x0);
+ GXSetVtxAttrFmt(0x0, 0xd, 0x1, 0x2, 0xf);
+ GXClearVtxDesc();
+ GXSetVtxDesc(0x9, 0x1);
+ GXSetVtxDesc(0xb, 0x1);
+ GXSetVtxDesc(0xd, 0x1);
+}
+
+void JUTResFont::setGX(TColor col1, TColor col2) {
+ if ((col1.Raw() == CLR_BLACK) && (col2.Raw() == CLR_WHITE)) {
+ setGX();
+ return;
+ }
+
+ GXSetNumChans(0x1);
+ GXSetNumTevStages(0x2);
+ GXSetNumTexGens(0x1);
+ GXSetTevOrder(0x0, 0x0, 0x0, 0xff);
+ GXSetChanCtrl(0x4, 0x0, 0x0, 0x1, 0x0, 0x0, 0x2);
+ GXSetTevColor(0x1, col1);
+ GXSetTevColor(0x2, col2);
+ GXSetTevColorIn(0x0, 0x2, 0x4, 0x8, 0xf);
+ GXSetTevAlphaIn(0x0, 0x1, 0x2, 0x4, 0x7);
+ GXSetTevColorOp(0x0, 0x0, 0x0, 0x0, 0x1, 0x0);
+ GXSetTevAlphaOp(0x0, 0x0, 0x0, 0x0, 0x1, 0x0);
+ GXSetTevOrder(0x1, 0xff, 0xff, 0x4);
+ GXSetTevColorIn(0x1, 0xf, 0x0, 0xa, 0xf);
+ GXSetTevAlphaIn(0x1, 0x7, 0x0, 0x5, 0x7);
+ GXSetTevColorOp(0x1, 0x0, 0x0, 0x0, 0x1, 0x0);
+ GXSetTevAlphaOp(0x1, 0x0, 0x0, 0x0, 0x1, 0x0);
+ GXSetBlendMode(0x1, 0x4, 0x5, 0xf);
+ GXSetVtxAttrFmt(0x0, 0x9, 0x1, 0x3, 0x0);
+ GXSetVtxAttrFmt(0x0, 0xb, 0x1, 0x5, 0x0);
+ GXSetVtxAttrFmt(0x0, 0xd, 0x1, 0x2, 0xf);
+ GXClearVtxDesc();
+ GXSetVtxDesc(0x9, 0x1);
+ GXSetVtxDesc(0xb, 0x1);
+ GXSetVtxDesc(0xd, 0x1);
+}
+
+asm void JUTResFont::drawChar_scale(float a1, float a2, float a3, float a4, int a5, bool a6) {
+ nofralloc
+#include "JSystem/JUtility/asm/JUTResFont__drawChar_scale.s"
+}
+
+void JUTResFont::loadFont(s32 a1, u32 a2, TWidth* a3) {
+ if (a3 != NULL)
+ getWidthEntry(a1, a3);
+
+ u32 code = getFontCode(a1);
+ loadImage(code, a2);
+}
+
+asm void JUTResFont::getWidthEntry(s32 i_no, TWidth* width) {
+ nofralloc
+#include "JSystem/JUtility/asm/JUTResFont__getWidthEntry.s"
+}
+
+u32 JUTResFont::getCellWidth() {
+ if (unk58 != NULL && unk58->unk0 != NULL)
+ return unk58->unk0->unkC;
+
+ return getWidth();
+}
+
+u32 JUTResFont::getCellHeight() {
+ if (unk58 != NULL && unk58->unk0 != NULL)
+ return unk58->unk0->unkE;
+
+ return getHeight();
+}
+
+bool JUTResFont::isLeadByte(s32 a1) {
+ return (*unk6C)(a1);
+}
+
+asm u32 JUTResFont::getFontCode(s32 a1) {
+ nofralloc
+#include "JSystem/JUtility/asm/JUTResFont__getFontCode.s"
+}
+
+asm void JUTResFont::loadImage(s32 a1, u32 a2) {
+ nofralloc
+#include "JSystem/JUtility/asm/JUTResFont__loadImage.s"
+}
+
+asm s32 JUTResFont::convertSjis(s32 a1, u16* a2) {
+ nofralloc
+#include "JSystem/JUtility/asm/JUTResFont__convertSjis.s"
+}
diff --git a/libs/SSystem/SComponent/c_bg_w.cpp b/libs/SSystem/SComponent/c_bg_w.cpp
index 4bf93c8658..ef273bb50f 100644
--- a/libs/SSystem/SComponent/c_bg_w.cpp
+++ b/libs/SSystem/SComponent/c_bg_w.cpp
@@ -1 +1,34 @@
-// ok
+#include "SComponent/c_bg_w.h"
+
+void cBgW_BgId::Regist(int a1) {
+ mId = a1;
+}
+
+void cBgW_BgId::Release() {
+ mId = 0x100;
+}
+
+unsigned int cBgW_BgId::ChkUsed() const {
+ unsigned int temp = mId - 0x100;
+ return temp >> 0x1f;
+}
+
+extern "C" {
+
+bool cBgW_CheckBGround(float a1) {
+ return a1 >= lbl_804550E8;
+}
+
+bool cBgW_CheckBRoof(float a1) {
+ return a1 < lbl_804550EC;
+}
+
+bool cBgW_CheckBWall(float a1)
+{
+ if (!cBgW_CheckBGround(a1) && !cBgW_CheckBRoof(a1))
+ return true;
+
+ return false;
+}
+
+} // extern "C"
diff --git a/obj_files.mk b/obj_files.mk
index d68d114425..d00259b680 100644
--- a/obj_files.mk
+++ b/obj_files.mk
@@ -264,7 +264,7 @@ TEXT_O_FILES := \
$(BUILD_DIR)/asm/SComponent/c/bg/s/lin/c_bg_s_lin_chk.o \
$(BUILD_DIR)/asm/SComponent/c/bg/s/shdw/c_bg_s_shdw_draw.o \
$(BUILD_DIR)/asm/SComponent/c/bg/s/poly/c_bg_s_poly_info.o \
- $(BUILD_DIR)/asm/SComponent/c/bg/c_bg_w.o \
+ $(BUILD_DIR)/libs/SSystem/SComponent/c_bg_w.o \
$(BUILD_DIR)/asm/SComponent/c/c_m2d.o \
$(BUILD_DIR)/asm/SComponent/c/c_m3d.o \
$(BUILD_DIR)/asm/SComponent/c/m3d/g/c_m3d_g_aab.o \
@@ -464,7 +464,9 @@ TEXT_O_FILES := \
$(BUILD_DIR)/asm/JUtility/JUTNameTab.o \
$(BUILD_DIR)/asm/JUtility/JUTGraphFifo.o \
$(BUILD_DIR)/asm/JUtility/JUTFont.o \
+ $(BUILD_DIR)/libs/JSystem/JUtility/JUTFont.o \
$(BUILD_DIR)/asm/JUtility/JUTResFont.o \
+ $(BUILD_DIR)/libs/JSystem/JUtility/JUTResFont.o \
$(BUILD_DIR)/asm/JUtility/JUTDbPrint.o \
$(BUILD_DIR)/asm/JUtility/JUTGamePad.o \
$(BUILD_DIR)/asm/JUtility/JUTException.o \