static TextUtilities() { PSXMap = new PSXCharMap(); PSPMap = new PSPCharMap(); BuildVersion1Charmap(PSXMap, PSPMap); BuildVersion2Charmap(PSXMap, PSPMap); BuildVersion3Charmap(PSXMap, PSPMap); }
private static void BuildVersion3Charmap(PSXCharMap PSXMap, PSPCharMap PSPMap) { IList <string> psxChars = PatcherLib.PSXResources.CharacterSet; IList <string> pspChars = PatcherLib.PSPResources.CharacterSet; for (int i = 0; i < 0xD0; i++) { PSXMap[i] = psxChars[i]; PSPMap[i] = pspChars[i]; PSXMap[i + 0xD000] = psxChars[i]; PSPMap[i + 0xD000] = pspChars[i]; } for (int i = 0xD0; i < pspChars.Count; i++) { PSXMap[(i - 0xD0) % 0xD0 + 0xD100 + 0x100 * ((i - 0xD0) / 0xD0)] = psxChars[i]; PSPMap[(i - 0xD0) % 0xD0 + 0xD100 + 0x100 * ((i - 0xD0) / 0xD0)] = pspChars[i]; } }
static TextUtilities() { //PSXMap = new PSXCharMap(); //PSPMap = new PSPCharMap(); var psx = new Dictionary <int, string>(); var psp = new Dictionary <int, string>(); BuildVersion1Charmap(psx, psp); BuildVersion2Charmap(psx, psp); BuildVersion3Charmap(psx, psp); PSXMap = new PSXCharMap(psx); PSPMap = new PSPCharMap(psp); // Extract the DLL to the temp folder string dir = Path.Combine(Path.GetTempPath(), Path.GetRandomFileName()); Directory.CreateDirectory(dir); string path = Path.Combine(dir, "FFTTextCompression.dll"); File.WriteAllBytes(path, Resources.FFTTextCompression); IntPtr h = LoadLibrary(path); System.Diagnostics.Debug.Assert(h != IntPtr.Zero, "Unable to load library " + path); Application.ApplicationExit += delegate(object sender, EventArgs args) { if (FreeLibrary(h) && File.Exists(path) && Directory.Exists(dir)) { try { File.Delete(path); Directory.Delete(dir); } catch { } } }; }
private static void BuildVersion1Charmap(PSXCharMap psx, PSPCharMap psp) { for (int i = (int)'a'; i <= (int)'z'; i++) { psx.Add(i - (ushort)'a' + 0x24, ((char)i).ToString()); psx.Add(i - (ushort)'a' + 0x24 + 0xD000, ((char)i).ToString()); } psx.Add(0x40, "?"); psx.Add(0xD040, "?"); psx.Add(0xD9C9, "?"); psx.Add(0xB2, "\u266A"); psx.Add(0xD0B2, "\u266A"); psx.Add(0xD117, "\u2014"); psx.Add(0xD118, "\u300C"); psx.Add(0xD11B, "\u22EF"); psx.Add(0xD11F, "\xD7"); psx.Add(0xD120, "\xF7"); psx.Add(0xD121, "\u2229"); psx.Add(0xD122, "\u222A"); psx.Add(0xD123, "="); psx.Add(0xDA70, "="); psx.Add(0xD124, "\u2260"); psx.Add(0xD9B5, "\u221E"); psx.Add(0xD9B7, "&"); psx.Add(0xD9B8, "%"); psx.Add(0xD9B9, "\u25CB"); psx.Add(0xD9BA, "\u2190"); psx.Add(0xD9BB, "\u2192"); psx.Add(0xD9C2, "\u300E"); psx.Add(0xD9C3, "\u300F"); psx.Add(0xD9C4, "\u300D"); psx.Add(0xD9C5, "\uFF5E"); psx.Add(0xD9C7, "\u25B3"); psx.Add(0xD9C8, "\u25A1"); psx.Add(0xD9CA, "\u2665"); psx.Add(0xD9CB, "\u2160"); psx.Add(0xD9CC, "\u2161"); psx.Add(0xD9CD, "\u2162"); psx.Add(0xD9CE, "\u2163"); psx.Add(0xD9CF, "\u2164"); psx.Add(0xDA00, "\u2648"); psx.Add(0xDA01, "\u2649"); psx.Add(0xDA02, "\u264A"); psx.Add(0xDA03, "\u264B"); psx.Add(0xDA04, "\u264C"); psx.Add(0xDA05, "\u264D"); psx.Add(0xDA06, "\u264E"); psx.Add(0xDA07, "\u264F"); psx.Add(0xDA08, "\u2650"); psx.Add(0xDA09, "\u2651"); psx.Add(0xDA0A, "\u2652"); psx.Add(0xDA0B, "\u2653"); psx.Add(0xDA0C, "{Serpentarius}"); psx.Add(0xDA71, "$"); psx.Add(0xDA72, "\xA5"); psx.Add(0xDA74, ","); psx.Add(0xDA75, ";"); psx.Add(0xD11D, "-"); psx.Add(0x42, "+"); psx.Add(0xD042, "+"); psx.Add(0xD11E, "+"); psx.Add(0x46, ":"); psx.Add(0xD046, ":"); psx.Add(0xD9BD, ":"); psx.Add(0x8D, "("); psx.Add(0xD08D, "("); psx.Add(0xD9BE, "("); psx.Add(0x8E, ")"); psx.Add(0xD08E, ")"); psx.Add(0xD9BF, ")"); psx.Add(0x91, "\""); psx.Add(0xD091, "\""); psx.Add(0xD9C0, "\""); psx.Add(0xDA77, "\""); psx.Add(0x93, "'"); psx.Add(0xD093, "'"); psx.Add(0xD9C1, "'"); psx.Add(0xDA76, "'"); psx.Add(0x8B, "\xB7"); psx.Add(0xD08B, "\xB7"); psx.Add(0xD9BC, "\xB7"); psx.Add(0x44, "/"); psx.Add(0xD044, "/"); psx.Add(0xD9C6, "/"); psx.Add(0xD125, ">"); psx.Add(0xD126, "<"); psx.Add(0xD127, "\u2267"); psx.Add(0xD128, "\u2266"); psx.Add(0xFA, " "); psx.Add(0xD12A, " "); psx.Add(0xDA73, " "); psx.Add(0x5F, "."); psx.Add(0xD05F, "."); psx.Add(0xD119, "."); psx.Add(0xD11C, "."); psx.Add(0xD9B6, "."); psx.Add(0x3E, "!"); psx.Add(0xD03E, "!"); psx.Add(0xD11A, "!"); psx.Add(0xB5, "*"); psx.Add(0xD0B5, "*"); psx.Add(0xD111, "*"); psx.Add(0xD129, "*"); psx.Add(0xD12B, "*"); psx.Add(0xD12C, "*"); psx.Add(0xD12D, "*"); psx.Add(0xD12E, "*"); psx.Add(0xD12F, "*"); psx.Add(0xD130, "*"); psx.Add(0xD131, "*"); psx.Add(0xD132, "*"); psx.Add(0xE0, "{Ramza}"); psx.Add(0xF8, "{Newline}"); psx.Add(0xFB, "{Begin List}"); psx.Add(0xFC, "{End List}"); psx.Add(0xFF, "{Close}"); for (int i = 0; i < 10; i++) { psx.Add(i, i.ToString()); psx.Add(i + 0xD000, i.ToString()); } for (int i = (int)'A'; i <= (int)'Z'; i++) { psx.Add(i - (ushort)'A' + 0x0A, ((char)i).ToString()); psx.Add(i - (ushort)'A' + 0x0A + 0xD000, ((char)i).ToString()); } for (int i = 0; i < 256; i++) { // HACK psx.Add(0xE200 + i, string.Format("{{Delay {0:X2}", i) + @"}"); psx.Add(0xE300 + i, string.Format("{{Color {0:X2}", i) + @"}"); } psx.Add(0x3F, "\u3042"); psx.Add(0x41, "\u3044"); psx.Add(0x43, "\u3046"); psx.Add(0x45, "\u3048"); psx.Add(0xD03F, "\u3042"); psx.Add(0xD041, "\u3044"); psx.Add(0xD043, "\u3046"); psx.Add(0xD045, "\u3048"); for (int i = 0x47; i <= 0x5E; i++) { psx.Add(i, ((char)(i - 0x47 + 0x304A)).ToString()); psx.Add(i + 0xD000, ((char)(i - 0x47 + 0x304A)).ToString()); } for (int i = 0x60; i <= 0x8A; i++) { psx.Add(i, ((char)(i - 0x60 + 0x3063)).ToString()); psx.Add(i + 0xD000, ((char)(i - 0x60 + 0x3063)).ToString()); } psx.Add(0x8C, "\u308F"); psx.Add(0xD08C, "\u308F"); psx.Add(0x8F, "\u3092"); psx.Add(0xD08F, "\u3092"); psx.Add(0x90, "\u3093"); psx.Add(0xD090, "\u3093"); psx.Add(0x92, "\u30A2"); psx.Add(0xD092, "\u30A2"); for (int i = 0x94; i <= 0xB1; i++) { psx.Add(i, ((char)(i - 0x94 + 0x30A4)).ToString()); psx.Add(i + 0xD000, ((char)(i - 0x94 + 0x30A4)).ToString()); } psx.Add(0xB3, "\u30C3"); psx.Add(0xD0B3, "\u30C3"); psx.Add(0xB4, "\u30C4"); psx.Add(0xD0B4, "\u30C4"); for (int i = 0xB6; i <= 0xCF; i++) { psx.Add(i, ((char)(i - 0xB6 + 0x30C6)).ToString()); psx.Add(i + 0xD000, ((char)(i - 0xB6 + 0x30C6)).ToString()); } for (int i = 0xD0; i <= 0xDB; i++) { psx.Add(i - 0xD0 + 0xD100, ((char)(i - 0xD0 + 0x30E0)).ToString()); } psx.Add(0xD10C, "\u30EC"); psx.Add(0xD10D, "\u30ED"); psx.Add(0xD10E, "\u30EE"); psx.Add(0xD10F, "\u30EF"); for (int i = 0xE2; i <= 0xE6; i++) { psx.Add(i - 0xE2 + 0xD112, ((char)(i - 0xE2 + 0x30F2)).ToString()); } foreach (KeyValuePair <int, string> kvp in psx) { psp.Add(kvp.Key, kvp.Value); } for (int i = 0; i < 256; i++) { psp.Add(0xEE00 + i, string.Format("{{Tab {0:X2}", i) + @"}"); } psp[0x95] = " "; psp[0xfa] = "{SP2}"; psp.Add(0xDA60, "\xE1"); psp.Add(0xDA61, "\xE0"); psp.Add(0xDA62, "\xE9"); psp.Add(0xDA63, "\xE8"); psp.Add(0xDA64, "\xED"); psp.Add(0xDA65, "\xFA"); psp.Add(0xDA66, "\xF9"); }
private static void BuildVersion2Charmap(PSXCharMap psx, PSPCharMap psp) { foreach (GenericCharMap map in new GenericCharMap[] { psx, psp }) { map.Add(0xD133, "\u5263"); map.Add(0xD134, "\u4E00"); map.Add(0xD135, "\u4E59"); map.Add(0xD136, "\u4E03"); map.Add(0xD137, "\u4E01"); map.Add(0xD138, "\u4E5D"); map.Add(0xD139, "\u4E86"); map.Add(0xD13A, "\u61E8"); map.Add(0xD13B, "\u4EBA"); map.Add(0xD13C, "\u5165"); map.Add(0xD13D, "\u516B"); map.Add(0xD13E, "\u5200"); map.Add(0xD13F, "\u529B"); map.Add(0xD140, "\u5341"); map.Add(0xD141, "\u4E0B"); map.Add(0xD142, "\u4E09"); map.Add(0xD143, "\u4E0A"); map.Add(0xD144, "\u4E08"); map.Add(0xD145, "\u4E07"); map.Add(0xD146, "\u4E0E"); map.Add(0xD147, "\u4E45"); map.Add(0xD148, "\u4E38"); map.Add(0xD149, "\u4E5E"); map.Add(0xD14A, "\u4E5F"); map.Add(0xD14B, "\u4EA1"); map.Add(0xD14C, "\u51E1"); map.Add(0xD14D, "\u5203"); map.Add(0xD14E, "\u5343"); map.Add(0xD14F, "\u98EF"); map.Add(0xD150, "\u571F"); map.Add(0xD151, "\u58EB"); map.Add(0xD152, "\u5915"); map.Add(0xD153, "\u5927"); map.Add(0xD154, "\u5973"); map.Add(0xD155, "\u5B50"); map.Add(0xD156, "\u5BF8"); map.Add(0xD157, "\u5C0F"); map.Add(0xD158, "\u5C71"); map.Add(0xD159, "\u5DDD"); map.Add(0xD15A, "\u5DE5"); map.Add(0xD15B, "\u5DF1"); map.Add(0xD15C, "\u5E72"); map.Add(0xD15D, "\u5F13"); map.Add(0xD15E, "\u3005"); map.Add(0xD15F, "\u6CB9"); map.Add(0xD160, "\u796D"); map.Add(0xD161, "\u5947"); map.Add(0xD162, "\u8DE1"); map.Add(0xD164, "\u4E0D"); map.Add(0xD165, "\u4E2D"); map.Add(0xD166, "\u4E88"); map.Add(0xD167, "\u4E94"); map.Add(0xD168, "\u4E92"); map.Add(0xD169, "\u4E95"); map.Add(0xD16A, "\u4ECB"); map.Add(0xD16B, "\u4EC7"); map.Add(0xD16C, "\u4ECA"); map.Add(0xD16D, "\u4EC1"); map.Add(0xD16E, "\u5185"); map.Add(0xD16F, "\u5143"); map.Add(0xD170, "\u516C"); map.Add(0xD171, "\u516D"); map.Add(0xD172, "\u5186"); map.Add(0xD173, "\u5197"); map.Add(0xD174, "\u51F6"); map.Add(0xD175, "\u5207"); map.Add(0xD176, "\u5206"); map.Add(0xD177, "\u5302"); map.Add(0xD178, "\u5316"); map.Add(0xD179, "\u5DE8"); map.Add(0xD17A, "\u5339"); map.Add(0xD17B, "\u725B"); map.Add(0xD17C, "\u5384"); map.Add(0xD17D, "\u53CC"); map.Add(0xD17E, "\u53CD"); map.Add(0xD17F, "\u53CB"); map.Add(0xD180, "\u592A"); map.Add(0xD181, "\u5929"); map.Add(0xD182, "\u5C11"); map.Add(0xD183, "\u5E7B"); map.Add(0xD184, "\u5F15"); map.Add(0xD185, "\u5FC3"); map.Add(0xD186, "\u6238"); map.Add(0xD187, "\u624B"); map.Add(0xD188, "\u652F"); map.Add(0xD189, "\u6587"); map.Add(0xD18A, "\u6597"); map.Add(0xD18B, "\u65B9"); map.Add(0xD18C, "\u65E5"); map.Add(0xD18D, "\u6708"); map.Add(0xD18E, "\u6728"); map.Add(0xD18F, "\u6B20"); map.Add(0xD190, "\u6B62"); map.Add(0xD191, "\u6BD4"); map.Add(0xD192, "\u6BDB"); map.Add(0xD193, "\u6C34"); map.Add(0xD194, "\u706B"); map.Add(0xD195, "\u722A"); map.Add(0xD196, "\u7236"); map.Add(0xD197, "\u7247"); map.Add(0xD198, "\u725B"); map.Add(0xD199, "\u72AC"); map.Add(0xD19A, "\u738B"); map.Add(0xD19C, "\u5EB7"); map.Add(0xD19D, "\u808C"); map.Add(0xD19E, "\u72AF"); map.Add(0xD19F, "\u5C4D"); map.Add(0xD1A0, "\u6557"); map.Add(0xD1A1, "\u6211"); map.Add(0xD1A2, "\u767B"); map.Add(0xD1A3, "\u9332"); map.Add(0xD1A4, "\u4E18"); map.Add(0xD1A5, "\u4E16"); map.Add(0xD1A6, "\u4E3B"); map.Add(0xD1A7, "\u4EE5"); map.Add(0xD1A8, "\u4ED5"); map.Add(0xD1A9, "\u4ED9"); map.Add(0xD1AA, "\u4ED6"); map.Add(0xD1AB, "\u4EE3"); map.Add(0xD1AC, "\u4ED8"); map.Add(0xD1AD, "\u4EE4"); map.Add(0xD1AE, "\u5144"); map.Add(0xD1AF, "\u5199"); map.Add(0xD1B1, "\u51FA"); map.Add(0xD1B2, "\u52A0"); map.Add(0xD1B3, "\u5305"); map.Add(0xD1B4, "\u5317"); map.Add(0xD1B5, "\u534A"); map.Add(0xD1B6, "\u5360"); map.Add(0xD1B7, "\u53BB"); map.Add(0xD1B8, "\u53CE"); map.Add(0xD1B9, "\u53EF"); map.Add(0xD1BA, "\u529F"); map.Add(0xD1BB, "\u53E5"); map.Add(0xD1BC, "\u53E4"); map.Add(0xD1BD, "\u53F7"); map.Add(0xD1BE, "\u53F2"); map.Add(0xD1BF, "\u53F8"); map.Add(0xD1C0, "\u53EC"); map.Add(0xD1C1, "\u53F0"); map.Add(0xD1C2, "\u53F3"); map.Add(0xD1C3, "\u56DB"); map.Add(0xD1C4, "\u56DA"); map.Add(0xD1C5, "\u5727"); map.Add(0xD1C6, "\u51AC"); map.Add(0xD1C7, "\u5916"); map.Add(0xD1C8, "\u592E"); map.Add(0xD1C9, "\u5931"); map.Add(0xD1CA, "\u5974"); map.Add(0xD1CB, "\u5C3B"); map.Add(0xD1CC, "\u5DE6"); map.Add(0xD1CD, "\u5E02"); map.Add(0xD1CE, "\u5E03"); map.Add(0xD1CF, "\u5E73"); map.Add(0xD200, "\u5E7C"); map.Add(0xD201, "\u5E83"); } }