summaryrefslogtreecommitdiff
path: root/include
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 /include
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>
Diffstat (limited to 'include')
-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
14 files changed, 1046 insertions, 2 deletions
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