Правила, действующие в этом форуме и всех его подфорумах:
1) Запрещена реклама в любых её проявлениях (сразу бан без предупреждения)! 2) Мат тоже не приветствуется на форуме, но иногда можно выразить свои чувства ( лучше заменяйте матные слова точками, пробелами, другими буквами)! 3) Категорически запрещается унижать, посылать, издеваться над участниками форума! Мы здесь все - одна большая и дружная семья! Поэтому за нарушение этого правила автоматически будем банить! 4) Разрешены ссылки на информацию, которые относятся к тому или иному разделу форума! 5) Ссылки не в тему будут удаляться и пользователь получит предупреждение или будет забанен! 6) Пользователям разрешено задавать любые вопросы относящиеся к теме, а мы все дружно ответим на эти вопросы. А также отвечать на вопросы и высказывать своё мнение. 7) Повторные темы, которые будут создаваться, будут удалены! Создавайте темы, удостоверившись, что такой темы нет на форуме! 8) Запрещён флуд во всех его проявлениях, сообщения не по теме, сообщения состоящие из одного или нескольких смайликов без текста, сообщения типа - Вах!, Рулез!, Круто! и т.п. Пользуйтесь пожалуйста кнопкой [EDIT], не плодите бессодержательные сообщения. 9) Использование смайликов разрешается не более 3-х подряд!
Да, это малоизвестный порт Doom на 3DO. Во-первых, это была работа продолжительностью в 10 недель. Меня ввели в заблуждение о степени готовности порта, когда предлагали эту работу. Мне говорили, что была версия с новыми уровнями, оружием и фишками, и нужно было всего лишь "отполировать" и оптимизировать код до выпуска на прилавки. После моих неоднократных просьб предоставить эту версию, мне стало известно, что ее не существует. Art Data ошибочно предполагали, что для портирования игры с одной платформы на другую достаточно всего лишь откомпилировать код и добавить новое оружие проще простого.
О, нет...
Мои друзья в 3DO просили Doom, они хотели, чтобы игра была на их платформе. А так как Рождество 1995 было скоро (я взяла эту работу в Августе 1995 до середины октября «ухода на золото»), я фактически жила в офисе, прерываясь только на сон, доделала работу.
Примечания…
У меня не было времени, чтобы портировать драйвер музыки. У меня в распоряжении была музыкальная группа, которую наняла Art Data для переделки саундтрека. Все, что мне нужно было сделать, это использовать потоковое аудио.
Это было замечательным ходом, потому что в сравнении с тусклой графикой, музыка получила хорошие отзывы.
Операционная система 3DO была спроектирована так, что не затрагивала запущенные приложения и очистку памяти. От этого было много ошибок, вызванных утечкой памяти. Итак, когда я хотела запустить Logicware и id software логотипы при загрузке игры, память 3DO «забивалась» и не очищалась. Чтобы решить эту проблему, я написала 2 приложения: одно для показа 3DO логотипа, и другую для показа logicware логотипа. После их отработки, они удалялись из памяти и освобождали место для загрузки основной игры. Основное приложение уже работало без утечек памяти.
В исходниках есть видеоролик логотипа Electronic Arts, потому что было время, когда EA собирались распространять игру, но сделка не состоялась.
Вертикальные стены отрисовываются полосами, используя cel-engine. Однако, cel-engine не поддерживает перспективное 3D изображение, поэтому пол и потолок отрисовываются программно. У меня просто не хватило времени, чтобы полностью перевести весь код на cel-engine, поэтому сейчас присутствуют разрывы между текстур.
Мне пришлось написать собственную библиотеку ANSI C string.h потому что 3DO поставляла string.h с ошибками!!! Как это могло произойти?!?! А они это сделали! Я потратила день на переписывание всех необходимых мне функций в ARM 6.
Эта игра использует Burgerlib 2. Моя первая «С» версия Burgerlib, потому что оригинальная Burgerlib была разработана 65816 для SNES на Apple IIgs. Если вы сверитесь с библиотекой Burgerlib 5 (текущая версия на данный момент на github), вы обратите внимание, что некоторые куски кода все еще используются.
Я надеюсь, что каждый, кто просмотрит этот код, узнает что-то новое. Я была бы счастлива ответить на вопросы об этом аде, который я прошла, чтобы сделать эту игру. Единственное, чего бы я хотела, так это больше времени для полировки кода в 1995, чтобы вместо худшего порта Doom получился бы лучший.
И еще...
Интеллектуальная собственность Doom является эксклюзивной собственностью ZeniMax. Это предложение я не понял. No transfer of the intellectual property of DOOM or any transfer of the ownership of the sounds, art or other game assets are given nor implied. Если кто-нибудь хочет продавать 3DO версию Doom, свяжитесь с ZeniMax для выдачи лицензии.
Rebecca Ann Heineman Olde Skuul Seattle, WA
_______________________________________ There are 10 types of people in the world: those who understand binary, and those who don't.
Попыток не было. Была версия от Jaguar. А там лимит на размер ROM.
Добавлено спустя 5 минут 54 секунды:
aliast писал(а):
Собрал под виндой, запустил на FreeDO. А Мак-версию я не знаю как собрать, не дружу с MPW Shell
Как я понял, мы получили exe утилиты, которая должна запаковать все наши спрайты и прочее в REZFILE. Видимо, ее нужно запустить из командной строки с аргументами (исходные папки/файлы, выходной REZFILE). Делать это, скорее всего, придется в MPW Shell. Кто умеет, посмотрите в исходниках, какие должны быть аргументы и как вводятся?
_______________________________________ There are 10 types of people in the world: those who understand binary, and those who don't.
Попытки были до того, как они связались с Logicware. Были планы на новые уровни, FMV вставки, новое оружие. Из этого всего в финальный билд перешла музыка, и скорее всего этот уровень может быть огрызком из того периода.
Кто-нибудь, кто знает С# гляньте исходники makerez. Интересует, как эту прогу использовать после ее компиляции? Нужны ли аргументы? Необходим ли внешний скрипт? Требования к размещению исходных файлов? Параметры сжатия (LZSS or RLE)?
Добавлено спустя 6 минут 57 секунд: Обнаружил мини-мануал.
"# v1.3 Copyright 1997 by LogicWare\n" "# This program will create a resource data file using a script\n" "# Usage: MakeRez Infile\n" "# Switches : [-H] = Do not save the .h file EVER!, [-V] Verbose output\n" "# [-B4000] Number of resource entries to allocate internally.\n" "# Script commands are as follows\n" "# TYPE 1-65535 [1]\n" "# ENDIAN BIG | LITTLE [LITTLE]\n" "# COMPRESS LZSS | NONE [NONE]\n" "# OUTPUTNAME Filename.rez [RezFile]\n" "# HEADERFILE Header.h\n" "# LOADFIXED\n" "# LOADHANDLE\n" "# LOAD 1-65535 Filename\n" "# LOADNEXT Filename\n" "# HLOAD rRezRef 1-65535 Filename\n" "# HLOADNEXT rRezRef Filename\n"
Добавлено спустя 2 часа 17 минут 41 секунду: Сравнил несколько библиотек из SDK и из комплекта компиляции под Win. Идентичны. Из чего следует вывод, что, добавив библиотеку Burgerlib и прочие из комплекта, можно получить тот же функционал.
_______________________________________ There are 10 types of people in the world: those who understand binary, and those who don't.
Не знаю, что случилось, но я почему-то не могу сделать makefile средствами 3DO SDK. При любом раскладе (исходнике) выкидывает вот это: Никто не знает, как это починить? На этом же скрине в тексте видна ошибка компиляции. Компилятор не может создать промежуточный файл Ammain.c.o. По какой причине также не понятно, диск работает и на запись и на чтение.
Добавлено спустя 1 минуту 55 секунд: А вот ошибка в файле Threedo.c, при попытке скомпилировать исходники под Windows. Также никаких соображений по фиксу этой траблы.
Добавлено спустя 42 минуты 8 секунд: Удалось победить создание промежуточного файла Ammain.c.o. Остальные ошибки остались.
Добавлено спустя 1 час 9 минут 18 секунд: А вот MPW Shell выдает практически тоже самое, только на 2 ошибки больше.
Добавлено спустя 54 минуты 5 секунд:
aliast писал(а):
Да а смысл сейчас что-то объяснять, если я сделал ерунду) В двух словах: скопировал Burger.lib и Burger.h в 3DO SDK папки includes и lib соответственно, прописал Burger.lib в makefile в разделе где перечисляются все либы, добавил туда же armlib_n.32b (без неё ругается на fgets) Также пришлось добавить в исходник проги #include "filestream.h" иначе ругалось на FSEEK_SET. Вроде бы всё.
Можешь дать свои папки с libs и includes, а также makefile для этой проги?
Добавлено спустя 46 минут 44 секунды: Оказывается, ошибка не нова. 3DO SDK Видимо, у меня что-то работает не так.
_______________________________________ There are 10 types of people in the world: those who understand binary, and those who don't.
Эта ошибка фиксится заменой строк #include <stdio.h> на #include"stdio.h"
Versus писал(а):
А вот ошибка в файле Threedo.c, при попытке скомпилировать исходники под Windows. Также никаких соображений по фиксу этой траблы
1) Ошибку с Rect я решил, переименовав Rect в rect (в graphics.h, хотя править что-то в SDK явно не правильно, разве что Дум собирался в другой версии 3DO SDK?) 2) FadeToBlack я вроде бы тупо закомментировал В результате вылезла ещё 18 ошибок о ненайленных символах. Скорее всего там надо какие-то либы подключать, а какие - непонятно. После подключения IntMath.lib часть ошибок пропала, но не все.
aliast Выручай. Сделал, как ты написал (кавычки, Rect->rect, FadeToBlack закомментировал). Откомпилировал Doom. Так экзешник получается совершенно другим, да еще и размер отличается. Исходный Launchme от игры - 222 кб, скомпилированный - 237 кб. Пришлось закомментировать строку FadeToBlack в displayutils.h. Игра не запускается вообще. А с Makerez тоже фигня какая-то. В исходниках поправил <> на "", где требовалось, не помогает.
Добавлено спустя 8 минут 10 секунд: Пробовал скомпилить 2 разных исходника Makerez. Результат - на скринах.
Добавлено спустя 4 минуты 36 секунд: Не раскроешь секрет своих MakeFile? У меня для Doom получился такой:
Но у меня так и не получилось скомпилировать сам Дум, только Makerez :( По ошибкам: 1) static char RezFileName[32] = "RezFile"; заменить на char RezFileName[32] = "RezFile"; 2) Подключить #include <filestream.h> 3) Подключить либу armlib_c.32b (у тебя armlib.32b? Видимо в ней нет функции fgets(), хз) Короче, у меня не было столько ошибок :) Там ещё остаётся ошибка со знаком "=", я не помню как её исправить. Сейчас сравнил оригинальный файл с моим MakeRez.c Вот отличия: 1)
#define FadeToBlack() FadeToBlackX() /* The 3DO library has a call like this */
говорит нам о том, что когда в коде встречается FadeToBlack(), ее нужно понимать, как FadeToBlackX(). А уже в свою очередь FadeToBlackX() работает несколько по-другому, чем в стоковом SDK. Механизм FadeToBlackX() прописан в fadetoblack.c.
_______________________________________ There are 10 types of people in the world: those who understand binary, and those who don't.
Заметил, что исходники, переброшенные в эмулятор Мака, не распознаются корректно. В частности, makefile исходников logo.c. Под виндой файлы открываются нормально, а в Маке makefile не полностью распознается при открытии. Текст присутствует, но символы перехода строк сбиты, да и может еще чего... Тоже самое с исходниками Doom. Пока я не взял zip архив, присланный Ребеккой и не распаковал его уже в Маке, makefile так и отказывался читаться корректно. И, да, MPW эти файлы "не видит". Если запаковать исходники в zip в винде, а потом распаковать в Маке (ну как гарантия переноса без порчи) все равно файлы не читаются. Причем, это касается и *.c файлов. В чем трабла - хз...
_______________________________________ There are 10 types of people in the world: those who understand binary, and those who don't.
Я ж говорю, не разбирался, но что не открывается в одной системе, почему-то может спокойно заработать в другой. Откопать почему так а не этак, конечно можно, если долго копать и если получится выяснить, где и какой глюк ночевал, но времени будет потрачено на несколько порядков больше.
Заметил, что исходники, переброшенные в эмулятор Мака, не распознаются корректно... Текст присутствует, но символы перехода строк сбиты, да и может еще чего...
Есть такая беда. В разных ОС могут использоваться различные символы для обозначения переноса строки. Если верить беглому поиску в интерннетах, windows - "\r\n", unix - "\n", macos - "\n\r". Возможно файл был подправлен и сохранен каким-то блокнотом под win и после этого не хочет корректно открываться на mac.
_______________________________________ иЗвиНиТЕ зА НеРоВНый ПочЕРк!
Возможно файл был подправлен и сохранен каким-то блокнотом под win и после этого не хочет корректно открываться на mac.
Тогда это делала Ребекка или коверкается, когда формируется архив с github-а. Если брать реально старый архив (даты файлов 1995 год) и распаковывать в маке, то все ОК.
I worked for NTG/3DO for just under five years, so I know (knew) the machine inside and out. It will be interesting to go through this code and see what kind of tradeoffs were made.
Надо будет у него что-нибудь полезное выспросить.
_______________________________________ There are 10 types of people in the world: those who understand binary, and those who don't.
Из-под мака всё прекрасно компилируется, но с получившимся бинарником у меня запускается только лого id, причём три раза подряд)) а дальше черный экран :( Итого: 1) Копируем файлы BurgerLib3DO\Burger\Burger.h, BurgerLib3DO\String\string.h, BurgerLib3DO\IntMath\IntMath.h в папочку 3DODev\includes 2) Файлы BurgerLib3DO\Burger\Burger.lib, BurgerLib3DO\String\string.lib, BurgerLib3DO\IntMath\IntMath.lib в папочку 3DODev\libs 3) В 3DODev\includes\graphics.h в 540 строке (у меня) меняем
- т.е. стираем Rect 4) В 3DODev\includes\displayutils.h в 78 строке (у меня) удаляем // void FadeToBlack(ScreenContext *sc, int32 nFrames); - я эту строчку закомментировал Либо сделать то же самое в Burger.h ??? Этот вариант мне нравится больше. 5) ??? Билдим, получаем бинарник Doom, т.е. файл LaunchMe Если собирать это дело в правильно настроенном маке, то даже Doom.make менять не надо. Меня только пункты 3 и 4 настораживают, т.к. править 3DO SDK не есть хорошо. Что-то там не так надо делать...
Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 6
Вы не можете начинать темы Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете добавлять вложения