Files
jak-project/common/util/font/dbs/font_db_jak1.cpp
2025-09-26 20:36:15 -04:00

598 lines
17 KiB
C++
Raw Permalink Blame History

This file contains invisible Unicode characters
This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
#include "font_db_jak1.h"
std::unordered_set<char> passthrus_jak1 = {'~', ' ', ',', '.', '-', '+', '(', ')', '!', ':', '?',
'=', '%', '*', '/', '#', ';', '<', '>', '@', '[', '_'};
std::vector<EncodeInfo> encode_info_jak1 = {
// random
{"ˇ", "\x10"}, // caron
{"`", "\x11"}, // grave accent
{"'", "\x12"}, // apostrophe
{"^", "\x13"}, // circumflex
{"<TIL>", "\x14"}, // tilde
{"¨", "\x15"}, // umlaut
{"º", "\x16"}, // numero/overring
{"¡", "\x17"}, // inverted exclamation mark
{"¿", "\x18"}, // inverted question mark
{"", "\x1a"}, // umi
{"Æ", "\x1b"}, // aesc
{"", "\x1c"}, // kai
{"Ç", "\x1d"}, // c-cedilla
{"", "\x1e"}, // gaku
{"ß", "\x1f"}, // eszett
{"", "\x24"}, // wa
{"", "\x26"}, // wo
{"", "\x27"}, // -n
{"", "\x5c"}, // iwa
{"", "\x5d"}, // kyuu
{"", "\x5e"}, // sora
//{"掘", "\x5f"}, // horu
{"", "\x60"}, // -wa
{"", "\x61"}, // utsu
{"", "\x62"}, // kashikoi
{"", "\x63"}, // mizuumi
{"", "\x64"}, // kuchi
{"", "\x65"}, // iku
{"", "\x66"}, // ai
{"", "\x67"}, // shi
{"", "\x68"}, // tera
{"", "\x69"}, // yama
{"", "\x6a"}, // mono
{"", "\x6b"}, // tokoro
{"", "\x6c"}, // kaku
{"", "\x6d"}, // shou
{"", "\x6e"}, // numa
{"", "\x6f"}, // ue
{"", "\x70"}, // shiro
{"", "\x71"}, // ba
{"", "\x72"}, // shutsu
{"", "\x73"}, // yami
{"", "\x74"}, // nokosu
{"", "\x75"}, // ki
{"", "\x76"}, // ya
{"", "\x77"}, // shita
{"", "\x78"}, // ie
{"", "\x79"}, // hi
{"", "\x7a"}, // hana
{"", "\x7b"}, // re
{"Œ", "\x7c"}, // oe
{"", "\x7d"}, // ro
{"", "\x7f"}, // ao
{"", "\x90"}, // nakaguro
{"", "\x91"}, // dakuten
{"", "\x92"}, // handakuten
{"", "\x93"}, // chouompu
{"", "\x94"}, // nijuukagikakko left
{"", "\x95"}, // nijuukagikakko right
// hiragana
{"", "\x96"}, // -a
{"", "\x97"}, // a
{"", "\x98"}, // -i
{"", "\x99"}, // i
{"", "\x9a"}, // -u
{"", "\x9b"}, // u
{"", "\x9c"}, // -e
{"", "\x9d"}, // e
{"", "\x9e"}, // -o
{"", "\x9f"}, // o
{"", "\xa0"}, // ka
{"", "\xa1"}, // ki
{"", "\xa2"}, // ku
{"", "\xa3"}, // ke
{"", "\xa4"}, // ko
{"", "\xa5"}, // sa
{"", "\xa6"}, // shi
{"", "\xa7"}, // su
{"", "\xa8"}, // se
{"", "\xa9"}, // so
{"", "\xaa"}, // ta
{"", "\xab"}, // chi
{"", "\xac"}, // sokuon
{"", "\xad"}, // tsu
{"", "\xae"}, // te
{"", "\xaf"}, // to
{"", "\xb0"}, // na
{"", "\xb1"}, // ni
{"", "\xb2"}, // nu
{"", "\xb3"}, // ne
{"", "\xb4"}, // no
{"", "\xb5"}, // ha
{"", "\xb6"}, // hi
{"", "\xb7"}, // hu
{"", "\xb8"}, // he
{"", "\xb9"}, // ho
{"", "\xba"}, // ma
{"", "\xbb"}, // mi
{"", "\xbc"}, // mu
{"", "\xbd"}, // me
{"", "\xbe"}, // mo
{"", "\xbf"}, // youon ya
{"", "\xc0"}, // ya
{"", "\xc1"}, // youon yu
{"", "\xc2"}, // yu
{"", "\xc3"}, // youon yo
{"", "\xc4"}, // yo
{"", "\xc5"}, // ra
{"", "\xc6"}, // ri
{"", "\xc7"}, // ru
{"", "\xc8"}, // re
{"", "\xc9"}, // ro
{"", "\xca"}, // -wa
{"", "\xcb"}, // wa
{"", "\xcc"}, // wo
{"", "\xcd"}, // -n
// katakana
{"", "\xce"}, // -a
{"", "\xcf"}, // a
{"", "\xd0"}, // -i
{"", "\xd1"}, // i
{"", "\xd2"}, // -u
{"", "\xd3"}, // u
{"", "\xd4"}, // -e
{"", "\xd5"}, // e
{"", "\xd6"}, // -o
{"", "\xd7"}, // o
{"", "\xd8"}, // ka
{"", "\xd9"}, // ki
{"", "\xda"}, // ku
{"", "\xdb"}, // ke
{"", "\xdc"}, // ko
{"", "\xdd"}, // sa
{"", "\xde"}, // shi
{"", "\xdf"}, // su
{"", "\xe0"}, // se
{"", "\xe1"}, // so
{"", "\xe2"}, // ta
{"", "\xe3"}, // chi
{"", "\xe4"}, // sokuon
{"", "\xe5"}, // tsu
{"", "\xe6"}, // te
{"", "\xe7"}, // to
{"", "\xe8"}, // na
{"", "\xe9"}, // ni
{"", "\xea"}, // nu
{"", "\xeb"}, // ne
{"", "\xec"}, // no
{"", "\xed"}, // ha
{"", "\xee"}, // hi
{"", "\xef"}, // hu
{"", "\xf0"}, // he
{"", "\xf1"}, // ho
{"", "\xf2"}, // ma
{"", "\xf3"}, // mi
{"", "\xf4"}, // mu
{"", "\xf5"}, // me
{"", "\xf6"}, // mo
{"", "\xf7"}, // youon ya
{"", "\xf8"}, // ya
{"", "\xf9"}, // youon yu
{"", "\xfa"}, // yu
{"", "\xfb"}, // youon yo
{"", "\xfc"}, // yo
{"", "\xfd"}, // ra
{"", "\xfe"}, // ri
{"", "\xff"}, // ru
// kanji 2
{"", "\x1\x01"}, // takara
{"", "\x1\x10"}, // ishi
{"", "\x1\x11"}, // aka
{"", "\x1\x12"}, // ato
{"", "\x1\x13"}, // kawa
{"", "\x1\x14"}, // ikusa
{"", "\x1\x15"}, // mura
{"", "\x1\x16"}, // tai
{"", "\x1\x17"}, // utena
{"", "\x1\x18"}, // osa
{"", "\x1\x19"}, // tori
{"", "\x1\x1a"}, // tei
{"", "\x1\x1b"}, // hora
{"", "\x1\x1c"}, // michi
{"", "\x1\x1d"}, // hatsu
{"", "\x1\x1e"}, // tobu
{"", "\x1\x1f"}, // fuku
{"", "\x1\xa0"}, // ike
{"", "\x1\xa1"}, // naka
{"", "\x1\xa2"}, // tou
{"", "\x1\xa3"}, // shima
{"", "\x1\xa4"}, // bu
{"", "\x1\xa5"}, // hou
{"", "\x1\xa6"}, // san
{"", "\x1\xa7"}, // kaerimiru
{"", "\x1\xa8"}, // chikara
{"", "\x1\xa9"}, // midori
{"", "\x1\xaa"}, // kishi
{"", "\x1\xab"}, // zou
{"", "\x1\xac"}, // tani
{"", "\x1\xad"}, // kokoro
{"", "\x1\xae"}, // mori
{"", "\x1\xaf"}, // mizu
{"", "\x1\xb0"}, // fune
{"", "\x1\xb1"}, // trademark
};
std::vector<ReplaceInfo> replace_info_jak1 = {
// other
{"A~Y~-21H~-5Vº~Z", "Å"},
{"N~Y~-6Hº~Z~+10H", ""},
{"O~Y~-16H~-1V/~Z", "Ø"},
{"A~Y~-6H~+3V,~Z", "Ą"},
{"E~Y~-6H~+2V,~Z", "Ę"},
{"L~Y~-16H~+0V/~Z", "Ł"},
{"Z~Y~-21H~-5Vº~Z", "Ż"},
{"E~Y~-20H~-5Vº~Z", "Ė"},
{"C~Y~-20H~-4Vˇ~Z", "Č"},
{"D~Y~-20H~-4Vˇ~Z", "Ď"},
{"S~Y~-22H~-4Vˇ~Z", "Š"},
{"Z~Y~-22H~-4Vˇ~Z", "Ž"},
{"U~Y~-13H~+2V,~Z", "Ų"},
{"U~Y~-18H~-10V-~Z", "Ū"},
{"D~Y~-25H~-1V-~Z", "Đ"},
{"I~Y~-8H~+1V,~Z", "Į"},
// czech specific
{"U~Y~-23H~-5Vº~Z", "Ů"},
// tildes
{"N~Y~-22H~-4V<TIL>~Z", "Ñ"},
{"A~Y~-21H~-5V<TIL>~Z", "Ã"}, // custom
{"O~Y~-22H~-4V<TIL>~Z", "Õ"}, // custom
// acute accents
{"A~Y~-21H~-5V'~Z", "Á"},
{"E~Y~-22H~-5V'~Z", "É"},
{"I~Y~-19H~-5V'~Z", "Í"},
{"O~Y~-22H~-4V'~Z", "Ó"},
{"U~Y~-24H~-3V'~Z", "Ú"},
{"C~Y~-21H~-5V'~Z", "Ć"},
{"N~Y~-21H~-5V'~Z", "Ń"},
{"S~Y~-21H~-5V'~Z", "Ś"},
{"Z~Y~-21H~-5V'~Z", "Ź"},
// czech specific
{"Y~Y~-25H~-4V'~Z", "Ý"},
// double acute accents
{"O~Y~-28H~-4V'~-9H'~Z", "Ő"}, // custom
{"U~Y~-27H~-4V'~-12H'~Z", "Ű"}, // custom
// circumflex
{"A~Y~-20H~-4V^~Z", "Â"}, // custom
{"E~Y~-20H~-5V^~Z", "Ê"},
{"I~Y~-19H~-5V^~Z", "Î"},
{"O~Y~-20H~-4V^~Z", "Ô"}, // custom
{"U~Y~-24H~-3V^~Z", "Û"},
// grave accents
{"A~Y~-21H~-5V`~Z", "À"},
{"E~Y~-22H~-5V`~Z", "È"},
{"I~Y~-19H~-5V`~Z", "Ì"},
{"O~Y~-22H~-4V`~Z", "Ò"}, // custom
{"U~Y~-24H~-3V`~Z", "Ù"},
// umlaut
{"A~Y~-21H~-5V¨~Z", "Ä"},
{"E~Y~-20H~-5V¨~Z", "Ë"},
{"I~Y~-19H~-5V¨~Z", "Ï"}, // custom
{"O~Y~-22H~-4V¨~Z", "Ö"},
{"O~Y~-22H~-3V¨~Z", "ö"}, // dumb
{"U~Y~-22H~-3V¨~Z", "Ü"},
// caron - Ǎ ǎ Ě ě Ǧ ǧ Ǐ ǐ Ǒ ǒ Ǔ ǔ Y̌ y̌
{"A~Y~-20H~-4Vˇ~Z", "Ǎ"},
{"E~Y~-20H~-5Vˇ~Z", "Ě"},
{"G~Y~-20H~-5Vˇ~Z", "Ǧ"},
{"I~Y~-19H~-5Vˇ~Z", "Ǐ"},
{"O~Y~-20H~-4Vˇ~Z", "Ǒ"},
{"U~Y~-24H~-3Vˇ~Z", "Ǔ"},
{"Y~Y~-24H~-3Vˇ~Z", ""},
// czech specific - Č Ň Ř Š Ž Ť
{"C~Y~-25H~-9Vˇ~Z", "Č"},
{"N~Y~-23H~-5Vˇ~Z", "Ň"},
{"R~Y~-24H~-5Vˇ~Z", "Ř"},
{"S~Y~-24H~-5Vˇ~Z", "Š"},
{"T~Y~-23H~-5Vˇ~Z", "Ť"},
{"Z~Y~-23H~-5Vˇ~Z", "Ž"},
// dakuten katakana
{"~Yウ~Z゛", ""},
{"~Yカ~Z゛", ""},
{"~Yキ~Z゛", ""},
{"~Yク~Z゛", ""},
{"~Yケ~Z゛", ""},
{"~Yコ~Z゛", ""},
{"~Yサ~Z゛", ""},
{"~Yシ~Z゛", ""},
{"~Yス~Z゛", ""},
{"~Yセ~Z゛", ""},
{"~Yソ~Z゛", ""},
{"~Yタ~Z゛", ""},
{"~Yチ~Z゛", ""},
{"~Yツ~Z゛", ""},
{"~Yテ~Z゛", ""},
{"~Yト~Z゛", ""},
{"~Yハ~Z゛", ""},
{"~Yヒ~Z゛", ""},
{"~Yフ~Z゛", ""},
{"~Yヘ~Z゛", ""},
{"~Yホ~Z゛", ""},
// handakuten katakana
{"~Yハ~Z゜", ""},
{"~Yヒ~Z゜", ""},
{"~Yフ~Z゜", ""},
{"~Yヘ~Z゜", ""},
{"~Yホ~Z゜", ""},
// dakuten hiragana
{"~Yか~Z゛", ""},
{"~Yき~Z゛", ""},
{"~Yく~Z゛", ""},
{"~Yけ~Z゛", ""},
{"~Yこ~Z゛", ""},
{"~Yさ~Z゛", ""},
{"~Yし~Z゛", ""},
{"~Yす~Z゛", ""},
{"~Yせ~Z゛", ""},
{"~Yそ~Z゛", ""},
{"~Yた~Z゛", ""},
{"~Yち~Z゛", ""},
{"~Yつ~Z゛", ""},
{"~Yて~Z゛", ""},
{"~Yと~Z゛", ""},
{"~Yは~Z゛", ""},
{"~Yひ~Z゛", ""},
{"~Yふ~Z゛", ""},
{"~Yへ~Z゛", ""},
{"~Yほ~Z゛", ""},
// handakuten hiragana
{"~Yは~Z゜", ""},
{"~Yひ~Z゜", ""},
{"~Yふ~Z゜", ""},
{"~Yへ~Z゜", ""},
{"~Yほ~Z゜", ""},
// japanese punctuation
{",~+8H", ""},
{"~+8H ", " "},
// (hack) special case kanji
{"~~", ""},
// playstation buttons
{"~Y~22L<~Z~Y~27L*~Z~Y~1L>~Z~Y~23L[~Z~+26H", "<PAD_X>"},
{"~Y~22L<~Z~Y~26L;~Z~Y~1L>~Z~Y~23L[~Z~+26H", "<PAD_TRIANGLE>"},
{"~Y~22L<~Z~Y~25L@~Z~Y~1L>~Z~Y~23L[~Z~+26H", "<PAD_CIRCLE>"},
{"~Y~22L<~Z~Y~24L#~Z~Y~1L>~Z~Y~23L[~Z~+26H", "<PAD_SQUARE>"}, // custom
};
std::vector<EncodeInfo> encode_info_jak1_v2 = {
// random
{"_", "\x03"}, // large space
{"ˇ", "\x10"}, // caron
{"`", "\x11"}, // grave accent
{"'", "\x12"}, // apostrophe
{"^", "\x13"}, // circumflex
{"<TIL>", "\x14"}, // tilde
{"¨", "\x15"}, // umlaut
{"º", "\x16"}, // numero/overring
{"¡", "\x17"}, // inverted exclamation mark
{"¿", "\x18"}, // inverted question mark
{"", "\x1a"}, // umi
{"Æ", "\x1b"}, // aesc
{"", "\x1c"}, // kai
{"Ç", "\x1d"}, // c-cedilla
{"", "\x1e"}, // gaku
{"ß", "\x1f"}, // eszett
{"", "\x24"}, // wa
{"", "\x26"}, // wo
{"", "\x27"}, // -n
{"", "\x5c"}, // iwa
{"", "\x5d"}, // kyuu
{"", "\x5e"}, // sora
{"", "\x5f"}, // horu
{"", "\x60"}, // -wa
{"", "\x61"}, // utsu
{"", "\x62"}, // kashikoi
{"", "\x63"}, // mizuumi
{"", "\x64"}, // kuchi
{"", "\x65"}, // iku
{"", "\x66"}, // ai
{"", "\x67"}, // shi
{"", "\x68"}, // tera
{"", "\x69"}, // yama
{"", "\x6a"}, // mono
{"", "\x6b"}, // tokoro
{"", "\x6c"}, // kaku
{"", "\x6d"}, // shou
{"", "\x6e"}, // numa
{"", "\x6f"}, // ue
{"", "\x70"}, // shiro
{"", "\x71"}, // ba
{"", "\x72"}, // shutsu
{"", "\x73"}, // yami
{"", "\x74"}, // nokosu
{"", "\x75"}, // ki
{"", "\x76"}, // ya
{"", "\x77"}, // shita
{"", "\x78"}, // ie
{"", "\x79"}, // hi
{"", "\x7a"}, // hana
{"", "\x7b"}, // re
{"Œ", "\x7c"}, // oe
{"", "\x7d"}, // ro
{"", "\x7f"}, // ao
{"", "\x90"}, // nakaguro
{"", "\x91"}, // dakuten
{"", "\x92"}, // handakuten
{"", "\x93"}, // chouompu
{"", "\x94"}, // nijuukagikakko left
{"", "\x95"}, // nijuukagikakko right
// hiragana
{"", "\x96"}, // -a
{"", "\x97"}, // a
{"", "\x98"}, // -i
{"", "\x99"}, // i
{"", "\x9a"}, // -u
{"", "\x9b"}, // u
{"", "\x9c"}, // -e
{"", "\x9d"}, // e
{"", "\x9e"}, // -o
{"", "\x9f"}, // o
{"", "\xa0"}, // ka
{"", "\xa1"}, // ki
{"", "\xa2"}, // ku
{"", "\xa3"}, // ke
{"", "\xa4"}, // ko
{"", "\xa5"}, // sa
{"", "\xa6"}, // shi
{"", "\xa7"}, // su
{"", "\xa8"}, // se
{"", "\xa9"}, // so
{"", "\xaa"}, // ta
{"", "\xab"}, // chi
{"", "\xac"}, // sokuon
{"", "\xad"}, // tsu
{"", "\xae"}, // te
{"", "\xaf"}, // to
{"", "\xb0"}, // na
{"", "\xb1"}, // ni
{"", "\xb2"}, // nu
{"", "\xb3"}, // ne
{"", "\xb4"}, // no
{"", "\xb5"}, // ha
{"", "\xb6"}, // hi
{"", "\xb7"}, // hu
{"", "\xb8"}, // he
{"", "\xb9"}, // ho
{"", "\xba"}, // ma
{"", "\xbb"}, // mi
{"", "\xbc"}, // mu
{"", "\xbd"}, // me
{"", "\xbe"}, // mo
{"", "\xbf"}, // youon ya
{"", "\xc0"}, // ya
{"", "\xc1"}, // youon yu
{"", "\xc2"}, // yu
{"", "\xc3"}, // youon yo
{"", "\xc4"}, // yo
{"", "\xc5"}, // ra
{"", "\xc6"}, // ri
{"", "\xc7"}, // ru
{"", "\xc8"}, // re
{"", "\xc9"}, // ro
{"", "\xca"}, // -wa
{"", "\xcb"}, // wa
{"", "\xcc"}, // wo
{"", "\xcd"}, // -n
// katakana
{"", "\xce"}, // -a
{"", "\xcf"}, // a
{"", "\xd0"}, // -i
{"", "\xd1"}, // i
{"", "\xd2"}, // -u
{"", "\xd3"}, // u
{"", "\xd4"}, // -e
{"", "\xd5"}, // e
{"", "\xd6"}, // -o
{"", "\xd7"}, // o
{"", "\xd8"}, // ka
{"", "\xd9"}, // ki
{"", "\xda"}, // ku
{"", "\xdb"}, // ke
{"", "\xdc"}, // ko
{"", "\xdd"}, // sa
{"", "\xde"}, // shi
{"", "\xdf"}, // su
{"", "\xe0"}, // se
{"", "\xe1"}, // so
{"", "\xe2"}, // ta
{"", "\xe3"}, // chi
{"", "\xe4"}, // sokuon
{"", "\xe5"}, // tsu
{"", "\xe6"}, // te
{"", "\xe7"}, // to
{"", "\xe8"}, // na
{"", "\xe9"}, // ni
{"", "\xea"}, // nu
{"", "\xeb"}, // ne
{"", "\xec"}, // no
{"", "\xed"}, // ha
{"", "\xee"}, // hi
{"", "\xef"}, // hu
{"", "\xf0"}, // he
{"", "\xf1"}, // ho
{"", "\xf2"}, // ma
{"", "\xf3"}, // mi
{"", "\xf4"}, // mu
{"", "\xf5"}, // me
{"", "\xf6"}, // mo
{"", "\xf7"}, // youon ya
{"", "\xf8"}, // ya
{"", "\xf9"}, // youon yu
{"", "\xfa"}, // yu
{"", "\xfb"}, // youon yo
{"", "\xfc"}, // yo
{"", "\xfd"}, // ra
{"", "\xfe"}, // ri
{"", "\xff"}, // ru
// kanji 2
{"", "\x1\x01"}, // takara
{"", "\x1\x10"}, // ishi
{"", "\x1\x11"}, // aka
{"", "\x1\x12"}, // ato
{"", "\x1\x13"}, // kawa
{"", "\x1\x14"}, // ikusa
{"", "\x1\x15"}, // mura
{"", "\x1\x16"}, // tai
{"", "\x1\x17"}, // utena
{"", "\x1\x18"}, // osa
{"", "\x1\x19"}, // tori
{"", "\x1\x1a"}, // tei
{"", "\x1\x1b"}, // hora
{"", "\x1\x1c"}, // michi
{"", "\x1\x1d"}, // hatsu
{"", "\x1\x1e"}, // tobu
{"", "\x1\x1f"}, // fuku
{"", "\x1\xa0"}, // ike
{"", "\x1\xa1"}, // naka
{"", "\x1\xa2"}, // tou
{"", "\x1\xa3"}, // shima
{"", "\x1\xa4"}, // bu
{"", "\x1\xa5"}, // hou
{"", "\x1\xa6"}, // san
{"", "\x1\xa7"}, // kaerimiru
{"", "\x1\xa8"}, // chikara
{"", "\x1\xa9"}, // midori
{"", "\x1\xaa"}, // kishi
{"", "\x1\xab"}, // zou
{"", "\x1\xac"}, // tani
{"", "\x1\xad"}, // kokoro
{"", "\x1\xae"}, // mori
{"", "\x1\xaf"}, // mizu
{"", "\x1\xb0"}, // fune
{"", "\x1\xb1"}, // trademark
};
GameTextFontBank g_font_bank_jak1_v1(GameTextVersion::JAK1_V1,
&encode_info_jak1,
&replace_info_jak1,
&passthrus_jak1);
GameTextFontBank g_font_bank_jak1_v2(GameTextVersion::JAK1_V2,
&encode_info_jak1_v2,
&replace_info_jak1,
&passthrus_jak1);