1. Друзья, в это тяжёлое и непонятное для всех нас время мы просим вас воздержаться от любых упоминаний политики на форуме, - этим ситуации не поможешь, а только возникнут ненужные ссоры и обиды. Это касается также шуток и юмора на тему конфликта. Пусть войны будут только виртуальными, а политики решают разногласия дипломатическим путём. С уважением, администрация Old-Games.RU.

    Скрыть объявление
  2. Пожалуйста, внимательно прочитайте правила раздела.
  3. Если Вы видите это сообщение, значит, вы ещё не зарегистрировались на нашем форуме.

    Зарегистрируйтесь, если вы хотите принять участие в обсуждениях. Перед регистрацией примите к сведению:
    1. Не регистрируйтесь с никами типа asdfdadhgd, 354621 и тому подобными, не несущими смысловой нагрузки (ник должен быть читаемым!): такие пользователи будут сразу заблокированы!
    2. Не регистрируйте больше одной учётной записи. Если у вас возникли проблемы при регистрации, то вы можете воспользоваться формой обратной связи внизу страницы.
    3. Регистрируйтесь с реально существующими E-mail адресами, иначе вы не сможете завершить регистрацию.
    4. Обязательно ознакомьтесь с правилами поведения на нашем форуме, чтобы избежать дальнейших конфликтов и непонимания.
    С уважением, администрация форума Old-Games.RU
    Скрыть объявление

Need For Speed III Modern Patch (HD + Widescreen + Portable)

Тема в разделе "Мастерская", создана пользователем VEG, 15 апр 2015.

  1. VEG

    VEG

    Регистрация:
    3 авг 2006
    Сообщения:
    631
    Need For Speed III Modern Patch (HD + Widescreen + Portable)
    Страница проекта: http://veg.by/go/nfs3ru

    Я не буду здесь описывать все изменения, поскольку их слишком много. Опишу лишь основные тезисы. За подробностями обращайтесь к файлу readme.txt.

    — Адекватная поддержка широкоформатных и больших разрешений — игра без проблем работает на 1920×1200 и других разрешениях без искажения пропорций изображения.
    — Улучшена графика машин — на максимальных настройках у других машин текстуры в 2 раза лучшего качества, всегда крутятся колёса, никогда не исчезают зеркала и другие элементы (это происходило из-за подгрузки худших моделей при наличии 3 и более машин в кадре).
    — Улучшена дальность отрисовки — на максимальных настройках в зеркале объекты не пропадают так рано как раньше.
    — Режим DX6 поддерживает эффект тумана — ранее эта возможность была эксклюзивной только для видеокарт 3dfx Voodoo2 и эмуляции Glide API.
    — Улучшена поддержка Voodoo2/Glide — в этом режиме в игре доступен эффект тумана, работоспособность Glide API обеспечивается враппером nGlide 1.04.2.
    — Переносимость — игра больше не лезет в реестр за настройками, все системные настройки хранятся в ini-файле рядом с исполняемым файлом игры (он должен иметь такое же имя как и запускаемый exe-файл).
    — Добавлено несколько оптимизаций. Например, игра не делает копию музыкальных файлов при каждом старте и читает их сразу их исходного каталога, что экономит время и 10 мегабайт ресурса вашего SSD на каждый старт.
    — Исправлено несколько десятков ошибок и недоработок оригинальной версии. Например, индикация загрузки теперь намного более плавная.

    Установка:
    1. Скопируйте каталоги FEDATA и GAMEDATA с оригинального диска в новый пустой каталог.
    2. Извлеките содержимое архива nfs3_vegmod.7z (1.3МБ) в этот же каталог, с заменой файлов.
    3. Готово!

    Скриншот в широкоформатном разрешении 1280×720:
    5683db60835624401dddde3e6956ee95.jpg

    Оригинальное сообщение:
    Взялся я тут патчить оригинальный NFS3. Добавил поддержку больших разрешений, пофиксил баг про то что осталось меньше мегабайта свободного пространства (хотя на самом деле его завались), для драйвера d3d добавил поддержку 32-битного цвета (в игре многие вещи с 32-битным цветом выглядят значительно лучше), для драйвера voodoo2 поддержку разрешений вплоть до 1600×1200. Сейчас вот работаю над добавлением поддержки широкоформатных разрешений без искажений пропорций, если всё будет хорошо, то и 1920×1080, и 1920×1200 будет поддерживаться. Ещё хотелось бы устранить баг с зависанием на многоядерных системах.

    А теперь вот подумалось, а может взять лучше за основу NFS4, но попробовать исправить в нём то, что не нравится, и сделать так как это было в NFS3? Расскажите, чем вам нравится NFS3 и не нравится NFS4, и наоборот. Карты вроде как от NFS3 там есть вообще без изменений.

    И ещё. У вас в NFSIII работает сетевая игра? У меня на Windows 7 x64 при попытке создать игру или подключиться ничего не происходит. Надо будет проанализировать эту проблему, но может уже кто-то знает ответ.
     
    Последнее редактирование: 11 июн 2015
    Gadavre, Menkau_ra, AlexDC и 31 другим нравится это.
  2.  
  3. VEG

    VEG

    Регистрация:
    3 авг 2006
    Сообщения:
    631
    Что такой дерзкий? Поумерь пыл. У Microsoft чётко всё написано:
    Перевожу на русский язык: sndPlaySound — это подмножество PlaySound, и оставлена только для обратной совместимости. То есть PlaySound предлагает больше возможностей и считается основной, а sndPlaySound такой же рудимент, как и LockResource, UnlockResource, FreeResource — оставлено только для того, чтобы древний код компилировался без изменений.
     
    Последнее редактирование: 5 ноя 2015
  4. Goblinit

    Goblinit

    Регистрация:
    18 мар 2011
    Сообщения:
    4.405
    Но OGL ведь проще, совместимее (в т.ч. со старыми версиями), а главное, портабельный. Разве нет? И потом, ты ведь говорил, у EA уже был такой начат, может, его и прикрутить? :)

    А как же звуки клацанья меню во время паузы? Их разве нет? :) И ведь музыка играет в главном меню (хотя, да, то уже главное меню...)

    Я, конечно, не программист C++, но @Bato-San ведь сказал именно про sndPlaySoundA
     
    Bato-San нравится это.
  5. Bato-San Чеширский волк-киборг

    Bato-San

    Регистрация:
    24 июн 2010
    Сообщения:
    14.136
    @VEG, и снова тыкаю носом:
    про дерзость тут и речи нет. Просто я не занят саморекламой, как ты. Мог бы уже и догадаться, что если указываю конкретную либу - значит знаю точно о чём говорю.
     
  6. Goblinit

    Goblinit

    Регистрация:
    18 мар 2011
    Сообщения:
    4.405
    Именно это и имел в виду. FPS влияет на процесс, но не до такой степени, конечно.
     
  7. Bato-San Чеширский волк-киборг

    Bato-San

    Регистрация:
    24 июн 2010
    Сообщения:
    14.136
    так вот, если подвести итог, то получается следующее:
    1. На современных процах игра успевает нафигачить 100500 шотов везде и по любым комбинациям. Звука не слышно.
    2. На P3 1400Mhz - держим 10 секунд до скриншота.
    3. В эмуляторе при P1 300Mhz - держим до бесконечности и не получаем ничего.

    На лицо некая зависимость безобразия от скорости проца.
     
  8. VEG

    VEG

    Регистрация:
    3 авг 2006
    Сообщения:
    631
    Начат, но с NFS3 вообще не работает, и дорабатывать его не проще, чем dx6a.dll.

    Использование OpenGL не сделает из NFS3 кроссплатформенную игру. Если захочется портировать игру под Linux или куда-то ещё, придётся серьёзно перерабатывать сам nfs3.exe. Да и не особо это нужно — игра сейчас хорошо работает под Wine с использованием nGlide и DX6.

    Функции sndPlaySound не существует. Существуют функции sndPlaySoundA и sndPlaySoundW. Когда вы у себя в коде на C вызываете sndPlaySound, в реальности будет использована одна из указанных ранее функций в зависимости от того, юникодный у вас проект, или ANSI. Это касается всех функций WinAPI, где используются строки в качестве параметров.

    Если вы найдёте хоть одно место, где игра издаёт звуки во время паузы — буду вам очень благодарен :) На самом деле банк со звуками менюшки выгружается перед стартом игры, и в его слот загружается банк со звуками машины первого плеера. А в коде, который играет звуки менюшки, строго прописано — если геймплей, то ничего не делать (иначе оно реагировало бы на нажатия кнопок в паузе звуками двигателя). Тут чтобы банк звуков менюшки сделать доступным всегда — уже нужно немало переделать. Но в принципе решаемо за относительно разумное время. Но когда я столкнулся с тем, что игра ни в какую не хочет издавать звуки во время паузы, и издаёт их все вместе сразу после возврата из менюшки в игру — руки опустились :)
     
    Последнее редактирование: 5 ноя 2015
  9. Goblinit

    Goblinit

    Регистрация:
    18 мар 2011
    Сообщения:
    4.405
    Увы, напутал. Нет там ни звука :(

    В общем, поиграли с другом сплитскрин на клаве и геймпаде в глайдах на весь широкий экран. Незабываемо. @VEG, :worthy::worthy::worthy:
     
  10. VEG

    VEG

    Регистрация:
    3 авг 2006
    Сообщения:
    631
    Ого, вот это любопытное заявление. А мне показалось почему-то наоборот. Даёте какие-то неприменимые советы, такое впечатление, чтобы просто показать, что вы что-то касательно этого знаете, но не с целью реально чем-то помочь (а может и просто не понимаете, что данные советы бесполезны или неприменимы).

    Просто сами перечитайте:
    Учитесь излагать понятнее свои мысли. Ну вот брослии вы ссылку. А зачем? Я же не спрашивал, как использовать PlaySound. Я бы и использовать её в своём патче без документации к этой функции никак не смог бы — умных IDE с кучей подсказок для такого низкоуровневого программирования ещё не создали.
    Затем без всякой логичной связки вы говорите, что я должен был у кого-то спрашивать про sndPlaySoundA. У кого я должен был это спрашивать и зачем? Поскольку вы невнятно излагаете свои мысли — пришлось додумывать, к чему это здесь. Я так понял, что вы имеете в виду, что в Windows 98 всё ещё нет PlaySound. То что winmm.lib по вашим словам не менялась до Windows 7 не противоречит этому — я решил, что вы думаете, что эта функция появилась только в Windows 7. Иной логичной расшифровки этого вашего экспертно-делового «это раз, а это два» у меня не было и нет.
    А здесь вы уже начали мне откровенно грубить. Причём эта грубость смешана с очередной нелепостью, потому что как раз наоборот — именно PlaySound является основной функцией с большим количеством возможностей, а sndPlaySound — лишь оставленным для совместимости подмножеством PlaySound с меньшим количеством возможностей. Я вам это следом пояснил, потому что подумал, что вы предложили использовать sndPlaySound потому, что думали, что sndPlaySound — основная функция, а PlaySound — лишь урезанная обёртка для неё, а это явное заблуждение.

    Я заподозрил неладное, когда вы на приведённый мной фрагмент кода, проверяющий существование директории, процитировали несколько строчек и с таким же пренебрежительным тоном написали, в стиле «да тут же очевидная ошибка, только слепой не заметит», не указав на конкретную ошибку. Потом правда сообразили, что код корректный, и убрали это из своего сообщения, оставив другой бесполезный и неприменимый в контексте совет:
    При том, что если бы использовалась W-версия функции, отсутствующая в Windows 9x, то исполняемый файл просто не запустился бы. А если бы использовалась A-версия функции, которой я бы пытался скормить строку в UCS-2 — она бы также очевидно никогда не заработала бы на любой системе, потому что чтение строки остановилось бы на первом же байте, потому что второй же байт был бы нулём, поскольку у всех символов из набора ASCII, куда входит вся латиница и управляющие символы, в UCS-2 второй байт всегда будет нулём.
    И откуда в NFS3 взяться UNC-путям? Про них то в принципе мало кто знает... И вряд ли кто-то будет так серьёзно усложнять себе жизнь с UNC-путями, когда нужно просто обратиться к каталогу в текущей директории. И вряд ли человек, который знает о «\\?\», не знает о банальном «.\». Или вы думаете, что путь к папке .\screenshots\ длиннее 260 символов? Нет, вы серьёзно думаете, что эти советы могут быть применимы?

    Но то что вы после подобных выкрутасов в теме обвинили меня в саморекламе — это конечно пять баллов :) Сразу же про соринку и бревно вспоминается.
     
    Последнее редактирование: 6 ноя 2015
  11. VEG

    VEG

    Регистрация:
    3 авг 2006
    Сообщения:
    631
    @Bato-San, следите за волшебством. Берём winmm.dll (у меня Windows 7), дизассемблируем, смотрим:
    aveg.by_z_2015_11_05_23_21_36_130a066d.png
    Расшифровываю. Функция sndPlaySoundA только и делает, что вызывает PlaySoundA. Ни одного дополнительного действия.
    --- добавлено 6 ноя 2015, предыдущее сообщение размещено: 6 ноя 2015 ---
    @Bato-San, это даже в утёкших исходниках NT4 именно так, то есть так уже лет 20:
    Код:
    BOOL APIENTRY sndPlaySoundA( LPCSTR szSoundName, UINT wFlags)
    {
      return PlaySoundA(szSoundName, NULL, wFlags);
    }
    У вас плохо получается умничать. Очень плохо.
     
    Последнее редактирование: 6 ноя 2015
  12. Bato-San Чеширский волк-киборг

    Bato-San

    Регистрация:
    24 июн 2010
    Сообщения:
    14.136
    @VEG, и снова следим за волшебством, глядя на предыдущие два поста:
    как видим, моё утверждение правильное. :yes:

    Так что ты не прав снова.

    ЗЫ. Примеры я уберу, разумеется. Во избежание.

    Fixed. Убрано.
     
    Последнее редактирование: 6 ноя 2015
  13. VEG

    VEG

    Регистрация:
    3 авг 2006
    Сообщения:
    631
    А я и не утверждал, что оно менялось. Не приписывайте мне того, чего я не говорил. Не изменилось — так и лучше. Оно же как раз подтверждает моё утверждение, что sndPlaySoundA лишь обёртка для PlaySoundA. И даже кусок приведённого вами кода с реализацией PlaySoundW и PlaySoundA показывает, что внутри библиотека использует функцию sndPlaySoundI, которая вообще недоступна снаружи. Это внутренняя реализация. То есть sndPlaySoundA — обёртка для PlaySoundA. А PlaySoundA — обёртка для внутренней функции sndPlaySoundI. Если вы не видите разницы между sndPlaySoundA и sndPlaySoundI, я подскажу — она в последней букве. И функция sndPlaySoundI недоступна снаружи. Её тупо нет в экспортах. Основная экспортируемая функция для ANSI приложений — это именно PlaySoundA. Не знаю как уж тут можно понятнее разжевать :)
     
  14. Bato-San Чеширский волк-киборг

    Bato-San

    Регистрация:
    24 июн 2010
    Сообщения:
    14.136
    @VEG, обычно я рекомендую просто посмотреть в мой профиль, а потом уже пытаться что то объяснять.

    Гы, то что ты пытаешься мне объяснить - было объяснено тебе в сообщении которое ты безосновательно посчитал за дерзость. Кстати, пойду навстречу и даже поправлю его.
     
    Последнее редактирование: 6 ноя 2015
  15. Alex Kagansky

    Alex Kagansky

    Регистрация:
    17 дек 2007
    Сообщения:
    3.054
    @Bato-San, в данном случае (и не только в данном, кстати) хамло - это ты.

    Отправил жалобу модератору.
     
  16. VEG

    VEG

    Регистрация:
    3 авг 2006
    Сообщения:
    631
    В профиле у вас не нашёл ничего интересного. Написано, что вы системный программист. Ну так любой может назвать себя системным программистом. Я в юношестве называл себя дизайнером просто потому, что мог применить пару эффектиков в Photoshop.

    На деле же я вижу, что вы демагог. Выдали пачку бесполезных в контексте советов, потом добавили откровенно ложное утверждение, вам указали на вашу ошибку — но вы оказались неспособны это признать, зато в итоге нагрубили. Теперь я по полочкам разложил, показывая, что искомое утверждение, из-за которого вы мне нагрубили, было ложным. Это подтверждают даже ваш фрагмент исходного кода. Вы его привели его в качестве доказательства наверняка просто потому, что вы спутали sndPlaySoundI с sndPlaySoundW/sndPlaySoundA. И я тоже на это указал. А потом вы пытаетесь выехать отсюда правым на том, что вы когда-то там говорили, что winmm не менялся из 90-х. Только вот предмета разговора такого не было. Не менялся — и не менялся. Это вообще не относится к тому ложному утверждению, что вы сделали, вместе с которым вы мне нагрубили.
     
  17. Bato-San Чеширский волк-киборг

    Bato-San

    Регистрация:
    24 июн 2010
    Сообщения:
    14.136
    ну вот ты и перешёл тупо к попыткам унизить меня. Замечательно.

    Заметь - ни один из моих постов не содержит никаких оскорблений в твой адрес или сомнений, что ты программист.
    Если ты не понял, что и почему я писал - твои проблемы. На этом сей бесполезный разговор считаю законченым.
    И вежливо удаляюсь. :hi:
     
  18. VEG

    VEG

    Регистрация:
    3 авг 2006
    Сообщения:
    631
    Напоминаю:
    Речь шла про sndPlaySoundA, мол я должен её использовать. Я говорю — PlaySoundA уже был в Windows 98 и можно уже использовать его, а не устаревшую функцию sndPlaySoundA. А потом вы заявили, что «плейсоунд это обёртка», намекнув о том, что я «туплю». Из контекста понятно, что вы имели в виду, что PlaySoundA — это обёртка для sndPlaySoundA. Совершенно не понимаю, почему для вас так принципиально не признавать эту банальную ошибку. Все ошибаются и это нормально. Для меня же разобрать этот вопрос было важно — чтобы разобраться, обоснованно ли я получил своё «не тупи». Если бы я действительно затупил, и разобрался бы в этом — в следующий раз уже не затупил бы так.
    --- добавлено 6 ноя 2015, предыдущее сообщение размещено: 6 ноя 2015 ---
    Я был отправлен в профиль — я высказал мнение, что то, что человек пишет о себе, мало что значит, особенно если он нескромен :) И уж тем более, то что человек пишет о себе — никак не может повлиять на разрешение каких-то спорных моментов. Это знаете, как если в дискуссии «есть ли Бог» один из оппонентов в качестве доказательства скажет «я учёный-физик, и я заявляю, что Бог — есть». Но это не может являться доказательством. Нельзя авторитетом автоматически сделать какие-то слова доказанными.

    Вы изменили исходную фразу на такой вариант:
    Да, теперь она констатирует факт, что в итоге все варианты этой функции используют одну внутреннюю реализацию. Но тогда ваш призыв обратить внимание на sndPlaySound одним сообщением ранее теряет всякий смысл :) Всё равно внутреннюю реализацию напрямую нельзя использовать, и ближайший путь к ней — через PlaySoundA для ANSI-приложения.

    Ладно, пустое это. Следующий пост будет по теме патча.
     
    Последнее редактирование: 6 ноя 2015
  19. VEG

    VEG

    Регистрация:
    3 авг 2006
    Сообщения:
    631
    В общем решил я полностью переписать код присутствующего в игре клавиатурного хука в двух версиях — отдельно для Windows NT (WH_KEYBOARD_LL) и отдельно для Windows 9x (WH_KEYBOARD), чтобы хорошо работало и на современных системах. В функции хука будет входить опциональная блокировка клавиши Win во избежание случайного сворачивания во время игры (Alt+Tab и другие комбинации оставлю доступными), моментальная реакция на кнопку снятия скриншота и предотврадение стандартного поведения кнопки Print Screen (тоже опционально). Под NT это будет легко сделать. Меня смущает текущий код установки хука WH_KEYBOARD, который устанавливает игра. Судя по коду, он устанавливается неверно, и не должен работать даже в 98 винде. Я попробовал сделать отдельную демо-программу с такой же установкой хука, как и в NFS3 — и на виртуалке с 98 виндой это не сработало. У меня виртуалка не умеет 3D. Не мог бы кто-нибудь достоверно сказать, работает ли у вас в игре опция KeyboardHook? То есть при KeyboardHook=1 и рендерере DX6 игра не должна сворачиваться и пуск не должен появляться, не должно быть вообще никакой реакции на клавишу Win и комбинацию Alt+Tab. Почему-то мне вспоминается, что раньше игра отлично справлялась с предотвращением сворачивания по клавише Win. Но возможно я это сам себе уже внушил после того, как нашёл код хука, который должен блокировать все комбинации, приводящие к сворачиванию игры. Но на сколько я теперь вижу — этот хук не должен работать, потому что устанавливается игрой неправильно. В том и проблема. Если же окажется, что у вас на 98 винде он всё же работает (может документация немножко врёт, и 98 винда была способна при каких-то условиях установить хук таким образом, как это сделано в коде NFS3), проверьте, успешно ли он блокирует кнопку Print Screen? В оригинальном коде хука разработчики зачем-то предотвращали работу и этой кнопки :) Как проверить: копируете в буфер обмена какой-то текст перед запуском игры. Запускаете игру, жмёте в игре PrintScreen, выходите из игры — проверяете, сохранился ли в буфере обмена ваш текст (попробуйте вставить в блокнот), или же там какая-то картинка (попробуйте вставить это же в Paint).
    --- добавлено 6 ноя 2015, предыдущее сообщение размещено: 6 ноя 2015 ---
    Что касается отсутствия звука в Windows 98, варианты:
    1. Игра выводит звук в эксклюзивном режиме, и PlaySound в Windows 98 не умеет микшировать свой звук со звуком от DirectSound.
    2. PlaySound в Windows 98 чем-то не устраивает формат используемого WAV-файла.
    Склоняюсь к первому. Что-то припоминаю, что лет 15 назад сталкивался с невозможностью воспроизвести несколько звуков одновременно в некоторых случаях на Windows 98/Me. Позднее разберёмся что с этим делать. Лучше всего было бы конечно научить внутренние игровые функции воспроизводить звуки во время паузы, тогда можно было бы и озвучку кликов по кнопкам в менюшках паузы вернуть :)
     
  20. Knd

    Knd

    Регистрация:
    18 май 2010
    Сообщения:
    659
    VEG, предлагаю не тратить время и силы на общение с недоразумением под названием Bato-san (он в каждой теме гадит - видать, слишком много свободного времени).
     
    Последнее редактирование: 6 ноя 2015
  21. Goblinit

    Goblinit

    Регистрация:
    18 мар 2011
    Сообщения:
    4.405
    Оттестировал стабильный билд.

    DX6. KeyboardHook=1.
    Игра не реагирует на ALT+TAB, CTRL+ESC. PrtScn срабатывает ( в буфере шот). На Клавишу Win реакции нет.

    DX6. KeyboardHook=0.
    Игра реагирует на ALT+TAB, CTRL+ESC. PrtScn срабатывает ( в буфере шот). На Клавишу Win реакции нет.

    Думаю, тут всё проще. В Win9x/me только монопольное использование звука приложением. Какое активно, такое и звучит. А вы, как я понимаю, пытаетесь отзвучать виндой, когда активно 3D. А даже, если я неправ относительно монополии, то у меня, например, вообще ISA-звуковая карта, и вот у неё наверняка есть проблемы с многозадачностью.
     
  22. Knd

    Knd

    Регистрация:
    18 май 2010
    Сообщения:
    659
    Неправильно. Если DirectSound (а тут он), или лучше, то немонопольное.
     
    Последнее редактирование: 11 ноя 2015
    Goblinit нравится это.
  1. На этом сайте используются файлы cookie, чтобы персонализировать содержимое, хранить Ваши предпочтения и держать Вас авторизованным в системе, если Вы зарегистрировались.
    Продолжая пользоваться данным сайтом, Вы соглашаетесь на использование нами Ваших файлов cookie.
    Скрыть объявление