|
Здравствуйте Гость ( Вход | Регистрация ) Доступ из РоссииДля сохранения достпа из России к сайту и форуму GBX
|
||||||||||||||||||||||||||||||||||||
| aa-dav |
Четверг, 30 июля 2020, 18:04
Отправлено
#1
|
|
Фанат ![]() ![]() ![]() Группа: Пользователи Сообщений: 180 Регистрация: 20 апр. 2017 Пользователь №: 58 717 ![]() ![]() |
Для начала вспомним, что SNES это 16-битная игровая приставка с сегментацией памяти и порт Doom на ней изначально выглядел идеей гиблой и id Software даже и не помышляла о таком ранее сделав порт Wolf3D и ощутив на что способно это железо не по наслышке.
Однако на горизонте возник некто Рэнди Линден - когда энтузиасты уже расковыряли форматы данных игры Doom и начали экспериментировать с модами Рэнди будучи уже опытным разработчиком на железе Nintendo начал сам делать порт Doom на SNES. Некоторое время назад он дал интервью (англ.) в котором в том числе пообещал выложить исходные коды к этому своего подвигу: Однако мощностей консоли на самом деле было точно недостаточно. Но выход нашёлся - чип Super FX который можно было встроить в картридж с игрой. А это было уже что-то, ведь Super FX был 16-битным RISC-процессором с тактовой частотой 21 МГц + картридж содержал еще 512Кб RAM что было в четыре раза больше чем консоль содержала сама по себе (128Кб) и с этим уже можно было жить, хотя и в это верилось с трудом. Так вот Рэнди сам написал демо где были только стены из оригинальной игры между которыми можно было бродить и пошёл к издателю который уже начал связываться с id Software и Nintendo чтобы навести мосты и выпустить порт. В общем код совсем не такой какой он был в оригинальном Doom и весь он был написан целиком на ассемблере. Пару недель назад Рэндал выложил исходные коды и их можно посмотреть тут: https://github.com/RandalLinden/DOOM-FX Несмотря на RISC-процессор в картридже частот и 16-битности всё-равно решительно не хватало чтобы воспроизвести всё качество оригинала. Порт заметно отличается тем что пол и потолок не текстурируются (залиты монотонно с затенением по расстоянию). В общем со всеми ухищрениями оно шевелится со вполне приемлемой скоростью и ужасным конечно качеством: Но для 16-битной системы это очень впечатляет! То что код другой заметно по тому что аватар легко может застрять на стыке разных сегментов стен там где в оригинале он точно бы был бы вытолкнут из стены и плавно проскользил бы дальше по касательной. Тут же скольжение сие явно имеет проблемы на стыке сегментов стен. Во вторых рендер тоже не без проблем и текстурные координаты явно плывут почему то в зависимости от угла зрения. Вот пример: ![]() Причём это работает для всех стен - максимально приближены текстуры к правильности если смотреть на них прямо. Но при повороте они начинают уплывать немного (на несколько текселей) от правильных позиций везде - на всех стенах, просто на больших стенах это заметно меньше. Интересно конечно в чём тут хинт и трик заключался оптимизационный что вот так вот. Интересно еще, что из-за того, что Рэнди брал готовые уже уровни и конвертировал их через утилиты его порт отличается от многих официальных портов на консоли тем, что его уровни не упрощены. А ведь даже на 32-битных консолях многие уровни резались в деталях чтобы приемлемо шевелиться! Столкнулся Рэнди с чипом SuperFX когда помогал кому то с игрой Dirt Trax FX для Sculptured Software и то ли сам другую игру делал, то ли что, но в общем им пришлось заказать у третьей фирмы соображающей в железе раскурочить картридж со Starfox чтобы вынуть оттуда SuperFX-1 и распаять всё на плату с ППЗУ и прочими схемами и её прошивать с ПК Amiga через параллельный порт воткнутый в порт геймпада SNES. Линделу пришлось самому и ассемблер даже написать и весь тулчейн, так что когда много позже когда уже проект порта Doom ожил и зашевелился в полную силу и Nintendo прислало официальный девкит, то ему пришлось немного его отреверсить чтобы продолжать работать со своими утилитами и тулчейном, но уже в финале образ заливать в официальный девкит. Причём т.к. первый SupefFX был именно FX-1 из Starfox, то он работает на половинной частоте чипа FX-2 который уже будет в порте Doom и это сразу было известно что надо будет в конце переходить на повышенную частоту, но за неимением девкита просто расковыряли картридж самого первого что появилось с SuperFX на рынке - Starfox. Интересно еще, что Рэнди утверждает, что основной проблемой было запихать весь контент в картридж и именно поэтому у пола и потолка нет текстурирования. Он говорит, что текстуры стен "сжаты по вертикали". А вот с полом сжать аналогично не получилось, т.к. его видно под разными углами. Это забавный момент - похоже что т.к. стены рендерятся вертикальными полосками всегда он применил RLE-кодирование вдоль вертикальных полосок пикселей и это позволило ему сильно ужать текстуры стен, т.к. алгоритм идёт вдоль последовательности сжатых байт всегда в одном направлении (например сверху-вниз). Но с полом это не сработало, т.к. он виден под разными углами. Вот это он и назвал причиной почему в Doom для SNES пол и потолок залиты одноцветно. Похвалил он способность SuperFX применять к пикселю затенение автоматически. Еще говорит, что ЦП в основном простаивал, а 95% работы делалось SuperFX, скорее всего ЦП использовался только для всякой подгрузки в музыкальный чип да опрос периферии и в основном простаивал ожидая когда SuperFX выполняет программу из ROM картриджа (этот вариант как раз блокирует работу ЦП из-за конкуренции за шины). Про чип SuperFX еще почитал в добавок и довольно забавный процессор. Действительно 16-битный и сильно заточенный под то чтобы рисовать произвольную графику на SNES (фреймбуфер), но хотя многое напоминает по своей работе RISC, но с другой стороны так много префиксов/суффиксов/непосредственных данных разной длины/специализированных регистров и асимметрий в операциях, что лично у меня язык едва ли повернётся назвать эту архитектуру RISC. Скорее это была мода того времени называть всё новое модное и немного непохожее на мейнстрим как "RISC" при паре совпадений только. Интересно так же было взглянуть и на исходные коды. Подавляющая их часть написана на трёх сильно разных ассемблерах. Во первых, конечно же ЦП SNES - WDC 65816. Но эти исходные коды перемежаются с ассемблером для чипа SuperFX. Тут важно заметить, что программировал Рэнди Линден тогда на компьютере Amiga и для написания тех же утилит по перегонке карт из оригинального Doom в свой порт писал код и для Амиги - и тоже на ассемблере! Попадается там и код на Си, но когда я смотрел (неделю назад) его совсем мало в основной ветке игры и он в основном применялся для создания предзаготовленных таблиц с математическими функциями - видимо потому что в Си были встроенные тригонометрические функции, т.е. язык который сейчас считается системным ну или низкоуровневым тогда у Рэнди играл роль скриптов на каком нибудь питоне в нынешних реалиях. Воистину забавно! Сообщение отредактировал aa-dav - Четверг, 30 июля 2020, 18:06 |
![]() ![]() ![]() |
Ответов
| shitter |
Вторник, 15 сентября 2020, 19:22
Отправлено
#2
|
![]() THAT A FU.. ![]() ![]() ![]() ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 8 474 Регистрация: 27 апр. 2007 Из: Озерск. Челябинская обл. Пользователь №: 22 018 ![]() ![]() |
QUOTE (rainstorm @ Вторник, 15 сентября 2020, 20:45) На 3до играл на оригинальном железе, к сожалению просадки фпс иногда превращают игру в пошаговую стратегию. Но в целом играбельно, да. Графон хороший. 32х не играл. Снес пытался на эмуляторе - вообще ничего не видно, увы, фильтры никакие не помогают. Есть надежда что на пузатом телике будет лучше выглядеть, но варианта проверить сейчас нет. Так же много играл на железе пс1(по линк кабелю проходили с другом) играбельно, но в дополнительных эпизодах фпс периодически уезжает на дно к СНЕС версии. И все бы ничего, но там много мест с прыжками, вот там вообще неиграбельно. на полный экран она подтормаживала иногда, если сделать небольшое уменьшение окна, буквально на один шаг, шла уже нормально Сообщение отредактировал shitter - Вторник, 15 сентября 2020, 19:23 -------------------- |
| dimm0505 |
Вторник, 15 сентября 2020, 19:23
Отправлено
#3
|
![]() Console Addict ![]() Группа: Супермодераторы Сообщений: 31 408 Регистрация: 21 янв. 2007 Из: СПб Пользователь №: 20 637 ![]() ![]() |
QUOTE (shitter @ Вторник, 15 сентября 2020, 19:22) Ты как будто не читаешь что тебе пишут -------------------- Switch1-2/Xbox SX/Steam Deck LE White/Quest 2/Retroid Pocket 4 Pro
|
| shitter |
Вторник, 15 сентября 2020, 19:24
Отправлено
#4
|
![]() THAT A FU.. ![]() ![]() ![]() ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 8 474 Регистрация: 27 апр. 2007 Из: Озерск. Челябинская обл. Пользователь №: 22 018 ![]() ![]() |
QUOTE (dimm0505 @ Вторник, 15 сентября 2020, 21:23) что не так? ну вот, если верить разрабу могло бы быть еще лучше Сообщение отредактировал shitter - Вторник, 15 сентября 2020, 19:26 -------------------- |
Posts in this topic
aa-dav Опубликованы исходные коды Doom для SNES Четверг, 30 июля 2020, 18:04
Kislorod Интересное чтиво. Ещё вроде говорилось, что вместо... Четверг, 30 июля 2020, 20:54
AtH
Кстати, это стандартный подход на Форте.
Изначал... Четверг, 13 августа 2020, 03:59
rainstorm Интересная статья. Дум, один из самых великих порт... Четверг, 30 июля 2020, 21:26
dimm0505
Этот Рэнди оказывается еще и bleem! с bleemca... Воскресенье, 09 августа 2020, 00:00
F1ReB4LL
В одной GBAшной игре этот косяк возвели в абсолю... Воскресенье, 09 августа 2020, 00:29
aa-dav
xD
У дума оно почти незаметно на далёких стенах, ... Понедельник, 10 августа 2020, 08:41
aa-dav
Это в целом типично для времени когда сопроцессо... Четверг, 13 августа 2020, 04:29
dimm0505
Хороший у тебя цикл статей, тем более на русском.... Четверг, 13 августа 2020, 22:50
aa-dav
Спасибо за оценку.
В предыдущей статье, кстати, ... Пятница, 14 августа 2020, 06:58
serguyan DOOM на снес - неиграбельное нечто.
Про что там в... Пятница, 14 августа 2020, 12:33
Nhisti
Всё оно было играбельное и выглядело тогда на ... Понедельник, 14 сентября 2020, 13:40
daxter. Можно было подумать, что на тех ПК дум летал. :lo... Понедельник, 14 сентября 2020, 13:45
dimm0505
Ну я так и понял, чтобы для удобства и быстроты ... Пятница, 14 августа 2020, 13:39
serguyan
Zero Tolerance тоже был на 16 бит приставке. И в... Пятница, 14 августа 2020, 18:46
aa-dav
Не соглашусь. Играл в эмуляторах и Zero Toleranc... Суббота, 15 августа 2020, 05:09
dimm0505
Я не знаю, может она жутко играбельная была эта ... Пятница, 14 августа 2020, 19:07
shitter
в версию на 32x можно спокойно играть и получать... Вторник, 15 сентября 2020, 18:05
rainstorm
На 3до играл на оригинальном железе, к сожалению ... Вторник, 15 сентября 2020, 18:45
daxter.
Там 60 FPS в режиме на одного игрока. Надо было ... Вторник, 15 сентября 2020, 22:17
Docuro-chan
Чёт я сильно сомневаюсь что в игре по "лану... Вторник, 15 сентября 2020, 23:49
dimm0505 Есть же оказывается два форка на гитхабе, с полной... Суббота, 15 августа 2020, 14:57
SCP-1471a Ну наконец-то хентай дум портируют на снес! Суббота, 15 августа 2020, 20:26
dimm0505
На SNES? :woot: На GBA же? Суббота, 15 августа 2020, 21:55
Docuro-chan
Играл в версию для 3ДО в 1996 и был в шоке ибо ки... Понедельник, 14 сентября 2020, 22:20
Axel089 Как вас тролль легко развел на говно :D Вторник, 15 сентября 2020, 01:15
dimm0505
Не играл, но читал интервью женщины ее разработч... Вторник, 15 сентября 2020, 19:19
dimm0505
Я тока в Final DOOM на PS1 играл, но тормоза там... Вторник, 15 сентября 2020, 23:14
dimm0505 Щас на свиче хорошо играется в классические думы, ... Среда, 16 сентября 2020, 00:06
rainstorm Кстати, немного не по теме, может есть какие верси... Среда, 16 сентября 2020, 12:12
Pressstart [img]https://freepngimg.com/download/doom/9-2-doom... Четверг, 17 апреля 2025, 17:01
daxter.
Ничего страшного, больше половины игр на N64 испо... Четверг, 17 апреля 2025, 17:50
mr.Shepenyk
Я больше скажу, большинство 3d картинок (рекламн... Четверг, 14 августа 2025, 13:27
Ol_ Ну да, негоже совершенной игровой системе Дум прои... Четверг, 17 апреля 2025, 17:34
Pressstart Плюс ко всему анонсирована поддержка Snes мыши:
ht... Среда, 13 августа 2025, 10:18
dimm0505 В дополнение вышенаписанному:
Рэнди Линден, извес... Среда, 13 августа 2025, 21:42
Pressstart Да, хоть этот "картридж" и новодел, но у... Четверг, 14 августа 2025, 09:31![]() ![]() |
1 чел. читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
| Упрощённая версия | Сейчас: Пт., 23 окт. 2026, 17:50 |

Четверг, 30 июля 2020, 18:04

















