Как я реверсил кириллицу в русской локализации в играх серии Need For Speed времён Black Box
Но порой не всегда локализации идеальны: в каждой найдётся куча отсебятины, иногда информации, которой в оригинале и не было, а то и неправильно интерпретированная речь, которую нам и расхлёбывать *кашляет по-ватчдоговски*
Но качество локализаций к данной статье не имеют отношения и не о них пойдёт речь. А речь пойдёт о том, как мне удалось расшифровать русскую локализацию, чтобы в будущем каждый мог изменить строки как захочется.
Осторожно, много скринов!
С чего всё началось?А началось всё с этого мема:
Данный скриншот был сделан в игре Need for Speed: Undercover 2008 года. Сама игра по себе является проходняком, ибо сделана на коленке (на самом деле EA тупо торопила разработчика лишь бы выпустить продукт).
Но вот текст на этом меме был отфотошоплен очень криво и с неправильными шрифтами (оригинальные шрифты для игры — Aquarius Medium и Light для заголовка, Helvetica Neue STD для обычных текстов в данном окошке)
Мне это, скажем так, изрядно не понравилось и я поставил себе цель воссоздать этот мем методами самого геймплея этой игры.
И это звучит достаточно легко в теории, но на практике это что угодно, кроме «легко». Было.
Как и Чем
Первым делом я решил полезть в ресурсы игры. Для этих дел есть разработанная моддерским сообществом программа Labrune за авторством nlgzrgn
Она спокойно читает файлы игр, начиная с NFS: Underground вплоть до NFS: World, ибо вся линейка этих игр была сделана одним разработчиком на почти одинаковом движке (ходят слухи, что при разработке этих игр разрабы из-за торопливости не особо морочились убирать остатки старого кода со старых игр, а просто переносили всё в один компилятор и за счёт остатков, найденных в коде, выходили новые моды, сильно расширяюшие функционал игр (как пример этого — последняя версия Unlimiter'а для Most Wanted 2005, берущая часть функционала из NFS Underground 2)).
Читает спокойно до тех пор, пока не скормишь ей файл с русскими текстами
Чё?
И Hex-редактор тоже не может помочь. Выделенная фраза означает «Ты лидер!». Как я узнал - читайте дальше.
Вместо текстов в лучшем случае кракозябра, в худшем случае пустота. На момент написания статьи не исправлено/не воплощено.
И теперь самое интересное!
Тогда я решил править runtime память, если Labrune даже не хочет править файлы и даже сохранять их.
Открыв игру, предварительно выбрав английский язык, я сначала баловался с английским текстом, занимаясь поиском его положения через Cheat Engine и правя его.
Первый текст, который появляется при запуске Undercover, это PSA — Public Service Announcement, то бишь «не гоняйте пацаны вы матерям ещё нужны»
Вычислив адрес, с которого начинается этот текст, я решил изменить этот текст на что-нибудь интересное:
Ундерковёр — яркий пример того, что происходит, когда ты пилишь разрабов чтобы они ежегодно выпускали игру уровня ААА, но при этом не дав времени её отделать. И да, из-за того, что тебе приходится выпускать игру чуть ли не под самый поздний квартал года, в игре обязательно будет много неиспользуемого контента.
Поискав нужные мне адреса конкретных строк, я начал их править.
И сразу скажу, изменения появлялись лишь только когда я убирал текст и снова вызывал для отображения. Сразу текст не меняется. То есть — для появления этого окошка мне приходилось перезапускать гонку.
Играться с англ текстом было детским садом, и всё же хотелось сделать по-русски.
Я перезапустил игру, сменив в стиме язык игры на русский
Игра, запустившись, выдала уже такое содержание:
Текст уже короче, и надо как-то узнать, под какими значениями идёт кириллица.
Благо у меня уже есть адрес для правки текста, сейчас я к нему обращусь, и…
И он уже бесполезен, потому что русский текст всегда длиннее, вследствие чего место прошлого текста уже занял мусор, так что нужно было искать новый адрес. Благо текст, как в прошлый раз, начинался с латиницы и кусок памяти с ней было легко найти.
Первая идея была такая — скопировать каждый отдельный символ, подразумевавший определённую букву в тексте, в блокнот и оттуда же закинуть в адрес своё. Было муторно записывать каждую кракозябру в блокнот, надеясь, что она поможет в дальнейшем.
Результат — неудовлетворительный.
Как итог — в игре мусор…
...и в Cheat Engine тоже.
Вторая и более правильная мысль — та, ради которой вы дочитали до этого момента — это зайти в содержимое памяти по нужному адресу (тыкнув Memory View или CTRL+B, выбрав нужный адрес) и прочитать байты, отвечающие за кириллицу.
Но перед этим дайте я игру перезапущу, чтобы игра выдала норм текст, ок?
Ок.
Стерев всё, что было в блокноте и написав шаблон алфавита для заглавных и строчных букв, я начал вглядываться в байты, записывая эквивалент буквы в блокнот.
То есть э — B9, т — 86, о — 81, пробел — 20, с — 88, и так далее…
Я решил проверить мою новую теорию, изменив вступительный текст с имеющимся байтами…
В ходе дальнейшего реверсинга байтов выяснилось, что исполнительный файл игры для отображения кириллицы использует байты от 81 примерно до FF, а также использует байт 80 совместно с другим соседним байтом справа для отображения других символов, например для отображения буквы ъ - 80 89, Ж - 80 83, Ю - 80 88, Щ — 80 80, и т.д.
В итоге за 2 дня тестирования я составил такую карту используемых символов кириллицы:
И таким методом я и воссоздал тот самый пресловутый мем и разреверсил кириллицу. Хоть и не полностью, но это уже хорошо.
Ну и ещё.
Что было дальше?Дальше я принялся реверсить кириллицу для остальных игр NFS, и на это у меня ушло гораздо меньше времени, благо нашлись более быстрые способы просмотра изменений в тексте и часть байтов совпадала с предыдущими значениями.
Это уже для ProStreet
Это уже для Most Wanted (2005). Заметьте, комбинация байтов 80 XX тогда ещё не использовалась.
*скоро будут байты для NFS: Carbon, Underground и Underground 2*
Послесловие
Своей находкой я поделился с NFS комьюнити, автор проги заметил это и мне ответил:
Я дальше не знаю, что под конец написать, поэтому вот вам котик
Хорошего дня!
Подробнее
Рашка приплетена! Разъебал по фактам Время срача Приз от навального Репутация за срач Репутация за стрелы _ Навыки либерахи валить в сша вИ1«>олу.#<тьпмАы О Рос гвардии
*“ Labrune - D:\GAMEZ STEAM\steamapps\common\Need for Speed Undercover\LANGUAGES\English_Frontend.bin File Edit Help #0 - Frontend ID Hash Label Text ¡387 31D50F50 POSTRACE_YOU_DOMINATED You Dominated! 388 3255EBD4 CUST_LOOKAHEAD_PAINT_WHEEL Change your vehicles wheels and design 389 339077C4 WM_PLAYER_CAR Player Car 390 33E52D05 BODYKIT_1 Stratospeed Formula 4 391 33E52D06 BODYKIT_2 Stratospeed Formula 5 392 33E52D07 BODYKIT_3 Stratospeed Formula 7 393 33E52D08 BODYKIT_4 Stratospeed Widebody 394 34D1BF30 CO M MO N_NO R MAL Normal 395 34F32B4F LANG_M EXIC AN_NO_TR AN S LATIO N ESPAÑOL 396 35070858 CUST_VINYL_CATAGORY_1 Vinyl Cathedral 397 35070859 C U S T_VI N Y L_C AT AGO R Y_2 CFC 398 3507085A C U S T_VI N Y L_C AT AGO R Y_3 Atomic Cadaver 399 3507085B C U S T_VI N Y L_C AT AGO R Y_4 Sky Richards 400 3507085C C U S T_VI N Y L_C AT AGO R Y_5 Chibi Kuruma 401 3507085D C U S T_VI N Y L_C AT AGO R Y_6 The Hive Mynd 402 3507085E CUST_VINYL_CATAGORY_7 Chicane Car Graphics 403 3507085F C U S T_VI N Y L_C AT AGO R Y_8 Grizzly Designs 404 35070860 CUST_VINYL_CATAGORY_9 Naga Nest Car Tattoo 405 3509A22D VIN YL_P ART_2T_RO AD R U N N ER B Two Tone 106 406 3558AC26 VINYL_PART_AFTERMARKET_THERMOTEC Thermo Tec 407 35A74C64 VINYL_PART_POR_CAR_2TONE1 Two Tone 1 408 35A74C65 VINYL_PART_POR_CAR_2TONE2 Two Tone 2 409 35A74C66 VIN YL_P ART_PO R_C AR_2TO N E3 Two Tone 3 410 35CA5A54 ONLINE_AUTO_LOGIN Auto Login 411 3637D026 W H L_KO N_l M A_00 KONIG Imagine 412 36402F3D VINYL_PART_SHL_GT_STRIPE Unique Stripe 413 36831033 WHL_WOR_VSK_00 Work VS-KF 414 3687733B W H L_WO R_VS S_00 WORKCR Kai 415 368A3120 WHL_WOR_VSX_00 Work VS XX 416 378867C1 VINYL PART MANUFACTURER ASTON ... Aston Martin 417 37C9881D VINYL_PART_CFC_GRAFFITI Collector's Edition 05 418 37CA87D9 CUST_VINYL_GROUP_CHIBI CHIBI'S NEST 419 380DE134 FE_CO M MO N_LANG U AG E_S ELECT Language Select 420 38796962 VINYL_PART_PLY_CUD_STK_70_STOCK2 Stock Graphics 421 38EBEFAB CUST_VINYL_GROUP_SHAPE PRIMITIVES 422 391C6088 WM_DRIVER_JOB Driver Job 423 39FF2913 VINYL_PART_AC_BG01 /^omic Cadaver BG 424 39FF6858 VINYL_PART_AC_BULL Atomic Cadaver Bull 425 3A0715E7 VINYL_PART_AC_PUNK Atomic Cadaver Punk 426 3A18930B FE_CO M MO N_P R ESS_START Press ENTER 427 3A4A3505 POSTRACE_HT_STANDINGS STANDINGS 428 3A7955E2 WHL_5ZI_FNO_00 » nt 1. «1 " * » « • / r- -r- * rs r- • 5Zigen FN01R-C Ready.
■* Labrune - D:\GAMEZ STEAM\steamapps\common\Need for Speed Undercover\LANGUAGES\Russian_Fi File Edit Help #0 - Frontend ID Hash Label Text 1276 AC322 D 93 VINYL PART MER SLR 2TONE2 2 1277 AC322D94 VINYL PART MER SLR 2TONE3 3 1278 AC821745 CREDIT_ROLL_PRESENTS c 1279 AC8761FE VINYL_PART_AEM_EA EA 1280 AC8E4DC5 CUST_POWER_PACKAGE_1 -21 1281 AC8E4DC6 CUST_POWER_PACKAGE_2 -22 1282 AC8E4DC7 CUST_POWER_PACKAGE_3 -23 1283 AC8E4DC8 CUST_POWER_PACKAGE_4 - 24 1284 AC8E4DC9 CUST_POWER_PACKAGE_5 -25 1285 AD14A437 PO STR AC E_LB L_XP_R EWAR D S 1286 AD3B3714 VINYL_PART_NAT_TIGER_2 Feral Tiger 2 1287 AD3B3715 VINYL_PART_NAT_TIGER_3 Collector's Edition 29 1288 AD6011CC WM_RACE_EVENT_STATS ¥1 1289 AD7FB264 MC_XENO N_S AVEFI LE_N AM E c<3 1290 ADCC82F7 VINYL_PART_2T_MONARO 1291 AE15E975 VINYL_PART_NAT_SCORPION Feral Scorpion 1292 AE22F480 VINYL_PART_MER_S L_2TO NE1 1 1293 AE22F481 VI NYL_PART_MER_S L_2TO N E2 2 1294 AE22F482 VI NYL_PART_MER_S L_2TO NE3 3 1295 AE4D0BCA POSTRACE_YOURE_1ST 1 ! 1296 AE4D0F56 POSTRACE_YOURE_2ND 2! 1297 AE4D141B POSTRACE_YOURE_3RD 3! 1298 AE4D873C POSTRACE_YOURE_NTH Yd 1299 AEF30730 WM_WANTED_U P P ER -"11 1300 AF1F72B5 CUST_VINYL_FILL 3 1301 AF76CDF2 VINYL_PART_PON_GTO_STRIPE Unique Stripe 1302 AF8075D5 WM_TI M E_CO NSTRAI NT 1303 AF8B8255 VINYL_PART_CN_BUBBLES Chibis Nest Bubble 1304 AFBF2FD9 WM_EVENT_STATUS_OWNED_BY_YOU 1305 AFCF25F9 VINYL_PART_POR_GT2_STRIPE Unique Stripe 1306 AFEFBAEB VIN YL_P ART_C FC_MO N_TO N_01 EYE Kon Tongue 1307 AFEFBAEC VIN YL_P ART_C FC_MO N_TO N_02 EYE Kon Tongue 2 1308 AFEFBAED VIN YL_P ART_C FC_MO N_TO N_03 EYE Kon Tongue 3 1309 B010D038 VINYL_PART_VC_ARABESQUE01 Collector's Edition 31 1310 B010D039 VI NYL_PART_VC_ARAB ESQ U E02 Collector's Edition 32 1311 B010D03A VI NYL_PART_VC_ARAB ESQ U E03 Collector's Edition 33 1312 B010D03B VI NYL_PART_VC_ARAB ESQ U E04 Collector's Edition 34 1313 B010D03C VI NYL_PART_VC_ARAB ESQ U E05 Collector’s Edition 35 1314 B010D03D VI NYL_PART_VC_ARAB ESQ U E06 Vinyl Cathedral Curl 01 1315 B010D03E VINYL_PART_VC_ARABESQUE07 Vinyl Cathedral Curl 02 1316 B010D03F VI NYL_PART_VC_ARAB ESQ U E08 Vinyl Cathedral Curl 03 1317 B010D040 VI NYL_PART_VC_ARAB ESQ U E09 Vinyl Cathedral Curl 04 J A J A A « J « "A « r- A • A A »A -A- % •/% A « A ni-A A • 1*- A A • A »AS.» • »AS • A A Ready.
n© HxD - [D:\GAMEZ STEAM\steamapps\common\Need for Speed Undercover\LANGUAGES\Russian_Frontend.bin] — □ X • File Edit Search View Analysis Extras Window ? _ & x ! | <$> M 16 Polish_Global.bin *2] Russian_Frontend.bin Offset(h) 00 01 02 03 04 05 06 07 08 09 ÖA 03 OC OD OE OF 00006690 82 20 83 94 87 81 83 82 00 9C 89 81 92 20 8D 81 , f"*f< , . aV.f' KT 000066A0 90 83 32 83 92 00 9C 89 81 84 20 89 87 84 8F 92 .aV.f„ \it„W 00006630 00 96 99 83 83 20 83 90 89 84 88 86 2E 00 A3 84 .-™< r rf)V.„€t..E„ 000066C0 8D 8E 86 82 32 83 92 20 89 81 8C 83 86 84 8A 92 KBt,Ir' V.f&rt„Jb' 000066D0 00 A8 82 8E 85 8C 20 31 00 A8 82 8E 85 8C 20 32 .E,TLi l.E,TLi 2 000066E0 00 AC 96 36 F5 FF 96 3A 20 A5 9C 93 9C 98 A5 9C .-i-Ixfl-: fa>a.fa 000066F0 98 AC 93 00 DO 98 9C 9F 93 20 9D 93 20 80 80 96 . -i >. F. ay > k > "KB- 00006700 A5 A5 A3 3A 20 A8 A3 AC 96 A8 9A 3E 00 DO 98 9C ITJ: EJ-i-Eis. F .a 00006710 9F 93 20 9D 93 20 80 80 96 A5 A5 A3 3A 20 A5 9C y > k> Tblb-lTJ: fa 00006720 93 9C 98 A5 9C 98 AC 93 00 DO 98 9C 9F 93 20 9D >a. fa.-i >. F .ay > k 00006730 93 20 80 80 96 A5 A5 A3 3A 20 98 9C 96 37 98 00 > 'R'R-f f J: . a- •. . 00006740 A8 84 83 81 87 8C 91 00 9C 9F 96 98 20 A2 A8 98 E„< f ' .ay-. yE. 00006750 33 3E 00 A2 87 84 8F 83 92 00 A5 86 82 86 83 88 .ft, ti€ 00006760 86 83 83 82 00 9F 88 84 94 81 00 9C 91 20 8A Sol tf< , .y€„"f.k' JBri 00006770 |sc 84 87 21 00 9C 91 20 8E A6 84 8A 20 81 86 20 £>„* ! .a' ü! „JB ft 00006780 8D 81 94 81 85 83 00 9C 91 20 8D 87 81 83 94 87 KT "f...r .a' Ktff"t 00006790 82 8A 21 00 9C 91 20 8D 81 95 84 8C 83 8A 21 00 ,Jb! .a' KT• „JLf JB! . 000067A0 31 20 8F 84 88 86 81 21 00 32 20 8F 84 88 86 81 1 U„€tf!.2 U„€tf 00006730 21 00 33 20 8F 84 88 86 81 21 00 93 87 84 88 86 !.3 U„€tf!.>t„€t 000067C0 21 00 25 69 20 8F 84 88 86 81 00 20 00 4E 65 65 !.%i U„€tf. .Nee 000067D0 64 20 66 6F 72 20 53 70 65 65 64 80 82 20 55 6E d for SpeedT», Un 000067E0 64 65 72 63 6F 76 65 72 20 2D 20 39 86 81 20 88 dercover - №tf € 000067F0 83 8F 8E 8A 92 86 81 87 20 89 81 9E 8C 84 85 83 rlJWtf* V.fh£„...r 00006800 92 2E 20 9F 91 8D 81 8A 85 92 97 86 84 20 39 86 ' . y'KfjB../-t„ №t 00006810 83 20 86 87 31 83 83 20 9C 96 36 F5 AC 96 20 89 f tt±<f a-ix-i- V. 00006820 20 83 94 87 84 2E 20 9D 84 20 8D 91 86 82 97 86 f"t„. k„ K't,—t 00006830 84 88 93 20 8D 81 89 86 81 87 83 86 93 20 83 AD KTV.tftft" f. 00006840 20 89 20 87 84 82 8A 93 85 81 97 20 9E 83 90 85 v. t„,JB"..T- hffj... nnnniocn 0-3 OTT nn OTT G 1 oc Qd OT 0-3 oc Oi1 on GO GO G 1 on •n ' • +<n+' ft.'/ Offset: 676B Block: 676B-677B Length: 9 Overwrite ANSI hex 0
Need for Speed™ Undercover presents an Action Driving Experience. Pull these moves within the safety of your home ONLY. Do not take this kind of driving to the neighborhoods and streets in the real world.
Need for Speed: Undercover is what happens when you want to make a yearly game but you forget to polish it. And yes, because you had to rush it for the late quarter release, there's a good amount of unused content in this game.
RASHKA !!~WM_Vremya sra4a 1:10.39 , r IIJl Cash $260 Wheelman Rep 3,000 Zone Points (+Rep) 3,000 " i40L#,41 frf CONTINUE® PLAY AGAIN® STANDINGS ©
Need for Speed™ Undercover - это симулятор вождения. Выполняйте эти трюки ТОЛЬКО в игре. Не пытайтесь повторить их в реальной жизни.
PSA english [ 1 PSA russian 2082B50D 212837CD String[229] u?G_? ?Gw?M? J?ey? ???Gm? g??G? ?d??K[? G!?v? ?g??Ds G?C Strinq[309] Need for Speed? Undercover - ? ??? ??. ??? ???????.? ??? ??■
PSA english 2082B50D String[229] u?0_? ?Ow?M? J?£y? ???0m? g??G? ?d??K[? 0!?v? ?g??Dg 0?C PSA russian 2128S7CD String[B09] Need for Speed Undercover - $$$ $$$$$$$$$ $
^ Memory Viewer — □ X File Search View Debug Tools Kernel tools nfs.exe+10082ED Address Bytes Opcode Comment nfs.exe+1008;53 push nfs.exe+1008;51 push ecx nfs.exe+1008;52 push edx nfs.exe+1008;56 push esi nfs.exe+1008;57 push edi nfs-jpxp tiooa:55 oush shn push word or doubleword onto the stack Protect :Read/Write Allocation3ase=10060000 3ase=21283000 Size=126DD000 a address CD CE CF DO D1 D2 D3 D4 D5 D6 D7 D8 D5 DA D3 DC DEF0123456785A3C 212837CD 4E 65 65 64 20 66 6F 72 20 53 70 65 65 64 80 82 Need for Speed 212837DD 20 55 6E 64 65 72 63 6F 76 65 72 20 2D 20 35 86 Undercover - 212837ED 81 20 88 83 8F 8E 8A 52 86 81 87 20 85 81 5E 8C 212837FD 84 85 83 52 2E 20 5F 51 8D 81 8A 85 52 57 86 84 • 2128380D 20 35 86 83 20 86 87 31 83 83 20 5C 56 36 F5 AC 2128381D 56 20 85 20 83 54 87 84 2E 20 5D 84 20 8D 51 86 • 2128382D 82 57 86 84 88 53 20 8D 81 85 86 81 87 83 86 53 2128383D 20 83 AD 20 85 20 87 84 82 8A 53 85 81 57 20 5E 2128384D 83 50 85 83 2E 00 5F 51 55 84 87 83 86 84 20 52 B 2128385D 50 51 83 00 47 65 6E 74 65 72 61 20 53 74 75 6C .Gentera Styl 2128386D 65 20 32 30 34 00 47 65 6E 74 65 72 61 20 53 74 e 204.Gentera St 2128387D 75 6C 65 20 32 30 36 00 47 65 6E 74 65 72 61 20 yle 206.Gentera 2128388D 53 74 75 6C 65 20 31 31 35 00 47 65 6E 74 65 72 Style 115.Genter 2128385D 61 20 53 74 75 6C 65 20 31 31 38 00 47 65 6E 74 a Style 118.Gent 21283852 : byte: 0 word: -24832 integer: -1785618688 int64: -8754004247163330816 floafcO.OO double: 0.00
Need for Speed™ U недоделанная игра. Gentera Style 204 ndercover - это
а - - 82, б - 55, в - 85, д - со о е - 84, ё - ЕЗ, и - - 83, й - 57, к - 83, и - - 8F, н - 85, о - 81, р - - 37, с - 88, т - 86, ф - - F0, X - AD, ц - 32, ш - - Аб, щ - 38, ъ - 80 85 ь - - 53, 3 - 35, ю - 31, А д и м F Ф ш ь 53, Б - DO, 3 5А, Е - A3, Ё 58, Й - (FD)FE, AF, H - 5D, А8, С - А5, T 81, X - F7, Ц 80 80, Щ - 80 87, Ъ F5, Э - 80 84, Ю Ui О г - 54, ж - 5Е, з - 50, л - 8А, п - 8D, У - ЗЕ, ч - 55, ьг - 51, я - 52 5F, г - 37, Г Ж - 80 83 АС, л - 36, 56, п - А2, 5С, У - 35, FF, ч - DE, 80 8Е, ы - ЗЕ, 80 88, я - D5 - 33,
03 1 Am Rock Rock 04 In A Hood Near You Suni Clay Suni Clay сдня не ндг>0 ii*1' . Этот парень был из тех, кто просто любит жизнь. 02 Do Ya Thang T.l. Presents The P$C 25 To Life (±в] Последовательный В Меню Меню Меню Упорядочить Ознакомление
а - 83, б - 5С, в - д - 8D, е - 82, ё - и - к со W и - 5D, к - м - 8Е, н - 85, о - р - 87, с - 88, т - ф - ЗС, X - 32, ц - ш - AF, щ - СЗ, ъ - ь — 53, 3 — 37, ю — А — 51, 5 — 34, 3 — Д - A3, Е - 57, Ё - И - 58, W и - D7, К - м - А8, н - 54, О - F - 55, с - 5Е, Т - Ф - DO, X - DE, Ц - ш - F5, щ - FE, ъ - ь - 3D, э - ЕЗ, ю - 89, г - 9А ЕЗ, ж - АС 83, л - 8А 81, п - 8F 86, У - 90 39, ч - А2 80 80, ы - 92 36, я — 96 9F, Г — 35 1, Ж - F0 А6, Л - AD 8С, п - A4 93, У - 31 F7, ч - D5 80 86, ы - ЗЕ FF, я - 33 - 55, - 38,
а - V со б - 95, в д - 8Е, е - 82, ё и - 83, W и - 94, к и - 8D, н - 86, о р - 87, с - 88, т ф - 34, X - A4, ц ш - 99, щ - 33, ъ ь — 51, 3 — А7, ю А — Аб, 5 — 36, 3 Д - AD, Е - А5, Ё И - А2, W и - ЗА, К м - 32, н - 9D, 0 F - 93, с - 9С, Т Ф - 3F, X - ЗЕ, Ц ш - О о щ - С4, ъ ь - С1, 3 - 38, ю 85, г - 53 Е3|, ж - 58 83, л - 8А 81, п - 8С 85, У - 8F 30, ч - 57 С6, ы - 50 АС, я — 56 5F, Г — 35 СЗ, Ж - зс А8, Л - 31 5Е, п - 5А A3, У - АА С2, ч - AF С7 , ы - 3D СЗ, я - 35 - 52, - 37,
nlgzrgn Yesterday at 23:21 Thanks for the information! If I update the tool. I'll create something to switch those characters to properly handle any language.
Рашка приплетена!,Gaming,NFS,need for speed undercover,need for speed,nfsuc,extra options,nfs extra options,need for speed most wanted,need for speed carbon,need for speed prostreet,need for speed underground,exopts,aero_,nlgzrgn,need for speed most wanted extra options,need for speed undercover extra options,osdever,рашка приплетена,навальный,О том, как это было сделано, читайте в этой статье: https://zen.yandex.ru/media/id/5c179d104dc8fc00aaead0a3/kak-ia-reversil-kirillicu-v-russkoi-lokalizacii-v-igrah-serii-need-for-speed-vremen-black-box-600c6a8d1924cc0331de2a3e Это всего лишь попытка воссоздать древний мем (https://cdn.discordapp.com/attachments/729385291890294815/801086988958433316/TDVSMiA1TO8.jpg), и особого отношения к политике и хайптрейну, который сейчас происходит, не имеет. Щитпост, короче.
Need For Speed,Игры,nfs,reverse engineering,русская локализация,программирование,geek,Прикольные гаджеты. Научный, инженерный и айтишный юмор,кириллица,длиннопост,много картинок
Кстати, Ё очень редко используется в играх как раз потому, что в ASCII она стоит отдельно от кириллицы (в лучшем случае, когда используется расширенная таблица), плюс велик шанс, что ее код может совпасть с каким-нибудь управляющим символом.
Вот, кстати, нашлась одна из инструкций для переводчика с запретом Ё из тех самых нулевых, времен, когда DTF был ресурсом для специалистов, а не геймеров, как сейчас.
http://dailytelefrag.ru/articles/read.php?id=50937
Забавно, что многие распространенные проблемы так и остались.
В кодировке Windows-1251 заглавная Ё прекрасно себя чувствует с кодом 168 (0xA8), а строчная ё с кодом 184 (0xB8). В KOI8-R это, соответственно, коды 0xA3 и 0xB3. Никогда не существовало проблем с использованием этих букв в программах, которые используют стандартные локали.
Открой ASCII
А если у тебя, например, игра для PS1, то тебе нужно в малюсенькую текстуру растрового шрифта впихнуть все 63 глифа. И тут не то что Ё, в тексте Щ подменяется на Ш, Й и N на И и т.д. Результат все мы много раз видели.
Еще раз, думаешь в большинстве игр есть поддержка локалей?)
Это не имеет никакого значения.
> Открой ASCII
А причём тут ASCII? Нигде не сказано, что буквы в таблице символов должны идти по порядку. Например, в KOI8-R вообще все русские буквы вразброс и это неважно.
> А если у тебя, например, игра для PS1
А причём тут PS1? Я отвечал на утверждение, что "Ё очень редко используется в играх как раз потому, что в ASCII она стоит отдельно от кириллицы (в лучшем случае, когда используется расширенная таблица)", а отдельно она стоит в писюковых кодировках. PS1 совершенно не причём.
> думаешь в большинстве игр есть поддержка локалей?)
Надеюсь, ты осознаёшь, что это проблема не кодировок как таковых и не локалей, а программистов, которые не используют стандартные локали?
И да, в последние лет 15-20 абсолютное большинство мультиязычных программ используют стандартные локали.
NFSU2 - частично, но всё равно использует байты от 81
Можно последовательно идти от точки входа и "разоружать" проверки на дебаг (как вариант, заменять на NOPы), пока не отключишь основные, мешающие сканировать память.
Наверняка уже существуют относительно готовые, но малознакомые и специализированные программы и скрипты под конкретные античиты.
Эм... Нет. В оригинале в подавляющем большинстве случаев лучше.
Всё же, хорошая работа, чел. Добра тебе.