звук Sound blaster Windows Операционная система звуковая карта geek realtek песочница длиннопост 

Опыт настройки басов на звуковой карте, основанной на звучках от Realtek - Creative Sound Blaster Audigy FX

Вряд ли бы я назвал это статьёй. Скорее это чисто баттхёрт на тему того, какую хуйню могут сотворить (в материальном и нематериальном смысле) нынешние производители компьютерной железяки.

Предыстория

Жил себе я спокойно, слушал долбящую в уши музяку через свои любимые наýши и звуковую карту Sound Blaster X-Fi XtremeGamer, пытаясь ещё и играть в кое-какие игры на встроенной Intel HD Graphics 2500…
Сложные названия какие-то.

Г
„одумал, что ху осязать. И юг "P01* чем хуйня:
И НСЦННЧ1НЯЯ. И ДИСК/
микпичюм WASA 14 (ni,звук,Sound blaster,Windows,Операционная система,звуковая карта,geek,Прикольные гаджеты. Научный, инженерный и  айтишный юмор,realtek,песочница,длиннопост

Вот такие наýши. Наушниками даже язык не повернётся назвать такими: весят почти полкило, бас через край и конфигурация на 5.1. Roccat Kave 5.1 Analog.

И вот, после попыток поиграть хоть как-то на встроенной, а также долгого отсутствия хоть какой-либо дискретной видеокарты для игруль, я взял себе в наследие от братишки nVidia GeForce 9600 GT с 1 ГБ памятью, да ещё с достаточно нестандартной системой охлаждения:

звук,Sound blaster,Windows,Операционная система,звуковая карта,geek,Прикольные гаджеты. Научный, инженерный и  айтишный юмор,realtek,песочница,длиннопост

Ага, вот она. Внушительная и не особо полезная в нынешнее время (в наше время есть нынешний её ребрендинг типа GeForce GT 610 (по мощности)). А на ней — лорд DEEPCOOL V4000.

Кулер такой на данной видюхе должен был оказаться очень хорошим решением, как я подумал тогда (оказался: 40°C в нагрузке против 60°C. Да что там — я референсное охлаждение и то не увидел). И всё вроде бы хорошо, но не тут то было: всё это добро занимало аж 2.5 слота в моей материнской плате, что не ist хорошо: заняло все слоты PCI, кроме одной PCI-E x1 снизу. И тут передо мной встал выбор: в жопу дашь или мать продашь? или звук, братишка, или видюха. Выбор пал на второе.

«Раз от дискретной аудиокарты придётся отказаться, хотя бы на встроенной поживу» - подумал я. Ага, щас. Зайдя в панель управления звука, настроив конфигурацию под 5.1, и наконец найдя эквалайзер и выкрутив низы вверх, я столкнулся с искажениями звука по типу компрессии/тонкомпенсации/сайдчейна/хз-как-назвать в моменты атак басов.
«Уаттафак?» — вновь подумал я и убавил всё обратно. Так и жил с этим месяц.

Отходя от такой ломки, тем временем я задумывался над приобретением другой аудиокарты с аналогичными характеристиками и полезными фичами, которые смогут раскачать звук на 5.1 так же, как это делал мой прошлый X-Fi. И выбор пал на любвеобильный сабж, который вы могли видеть на обложке.

Ну приобрёл ты, и дальше что?

Ну приобрёл я, установил, и в надежде, что «хотя бы на этой такой херни не будет», в надежде опять послушать музяку «как мне нравится», настроив, я столкнулся с точно такой же проблемой: компрессия в моменты атак басов. Сказать, что я охуел - не сказать ничего. Немного приуныв, я перерыл комп и интернеты в надежде найти ответ, но не нашёл (либо я плохо искал, либо ответ лежал на такой поверхности, что вряд ли бы кто-то задался вопросом как убрать эту хрень). И как-то…
Но прежде, чем я зайду вперёд, мой дорогой читатель, я немного с этим затяну, прежде чем скажу, что нужно было сделать.

Особенности звуковой системы Windows для нубов и прочая графомания

Дело вот в чём: на встроенной реалтековской (с лат. переводится как "говно") нельзя было выкрутить басы на максимум без эффекта перегруза и мгновенной компрессии звука из-за того перегруза. Из-за чего приходилось выключать эквалайзер. А после покупки и установки данной Audigy FX выяснилось, что ситуация с басами, когда не можешь выкрутить басы на полную, никуда не делась (там и звуковой проц, и ЦАП - реалтековские (я знал, что там так стоит, но думал, что хуйни с перегрузом не будет)). И вот, проводя очередную ночеечку и тыкаясь в клавиатуру, печатая данный текст, я выяснил, в чём хуйня:

И встроенная, и та дискретная звуковухи как-то связаны с виндосовским микшером WASAPI — Windows Audio Session API (присутствует ещё с Windows Vista), и даже если ты чуть-чуть выкрутил громкость, звук действует так, как если бы прибавили на полную громкость.

Ты, наверняка, мог заметить зелёную и какую-то серую полоски в микшере Windows, когда жмёшь на иконку звука в трее, так вот — именно так работает нынешний звук — звук изначально сделан громким (0дБ), но программно он снижается через микшер системы. И при повышении в эквалайзере тех частот, которые играют громче, повышается общая громкость микшированного звука, и, следовательно, возникает перегруз (clipping, если не ошибаюсь) общего микшера, и чтобы звук не пердел, срабатывает защита от перегруза посредством компрессии.


i, Микшер громкости - Динамики (Sound Blaster Audigy Fx)
X
Устройство	Приложения		
	|Ц	Р	%
Динамики	Системные звуки	Punto Switcher	Mozilla Firefox
49	49	49	49,звук,Sound blaster,Windows,Операционная система,звуковая карта,geek,Прикольные гаджеты. Научный, инженерный и  айтишный

Ага, вот эти ребята

Параметры
(й Главная
Звук
Найти параметр
Р
Система
Выберите устройство вывода Динамики (Realtek High Definitio... v
Некоторые приложения используют настраиваемые параметры вывода. Вы можете персонализировать их в настройках устройств и громкости приложений ниже.
Свойства устройства С]

UPD: То же самое есть и в Win10 настройках, и там этот оранжевый ползунок будет динамичней, чем микшер сверху


В прошлых версиях винды и аудиокартах, заточенных под неё, действует система DirectSound, и от перегруза там нет никакой защиты, и в случае такового звук будет пердеть как при овергейне в каком-нибудь «earrape» видео, сделанном в Sony Vegas (я убедился сам на Sound Blaster Live! и X-Fi XtremeGamer).

P.S.: сейчас, перечитывая этот абзац, хочу себя исправить, сказав то, что бывают звуковухи как с независимой регулировкой громкости на уровне ЦАП, так и с фиксированной громкостью с программой регулировкой (не совсем понятно, что я сейчас написал, но ок).

Плюс от новой системы WASAPI только то, что звук при любом раскладе не будет пердеть. Ну и буфер ещё (как плацебо для слабых компьютеров).

А минус: хуй определишь, звук изначально компрессирован из-за басов, или ты криворукий мудак и выкрутил басы на +20дБ (особенно если ты слушаешь музыку не в наушниках).
И звук, кстати, уже обрабатывается самой системой, не звуковухой, та лишь выдаёт готовый микшированный звук. А тогда это всё как-то управлялось совместно, да и на аппаратном уровне.

Решение, решение! НУ?!

А решение вот какое: я выкрутил басы в эквалайзере на полную (можно и не на полную, где кому как), а дальше общую громкость в муз. проигрывателе (например, в foobar2000) или в игре (master volume) снижал до нужного значения, когда от басов можно добиться максимума без перегруза, одновременно при этом обращая на серую полоску в микшере Windows, мониторя, не доходит ли серая полоска до самого верха в моменты атаки басов, и если нет, то можно ещё чуть-чуть прибавить. Иначе компрессия.

Плюс: Наконец-то норм басы
Минус: Придётся в каждой программе/игре снижать общую громкость до нужного значения, когда нет перегруза.

Такой способ должен работать на любом реалтеке и в любой встроенной звуковухе (может быть, судя по тому, что цап в audigy fx - реалтековский).

И я такой: «А что, можно было так сделать? Ебааааать»

И да, если думаешь записать что-нибудь с такими настройками на своём встроенном (и не только) реалтеке — забудь. Эквалайзер влияет на общий звук в микшере, и на выходе получишь запись с усиленными басами, а не оригинальную дорожку. И ты всё это успел увидеть. Если, конечно, настраивал и дочитал до сюда. Так что при записи видео басы лучше отключать и общую громкость в приложениях прибавлять. Но меня этот гемор так заебал, что я просто перестал данной звуковухой пользоваться. Записывать с артефактами и лишними телодвижениями видео — не комильфо.

За примерами особо обращаться не надо: в ютубе есть люди типа SHDWSKII, которые записывают видео с искажением звука, сами того не замечая.


TL;DR:
Просто делай басы на полную в панели управления звуковухой и убавляй звук в каждом приложении. А ещё лучше — купи саундбластер из серии X-Fi, или Audigy RX, ну или на худой конец — Sound Blaster Live!. Звук будет на порядок лучше и АЦП для записи тоже хорошего качества.
Развернуть

nfs Игры reverse engineering русская локализация программирование geek кириллица длиннопост много картинок 

Как я реверсил кириллицу в русской локализации в играх серии Need For Speed времён Black Box

Предисловие
Все мы любим, когда наша любимая игра переведена на русский язык и мы можем легко понять, что говорит наш любимый персонаж.

Но порой не всегда локализации идеальны: в каждой найдётся куча отсебятины, иногда информации, которой в оригинале и не было, а то и неправильно интерпретированная речь, которую нам и расхлёбывать *кашляет по-ватчдоговски*

Но качество локализаций к данной статье не имеют отношения и не о них пойдёт речь. А речь пойдёт о том, как мне удалось расшифровать русскую локализацию, чтобы в будущем каждый мог изменить строки как захочется.

Осторожно, много скринов!

С чего всё началось?

А началось всё с этого мема:

Рашка приплетена!
Разъебал по фактам Время срача
Приз от навального Репутация за срач Репутация за стрелы
_ Навыки либерахи
валить в сша вИ1«>олу.#<тьпмАы
О Рос гвардии,Need For Speed,Игры,nfs,reverse engineering,русская локализация,программирование,geek,Прикольные гаджеты. Научный,

Да. К политике нынешней данный мем особо отношения не имеет, да и не должен.

Данный скриншот был сделан в игре Need for Speed: Undercover 2008 года. Сама игра по себе является проходняком, ибо сделана на коленке (на самом деле EA тупо торопила разработчика лишь бы выпустить продукт).
Но вот текст на этом меме был отфотошоплен очень криво и с неправильными шрифтами (оригинальные шрифты для игры — Aquarius Medium и Light для заголовка, Helvetica Neue STD для обычных текстов в данном окошке)
Мне это, скажем так, изрядно не понравилось и я поставил себе цель воссоздать этот мем методами самого геймплея этой игры.

И это звучит достаточно легко в теории, но на практике это что угодно, кроме «легко». Было.


Как и Чем

Первым делом я решил полезть в ресурсы игры. Для этих дел есть разработанная моддерским сообществом программа Labrune за авторством nlgzrgn

*“ 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
Собственно, её интерфейс.

Она спокойно читает файлы игр, начиная с NFS: Underground вплоть до NFS: World, ибо вся линейка этих игр была сделана одним разработчиком на почти одинаковом движке (ходят слухи, что при разработке этих игр разрабы из-за торопливости не особо морочились убирать остатки старого кода со старых игр, а просто переносили всё в один компилятор и за счёт остатков, найденных в коде, выходили новые моды, сильно расширяюшие функционал игр (как пример этого — последняя версия Unlimiter'а для Most Wanted 2005, берущая часть функционала из NFS Underground 2)).

Читает спокойно до тех пор, пока не скормишь ей файл с русскими текстами

■* 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

Чё?

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

И Hex-редактор тоже не может помочь. Выделенная фраза означает «Ты лидер!». Как я узнал - читайте дальше.

Вместо текстов в лучшем случае кракозябра, в худшем случае пустота. На момент написания статьи не исправлено/не воплощено.



И теперь самое интересное!

Тогда я решил править runtime память, если Labrune даже не хочет править файлы и даже сохранять их.

Открыв игру, предварительно выбрав английский язык, я сначала баловался с английским текстом, занимаясь поиском его положения через Cheat Engine и правя его.

Первый текст, который появляется при запуске Undercover, это PSA — Public Service Announcement, то бишь «не гоняйте пацаны вы матерям ещё нужны»

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,Игры,nfs,reverse engineering,русская

Вот он.

Вычислив адрес, с которого начинается этот текст, я решил изменить этот текст на что-нибудь интересное:

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.,Need For Speed,Игры,nfs,reverse engineering,русская

Ундерковёр — яркий пример того, что происходит, когда ты пилишь разрабов чтобы они ежегодно выпускали игру уровня ААА, но при этом не дав времени её отделать. И да, из-за того, что тебе приходится выпускать игру чуть ли не под самый поздний квартал года, в игре обязательно будет много неиспользуемого контента.

Поискав нужные мне адреса конкретных строк, я начал их править.
И сразу скажу, изменения появлялись лишь только когда я убирал текст и снова вызывал для отображения. Сразу текст не меняется. То есть — для появления этого окошка мне приходилось перезапускать гонку.

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,Игры,nfs,reverse engineering,русская локализация,программирование,geek,Прикольные гаджеты. Научный, инженерный и  айтишный

Вот так всё начиналось. До русского текста ещё далеко. Мусор в начале второй строки «vremya sra4a» там из-за того, что я где-то убрал байт, отвечающий за начало текста и игра подхватила этот кусок для отображения.

Играться с англ текстом было детским садом, и всё же хотелось сделать по-русски.

Я перезапустил игру, сменив в стиме язык игры на русский
Игра, запустившись, выдала уже такое содержание:

Need for Speed™ Undercover - это симулятор вождения. Выполняйте эти трюки ТОЛЬКО в игре. Не пытайтесь повторить их в реальной жизни.,Need For Speed,Игры,nfs,reverse engineering,русская локализация,программирование,geek,Прикольные гаджеты. Научный, инженерный и  айтишный

Текст уже короче, и надо как-то узнать, под какими значениями идёт кириллица.

Благо у меня уже есть адрес для правки текста, сейчас я к нему обращусь, и…
И он уже бесполезен, потому что русский текст всегда длиннее, вследствие чего место прошлого текста уже занял мусор, так что нужно было искать новый адрес. Благо текст, как в прошлый раз, начинался с латиницы и кусок памяти с ней было легко найти.

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 - ? ??? ??. ??? ???????.? ??? ??■,Need For Speed,Игры,nfs,reverse engineering,русская локализация,программирование,geek,Прикольные гаджеты.

Первая идея была такая — скопировать каждый отдельный символ, подразумевавший определённую букву в тексте, в блокнот и оттуда же закинуть в адрес своё. Было муторно записывать каждую кракозябру в блокнот, надеясь, что она поможет в дальнейшем.
Результат — неудовлетворительный.

Need For Speed,Игры,nfs,reverse engineering,русская локализация,программирование,geek,Прикольные гаджеты. Научный, инженерный и  айтишный юмор,кириллица,длиннопост,много картинок

Как итог — в игре мусор…

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 - $$$ $$$$$$$$$ $,Need For Speed,Игры,nfs,reverse engineering,русская локализация,программирование,geek,Прикольные гаджеты. Научный, инженерный и

...и в Cheat Engine тоже.

Вторая и более правильная мысль — та, ради которой вы дочитали до этого момента — это зайти в содержимое памяти по нужному адресу (тыкнув Memory View или CTRL+B, выбрав нужный адрес) и прочитать байты, отвечающие за кириллицу.
Но перед этим дайте я игру перезапущу, чтобы игра выдала норм текст, ок?
Ок.

^ 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

Вот так выглядит память игры во время запуска процесса. На данный момент Memory Viewer показывает кусок памяти, начиная с адреса, который указывает на начало текста PSA. Выделенный байт 00 означает технический конец текста.

Стерев всё, что было в блокноте и написав шаблон алфавита для заглавных и строчных букв, я начал вглядываться в байты, записывая эквивалент буквы в блокнот.
То есть э — B9, т — 86, о — 81, пробел — 20, с — 88, и так далее…

Я решил проверить мою новую теорию, изменив вступительный текст с имеющимся байтами…

Need for Speed™ U недоделанная игра.
Gentera Style 204
ndercover - это,Need For Speed,Игры,nfs,reverse engineering,русская локализация,программирование,geek,Прикольные гаджеты. Научный, инженерный и  айтишный юмор,кириллица,длиннопост,много картинок

… и теория оказалась верной! «Gentera Style 204» стоит там из-за того, что я на тот момент не знал, что нужно ставить байт 00 для обозначения конца читаемого текста. Но само подтверждение теории меня очень обрадовало!

В ходе дальнейшего реверсинга байтов выяснилось, что исполнительный файл игры для отображения кириллицы использует байты от 81 примерно до FF, а также использует байт 80 совместно с другим соседним байтом справа для отображения других символов, например для отображения буквы ъ - 80 89, Ж - 80 83, Ю - 80 88, Щ — 80 80, и т.д.

В итоге за 2 дня тестирования я составил такую карту используемых символов кириллицы:

а -	- 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	-

Скобки означают, что я на данный момент не уверен, какой из байтов используется для отображения такого-то символа, либо может использоваться комбинация этих байтов для отображения «Й»․ Отсутствующий байт у буквы Ё — значит я не нашёл байт от этой буквы, и не велика потеря — в тексте игры нет строк, где есть буквы ё и Ё — всегда е. Почему? Спросите у 1С-СофтКлаб или у самих Black Box.

И таким методом я и воссоздал тот самый пресловутый мем и разреверсил кириллицу. Хоть и не полностью, но это уже хорошо.

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
(±в] Последовательный В
Меню
Меню
Меню
Упорядочить
Ознакомление,Need For Speed,Игры,nfs,reverse

Ну и ещё.

Что было дальше?

Дальше я принялся реверсить кириллицу для остальных игр NFS, и на это у меня ушло гораздо меньше времени, благо нашлись более быстрые способы просмотра изменений в тексте и часть байтов совпадала с предыдущими значениями.

а	-	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,	Ц	-

Это уже для ProStreet

а	-	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,

Это уже для Most Wanted (2005). Заметьте, комбинация байтов 80 XX тогда ещё не использовалась.


*скоро будут байты для NFS: Carbon, Underground и Underground 2*

Послесловие

Своей находкой я поделился с NFS комьюнити, автор проги заметил это и мне ответил:

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.,Need For Speed,Игры,nfs,reverse engineering,русская локализация,программирование,geek,Прикольные гаджеты. Научный, инженерный и  айтишный

Я дальше не знаю, что под конец написать, поэтому вот вам котик

Need For Speed,Игры,nfs,reverse engineering,русская локализация,программирование,geek,Прикольные гаджеты. Научный, инженерный и  айтишный юмор,кириллица,длиннопост,много картинок

Хорошего дня!

Развернуть