Forums Logo

Здравствуйте Гость ( Вход | Регистрация )

Каскадный · Стандартный · [ Линейный ]

> Опубликованы исходные коды Doom для SNES

aa-dav
post Четверг, 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-битной системы это очень впечатляет!

То что код другой заметно по тому что аватар легко может застрять на стыке разных сегментов стен там где в оригинале он точно бы был бы вытолкнут из стены и плавно проскользил бы дальше по касательной. Тут же скольжение сие явно имеет проблемы на стыке сегментов стен.
Во вторых рендер тоже не без проблем и текстурные координаты явно плывут почему то в зависимости от угла зрения.
Вот пример:
user posted image
Причём это работает для всех стен - максимально приближены текстуры к правильности если смотреть на них прямо. Но при повороте они начинают уплывать немного (на несколько текселей) от правильных позиций везде - на всех стенах, просто на больших стенах это заметно меньше.
Интересно конечно в чём тут хинт и трик заключался оптимизационный что вот так вот.

Интересно еще, что из-за того, что Рэнди брал готовые уже уровни и конвертировал их через утилиты его порт отличается от многих официальных портов на консоли тем, что его уровни не упрощены. А ведь даже на 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
User is offlineProfile CardPM
Go to the top of the page
+Quote Post
Reply to this topicStart new topicStart Poll
Ответов(20 - 32)
Docuro-chan
post Понедельник, 14 сентября 2020, 22:20
Отправлено #21


заряжаю супер
***

Группа: Пользователи
Сообщений: 221
Регистрация: 12 янв. 2012
Из: Снежинск
Пользователь №: 43 644





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

Играл в версию для 3ДО в 1996 и был в шоке ибо кипятком заливал соседей. Там всё отлично кроме фпс в отличии от снес. Это сейчас мы знаем печальную историю почему так вышло с портом.
И ZТ удивлял разнообразием оружия и даже условным ролеплеем после дума в тех же годах. так что и снес уже бы не удивила апосля

Сообщение отредактировал Docuro-chan - Понедельник, 14 сентября 2020, 22:21
User is offlineProfile CardPM
Go to the top of the page
+Quote Post
Axel089
post Вторник, 15 сентября 2020, 01:15
Отправлено #22


Завсегдатай
*******

Группа: Пользователи
Сообщений: 8 706
Регистрация: 05 авг. 2007
Из: Ростов-на-Дону
Пользователь №: 23 304





Как вас тролль легко развел на говно lol.gif


--------------------
3DO / AV Famicom / Amiga CD32 / CD-i / Dendy Classic / Dendy Junior / Dreamcast / DSi LL / Famicom / Famicom Disc System / FM Towns Marty / Gamecube / Genesis / Genesis 2 / Genesis 3 / Jaguar / Jaguar CD / Mega Drive / Mega Drive 2 / Mega Drive 32x / Mega-CD 2 / Neo Geo CDZ / Neo Geo Pocket Color / New 3DS XL / Nintendo 64 / Nvidia Shield Portable / PC Engine Duo RX / PC-FX / Pippin / Playdia / PS1 / PS one / PS2 / PS3 Slim / PS5 / PSP / PS Vita / Saturn / SNES / Switch / Virtual Boy / Wii / Wii U / Xbox / Xbox 360 / Xbox Series X

Моя коллекция консолей, видеоигр и аксессуаров
User is offlineProfile CardPM
Go to the top of the page
+Quote Post
shitter
post Вторник, 15 сентября 2020, 18:05
Отправлено #23


THAT A FU..
*******

Группа: Пользователи
Сообщений: 8 466
Регистрация: 27 апр. 2007
Из: Озерск. Челябинская обл.
Пользователь №: 22 018





QUOTE (dimm0505 @ Пятница, 14 августа 2020, 21:07)
Безусловно, графически и в отношении производительности, 32x побеждала (в SNES версии нет текстур на полу и потолке):


Но! В SNES версии было больше уровней (22 из PC версии) против 16 в 32x (из версии для Jaguar), в СНЕС версии была лучше музыка. Ну и разница в цене.
*

в версию на 32x можно спокойно играть и получать удовольствие от этого. версия же на снес не играбельна в принципе. зато музон чуть получше, да ))

в тоже время на 3do была отличная версия, снес тихо плачет в сторонке

Сообщение отредактировал shitter - Вторник, 15 сентября 2020, 18:08


--------------------
user posted image
User is offlineProfile CardPM
Go to the top of the page
+Quote Post
rainstorm
post Вторник, 15 сентября 2020, 18:45
Отправлено #24


Маньяк
****

Группа: Пользователи
Сообщений: 491
Регистрация: 17 нояб. 2016
Пользователь №: 56 998





QUOTE (shitter @ Вторник, 15 сентября 2020, 18:05)

в версию на 32x можно спокойно играть и получать удовольствие от этого. версия же на снес не играбельна в принципе. зато музон чуть получше, да ))

в тоже время на 3do была отличная версия, снес тихо плачет в сторонке
*

На 3до играл на оригинальном железе, к сожалению просадки фпс иногда превращают игру в пошаговую стратегию. Но в целом играбельно, да. Графон хороший. 32х не играл. Снес пытался на эмуляторе - вообще ничего не видно, увы, фильтры никакие не помогают. Есть надежда что на пузатом телике будет лучше выглядеть, но варианта проверить сейчас нет.
Так же много играл на железе пс1(по линк кабелю проходили с другом) играбельно, но в дополнительных эпизодах фпс периодически уезжает на дно к СНЕС версии. И все бы ничего, но там много мест с прыжками, вот там вообще неиграбельно.

Сообщение отредактировал rainstorm - Вторник, 15 сентября 2020, 18:46
User is offlineProfile CardPM
Go to the top of the page
+Quote Post
dimm0505
post Вторник, 15 сентября 2020, 19:19
Отправлено #25


Console Addict
Group Icon

Группа: Супермодераторы
Сообщений: 28 801
Регистрация: 21 янв. 2007
Из: СПб
Пользователь №: 20 637





QUOTE (shitter @ Сегодня, 18:05)

в тоже время на 3do была отличная версия
*


Не играл, но читал интервью женщины ее разработчика, она сама ее называла адом (но понятно что лучше SNES версии). Ей просто не дали времени на оптимизацию вообще, так-то могло быть гораздо лучше.





Музон там хороший, да.


--------------------
GBA SP/GB Micro/Switch/PS2/XB360/XBO/NESC/SNESC/PSC/Quest 2
User is offlineProfile CardPM
Go to the top of the page
+Quote Post
shitter
post Вторник, 15 сентября 2020, 19:22
Отправлено #26


THAT A FU..
*******

Группа: Пользователи
Сообщений: 8 466
Регистрация: 27 апр. 2007
Из: Озерск. Челябинская обл.
Пользователь №: 22 018





QUOTE (rainstorm @ Вторник, 15 сентября 2020, 20:45)

На 3до играл на оригинальном железе, к сожалению просадки фпс иногда превращают игру в пошаговую стратегию. Но в целом играбельно, да. Графон хороший. 32х не играл. Снес пытался на эмуляторе - вообще ничего не видно, увы, фильтры никакие не помогают. Есть надежда что на пузатом телике будет лучше выглядеть, но варианта проверить сейчас нет.
Так же много играл на железе пс1(по линк кабелю проходили с другом) играбельно, но в дополнительных эпизодах фпс периодически уезжает на дно к СНЕС версии. И все бы ничего, но там много мест с прыжками, вот там вообще неиграбельно.
*

на полный экран она подтормаживала иногда, если сделать небольшое уменьшение окна, буквально на один шаг, шла уже нормально

Сообщение отредактировал shitter - Вторник, 15 сентября 2020, 19:23


--------------------
user posted image
User is offlineProfile CardPM
Go to the top of the page
+Quote Post
dimm0505
post Вторник, 15 сентября 2020, 19:23
Отправлено #27


Console Addict
Group Icon

Группа: Супермодераторы
Сообщений: 28 801
Регистрация: 21 янв. 2007
Из: СПб
Пользователь №: 20 637





QUOTE (shitter @ Вторник, 15 сентября 2020, 19:22)

на полный экран она слегка подтормаживала, если сделать небольшое уменьшение окна шла уже нормально
*

Ты как будто не читаешь что тебе пишут hmm.gif


--------------------
GBA SP/GB Micro/Switch/PS2/XB360/XBO/NESC/SNESC/PSC/Quest 2
User is offlineProfile CardPM
Go to the top of the page
+Quote Post
shitter
post Вторник, 15 сентября 2020, 19:24
Отправлено #28


THAT A FU..
*******

Группа: Пользователи
Сообщений: 8 466
Регистрация: 27 апр. 2007
Из: Озерск. Челябинская обл.
Пользователь №: 22 018





QUOTE (dimm0505 @ Вторник, 15 сентября 2020, 21:23)

Ты как будто не читаешь что тебе пишут hmm.gif
*

что не так?

ну вот, если верить разрабу могло бы быть еще лучше smile.gif

Сообщение отредактировал shitter - Вторник, 15 сентября 2020, 19:26


--------------------
user posted image
User is offlineProfile CardPM
Go to the top of the page
+Quote Post
daxter.
post Вторник, 15 сентября 2020, 22:17
Отправлено #29


флуд мастер 99LV
*******

Группа: Пользователи
Сообщений: 5 737
Регистрация: 23 апр. 2010
Пользователь №: 36 666





QUOTE (rainstorm @ Вторник, 15 сентября 2020, 19:45)

Так же много играл на железе пс1(по линк кабелю проходили с другом) играбельно, но в дополнительных эпизодах фпс периодически уезжает на дно к СНЕС версии. И все бы ничего, но там много мест с прыжками, вот там вообще неиграбельно.
*


Там 60 FPS в режиме на одного игрока. Надо было в одного шпилить.

Видимо, на двоих сильно режется производительность.
User is offlineProfile CardPM
Go to the top of the page
+Quote Post
dimm0505
post Вторник, 15 сентября 2020, 23:14
Отправлено #30


Console Addict
Group Icon

Группа: Супермодераторы
Сообщений: 28 801
Регистрация: 21 янв. 2007
Из: СПб
Пользователь №: 20 637





QUOTE (daxter. @ Сегодня, 22:17)

Там 60 FPS в режиме на одного игрока.
*


Я тока в Final DOOM на PS1 играл, но тормоза там иногда были дай бог каждому, в режиме одного игрока.


--------------------
GBA SP/GB Micro/Switch/PS2/XB360/XBO/NESC/SNESC/PSC/Quest 2
User is offlineProfile CardPM
Go to the top of the page
+Quote Post
Docuro-chan
post Вторник, 15 сентября 2020, 23:49
Отправлено #31


заряжаю супер
***

Группа: Пользователи
Сообщений: 221
Регистрация: 12 янв. 2012
Из: Снежинск
Пользователь №: 43 644





QUOTE
Там 60 FPS в режиме на одного игрока. Надо было в одного шпилить.

Чёт я сильно сомневаюсь что в игре по "лану" производительность особо режется. Это же не сплитскрин

Сообщение отредактировал Docuro-chan - Вторник, 15 сентября 2020, 23:49
User is offlineProfile CardPM
Go to the top of the page
+Quote Post
dimm0505
post Среда, 16 сентября 2020, 00:06
Отправлено #32


Console Addict
Group Icon

Группа: Супермодераторы
Сообщений: 28 801
Регистрация: 21 янв. 2007
Из: СПб
Пользователь №: 20 637





Щас на свиче хорошо играется в классические думы, 60fps, 16:9 сделали наконец. Даже поддержка выбранных модов есть.


--------------------
GBA SP/GB Micro/Switch/PS2/XB360/XBO/NESC/SNESC/PSC/Quest 2
User is offlineProfile CardPM
Go to the top of the page
+Quote Post
rainstorm
post Среда, 16 сентября 2020, 12:12
Отправлено #33


Маньяк
****

Группа: Пользователи
Сообщений: 491
Регистрация: 17 нояб. 2016
Пользователь №: 56 998





Кстати, немного не по теме, может есть какие версии коопа этой игры с челленджем? На пс 1 по линк кабелю был просто бесконечный респавн после смерти. Мы конечно договаривались с товарищем, 3 убийства = перезапуск уровня, но это все не то. Вроде как во всех версиях так?
User is offlineProfile CardPM
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
2 чел. читают эту тему (2 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
 

Упрощённая версия Сейчас: Сб., 25 мая. 2024, 15:03
Skin Designed (c) by Rooq.net, All Rights Reserved.