From 66b4d3dfc2ac21c7d941f5de3ea5101d6aee92a2 Mon Sep 17 00:00:00 2001 From: Kellan Clark <86537480+KellanClark@users.noreply.github.com> Date: Mon, 19 Jun 2023 19:33:00 -0400 Subject: [PATCH 1/3] Increase parity with heartgold in string functions --- arm9/asm/unk_020625EC.s | 2 +- arm9/asm/unk_020653EC.s | 2 +- arm9/asm/unk_0206F3FC.s | 2 +- arm9/asm/unk_020772F0.s | 4 +- arm9/asm/unk_02079C70.s | 4 +- arm9/global.inc | 2 +- arm9/modules/06/asm/module_06.s | 2 +- arm9/modules/17/asm/module_17.s | 4 +- arm9/modules/53/asm/module_53.s | 4 +- arm9/modules/54/asm/module_54.s | 4 +- arm9/modules/55/asm/module_55.s | 4 +- arm9/modules/56/asm/module_56.s | 4 +- arm9/modules/58/asm/module_58.s | 4 +- arm9/modules/59/src/mod59_Intro.c | 2 +- arm9/modules/60/asm/module_60.s | 4 +- arm9/modules/65/asm/module_65.s | 4 +- arm9/modules/71/asm/module_71.s | 6 +- arm9/modules/73/asm/module_73.s | 4 +- arm9/modules/75/asm/module_75.s | 2 +- arm9/modules/76/asm/module_76.s | 2 +- arm9/modules/80/asm/module_80.s | 18 +- arm9/modules/82/asm/module_82.s | 4 +- arm9/modules/85/asm/module_85.s | 2 +- arm9/src/font.c | 13 +- arm9/src/message_format.c | 4 +- arm9/src/render_text.c | 4 +- arm9/src/string_control_code.c | 32 ++-- arm9/src/string_util.c | 17 +- arm9/src/text_02054590.c | 2 +- arm9/src/unk_02021590.c | 12 +- arm9/src/unk_02021934.c | 6 +- include/constants/charcode.h | 271 ++++++++++++++++++++++++++++++ include/constants/global.h | 2 + include/font.h | 4 +- include/string_control_code.h | 8 +- include/string_util.h | 7 +- include/text.h | 12 -- 37 files changed, 367 insertions(+), 117 deletions(-) create mode 100644 include/constants/charcode.h diff --git a/arm9/asm/unk_020625EC.s b/arm9/asm/unk_020625EC.s index fa8c0b3e8..00c418e17 100644 --- a/arm9/asm/unk_020625EC.s +++ b/arm9/asm/unk_020625EC.s @@ -1151,7 +1151,7 @@ FUN_02062DB0: ; 0x02062DB0 ldr r2, [r4, #0x0] mov r0, #0x0 lsl r1, r1, #0x6 - bl FUN_02002EEC + bl LoadFontPal1 mov r0, #0x13 str r0, [sp, #0x0] mov r0, #0x1b diff --git a/arm9/asm/unk_020653EC.s b/arm9/asm/unk_020653EC.s index 8273fea4b..ac99deda2 100644 --- a/arm9/asm/unk_020653EC.s +++ b/arm9/asm/unk_020653EC.s @@ -1983,7 +1983,7 @@ FUN_02066334: ; 0x02066334 ldr r2, [r4, #0x0] mov r0, #0x0 lsl r1, r1, #0x6 - bl FUN_02002EEC + bl LoadFontPal1 mov r0, #0x13 str r0, [sp, #0x0] mov r0, #0x1b diff --git a/arm9/asm/unk_0206F3FC.s b/arm9/asm/unk_0206F3FC.s index dce13124f..ef8fb94e8 100644 --- a/arm9/asm/unk_0206F3FC.s +++ b/arm9/asm/unk_0206F3FC.s @@ -1298,7 +1298,7 @@ FUN_0206FD24: ; 0x0206FD24 mov r0, #0x0 lsl r1, r1, #0x4 mov r2, #0xc - bl FUN_02002EEC + bl LoadFontPal1 mov r1, #0x0 str r1, [sp, #0x0] mov r0, #0xc diff --git a/arm9/asm/unk_020772F0.s b/arm9/asm/unk_020772F0.s index 20c4351e2..7d9396993 100644 --- a/arm9/asm/unk_020772F0.s +++ b/arm9/asm/unk_020772F0.s @@ -2353,7 +2353,7 @@ FUN_02077FE8: ; 0x02077FE8 mov r0, #0x0 lsl r1, r1, #0x6 mov r2, #0x12 - bl FUN_02002EEC + bl LoadFontPal1 ldr r0, [r5, #0x18] bl Options_GetFrame lsl r0, r0, #0x18 @@ -2373,7 +2373,7 @@ FUN_02077FE8: ; 0x02077FE8 mov r0, #0x4 lsl r1, r1, #0x6 mov r2, #0x12 - bl FUN_02002EEC + bl LoadFontPal1 mov r3, #0x4b mov r0, #0x12 lsl r3, r3, #0x4 diff --git a/arm9/asm/unk_02079C70.s b/arm9/asm/unk_02079C70.s index c0dac73d5..a1fa1e3bc 100644 --- a/arm9/asm/unk_02079C70.s +++ b/arm9/asm/unk_02079C70.s @@ -1655,7 +1655,7 @@ _0207A99E: mov r0, #0x0 lsl r1, r1, #0x6 mov r2, #0x13 - bl FUN_02002EEC + bl LoadFontPal1 mov r0, #0x93 lsl r0, r0, #0x2 ldr r0, [r5, r0] @@ -4733,7 +4733,7 @@ FUN_0207C23C: ; 0x0207C23C mov r0, #0x0 sub r1, #0xda mov r2, #0x13 - bl FUN_02002EEC + bl LoadFontPal1 mov r0, #0x93 lsl r0, r0, #0x2 ldr r0, [r4, r0] diff --git a/arm9/global.inc b/arm9/global.inc index c6722043e..44b7d304e 100644 --- a/arm9/global.inc +++ b/arm9/global.inc @@ -238,7 +238,7 @@ .extern FUN_02002E14 .extern GetFontAttribute .extern LoadFontPal0 -.extern FUN_02002EEC +.extern LoadFontPal1 .extern FUN_02002F08 .extern FUN_02002F40 .extern FUN_02002F90 diff --git a/arm9/modules/06/asm/module_06.s b/arm9/modules/06/asm/module_06.s index 86c36fead..6b44fc01a 100644 --- a/arm9/modules/06/asm/module_06.s +++ b/arm9/modules/06/asm/module_06.s @@ -41729,7 +41729,7 @@ MOD06_0224DBCC: ; 0x0224DBCC ldr r2, [r4, #0x18] mov r0, #0 lsl r1, r1, #6 - bl FUN_02002EEC + bl LoadFontPal1 mov r0, #0 str r0, [sp] ldr r0, [r4, #0x18] diff --git a/arm9/modules/17/asm/module_17.s b/arm9/modules/17/asm/module_17.s index 4eb87d210..8ae85fde5 100644 --- a/arm9/modules/17/asm/module_17.s +++ b/arm9/modules/17/asm/module_17.s @@ -4671,7 +4671,7 @@ MOD17_021D9918: ; 0x021D9918 mov r0, #0 mov r1, #0xe0 mov r2, #0xe - bl FUN_02002EEC + bl LoadFontPal1 str r4, [sp] add r0, sp, #0x20 ldrb r1, [r0, #0x10] @@ -11774,7 +11774,7 @@ MOD17_021DCC38: ; 0x021DCC38 mov r0, #4 mov r1, #0x40 mov r2, #0xe - bl FUN_02002EEC + bl LoadFontPal1 add sp, #8 pop {r4, pc} thumb_func_end MOD17_021DCC38 diff --git a/arm9/modules/53/asm/module_53.s b/arm9/modules/53/asm/module_53.s index b3bd0c075..6165c1380 100644 --- a/arm9/modules/53/asm/module_53.s +++ b/arm9/modules/53/asm/module_53.s @@ -782,12 +782,12 @@ MOD53_021D7B60: ; 0x021D7B60 mov r0, #0 lsl r1, r1, #4 mov r2, #0x27 - bl FUN_02002EEC + bl LoadFontPal1 mov r1, #0x1a mov r0, #4 lsl r1, r1, #4 mov r2, #0x27 - bl FUN_02002EEC + bl LoadFontPal1 mov r0, #0 str r0, [sp] mov r0, #2 diff --git a/arm9/modules/54/asm/module_54.s b/arm9/modules/54/asm/module_54.s index 85ea4ba10..f4db45a8a 100644 --- a/arm9/modules/54/asm/module_54.s +++ b/arm9/modules/54/asm/module_54.s @@ -708,12 +708,12 @@ MOD54_021D7AA0: ; 0x021D7AA0 mov r0, #0 lsl r1, r1, #4 mov r2, #0x33 - bl FUN_02002EEC + bl LoadFontPal1 mov r1, #0x1a mov r0, #4 lsl r1, r1, #4 mov r2, #0x33 - bl FUN_02002EEC + bl LoadFontPal1 mov r0, #0 str r0, [sp] str r0, [sp, #4] diff --git a/arm9/modules/55/asm/module_55.s b/arm9/modules/55/asm/module_55.s index e3ffde6e1..bf7e5dc5f 100644 --- a/arm9/modules/55/asm/module_55.s +++ b/arm9/modules/55/asm/module_55.s @@ -739,12 +739,12 @@ MOD55_021D7AE0: ; 0x021D7AE0 mov r0, #0 lsl r1, r1, #4 mov r2, #0x34 - bl FUN_02002EEC + bl LoadFontPal1 mov r1, #6 mov r0, #0 lsl r1, r1, #6 mov r2, #0x34 - bl FUN_02002EEC + bl LoadFontPal1 ldr r1, _021D7BE4 ; =0x000052D8 add r0, sp, #0x10 strh r1, [r0] diff --git a/arm9/modules/56/asm/module_56.s b/arm9/modules/56/asm/module_56.s index 7386e6f1b..206f7201a 100644 --- a/arm9/modules/56/asm/module_56.s +++ b/arm9/modules/56/asm/module_56.s @@ -963,12 +963,12 @@ MOD56_0221257C: ; 0x0221257C mov r0, #0 lsl r1, r1, #4 mov r2, #0x36 - bl FUN_02002EEC + bl LoadFontPal1 mov r1, #6 mov r0, #0 lsl r1, r1, #6 mov r2, #0x36 - bl FUN_02002EEC + bl LoadFontPal1 mov r3, #0 str r3, [sp] str r3, [sp, #4] diff --git a/arm9/modules/58/asm/module_58.s b/arm9/modules/58/asm/module_58.s index 10ece18bf..fb0c6fcf7 100644 --- a/arm9/modules/58/asm/module_58.s +++ b/arm9/modules/58/asm/module_58.s @@ -594,12 +594,12 @@ MOD58_021D9F14: ; 0x021D9F14 mov r0, #0 lsl r1, r1, #4 mov r2, #0x27 - bl FUN_02002EEC + bl LoadFontPal1 mov r1, #0x1a mov r0, #4 lsl r1, r1, #4 mov r2, #0x27 - bl FUN_02002EEC + bl LoadFontPal1 mov r0, #1 mov r1, #0x20 mov r2, #0 diff --git a/arm9/modules/59/src/mod59_Intro.c b/arm9/modules/59/src/mod59_Intro.c index 9c0aab86f..6b46793d8 100644 --- a/arm9/modules/59/src/mod59_Intro.c +++ b/arm9/modules/59/src/mod59_Intro.c @@ -593,7 +593,7 @@ void MOD59_IntroSetupBg(MOD59_IntroOverlayData *data) FUN_0200CD68(data->bgConfig, 0, 994, 4, 0, data->heap_id); LoadUserFrameGfx1(data->bgConfig, GF_BG_LYR_MAIN_0, 985, 3, 0, data->heap_id); LoadFontPal0(GF_PAL_LOCATION_MAIN_BG, GF_PAL_SLOT_OFFSET_5, data->heap_id); - FUN_02002EEC(GF_PAL_LOCATION_MAIN_BG, GF_PAL_SLOT_OFFSET_6, data->heap_id); + LoadFontPal1(GF_PAL_LOCATION_MAIN_BG, GF_PAL_SLOT_OFFSET_6, data->heap_id); struct BgTemplate bgTemplateSub = MOD59_021D9EBC; bgTemplateSub.screenBase = GX_BG_SCRBASE_0x7800; diff --git a/arm9/modules/60/asm/module_60.s b/arm9/modules/60/asm/module_60.s index 60ca5d93f..dee9c7bba 100644 --- a/arm9/modules/60/asm/module_60.s +++ b/arm9/modules/60/asm/module_60.s @@ -913,12 +913,12 @@ MOD60_021D7BA4: ; 0x021D7BA4 ldr r2, [r4] mov r0, #0 lsl r1, r1, #6 - bl FUN_02002EEC + bl LoadFontPal1 mov r1, #6 ldr r2, [r4] mov r0, #4 lsl r1, r1, #6 - bl FUN_02002EEC + bl LoadFontPal1 add r0, r4, #0 add r0, #0x2c mov r1, #0 diff --git a/arm9/modules/65/asm/module_65.s b/arm9/modules/65/asm/module_65.s index 808b25b24..a35c32c51 100644 --- a/arm9/modules/65/asm/module_65.s +++ b/arm9/modules/65/asm/module_65.s @@ -970,7 +970,7 @@ MOD65_021D7C04: ; 0x021D7C04 ldr r2, [r6] mov r0, #0 lsl r1, r1, #6 - bl FUN_02002EEC + bl LoadFontPal1 mov r1, #0x1a ldr r2, [r6] mov r0, #4 @@ -3284,7 +3284,7 @@ MOD65_021D8E68: ; 0x021D8E68 ldr r2, [r4] mov r0, #0 lsl r1, r1, #4 - bl FUN_02002EEC + bl LoadFontPal1 add sp, #8 pop {r4, pc} nop diff --git a/arm9/modules/71/asm/module_71.s b/arm9/modules/71/asm/module_71.s index 6884ce65e..a3554dd1e 100644 --- a/arm9/modules/71/asm/module_71.s +++ b/arm9/modules/71/asm/module_71.s @@ -2312,7 +2312,7 @@ MOD71_0222E900: ; 0x0222E900 mov r0, #0 lsl r1, r1, #4 mov r2, #0x1a - bl FUN_02002EEC + bl LoadFontPal1 mov r0, #0 str r0, [sp] mov r0, #9 @@ -2357,7 +2357,7 @@ MOD71_0222E900: ; 0x0222E900 mov r0, #0 mov r1, #0x40 mov r2, #0x1a - bl FUN_02002EEC + bl LoadFontPal1 mov r0, #0 mov r1, #0x60 mov r2, #0x1a @@ -2407,7 +2407,7 @@ MOD71_0222E900: ; 0x0222E900 mov r0, #4 mov r1, #0x40 mov r2, #0x1a - bl FUN_02002EEC + bl LoadFontPal1 mov r0, #4 mov r1, #0x60 mov r2, #0x1a diff --git a/arm9/modules/73/asm/module_73.s b/arm9/modules/73/asm/module_73.s index e9007c576..4652a7a92 100644 --- a/arm9/modules/73/asm/module_73.s +++ b/arm9/modules/73/asm/module_73.s @@ -5001,7 +5001,7 @@ MOD73_021D9BE0: ; 0x021D9BE0 mov r0, #4 mov r1, #0x20 add r2, r4, #0 - bl FUN_02002EEC + bl LoadFontPal1 mov r1, #1 ldr r0, [r5, #8] add r2, r1, #0 @@ -5904,7 +5904,7 @@ MOD73_021DA2AC: ; 0x021DA2AC ldr r2, [sp, #0x14] mov r0, #0 mov r1, #0x40 - bl FUN_02002EEC + bl LoadFontPal1 mov r0, #0 str r0, [sp] ldr r0, [sp, #0x14] diff --git a/arm9/modules/75/asm/module_75.s b/arm9/modules/75/asm/module_75.s index d8d41d23f..e378b7a6d 100644 --- a/arm9/modules/75/asm/module_75.s +++ b/arm9/modules/75/asm/module_75.s @@ -829,7 +829,7 @@ MOD75_021E7214: ; 0x021E7214 mov r0, #0 lsl r1, r1, #4 mov r2, #6 - bl FUN_02002EEC + bl LoadFontPal1 mov r1, #0 str r1, [sp] mov r0, #6 diff --git a/arm9/modules/76/asm/module_76.s b/arm9/modules/76/asm/module_76.s index 0315ded54..486cd1257 100644 --- a/arm9/modules/76/asm/module_76.s +++ b/arm9/modules/76/asm/module_76.s @@ -426,7 +426,7 @@ MOD76_021D7814: ; 0x021D7814 mov r0, #0 lsl r1, r1, #6 mov r2, #0x43 - bl FUN_02002EEC + bl LoadFontPal1 mov r1, #0 str r1, [sp] mov r0, #0x43 diff --git a/arm9/modules/80/asm/module_80.s b/arm9/modules/80/asm/module_80.s index def544994..24df0564f 100644 --- a/arm9/modules/80/asm/module_80.s +++ b/arm9/modules/80/asm/module_80.s @@ -2802,7 +2802,7 @@ MOD80_0222EB6C: ; 0x0222EB6C mov r0, #0 lsl r1, r1, #4 mov r2, #0x3e - bl FUN_02002EEC + bl LoadFontPal1 ldr r0, [r5] ldr r0, [r0, #0x24] bl Options_GetFrame @@ -4096,7 +4096,7 @@ MOD80_0222F5A8: ; 0x0222F5A8 mov r0, #0 lsl r1, r1, #4 mov r2, #0x3e - bl FUN_02002EEC + bl LoadFontPal1 ldr r0, [r5] ldr r0, [r0, #0x24] bl Options_GetFrame @@ -5385,7 +5385,7 @@ MOD80_02230054: ; 0x02230054 lsl r1, r1, #4 mov r2, #0x3e ldr r4, [r5, #4] - bl FUN_02002EEC + bl LoadFontPal1 ldr r0, [r5] ldr r0, [r0, #0x24] bl Options_GetFrame @@ -6392,7 +6392,7 @@ MOD80_02230840: ; 0x02230840 mov r0, #0 lsl r1, r1, #4 mov r2, #0x3e - bl FUN_02002EEC + bl LoadFontPal1 ldr r0, [r5] ldr r0, [r0, #0x24] bl Options_GetFrame @@ -8804,7 +8804,7 @@ MOD80_02231BF4: ; 0x02231BF4 mov r0, #0 lsl r1, r1, #4 mov r2, #0x3e - bl FUN_02002EEC + bl LoadFontPal1 ldr r0, [r5] ldr r0, [r0, #0x24] bl Options_GetFrame @@ -11833,7 +11833,7 @@ MOD80_0223346C: ; 0x0223346C mov r0, #0 lsl r1, r1, #4 mov r2, #0x3e - bl FUN_02002EEC + bl LoadFontPal1 ldr r0, [r5] ldr r0, [r0, #0x24] bl Options_GetFrame @@ -14377,7 +14377,7 @@ MOD80_022348CC: ; 0x022348CC mov r0, #0 lsl r1, r1, #4 mov r2, #0x3e - bl FUN_02002EEC + bl LoadFontPal1 ldr r0, [r5] ldr r0, [r0, #0x24] bl Options_GetFrame @@ -18016,12 +18016,12 @@ MOD80_02236488: ; 0x02236488 mov r0, #0 lsl r1, r1, #4 mov r2, #0x3e - bl FUN_02002EEC + bl LoadFontPal1 mov r1, #0x1a mov r0, #4 lsl r1, r1, #4 mov r2, #0x3e - bl FUN_02002EEC + bl LoadFontPal1 ldr r0, [r5] ldr r0, [r0, #0x24] bl Options_GetFrame diff --git a/arm9/modules/82/asm/module_82.s b/arm9/modules/82/asm/module_82.s index 87d4ccea3..1ffcb8231 100644 --- a/arm9/modules/82/asm/module_82.s +++ b/arm9/modules/82/asm/module_82.s @@ -1630,12 +1630,12 @@ MOD82_0222E264: ; 0x0222E264 mov r0, #0 lsl r1, r1, #4 mov r2, #0x44 - bl FUN_02002EEC + bl LoadFontPal1 mov r1, #0x1a mov r0, #4 lsl r1, r1, #4 mov r2, #0x44 - bl FUN_02002EEC + bl LoadFontPal1 ldr r0, [r5] ldr r0, [r0, #0x10] bl Options_GetFrame diff --git a/arm9/modules/85/asm/module_85.s b/arm9/modules/85/asm/module_85.s index 04d134ce7..b76c95bbf 100644 --- a/arm9/modules/85/asm/module_85.s +++ b/arm9/modules/85/asm/module_85.s @@ -774,7 +774,7 @@ MOD85_021D7B28: ; 0x021D7B28 mov r0, #0 lsl r1, r1, #4 mov r2, #0x4f - bl FUN_02002EEC + bl LoadFontPal1 ldr r2, _021D7BAC ; =0x000001E9 mov r0, #0 mov r1, #0x1a diff --git a/arm9/src/font.c b/arm9/src/font.c index 5bfda6a57..fa91f9efd 100644 --- a/arm9/src/font.c +++ b/arm9/src/font.c @@ -163,15 +163,14 @@ s32 GetFontAttribute(u8 fontId, s32 attr) return ret; } -void LoadFontPal0(enum GFPalLoadLocation location, enum GFPalSlotOffset palSlotOffset, u32 heap_id) +void LoadFontPal0(enum GFPalLoadLocation location, enum GFPalSlotOffset palSlotOffset, u32 heapId) { - GfGfxLoader_GXLoadPal(NARC_GRAPHIC_FONT, NARC_font_narc_0006_NCLR, location, palSlotOffset, 0x20, heap_id); + GfGfxLoader_GXLoadPal(NARC_GRAPHIC_FONT, NARC_font_narc_0006_NCLR, location, palSlotOffset, 0x20, heapId); } -void FUN_02002EEC(enum GFPalLoadLocation location, enum GFPalSlotOffset palSlotOffset, u32 heap_id) +void LoadFontPal1(enum GFPalLoadLocation location, enum GFPalSlotOffset palSlotOffset, u32 heapId) { - GfGfxLoader_GXLoadPal( - NARC_GRAPHIC_FONT, NARC_font_narc_0007_NCLR, location, palSlotOffset, 0x20, heap_id); + GfGfxLoader_GXLoadPal(NARC_GRAPHIC_FONT, NARC_font_narc_0007_NCLR, location, palSlotOffset, 0x20, heapId); } s32 FUN_02002F08(u32 param0, struct String *str, u32 param2) @@ -197,13 +196,13 @@ u32 FUN_02002F58(const u16 *str) u32 r5 = 1; while (*str != EOS) { - if (*str == 0xFFFE) + if (*str == EXT_CTRL_CODE_BEGIN) { str = MsgArray_SkipControlCode(str); continue; } - if (*str == 0xE000) + if (*str == CHAR_LF) { r5++; str++; diff --git a/arm9/src/message_format.c b/arm9/src/message_format.c index e0506bceb..7ddc5456b 100644 --- a/arm9/src/message_format.c +++ b/arm9/src/message_format.c @@ -813,9 +813,9 @@ void FUN_0200B9EC(struct UnkStruct_0200B870 * string, u32 value, u32 n, enum Pri ConvertUIntToDecimalString(string->data, value, mode, n); for (int i = 0; string->data[i] != EOS; i++) { - if (string->data[i] >= CHAR_0 && string->data[i] <= CHAR_9) + if (string->data[i] >= CHAR_JP_0 && string->data[i] <= CHAR_JP_9) { - BlitBitmapRectToWindow(window, string->unk_4->unk_14 + (string->data[i] - CHAR_0) * 32, 0, 0, 8, 8, (u16)x, (u16)y, 8, 8); + BlitBitmapRectToWindow(window, string->unk_4->unk_14 + (string->data[i] - CHAR_JP_0) * 32, 0, 0, 8, 8, (u16)x, (u16)y, 8, 8); } else { diff --git a/arm9/src/render_text.c b/arm9/src/render_text.c index 6f09fd736..4dec007a6 100644 --- a/arm9/src/render_text.c +++ b/arm9/src/render_text.c @@ -60,7 +60,7 @@ u32 RenderText(struct TextPrinter *printer) { case EOS: return 1; - case 0xE000: + case CHAR_LF: printer->printerTemplate.currentX = printer->printerTemplate.x; s32 fontAttribute = GetFontAttribute(printer->printerTemplate.fontId, 1); @@ -72,7 +72,7 @@ u32 RenderText(struct TextPrinter *printer) case 0xF0FD: printer->printerTemplate.currentChar.raw++; return 2; - case 0xFFFE: + case EXT_CTRL_CODE_BEGIN: printer->printerTemplate.currentChar.raw--; switch ((u16)MsgArray_GetControlCode(printer->printerTemplate.currentChar.raw)) { diff --git a/arm9/src/string_control_code.c b/arm9/src/string_control_code.c index e33704d1a..806c29e22 100644 --- a/arm9/src/string_control_code.c +++ b/arm9/src/string_control_code.c @@ -1,31 +1,31 @@ #include "global.h" #include "string_control_code.h" -const u16 * MsgArray_SkipControlCode(const u16 * r4) +const u16 * MsgArray_SkipControlCode(const u16 *arr) { - GF_ASSERT(*r4 == 0xFFFE); - if (*r4 == 0xFFFE) { - u16 r0 = r4[2]; - r4 += 3; - r4 += r0; + GF_ASSERT(*arr == EXT_CTRL_CODE_BEGIN); + if (*arr == EXT_CTRL_CODE_BEGIN) { + u16 size = arr[2]; + arr += 3; + arr += size; } - return r4; + return arr; } -u32 MsgArray_GetControlCode(const u16 * r4) +u32 MsgArray_GetControlCode(const u16 *arr) { - GF_ASSERT(*r4 == 0xFFFE); - return r4[1]; + GF_ASSERT(*arr == EXT_CTRL_CODE_BEGIN); + return arr[1]; } -BOOL MsgArray_ControlCodeIsStrVar(const u16 * r4) +BOOL MsgArray_ControlCodeIsStrVar(const u16 *arr) { - return (MsgArray_GetControlCode(r4) & 0xFF00) == 0x100; + return (MsgArray_GetControlCode(arr) & 0xFF00) == 0x100; } -u32 MsgArray_ControlCodeGetField(const u16 * r5, u32 r4) +u32 MsgArray_ControlCodeGetField(const u16 *arr, u32 fieldno) { - GF_ASSERT(*r5 == 0xFFFE); - GF_ASSERT(r4 < r5[2]); - return r5[3 + r4]; + GF_ASSERT(*arr == EXT_CTRL_CODE_BEGIN); + GF_ASSERT(fieldno < arr[2]); + return arr[3 + fieldno]; } diff --git a/arm9/src/string_util.c b/arm9/src/string_util.c index b42de2708..b90128c23 100644 --- a/arm9/src/string_util.c +++ b/arm9/src/string_util.c @@ -61,16 +61,11 @@ u16 *CopyU16StringArrayN(u16 *dest, const u16 *src, u32 num) return dest + num; } -u32 StringLength(const u16 *s) +u32 StringLength(const u16 *str) { - u16 c = *s; - u32 len = 0; - while (c != EOS) { - s++; - c = *s; - len++; - } - return len; + int i; + for (i = 0; str[i] != EOS; i++); + return i; } BOOL StringNotEqual(const u16 *s1, const u16 *s2) @@ -128,11 +123,11 @@ u16 *ConvertUIntToDecimalString(u16 *dest, u32 value, enum PrintingMode mode, u3 u16 res = (u16)(value / x); value = value - x * res; if (mode == PRINTING_MODE_LEADING_ZEROS) { - *dest = res >= 10 ? (u16)NON_DIGIT : gDigitTable[res]; + *dest = res >= 10 ? (u16)CHAR_JP_QUESTION_MARK : gDigitTable[res]; dest++; } else if (res != 0 || x == 1) { mode = PRINTING_MODE_LEADING_ZEROS; - *dest = res >= 10 ? (u16)NON_DIGIT : gDigitTable[res]; + *dest = res >= 10 ? (u16)CHAR_JP_QUESTION_MARK : gDigitTable[res]; dest++; } else if (mode == PRINTING_MODE_RIGHT_ALIGN) { *dest = 1; diff --git a/arm9/src/text_02054590.c b/arm9/src/text_02054590.c index cc5e749c6..439325c9a 100644 --- a/arm9/src/text_02054590.c +++ b/arm9/src/text_02054590.c @@ -13,7 +13,7 @@ void FUN_02054590(enum GFPalLoadLocation location, u32 param1) ResetAllTextPrinters(); } LoadFontPal0(location, GF_PAL_SLOT_OFFSET_13, 4); - FUN_02002EEC(location, GF_PAL_SLOT_OFFSET_12, 4); + LoadFontPal1(location, GF_PAL_SLOT_OFFSET_12, 4); } void FUN_020545B8(struct BgConfig *param0, struct Window *param1, u32 param2) diff --git a/arm9/src/unk_02021590.c b/arm9/src/unk_02021590.c index 5ac70cd88..70d25e5d7 100644 --- a/arm9/src/unk_02021590.c +++ b/arm9/src/unk_02021590.c @@ -188,7 +188,7 @@ u32 GetStringWidth(struct FontData * ptr, const u16 * str, u32 letterSpacing) while (*str != EOS) { - if (*str == 0xFFFE) + if (*str == EXT_CTRL_CODE_BEGIN) { str = MsgArray_SkipControlCode(str); if (*str == EOS) @@ -215,13 +215,13 @@ s32 GetStringWidthMultiline(struct FontData * r7, const u16 * arr, u32 r6) { s32 ret = 0; u32 r4 = 0; - while (*arr != 0xFFFF) + while (*arr != EOS) { - if (*arr == 0xFFFE) + if (*arr == EXT_CTRL_CODE_BEGIN) { arr = MsgArray_SkipControlCode(arr); } - else if (*arr == 0xE000) // newline + else if (*arr == CHAR_LF) { if (ret < r4 - r6) ret = (int)(r4 - r6); @@ -242,9 +242,9 @@ s32 GetStringWidthMultiline(struct FontData * r7, const u16 * arr, u32 r6) s32 StringGetWidth_SingleLine_HandleClearToControlCode(struct FontData * r6, const u16 * arr) { s32 ret = 0; - while (*arr != 0xFFFF) + while (*arr != EOS) { - if (*arr == 0xFFFE) + if (*arr == EXT_CTRL_CODE_BEGIN) { if (MsgArray_GetControlCode(arr) == 515) { diff --git a/arm9/src/unk_02021934.c b/arm9/src/unk_02021934.c index 0faef264a..c0eefdcfc 100644 --- a/arm9/src/unk_02021934.c +++ b/arm9/src/unk_02021934.c @@ -180,7 +180,7 @@ int StringCountLines(volatile struct String * str) int i, nline; for (i = 0, nline = 1; i < str->size; i++) { - if (str->data[i] == 0xE000) + if (str->data[i] == CHAR_LF) nline++; } return nline; @@ -196,7 +196,7 @@ void StringGetLineN(struct String * dest, volatile struct String * src, u32 n) { for (i = 0; i < src->size; i++) { - if (src->data[i] == 0xE000 && --n == 0) + if (src->data[i] == CHAR_LF && --n == 0) { i++; break; @@ -207,7 +207,7 @@ void StringGetLineN(struct String * dest, volatile struct String * src, u32 n) for (; i < src->size; i++) { u16 c = src->data[i]; - if (c == 0xE000) + if (c == CHAR_LF) break; StrAddChar(dest, c); } diff --git a/include/constants/charcode.h b/include/constants/charcode.h new file mode 100644 index 000000000..d715414ac --- /dev/null +++ b/include/constants/charcode.h @@ -0,0 +1,271 @@ +#ifndef POKEDIAMOND_CONSTANTS_CHARCODE_H +#define POKEDIAMOND_CONSTANTS_CHARCODE_H + +#define CHAR_NUL 0 +#define CHAR_JP_SPACE 1 + +#define CHAR_JP_HIRA_A_SMALL 2 +#define CHAR_JP_HIRA_A 3 +#define CHAR_JP_HIRA_I_SMALL 4 +#define CHAR_JP_HIRA_I 5 +#define CHAR_JP_HIRA_U_SMALL 6 +#define CHAR_JP_HIRA_U 7 +#define CHAR_JP_HIRA_E_SMALL 8 +#define CHAR_JP_HIRA_E 9 +#define CHAR_JP_HIRA_O_SMALL 10 +#define CHAR_JP_HIRA_O 11 +#define CHAR_JP_HIRA_KA 12 +#define CHAR_JP_HIRA_GA 13 +#define CHAR_JP_HIRA_KI 14 +#define CHAR_JP_HIRA_GI 15 +#define CHAR_JP_HIRA_KU 16 +#define CHAR_JP_HIRA_GU 17 +#define CHAR_JP_HIRA_KE 18 +#define CHAR_JP_HIRA_GE 19 +#define CHAR_JP_HIRA_KO 20 +#define CHAR_JP_HIRA_GO 21 +#define CHAR_JP_HIRA_SA 22 +#define CHAR_JP_HIRA_ZA 23 +#define CHAR_JP_HIRA_SI 24 +#define CHAR_JP_HIRA_ZI 25 +#define CHAR_JP_HIRA_SU 26 +#define CHAR_JP_HIRA_ZU 27 +#define CHAR_JP_HIRA_SE 28 +#define CHAR_JP_HIRA_ZE 29 +#define CHAR_JP_HIRA_SO 30 +#define CHAR_JP_HIRA_ZO 31 +#define CHAR_JP_HIRA_TA 32 +#define CHAR_JP_HIRA_DA 33 +#define CHAR_JP_HIRA_TI 34 +#define CHAR_JP_HIRA_DI 35 +#define CHAR_JP_HIRA_TU_SMALL 36 +#define CHAR_JP_HIRA_TU 37 +#define CHAR_JP_HIRA_DU 38 +#define CHAR_JP_HIRA_TE 39 +#define CHAR_JP_HIRA_DE 40 +#define CHAR_JP_HIRA_TO 41 +#define CHAR_JP_HIRA_DO 42 +#define CHAR_JP_HIRA_NA 43 +#define CHAR_JP_HIRA_NI 44 +#define CHAR_JP_HIRA_NU 45 +#define CHAR_JP_HIRA_NE 46 +#define CHAR_JP_HIRA_NO 47 +#define CHAR_JP_HIRA_HA 48 +#define CHAR_JP_HIRA_BA 49 +#define CHAR_JP_HIRA_PA 50 +#define CHAR_JP_HIRA_HI 51 +#define CHAR_JP_HIRA_BI 52 +#define CHAR_JP_HIRA_PI 53 +#define CHAR_JP_HIRA_HU 54 +#define CHAR_JP_HIRA_BU 55 +#define CHAR_JP_HIRA_PU 56 +#define CHAR_JP_HIRA_HE 57 +#define CHAR_JP_HIRA_BE 58 +#define CHAR_JP_HIRA_PE 59 +#define CHAR_JP_HIRA_HO 60 +#define CHAR_JP_HIRA_BO 61 +#define CHAR_JP_HIRA_PO 62 +#define CHAR_JP_HIRA_MA 63 +#define CHAR_JP_HIRA_MI 64 +#define CHAR_JP_HIRA_MU 65 +#define CHAR_JP_HIRA_ME 66 +#define CHAR_JP_HIRA_MO 67 +#define CHAR_JP_HIRA_YA_SMALL 68 +#define CHAR_JP_HIRA_YA 69 +#define CHAR_JP_HIRA_YU_SMALL 70 +#define CHAR_JP_HIRA_YU 71 +#define CHAR_JP_HIRA_YO_SMALL 72 +#define CHAR_JP_HIRA_YO 73 +#define CHAR_JP_HIRA_RA 74 +#define CHAR_JP_HIRA_RI 75 +#define CHAR_JP_HIRA_RU 76 +#define CHAR_JP_HIRA_RE 77 +#define CHAR_JP_HIRA_RO 78 +#define CHAR_JP_HIRA_WA 79 +#define CHAR_JP_HIRA_WO 80 +#define CHAR_JP_HIRA_N_ 81 + +#define CHAR_JP_KATA_A_SMALL 82 +#define CHAR_JP_KATA_A 83 +#define CHAR_JP_KATA_I_SMALL 84 +#define CHAR_JP_KATA_I 85 +#define CHAR_JP_KATA_U_SMALL 86 +#define CHAR_JP_KATA_U 87 +#define CHAR_JP_KATA_E_SMALL 88 +#define CHAR_JP_KATA_E 89 +#define CHAR_JP_KATA_O_SMALL 90 +#define CHAR_JP_KATA_O 91 +#define CHAR_JP_KATA_KA 92 +#define CHAR_JP_KATA_GA 93 +#define CHAR_JP_KATA_KI 94 +#define CHAR_JP_KATA_GI 95 +#define CHAR_JP_KATA_KU 96 +#define CHAR_JP_KATA_GU 97 +#define CHAR_JP_KATA_KE 98 +#define CHAR_JP_KATA_GE 99 +#define CHAR_JP_KATA_KO 100 +#define CHAR_JP_KATA_GO 101 +#define CHAR_JP_KATA_SA 102 +#define CHAR_JP_KATA_ZA 103 +#define CHAR_JP_KATA_SI 104 +#define CHAR_JP_KATA_ZI 105 +#define CHAR_JP_KATA_SU 106 +#define CHAR_JP_KATA_ZU 107 +#define CHAR_JP_KATA_SE 108 +#define CHAR_JP_KATA_ZE 109 +#define CHAR_JP_KATA_SO 110 +#define CHAR_JP_KATA_ZO 111 +#define CHAR_JP_KATA_TA 112 +#define CHAR_JP_KATA_DA 113 +#define CHAR_JP_KATA_TI 114 +#define CHAR_JP_KATA_DI 115 +#define CHAR_JP_KATA_TU_SMALL 116 +#define CHAR_JP_KATA_TU 117 +#define CHAR_JP_KATA_DU 118 +#define CHAR_JP_KATA_TE 119 +#define CHAR_JP_KATA_DE 120 +#define CHAR_JP_KATA_TO 121 +#define CHAR_JP_KATA_DO 122 +#define CHAR_JP_KATA_NA 123 +#define CHAR_JP_KATA_NI 124 +#define CHAR_JP_KATA_NU 125 +#define CHAR_JP_KATA_NE 126 +#define CHAR_JP_KATA_NO 127 +#define CHAR_JP_KATA_HA 128 +#define CHAR_JP_KATA_BA 129 +#define CHAR_JP_KATA_PA 130 +#define CHAR_JP_KATA_HI 131 +#define CHAR_JP_KATA_BI 132 +#define CHAR_JP_KATA_PI 133 +#define CHAR_JP_KATA_HU 134 +#define CHAR_JP_KATA_BU 135 +#define CHAR_JP_KATA_PU 136 +#define CHAR_JP_KATA_HE 137 +#define CHAR_JP_KATA_BE 138 +#define CHAR_JP_KATA_PE 139 +#define CHAR_JP_KATA_HO 140 +#define CHAR_JP_KATA_BO 141 +#define CHAR_JP_KATA_PO 142 +#define CHAR_JP_KATA_MA 143 +#define CHAR_JP_KATA_MI 144 +#define CHAR_JP_KATA_MU 145 +#define CHAR_JP_KATA_ME 146 +#define CHAR_JP_KATA_MO 147 +#define CHAR_JP_KATA_YA_SMALL 148 +#define CHAR_JP_KATA_YA 149 +#define CHAR_JP_KATA_YU_SMALL 150 +#define CHAR_JP_KATA_YU 151 +#define CHAR_JP_KATA_YO_SMALL 152 +#define CHAR_JP_KATA_YO 153 +#define CHAR_JP_KATA_RA 154 +#define CHAR_JP_KATA_RI 155 +#define CHAR_JP_KATA_RU 156 +#define CHAR_JP_KATA_RE 157 +#define CHAR_JP_KATA_RO 158 +#define CHAR_JP_KATA_WA 159 +#define CHAR_JP_KATA_WO 160 +#define CHAR_JP_KATA_N_ 161 + +#define CHAR_JP_0 162 +#define CHAR_JP_1 163 +#define CHAR_JP_2 164 +#define CHAR_JP_3 165 +#define CHAR_JP_4 166 +#define CHAR_JP_5 167 +#define CHAR_JP_6 168 +#define CHAR_JP_7 169 +#define CHAR_JP_8 170 +#define CHAR_JP_9 171 +#define CHAR_JP_A 172 +#define CHAR_JP_B 173 +#define CHAR_JP_C 174 +#define CHAR_JP_D 175 +#define CHAR_JP_E 176 +#define CHAR_JP_F 177 + +#define CHAR_JP_QUESTION_MARK 226 + +#define CHAR_JP_HYPHEN 241 + +#define CHAR_0 289 +#define CHAR_1 290 +#define CHAR_2 291 +#define CHAR_3 292 +#define CHAR_4 293 +#define CHAR_5 294 +#define CHAR_6 295 +#define CHAR_7 296 +#define CHAR_8 297 +#define CHAR_9 298 +#define CHAR_A 299 +#define CHAR_B 300 +#define CHAR_C 301 +#define CHAR_D 302 +#define CHAR_E 303 +#define CHAR_F 304 +#define CHAR_G 305 +#define CHAR_H 306 +#define CHAR_I 307 +#define CHAR_J 308 +#define CHAR_K 309 +#define CHAR_L 310 +#define CHAR_M 311 +#define CHAR_N 312 +#define CHAR_O 313 +#define CHAR_P 314 +#define CHAR_Q 315 +#define CHAR_R 316 +#define CHAR_S 317 +#define CHAR_T 318 +#define CHAR_U 319 +#define CHAR_V 320 +#define CHAR_W 321 +#define CHAR_X 322 +#define CHAR_Y 323 +#define CHAR_Z 324 +#define CHAR_a 325 +#define CHAR_b 326 +#define CHAR_c 327 +#define CHAR_d 328 +#define CHAR_e 329 +#define CHAR_f 330 +#define CHAR_g 331 +#define CHAR_h 332 +#define CHAR_i 333 +#define CHAR_j 334 +#define CHAR_k 335 +#define CHAR_l 336 +#define CHAR_m 337 +#define CHAR_n 338 +#define CHAR_o 339 +#define CHAR_p 340 +#define CHAR_q 341 +#define CHAR_r 342 +#define CHAR_s 343 +#define CHAR_t 344 +#define CHAR_u 345 +#define CHAR_v 346 +#define CHAR_w 347 +#define CHAR_x 348 +#define CHAR_y 349 +#define CHAR_z 350 + +#define CHAR_ELLIPSIS 431 + +#define CHAR_HYPHEN 446 + +#define CHAR_SPACE 478 + +#define CHAR_NARROW_SPACE 482 + +#define CHAR_ONE_DOT 491 +#define CHAR_TWO_DOTS 492 + +#define CHAR_LF 0xE000 +#define TRNAMECODE 0xF100 +#define EXT_CTRL_CODE_BEGIN 0xFFFE +#define EOS 0xFFFF // _EOM +#define TRNAME_MASK 0x1FF +#define EOS_TRNAME 0x1FF + +#endif //POKEDIAMOND_CONSTANTS_CHARCODE_H \ No newline at end of file diff --git a/include/constants/global.h b/include/constants/global.h index c506e352b..6668f08b6 100644 --- a/include/constants/global.h +++ b/include/constants/global.h @@ -1,6 +1,8 @@ #ifndef POKEDIAMOND_CONSTANTS_GLOBAL_H #define POKEDIAMOND_CONSTANTS_GLOBAL_H +#include "constants/charcode.h" + #define POKEMON_NAME_LENGTH 10 #define PLAYER_NAME_LENGTH 7 diff --git a/include/font.h b/include/font.h index d83277212..623f66c09 100644 --- a/include/font.h +++ b/include/font.h @@ -39,8 +39,8 @@ u32 FontFunc(u32 fontId, struct TextPrinter *printer); u32 FUN_02002DE0(u32 param0, u16 *str, u32 param2); u32 FUN_02002E14(u32 param0, struct String *str, u32 param2); s32 GetFontAttribute(u8 fontId, s32 attr); -void LoadFontPal0(enum GFPalLoadLocation location, enum GFPalSlotOffset palSlotOffset, u32 heap_id); -void FUN_02002EEC(enum GFPalLoadLocation location, enum GFPalSlotOffset palSlotOffset, u32 heap_id); +void LoadFontPal0(enum GFPalLoadLocation location, enum GFPalSlotOffset palSlotOffset, u32 heapId); +void LoadFontPal1(enum GFPalLoadLocation location, enum GFPalSlotOffset palSlotOffset, u32 heapId); s32 FUN_02002F08(u32 param0, struct String *str, u32 param2); u32 FUN_02002F40(u32 param0, struct String *str, u32 param2, u32 param3); u32 FUN_02002F58(const u16 *str); diff --git a/include/string_control_code.h b/include/string_control_code.h index 55bab2266..79518a40b 100644 --- a/include/string_control_code.h +++ b/include/string_control_code.h @@ -1,9 +1,9 @@ #ifndef POKEDIAMOND_STRING_CONTROL_CODE_H #define POKEDIAMOND_STRING_CONTROL_CODE_H -const u16 * MsgArray_SkipControlCode(const u16 * r4); -u32 MsgArray_GetControlCode(const u16 * r4); -BOOL MsgArray_ControlCodeIsStrVar(const u16 * r4); -u32 MsgArray_ControlCodeGetField(const u16 * r5, u32 r4); +const u16 * MsgArray_SkipControlCode(const u16 *arr); +u32 MsgArray_GetControlCode(const u16 *arr); +BOOL MsgArray_ControlCodeIsStrVar(const u16 *arr); +u32 MsgArray_ControlCodeGetField(const u16 *arr, u32 fieldno); #endif //POKEDIAMOND_STRING_CONTROL_CODE_H diff --git a/include/string_util.h b/include/string_util.h index 7d70ad988..b433e85eb 100644 --- a/include/string_util.h +++ b/include/string_util.h @@ -7,11 +7,6 @@ #include "global.h" -//todo: move to charcode.h -#define EOS 0xFFFF -#define NON_DIGIT 0xE2 -#define EXT_CTRL_CODE_BEGIN 0xFFFE - enum PrintingMode { PRINTING_MODE_LEFT_ALIGN, PRINTING_MODE_RIGHT_ALIGN, @@ -20,7 +15,7 @@ enum PrintingMode { void CopyU16StringArray(u16 *dest, const u16 *src); u16 *CopyU16StringArrayN(u16 *dest, const u16 *src, u32 num); -u32 StringLength(const u16 *s); +u32 StringLength(const u16 *str); BOOL StringNotEqual(const u16 *s1, const u16 *s2); BOOL StringNotEqualN(const u16 *s1, const u16 *s2, u32 num); u16 *StringFill(u16 *dest, u16 value, u32 num); diff --git a/include/text.h b/include/text.h index 562275eac..5e10be499 100644 --- a/include/text.h +++ b/include/text.h @@ -4,18 +4,6 @@ #include "global.h" #include "bg_window.h" - -#define CHAR_0 0x00A2 -#define CHAR_1 0x00A3 -#define CHAR_2 0x00A4 -#define CHAR_3 0x00A5 -#define CHAR_4 0x00A6 -#define CHAR_5 0x00A7 -#define CHAR_6 0x00A8 -#define CHAR_7 0x00A9 -#define CHAR_8 0x00AA -#define CHAR_9 0x00AB - union StrbufForPrint { struct String * wrapped; From 44b13a519a18548071d0174a5b7b601f9dc0f0de Mon Sep 17 00:00:00 2001 From: Kellan Clark <86537480+KellanClark@users.noreply.github.com> Date: Mon, 19 Jun 2023 19:58:13 -0400 Subject: [PATCH 2/3] typo --- arm9/src/string_util.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/arm9/src/string_util.c b/arm9/src/string_util.c index b90128c23..1be501366 100644 --- a/arm9/src/string_util.c +++ b/arm9/src/string_util.c @@ -64,7 +64,7 @@ u16 *CopyU16StringArrayN(u16 *dest, const u16 *src, u32 num) u32 StringLength(const u16 *str) { int i; - for (i = 0; str[i] != EOS; i++); + for (i = 0; str[i] != EOS; i++) {} return i; } From 7e7127f00bcdca602b519852dc402a08fca01b9d Mon Sep 17 00:00:00 2001 From: Kellan Clark <86537480+KellanClark@users.noreply.github.com> Date: Tue, 20 Jun 2023 19:46:42 -0400 Subject: [PATCH 3/3] Add newline --- include/constants/charcode.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/include/constants/charcode.h b/include/constants/charcode.h index d715414ac..e21508be7 100644 --- a/include/constants/charcode.h +++ b/include/constants/charcode.h @@ -268,4 +268,4 @@ #define TRNAME_MASK 0x1FF #define EOS_TRNAME 0x1FF -#endif //POKEDIAMOND_CONSTANTS_CHARCODE_H \ No newline at end of file +#endif //POKEDIAMOND_CONSTANTS_CHARCODE_H