3DO Doom sources released
Автор |
Сообщение |
aliast Специалист
Группа: Разработчики Сообщения: 1298 Регистрация: 04 дек 2009, 12:15
Модель 3DO: Нет
|
Ну точно, всё как я и думал :) Распаковывать не пробовал, лень 58 файлов вручную ковырять. Но в архиве с исходниками в файле Sprites3DO.zip\RawSprites\imp имеем искомые 58 файлов, 22 из которых соответствуют разным положениям, 32 картинки - те же положения с 4 разных углов поворота и ещё 5 - фаерболы импа в разных стадиях взрыва. Итого 27 разных спрайтов + 32 повортных. А выше у меня выходило 26 разных? нууу.. один где-то потерялся, хз. А в целом сходится. А кто тему создал? http://www.cyberforum.ru/c-beginners/thread1344230.html :)
|
30 янв 2015, 11:46 |
|
|
Versus Я консольный бог
Группа: Разработчики Сообщения: 9841 Регистрация: 04 дек 2009, 11:59 Откуда: Сочи
Модель 3DO: Panasonic FZ-10 NTSC-U
|
Я создал. А также: http://programmersforum.ru/showthread.php?t=271096http://forum.vingrad.ru/forum/topic-381 ... kerez.htmlДобавлено спустя 10 часов 49 минут 32 секунды:Все-таки вернусь к вопросу о LZSS. Данные НЕ запакованы? Или современная утилита makerez уже позаботилась о LZSS?
|
30 янв 2015, 13:45 |
|
|
aliast Специалист
Группа: Разработчики Сообщения: 1298 Регистрация: 04 дек 2009, 12:15
Модель 3DO: Нет
|
нету там никакого lzss в помине. Хотя Doom.wad может даже и запакован, пока не пойму. Только что проверил, он состоит из D002 - D0119 и размеры их не совпадают. Они и не должны (индексы вместо строк сокращают), но что-то уж больно сильно отличаются... Не исключено что отдельные файлы упакованы и уже потом обработаны makerez, а вовсе не комплексно. Нужно досконально всё распаковать, чтобы знать наверняка.
Хы-хы. Текстурки в Doom.wad (D002 в частности) - это всё те же CEL с порезанными заголовками, в которых до кучи порезали ещё и CCB флаги (нету PRE0, PRE1 и ещё некоторых данных перед ними), т.е. в этих файлах остались только PLUT и PDAT. Как их восстанавливать без флагов пока не понял, может они там во всех файлах одиаковые... Кому любопытно - сравните Flats 3DO.zip\Flats 3DO\CEIL3_2.cel и D0100 и увидите соответствие (в этих файлах PDAT и PLUT перепутаны местами, в CEIL3_2.cel первым идёт PDAT, а в D0100 первым PLUT)
|
31 янв 2015, 10:54 |
|
|
Versus Я консольный бог
Группа: Разработчики Сообщения: 9841 Регистрация: 04 дек 2009, 11:59 Откуда: Сочи
Модель 3DO: Panasonic FZ-10 NTSC-U
|
Я тут подумал... Когда мы компилируем makerez под виндой, то получаем типа исполняемый файл ELF (заголовок 7F 45 4C 46) List of file signaturesExecutable and Linkable FormatТо есть, запускать его нужно под Unix-ом?
|
01 фев 2015, 17:16 |
|
|
Versus Я консольный бог
Группа: Разработчики Сообщения: 9841 Регистрация: 04 дек 2009, 11:59 Откуда: Сочи
Модель 3DO: Panasonic FZ-10 NTSC-U
|
Чем дальше, тем мне более непонятно, зачем такие извращения...
|
02 фев 2015, 12:45 |
|
|
aliast Специалист
Группа: Разработчики Сообщения: 1298 Регистрация: 04 дек 2009, 12:15
Модель 3DO: Нет
|
Есть подозрение что всеми этими обрезаниями занимается 3DO SDK при запихивании всего этого дела в ZStream. Хотя как раз в Doom стрима вроде бы нету, есть только бургер, а в исходниках бургера ничего такого я не увидел. Просто меня настораживает тот факт, что в Killing Time имеют место очень похожие обрезания CEL внтури ARY массивов картинок, карты тоже разделены на набор лумпов (MAP - аналог лумпа BLOCKMAP в думе; VNT - аналог THING; VRT - аналог VERTEXES; FAC - возможный аналог LINEDEFS, насчёт последнего не уверен) и все эти MAP VNT VRT FAC ARY описываются в патенте US5577180, но я так и не понял это отсылка к SDK или всего лишь грамотно использованная технология без возможности скачать материал?
|
02 фев 2015, 16:41 |
|
|
Versus Я консольный бог
Группа: Разработчики Сообщения: 9841 Регистрация: 04 дек 2009, 11:59 Откуда: Сочи
Модель 3DO: Panasonic FZ-10 NTSC-U
|
В какой момент? В rezfile ведь уже лежат обрезанные. То есть, на пути винт компа -> rezfile обрезаются заголовки.
|
02 фев 2015, 17:48 |
|
|
Versus Я консольный бог
Группа: Разработчики Сообщения: 9841 Регистрация: 04 дек 2009, 11:59 Откуда: Сочи
Модель 3DO: Panasonic FZ-10 NTSC-U
|
|
03 фев 2015, 12:55 |
|
|
Versus Я консольный бог
Группа: Разработчики Сообщения: 9841 Регистрация: 04 дек 2009, 11:59 Откуда: Сочи
Модель 3DO: Panasonic FZ-10 NTSC-U
|
Вопрос к знающим. В rezfile файлы лежат без имен файлов? Просто один за другим, а нумерация указана в начале файла?
|
06 фев 2015, 11:34 |
|
|
aliast Специалист
Группа: Разработчики Сообщения: 1298 Регистрация: 04 дек 2009, 12:15
Модель 3DO: Нет
|
Да нет, в начале файла какие-то индексы текстур, с ними я всё ещё не разбирался. т.е. число текстур = 74, номер первой 2, число flat-поверхностей 43, первая флат-поверхность в файле с номером 76 (итого D002-D075 это текстуры, D076-D118 это флат-поверхности) дальше вроде бы ширина-высота и 00000000. А про сами текстуры я уже писал - у них нет заголовков секций PDAT, PLUT и плюс у них нет PRE0 и PRE1 по которым определяется размер, размер берётся из D001
|
06 фев 2015, 11:58 |
|
|
blabla Проходил мимо
Группа: Пользователи Сообщения: 6 Регистрация: 18 фев 2013, 00:17 Откуда: France
Модель 3DO: Нет
|
Hello, I was able to compile it on Windows. Here's a link to binairies (and source code) : https://gameblabla.olympe.in/files/doom3do-compiled.7zBut how can i run it on a real 3DO/emulator ? I tried to run it using my compiled binairy and package everything with OperaFS but the game does not run. Any ideas ? Thanks
|
10 фев 2015, 00:43 |
|
|
Versus Я консольный бог
Группа: Разработчики Сообщения: 9841 Регистрация: 04 дек 2009, 11:59 Откуда: Сочи
Модель 3DO: Panasonic FZ-10 NTSC-U
|
blablaHello! Try to get a System/Kernel folder and rom_tags and BannerScreen files from Game Guru disc and replace originals. Добавлено спустя 3 минуты 46 секунд:StackSize in makefile must be 10000. Try to use a GameGuru BannerScreen instead of your own (for test). It would be grateful if you'll look to the REZFILE direction We already recieved a workable launchme under Mac emulator. We still can't repack a REZFILE. I can upload a tuned Basilisk II emulator with Doom sources if you need it. New launchme is OK, I've tested all levels and all transitions between. Why do you removed this?
|
10 фев 2015, 10:20 |
|
|
aliast Специалист
Группа: Разработчики Сообщения: 1298 Регистрация: 04 дек 2009, 12:15
Модель 3DO: Нет
|
|
20 фев 2015, 10:59 |
|
|
Versus Я консольный бог
Группа: Разработчики Сообщения: 9841 Регистрация: 04 дек 2009, 11:59 Откуда: Сочи
Модель 3DO: Panasonic FZ-10 NTSC-U
|
Похоже на PortFolio page 85. То есть, отсылка на SDK.
|
20 фев 2015, 11:01 |
|
|
aliast Специалист
Группа: Разработчики Сообщения: 1298 Регистрация: 04 дек 2009, 12:15
Модель 3DO: Нет
|
Для PC есть редакторы, которые умеют сохранять лумпы из вадов в отдельные файлы. Это то что нам нужно, только формат лумпов на PC и 3DO отличается. Значит для обрезания нужен какой-то свой редактор карт для 3DO или хотя бы конвертер. Для той же JAGUAR версии дума такой конвертер есть, но и в JAGUAR формат не идентичен 3DO (он почти идентичен PC). Получается что игра просто работает с этими ресурсами, а паковать она их не умеет. Бургер этого тоже не делает :( Эти самые flat-поверхности есть не что иное как текстуры стен. Они описаны в лумпах SECTORS (rMAP+6) для первой карты это D0151. Здесь индекс 0 соответствует файлу D076, индекс 1 это D077 и т.д. Индексы выделены жирным. При конвертации PC в 3DO нужно менять имена текстур на индексы. Например, FLOOR5_4 превращается в 00 00 00 0D (D0089) т.е. rFLAT14+index где rFLAT14 это первая текстура стен. Ну или находим FLOOR5_4 в REZFILE (D0089) и отнимаем 76 = 89-76 = 13 (0xD) Путано, но на самом деле всё понятно. Можно спокойно писать конвертер, только лениво В лумпах SIDEDEFS используются первые файлы D002-D075 (D002 имеет индекс 0). Например, DOOR3 это индекс 11 (00 00 00 0B),т.е. DOOR3 из REZFILE (D0013) - 2 = 11. Но в этом лумпе текстуры может и не быть! В этом случае на PC пишется символ тире "-", а на 3DO ставится индекс 00 00 00 3A который по идее означает текстуру ASH01 фиг знает почему так. С картами закончили. Остальное по идее всё понятно. Рисуем карту PC редакторами карт, сохраняем каждый лумп в отдельный файл (некоторые редакторы это умеют) и скармливаем эти файлы конвертеру. Конвертер меняет endian и делает все PC 2-байтовые данные на 3DO 4-байтовыми, а PC 1-байтовые делает 3DO 2-байтовыми. Текстовые имена текстур меняем на индексы как описано выше. Готово! Осталось закодить конвертер))))) Дальше все неточности будем допиливать. Осталось раздербанить здоровый doom.wad c кучей лумпов :)
|
24 фев 2015, 05:59 |
|
|
Versus Я консольный бог
Группа: Разработчики Сообщения: 9841 Регистрация: 04 дек 2009, 11:59 Откуда: Сочи
Модель 3DO: Panasonic FZ-10 NTSC-U
|
Маладца! Я уж подумал, что все, приехали, надежда на Doom 2 задохлась. А как все это хозяйство потом заталкивать в один REZFILE? Особенно, если будет новая графика для меню.
|
24 фев 2015, 10:16 |
|
|
Author Приставочник
Группа: Разработчики Сообщения: 1211 Регистрация: 08 фев 2012, 13:12
Модель 3DO: Panasonic FZ-10 NTSC-J
|
aliast, мне бы твою соображалку :)
|
24 фев 2015, 10:40 |
|
|
aliast Специалист
Группа: Разработчики Сообщения: 1298 Регистрация: 04 дек 2009, 12:15
Модель 3DO: Нет
|
Да капец конечно, головняков ещё предвидится... новые текстуры видимо придётся прописывать в doomrez.h и менять нумерацию в D0001 и неизвестно хватит этого или нет. Может ещё исходники придётся править, пока не знаю. До этого ещё далеко. Для начала хоть бы научиться редактировать что есть и запихивать это в rezfile. Сейчас сижу разбираюсь почему в THINGS (D0145) угол поворота объектов на карте не совпадает с оригинал в Map01.wad. И не догоняю... несоответствие градусов в PC и на 3DO? Жесть какая.. так то бог с ним с поворотом, ну подумаешь неписи не туда смотреть будут, но глюк странный. Разобрался вроде - углы поворота надо делить на 1.40625, т.е. вместо 90 на PC на 3DO будет 90/1.40625 = 64 (0x40) Что такое число 1.40625? Это преобразование угла в байт. т.е. макс. значение угла в круге 360, а макс. значение одного байта 256 (0xFF). Делим 360/256 = 1.40625.
Последний раз редактировалось aliast 24 фев 2015, 12:21, всего редактировалось 6 раз(а).
|
24 фев 2015, 11:14 |
|
|
Versus Я консольный бог
Группа: Разработчики Сообщения: 9841 Регистрация: 04 дек 2009, 11:59 Откуда: Сочи
Модель 3DO: Panasonic FZ-10 NTSC-U
|
Это само собой. Это же относится к прописыванию новых вражин и оружия, но это дело будущего. С тем еще более-менее понятно. Добавлено спустя 2 часа 9 минут 3 секунды: И как ты до всего этого докопался? Поражаюсь.
|
24 фев 2015, 11:20 |
|
|
aliast Специалист
Группа: Разработчики Сообщения: 1298 Регистрация: 04 дек 2009, 12:15
Модель 3DO: Нет
|
Начал писать конвертер карт. Первые два лумпа создаются правильно, но вот с третьим затык. Не могу придумать как заменить текстуры на индексы. Хотелось бы вынести список текстур в отдельный от исходников программы файл и ставить индексы согласно его содержанию. Решил выдожить исходники того что есть. В файле textures.h создал enum с перечислением всех текстур, используемых в лумпе SIDEDEFS. Именно такие имена текстур встречаются в вадах, но как их конвертнуть в цифры (или скорее сопоставить названия из перечисления со строками) не могу сообразить. Инет предлагает делать замену через switch-case, но там же 76 текстур! :( Вдобавок такой вариант будет намервто вшит в конвертер и при добавлении в игру новых текстур придётся каждый раз его пересобирать... (вариант с файлом textures.h кстати тоже) PS нужно не забыть в список текстур добавить строку тире "-" (в перечислении такой знак хрен поставишь) и приравнять её к индексу 58 (ASH01). Я так и не понял как игра отличает отсутствие текстуры "-" от текстуры ASH01. Нашёл карту с ASH01 и действительно и там и там индекс один ставится https://yadi.sk/d/f7OcnVA5ewTSF
|
28 фев 2015, 15:41 |
|
|
Versus Я консольный бог
Группа: Разработчики Сообщения: 9841 Регистрация: 04 дек 2009, 11:59 Откуда: Сочи
Модель 3DO: Panasonic FZ-10 NTSC-U
|
О! Вижу, процесс цветет и пахнет! Помочь, к сожалению, не могу. Может Author что-нибудь скажет. Добавлено спустя 2 часа 27 секунд:Че-то 3DOWADConv.exe говорит, что не является приложением Win32.
|
28 фев 2015, 17:40 |
|
|
Versus Я консольный бог
Группа: Разработчики Сообщения: 9841 Регистрация: 04 дек 2009, 11:59 Откуда: Сочи
Модель 3DO: Panasonic FZ-10 NTSC-U
|
aliast А если файл с перечислениями текстур читать как текстовый? У нас будет тогда соответствие номера строки и названия текстуры. То есть, читаем строку, запоминаем её порядковый номер в одномерный массив. Саму строку запоминаем в другой одномерный массив. И так до конца файла, исключая строки первые и последние. Громоздко, но работоспособно. Мы в любой момент получим доступ к самой строке и соответствующем ей порядковому номеру (значению в другом массиве).
|
01 мар 2015, 12:12 |
|
|
aliast Специалист
Группа: Разработчики Сообщения: 1298 Регистрация: 04 дек 2009, 12:15
Модель 3DO: Нет
|
Она наверное собралась как 64-битка. Не знаю почему, вроде Win32 в конфиге стоит. Компоновщик -> Дополнительно -> Конечный компьютер -> MachineX86 (/MACHINE:X86). Так что хз.
|
01 мар 2015, 12:18 |
|
|
Versus Я консольный бог
Группа: Разработчики Сообщения: 9841 Регистрация: 04 дек 2009, 11:59 Откуда: Сочи
Модель 3DO: Panasonic FZ-10 NTSC-U
|
aliast Получится так, как я выше написал?
|
02 мар 2015, 17:29 |
|
|
aliast Специалист
Группа: Разработчики Сообщения: 1298 Регистрация: 04 дек 2009, 12:15
Модель 3DO: Нет
|
Вроде бы сделал вариант с добиванием всех имён текстур до 8 символов. Если букв меньше - добавляем любой знак, например "METAL1++". Затем функцией strstr получил позицию первой буквы нужной текстуры и поделил на 9 (8 букв плюс символ новой строки). Работает, только эта собака strstr различает регистры. STWAR01 находит, а от stwar01 мозги закипают. Будем думать как пофиксить.
|
03 мар 2015, 08:23 |
|
|
Versus Я консольный бог
Группа: Разработчики Сообщения: 9841 Регистрация: 04 дек 2009, 11:59 Откуда: Сочи
Модель 3DO: Panasonic FZ-10 NTSC-U
|
А если сначала все символы перевести в верхний регистр. Так: http://www.cplusplus.com/reference/cctype/toupper/
|
03 мар 2015, 10:37 |
|
|
aliast Специалист
Группа: Разработчики Сообщения: 1298 Регистрация: 04 дек 2009, 12:15
Модель 3DO: Нет
|
Сделал через пень-колоду (пока только 4 лумпа из 10) Начал тестить и на MAP03.wad образовалась неточность с подсчетом количества enries в лумпе things. У меня на 1 меньше чем в D0165 - должно быть 0x11A, а у них 0x11B. По всему выходит что в игре на 3 карте был добавлен ещё один предмет (аптечка, патроны, враг) и в прилагаемом в исходниках дума MAP03.wad это не отражено, т.е. мой конвертер работает правильно. Был добавлен шар invisibility
|
04 мар 2015, 07:24 |
|
|
Versus Я консольный бог
Группа: Разработчики Сообщения: 9841 Регистрация: 04 дек 2009, 11:59 Откуда: Сочи
Модель 3DO: Panasonic FZ-10 NTSC-U
|
aliastЧто ни день, то праздник. Скажи, а исходники makerez тебе хоть чем-то помогают?
|
04 мар 2015, 13:42 |
|
|
aliast Специалист
Группа: Разработчики Сообщения: 1298 Регистрация: 04 дек 2009, 12:15
Модель 3DO: Нет
|
На данный момент завершены 7 лумпов из 10. В лумпе секторов индексы текстур тоже вычисляются, но там как оказалось некоторые текстуры берутся из списка FLAT-поверхностей, а некоторые из первого списка текстур и у них индексы пересекаются. С ними пока затык. То ли там такая же канитель как с символом прочерка (нет текстуры) и текстрой ASH01 (один индекс на двоих), толи как-то по другому, пока не разобрался. Да вроде пока не особо. Сейчас закончу с конвертером карт и надо будет вернуться к вопросу запаковки.
|
04 мар 2015, 15:07 |
|
|
aliast Специалист
Группа: Разработчики Сообщения: 1298 Регистрация: 04 дек 2009, 12:15
Модель 3DO: Нет
|
Хах... на 10 лумпе я похоже надолго застряну :( Отличия от вада кардинальные. Там в начале файла идут смещения к.. не важно к чему (к ID линий из лумпа linedef). Так вот если в ваде все одинаковые ID повторяются/дублируются и занимают место, то в 3DO поступили хитрее - все такие одинаковые повторения объединили одной записью и в начале файла пишется один оффсет на все случаи. В формате я разобрался, ничего сложного. Надо это всё компьютеру объяснить :) А вот 9-ый лумп Reject порадовал больше всего - он тупо выдирается из вада и вставляется в отдельный файл. Не надо никакие байты переворачивать, ничего вообще делать, только вырезать в отдельный файл и всё. Лафа... Итак, остался последний лумп..
|
05 мар 2015, 07:44 |
|
|