[ Сообщений: 1386 ]  На страницу Пред.  1 ... 10, 11, 12, 13, 14, 15, 16 ... 47  След.
3DO Doom sources released 
Автор Сообщение
Аватара пользователя
Я консольный бог
Я консольный бог

Группа: Разработчики
Сообщения: 9841
Регистрация: 04 дек 2009, 11:59
Откуда: Сочи
Модель 3DO: Panasonic FZ-10 NTSC-U

Author писал(а):
как я понял это выбор пользователем элемента меню?

Да.
Author писал(а):
на выбор куча вариантов (10 штук например).

Это получится switch (sss)
case fff:
Бла-бла. Пробовал так, но что-то не вышло. Может, накосячил где... :-(


22 июн 2015, 16:10
Аватара пользователя
Приставочник
Приставочник

Группа: Разработчики
Сообщения: 1211
Регистрация: 08 фев 2012, 13:12
Модель 3DO: Panasonic FZ-10 NTSC-J

Versus, попробуй как я тебе предлагаю. Всё должно быть Ок.


22 июн 2015, 16:14
Аватара пользователя
Я консольный бог
Я консольный бог

Группа: Разработчики
Сообщения: 9841
Регистрация: 04 дек 2009, 11:59
Откуда: Сочи
Модель 3DO: Panasonic FZ-10 NTSC-U

Author
Попробую. Но, если честно, не совсем представляю, как это будет выглядеть. Функция (MiniLoop(M_Start,M_Stop,M_Ticker,M_Drawer) какая-то сильно навороченная. Я до конца не понимаю, как она пашет... :-(


22 июн 2015, 16:32
Аватара пользователя
Я консольный бог
Я консольный бог

Группа: Разработчики
Сообщения: 9841
Регистрация: 04 дек 2009, 11:59
Откуда: Сочи
Модель 3DO: Panasonic FZ-10 NTSC-U

Versus писал(а):
4) Обработка ситуаций, когда файла с сохранениями нет, когда он некорректный (любой из параметров за пределами допустимого).

Практически сделал. Любое редактирование (или отсутствие) файла приводит к его перезаписи дефолтными параметрами (первый уровень, средняя сложность, пистолет, 50 патронов, 100% здоровья). Единственно, неправильно отрабатывает, когда пытаешься загрузить такое "запорченное" сохранение после смерти. Загружается второй уровень, а не первый, и музыка играет другая, не соответствующая данному уровню. В принципе, на эту недоработку можно забить.


23 июн 2015, 22:32
Аватара пользователя
Приставочник
Приставочник

Группа: Разработчики
Сообщения: 1211
Регистрация: 08 фев 2012, 13:12
Модель 3DO: Panasonic FZ-10 NTSC-J

Versus, радует, что есть прогресс в работе с исходниками.


24 июн 2015, 10:24
Аватара пользователя
Специалист
Специалист

Группа: Администраторы
Сообщения: 11140
Регистрация: 03 дек 2009, 22:32
Откуда: MO/DK
Модель 3DO: Panasonic FZ-1 NTSC-U

Ага. DOOM с исправленными SAVE - это круто. :ti_pa:


24 июн 2015, 10:37
Аватара пользователя
Я консольный бог
Я консольный бог

Группа: Разработчики
Сообщения: 9841
Регистрация: 04 дек 2009, 11:59
Откуда: Сочи
Модель 3DO: Panasonic FZ-10 NTSC-U

Author
Было бы гораздо круче, если б одолели Rezfile. Вчера еще раз попросил Ребекку откомпилить ее старый makerez. Но у нее мало времени, это понятно. Обещала сделать, но когда это произойдет и произойдет ли... :-(
Занятная штука получается при попытке записи Demo в память приставки. Я уже писал об этом.
3DO Doom sources released
Запись в буфер и последующее проигрывание записанных действий игрока работает. А в файл пишет совсем другое. Такое ощущение, что туда пишется чтение/запись каких-то чанков и прочей служебной ереси. Потом выложу скрины.
Понятно, что это ошибка, что я пишу туда что-то не то, но фишка интересная.


24 июн 2015, 10:38
Аватара пользователя
Специалист
Специалист

Группа: Разработчики
Сообщения: 1298
Регистрация: 04 дек 2009, 12:15
Модель 3DO: Нет

Интересно, а как эти демки пишутся? Выставляется некий флаг записи DemoRecording = TRUE потом игра запускается в штатном режиме через MiniLoop, в MiniLoop при выставленном флаге DemoRecording вызывается
if (DemoRecording) {      /* Am I recording a demo? */
         DemoDataPtr[0] = LocalToNet(buttons);   /* Save the current joypad data */
         ++DemoDataPtr;
      }

получается за запись отвечает функция LocalToNet ? А она что делает?
Convert a joypad response into a network joypad record.
   This is to compensate the fact that differant computers
   have differant hot keys for motion control.

И в буфер попадает этот конверт. При проигрывании всё ок, оно обратно конвертится, а может этот конверт не нужен? Хотя в самой функции я не увидел ничего такого...
В том же Ягуаре никаких конвертов не делается (а там демки пашут?, я не в курсе)
if (demorecording)
         *demo_p++ = buttons;


24 июн 2015, 11:34
Аватара пользователя
Я консольный бог
Я консольный бог

Группа: Разработчики
Сообщения: 9841
Регистрация: 04 дек 2009, 11:59
Откуда: Сочи
Модель 3DO: Panasonic FZ-10 NTSC-U

aliast писал(а):
а может этот конверт не нужен?

Может, и не нужен, ведь проигрывается демка G_PlayDemoPtr-ом. А там просто приравнивается открытый rDemo1(2) буферу DemoBuffer, куда, собственно, и пишется вся ботва при записи. Вот только я писал постом выше, что эта ботва непохожа на нажатия клавиш. Скорее всего, нужно будет использовать какой-то аналог или саму LocalToNet.


24 июн 2015, 11:49
В сети
Аватара пользователя
Консольный монстр
Консольный монстр

Группа: Разработчики
Сообщения: 2112
Регистрация: 21 окт 2011, 21:37
Откуда: Слобожанщина, 31Rus
Модель 3DO: GoldStar GDO-101M

aliast писал(а):
В том же Ягуаре никаких конвертов не делается (а там демки пашут?, я не в курсе)
Судя по тому, что при запуске игры две демки по кругу гоняются, пашут...



Добавлено спустя 1 минуту 44 секунды:
А, или вы об новозаписанных, а то я влез в разговор, проходя мимо...


24 июн 2015, 19:51
Аватара пользователя
Я консольный бог
Я консольный бог

Группа: Разработчики
Сообщения: 9841
Регистрация: 04 дек 2009, 11:59
Откуда: Сочи
Модель 3DO: Panasonic FZ-10 NTSC-U

Yaranga
Все правильно ты ответил, спасибо за инфу. Значит, есть-таки... В нашем Rezfile, скорее всего, эти файлы демок и лежат: третий и шестой уровни. Ну, как уже я говорил, движения игрока хаотичные. Но общая черта все же есть. В начале шестого уровня игрок идет в угол за винтовкой. У нас он тоже туда "идет". Точнее, пытается. :nez-nayu:

Добавлено спустя 4 часа 51 минуту 47 секунд:
Похоже победил. Сейчас пишутся нажатия кнопок. Остается скопировать эти байты в REZFILE и проверить работоспособность. Но то, что пишутся туда клавиши, это точно. А, ну еще нужно разобраться, чтобы реагировало на выставленный уровень и сложность и эти же параметры писались в этот же файл. Но если разобраться не получится, то можно легко дописать руками.

А вот картинки "дебаггера". Если кто разберется, то может оказаться полезным.
Изображение Изображение Изображение Изображение Изображение Изображение Изображение Изображение Изображение Изображение Изображение Изображение Изображение


24 июн 2015, 20:07
Аватара пользователя
Специалист
Специалист

Группа: Разработчики
Сообщения: 1298
Регистрация: 04 дек 2009, 12:15
Модель 3DO: Нет

Демки это файлы D0143 и D0144. В них первые 4 байта это скилл, следующие 4 байта номер карты. Дальше должны идти команды по 2 байта каждая. С форматом команд пока не разбирался.


25 июн 2015, 08:33
Аватара пользователя
Я консольный бог
Я консольный бог

Группа: Разработчики
Сообщения: 9841
Регистрация: 04 дек 2009, 11:59
Откуда: Сочи
Модель 3DO: Panasonic FZ-10 NTSC-U

aliast
Да, это я уже понял. Могу сделать табличку сопоставления байт- какая клавиша нажата. Там идут байты, разделенные несколькими нулями. Ненулевые байты и есть нажатия. Все просто. Но писать их вручную никакого смысла нет. И в автоматическом режиме пишется нормально.

Добавлено спустя 10 часов 6 минут 15 секунд:
Вот соответствие байт и кнопок в Demo-файлах.
Up - 40 00 00 00
Down - 80 00 00 00
Right - 20 00 00 00
Left - 10 00 00 00
A - 04 00 00 00
B - 02 00 00 00
C - 08 00 00 00
Right Shift - 00 40 00 00
Left Shift - 00 20 00 00
Stop - 00 80 00 00
Start - 01 00 00 00

Получилось записать и номер уровня и сложность. Получился полноценный записанный демо-файл. Да, на каждое нажатие отводится по 4 байта. Если нажато одновременно 2 кнопки (при переключении оружия, например) то в эти 4 байта записываются обе клавиши.

Добавлено спустя 1 час 32 минуты 46 секунд:
Демки работают. Взял из сохраненного в NVRAM файла свои данные, скопипастил в начало D0143. Мой файл получился меньше, но все отрабатывает корректно. Ура! :ya_hoo_oo:


25 июн 2015, 09:30
В сети
Аватара пользователя
Консольный монстр
Консольный монстр

Группа: Разработчики
Сообщения: 2112
Регистрация: 21 окт 2011, 21:37
Откуда: Слобожанщина, 31Rus
Модель 3DO: GoldStar GDO-101M

Круто! :bra_vo:
Уже хочется взглянуть на это...


25 июн 2015, 21:18
Аватара пользователя
Я консольный бог
Я консольный бог

Группа: Разработчики
Сообщения: 9841
Регистрация: 04 дек 2009, 11:59
Откуда: Сочи
Модель 3DO: Panasonic FZ-10 NTSC-U

Yaranga писал(а):
Уже хочется взглянуть на это...

Напиши, какие рекомендации по содержанию демок. Уровень/сложность/длительность/что-нибудь еще... Хочу записать начисто, чтобы к этому вопросу уже не возвращаться.

Добавлено спустя 43 минуты 22 секунды:
Author писал(а):
Заведи премененную такого же типа как и функция, приравняй ей значение функции, а потом сравнивай уже.

Ура! Сработало! :ya_hoo_oo: Правда, я не понял, почему сработало... :du_ma_et:
Сделал так:
static void RunMenu(void)
{
   Word MainLoop;
   
   MainLoop = MiniLoop(M_Start,M_Stop,M_Ticker,M_Drawer);
   
   if (MainLoop==ga_loading) {      /* Process the menu */
      S_StopSong();
      G_InitNew_LOAD(gameskill,gamemap);      /* Init the new game */
      G_RunGame();               /* Play the game */
   }
   
   if (MainLoop==ga_completed) {      /* Process the menu */
      S_StopSong();
      G_InitNew(StartSkill,StartMap);      /* Init the new game */
      G_RunGame();               /* Play the game */
   }

}


Добавлено спустя 22 минуты 22 секунды:
Из to do:
1) Сделать загрузку главного меню из игры, чтобы не приходилось перезагружать диск.
2) Уведомлять пользователя об успешном сохранении. Тут, скорее всего, потребуется измененный REZFILE.
3) Добавить украшавости. Пока не скажу, какие. Если получится, порадую.


25 июн 2015, 23:51
Аватара пользователя
Специалист
Специалист

Группа: Администраторы
Сообщения: 11140
Регистрация: 03 дек 2009, 22:32
Откуда: MO/DK
Модель 3DO: Panasonic FZ-1 NTSC-U

Молодец!
Versus писал(а):
3) Добавить украшавости. Пока не скажу, какие. Если получится, порадую.
Таки, интересно, что... :du_ma_et:


26 июн 2015, 09:01
В сети
Аватара пользователя
Консольный монстр
Консольный монстр

Группа: Разработчики
Сообщения: 2112
Регистрация: 21 окт 2011, 21:37
Откуда: Слобожанщина, 31Rus
Модель 3DO: GoldStar GDO-101M

Versus писал(а):
Напиши, какие рекомендации по содержанию демок. Уровень/сложность/длительность/что-нибудь еще... Хочу записать начисто, чтобы к этому вопросу уже не возвращаться.
Интересно было бы наблюдать три демки. Допустим, одна - обычное прохождение на среднем уровне сложности, ничем не примечательное. Вторая - на nitemare, с естественной гибелью, но так, чтоб успел посражаться. Ну и третья - просто быстрая пробежка мимо вражин без стрельбы. На каких уровнях это будет происходить - не столь важно. Ну, к примеру в первой демке будет третий уровень, во второй седьмой, а в третьей - двадцать третий.


26 июн 2015, 11:31
Аватара пользователя
Я консольный бог
Я консольный бог

Группа: Разработчики
Сообщения: 9841
Регистрация: 04 дек 2009, 11:59
Откуда: Сочи
Модель 3DO: Panasonic FZ-10 NTSC-U

Yaranga
Окей, а по продолжительности?
Кстати, три демки можно будет сделать только в том случае, если решится проблема с REZFILE.


26 июн 2015, 11:43
Аватара пользователя
Специалист
Специалист

Группа: Разработчики
Сообщения: 1298
Регистрация: 04 дек 2009, 12:15
Модель 3DO: Нет

Versus писал(а):
если решится проблема с REZFILE

А что за проблема? У нас же есть упаковщик.


26 июн 2015, 11:57
Аватара пользователя
Я консольный бог
Я консольный бог

Группа: Разработчики
Сообщения: 9841
Регистрация: 04 дек 2009, 11:59
Откуда: Сочи
Модель 3DO: Panasonic FZ-10 NTSC-U

aliast
Нужно засунуть в него дополнительный файл. Запаковщик, как я понял, собирает обратно не тоже самое. Ты писал о каком-то отличии. Сейчас собранный обратно файл работоспособен, но хрен его знает, что будет, если мы будем менять/добавлять туда что-то.


26 июн 2015, 11:59
В сети
Аватара пользователя
Консольный монстр
Консольный монстр

Группа: Разработчики
Сообщения: 2112
Регистрация: 21 окт 2011, 21:37
Откуда: Слобожанщина, 31Rus
Модель 3DO: GoldStar GDO-101M

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

Добавлено спустя 18 минут 58 секунд:
В общем, срендерилось и залилось. Правда, пока ютуб сам что-то колдует с видео. Но через пару-тройку минут всё должно быть на месте.
Вторая демка у меня вышла явно неудачная, если что, тему с кошмарным режимом можно забраковать ввиду сложности исполнения. А вот насчёт показа массы секретов и стравливания монстров стоит подумать...



26 июн 2015, 12:44
Аватара пользователя
Специалист
Специалист

Группа: Разработчики
Сообщения: 1298
Регистрация: 04 дек 2009, 12:15
Модель 3DO: Нет

Versus писал(а):
Нужно засунуть в него дополнительный файл. Запаковщик, как я понял, собирает обратно не тоже самое.

С этим не должно быть проблем. А по поводу отличий вопрос открытый - чем отличается команда LOAD от LOADFIXED (это я про скрипт сборки из оригинального makerez)


26 июн 2015, 14:44
Аватара пользователя
Я консольный бог
Я консольный бог

Группа: Разработчики
Сообщения: 9841
Регистрация: 04 дек 2009, 11:59
Откуда: Сочи
Модель 3DO: Panasonic FZ-10 NTSC-U

aliast писал(а):
Блин, я забыл или никогда не знал что означает префикс 80 в таблице оффсетов к файлам в Rezfile.

if (RezFixed) {
      RezPtr->Offset |= 0x80000000;   /* Set the fixed flag */

Как раз этим и отличается. А что это такое - хз... :du_ma_et:
Yaranga
Спасибо за видос и рекомендации. Попробую сделать что-нибудь.


26 июн 2015, 15:35
Аватара пользователя
Специалист
Специалист

Группа: Разработчики
Сообщения: 1298
Регистрация: 04 дек 2009, 12:15
Модель 3DO: Нет

Я думаю что это некая оптимизация памяти. В rezfile к оффсету добавляется 80 00. На структуру rez оно никак не влияет, но при загрузке такого файла движок игры что-то делает, только и всего. Можно конечно добавить в мой makerez поддержку запаковки по скрипту и там прописать команды loadfix, и тогда будет полное свпадение, но вот бы понять так ли это нужно и как быть с новыми файлами - фиксить их или нет?


26 июн 2015, 17:31
Аватара пользователя
Я консольный бог
Я консольный бог

Группа: Разработчики
Сообщения: 9841
Регистрация: 04 дек 2009, 11:59
Откуда: Сочи
Модель 3DO: Panasonic FZ-10 NTSC-U

aliast
С новыми файлами можно экспериментировать. Главное, чтобы у нас работала сборка/разборка байт в байт. Так что, если можно, добавь эту фичу.

Добавлено спустя 5 часов 41 минуту 56 секунд:
Раз пошла такая пьянка, попытаюсь сделать так, чтобы игрок мог сам записывать демки в память и при желании их проигрывать.


26 июн 2015, 19:28
Аватара пользователя
Я консольный бог
Я консольный бог

Группа: Разработчики
Сообщения: 9841
Регистрация: 04 дек 2009, 11:59
Откуда: Сочи
Модель 3DO: Panasonic FZ-10 NTSC-U

Други, скажите, а в каком формате музыка в Doom? Че-то я сжал в aifc и ни фига не поперло... :-(
Пардон, все работает. Подменил музыку. Буду думать, как расширить количество треков. Кандидаты - музон из PSX Doom. Или кто еще что предложит?


29 июн 2015, 01:23
Аватара пользователя
Ломаю джойстик взглядом
Ломаю джойстик взглядом

Группа: Пользователи
Сообщения: 886
Регистрация: 06 фев 2012, 00:26
Модель 3DO: Panasonic FZ-1 NTSC-J

Цитата:
Кандидаты - музон из PSX Doom. Или кто еще что предложит?

На ПС1 эмбиент вместо музыки в общем понимании) Можно ремиксы взять, например эти. Качество на высоте :co_ol:


29 июн 2015, 07:20
Аватара пользователя
Я консольный бог
Я консольный бог

Группа: Разработчики
Сообщения: 9841
Регистрация: 04 дек 2009, 11:59
Откуда: Сочи
Модель 3DO: Panasonic FZ-10 NTSC-U

Docuro-chan
На psx есть и качественный музон: в меню, между уровнями. За ссылку спасибо, послушаю, что там.


29 июн 2015, 09:34
Аватара пользователя
Приставочник
Приставочник

Группа: Разработчики
Сообщения: 1211
Регистрация: 08 фев 2012, 13:12
Модель 3DO: Panasonic FZ-10 NTSC-J

Versus писал(а):
Пардон, все работает. Подменил музыку. Буду думать, как расширить количество треков.

Чем сжимал, средствами SDK? Просто интересно, может моя прога правильно конвертить wav в aifc или нет.
Расширить количество треков вероятно можно, например, увеличив переменную отвечающую за их количество, если такая есть. Возможно треки просто ищутся в папке обычным перебором, т.е. сколько файлов найдёт приложение, столько и будет проигрывать. Правда я не помню, вроде за каждым уровнем своя музыкальная композиция закреплена. В общем, в исходниках стоит поискать названия треков и там смотреть, что да как реализовано.


29 июн 2015, 10:41
Аватара пользователя
Я консольный бог
Я консольный бог

Группа: Разработчики
Сообщения: 9841
Регистрация: 04 дек 2009, 11:59
Откуда: Сочи
Модель 3DO: Panasonic FZ-10 NTSC-U

Author писал(а):
Чем сжимал, средствами SDK?

Да, средствами SDK. Твоей прогой получается шипение, что бы не выбирал из параметров. :-( :du_ma_et:
Author писал(а):
Расширить количество треков вероятно можно, например, увеличив переменную отвечающую за их количество, если такая есть.

Там все очень замудрено.
Например, после окончания игры вызывается музыка:
S_StartSong(Song_final,TRUE);

Эта функция работает так:
void S_StartSong(Word music_id,Boolean looping)
{
   PlaySong(SongLookup[music_id]);
}

То есть, имеем два входных параметра (номер песни, повторение). Внутри функции S_StartSong используем только параметр номер песни. Но не все так просто.
Есть последовательность треков:
typedef enum {      /* All the sounds in the game */
   Song_None,
   Song_intro,
   Song_final,
   Song_bunny,
   Song_intermission,
   Song_e1m1,
   NUMMUSIC=Song_e1m1+24      /* Song count */
} musicnum_t;

Из нашего примера Song_final получается соответствует здесь 2 (двойке).
Итого, получаем
PlaySong(SongLookup[2]);

А вот уже SongLookup выглядит так:
static Byte SongLookup[] = {
    0,
    11,   /* Intro */
    12, /* Final */
    3,   /* Bunny */
    5,   /* Intermission */
    5, 6, 7, 8, 9,10,11,12,13,14,   /* Map 1 */
   15, 5, 6, 7, 8, 9,10,11,13,14,
   15,10,12,29, 1, 1, 1, 1, 1, 1,
   1
};

И получается, что второй элемент массива SongLookup равняется 12.
Фух... А вот в библиотеке burger уже прописан жестко путь Music\Song, к которому уже добавляется наше число 12. Получаем обращение к файлу
Music\Song12


Добавлено спустя 9 минут 56 секунд:
Плюс к тому, номер трека к каждому уровню вычисляется отдельно.
S_StartSong(Song_e1m1-1+gamemap,TRUE);

что можно читать как
S_StartSong(5-1+gamemap,TRUE);


29 июн 2015, 11:03
На страницу Пред.  1 ... 10, 11, 12, 13, 14, 15, 16 ... 47  След.
© 2008-2024 «3DOPLANET.ru». Создано на основе phpBB® Forum Software © phpBB Group
Designed by ST Software || Русская поддержка phpBB || Time : 0.082s | 22 Queries | GZIP : On