НАМ 8 ЛЕТ!


Правила форума

Правила, действующие в этом форуме и всех его подфорумах:

1) Запрещена реклама в любых её проявлениях (сразу бан без предупреждения)!
2) Мат тоже не приветствуется на форуме, но иногда можно выразить свои чувства ( лучше заменяйте матные слова точками, пробелами, другими буквами)!
3) Категорически запрещается унижать, посылать, издеваться над участниками форума! Мы здесь все - одна большая и дружная семья! Поэтому за нарушение этого правила автоматически будем банить!
4) Разрешены ссылки на информацию, которые относятся к тому или иному разделу форума!
5) Ссылки не в тему будут удаляться и пользователь получит предупреждение или будет забанен!
6) Пользователям разрешено задавать любые вопросы относящиеся к теме, а мы все дружно ответим на эти вопросы. А также отвечать на вопросы и высказывать своё мнение.
7) Повторные темы, которые будут создаваться, будут удалены! Создавайте темы, удостоверившись, что такой темы нет на форуме!
8) Запрещён флуд во всех его проявлениях, сообщения не по теме, сообщения состоящие из одного или нескольких смайликов без текста, сообщения типа - Вах!, Рулез!, Круто! и т.п. Пользуйтесь пожалуйста кнопкой [EDIT], не плодите бессодержательные сообщения.
9) Использование смайликов разрешается не более 3-х подряд!

Добро пожаловать на наш форум!



Ответить на тему  [ Сообщений: 1366 ]  На страницу Пред.  1 ... 9, 10, 11, 12, 13, 14, 15 ... 46  След.
3DO Doom sources released 
Автор Сообщение
Аватара пользователя
Специалист
Специалист

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

Win XP SP3 - тоже самое.
Изображение
(Я не в теме, просто попробовал).

_______________________________________
Урча, пухлыми лапами кот вцепился в жидкую шевелюру конферансье и, дико взвыв, в два поворота сорвал голову с полной шеи. Две с половиной тысячи человек в театре вскрикнули как один.


11 май 2015, 13:47
Профиль WWW
Аватара пользователя
Специалист
Специалист

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

Это проблема студии 2012 - 2013. Они заточены под 7-8 винды. Решить проблему можно, но надо искать как. Вроде бы нашёл в настройках кое-что со словами "Visual Studio 2013 - Windows XP (v120_xp)", пересобрал, проверьте теперь.
https://yadi.sk/d/I3eUORaAgYuBy

_______________________________________
Мой список начатых и пройденных игр (начиная с 26.11.2013): http://www.howlongtobeat.com/user.php?n ... c=list_all


11 май 2015, 14:48
Профиль
Аватара пользователя
Я консольный бог
Я консольный бог

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

aliast
Теперь работает! :co_ol:

Добавлено спустя 2 часа 44 минуты 24 секунды:
aliast
Пробежал несколько уровней с новособранным REZFILE, никаких проблем не заметил. :co_ol:

Добавлено спустя 48 минут 13 секунд:
aliast писал(а):
Наша задача найти одинаковые цепочки и удалить их все, кроме самой первой.

Одинаковая цепочка это
0000 AAA BBB FFFF
и
0000 AAA BBB FFFF?
Или одинаковая цепочка это любая 0000 ... FFFF, где ... любые байты.

_______________________________________
There are 10 types of people in the world: those who understand binary, and those who don't.


11 май 2015, 14:50
Профиль
Аватара пользователя
Специалист
Специалист

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

Versus писал(а):
Или одинаковая цепочка это любая 0000 ... FFFF, где ... любые байты.

Я тебя не понял :nez-nayu: Ну во первых не AAA BBB, а AAAA BBBB (каждый linedef имеет ID 2-байтовый. А дальше не понял. Одинаковые это
1) Пара
00 00 FF FF
и
00 00 FF FF

2) Пара
00 00 19 01 A2 01 FF FF
и
00 00 19 01 A2 01 FF FF

Но, допустим пара
00 00 19 01 A3 01 FF FF
и
00 00 19 01 A2 01 FF FF
уже не идентичны. У них начало совпадает 00 00 19 01, но дальше идут разные байты A3 01 и A2 01. Сравнивать нужно вплость до FFFF

_______________________________________
Мой список начатых и пройденных игр (начиная с 26.11.2013): http://www.howlongtobeat.com/user.php?n ... c=list_all


11 май 2015, 18:33
Профиль
Аватара пользователя
Я консольный бог
Я консольный бог

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

aliast
Все, понятно теперь. :-ok-:

_______________________________________
There are 10 types of people in the world: those who understand binary, and those who don't.


11 май 2015, 19:00
Профиль
Аватара пользователя
Приставочник
Приставочник

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

Правильно ли я понял, что теперь можно модить 3DO версию Doom? Т.е. создавать свои карты и подпихивать в игру?


12 май 2015, 09:50
Профиль
Аватара пользователя
Я консольный бог
Я консольный бог

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

Author
Не, пока до этого далеко. У нас есть распаковка REZFILE по кускам, редактирование их на предмет новых текстур и сшивка обратно. Кстати, у новых текстур нужно будет еще поубирать заголовки и прочее, что мы добавляли при распаковке существующих. Уровни пока не поддались, спрайты тоже.

_______________________________________
There are 10 types of people in the world: those who understand binary, and those who don't.


12 май 2015, 10:06
Профиль
Аватара пользователя
Специалист
Специалист

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

Блин, весь мозг сломал. Сделал сверку соседних цепочек, вроде работает, обрадовался. Потом дошло что сверять нужно не только соседние цепочки, а вообще все цепочки до самого конца файла :( т.е. подряд идущие 0000 FFFF 0000 FFFF (или любую другую) он находит, но цепочку вида 0000 FFFF 0000 0123 FFFF 0000 FFFF он уже не распознает.
В качестве примера в файле blockmap_map01 (ссылка ниже) должны находиться две цепочки по смещению 0x910 и 0x9B0. Это цепочка 00 00 19 01 FF FF
У меня она не находится :(
https://yadi.sk/d/Ft_bgElYgz7NE

_______________________________________
Мой список начатых и пройденных игр (начиная с 26.11.2013): http://www.howlongtobeat.com/user.php?n ... c=list_all


01 июн 2015, 06:40
Профиль
Аватара пользователя
Я консольный бог
Я консольный бог

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

aliast
Я когда раздумывал, как это можно сделать, пришел к выводу, что не нужно сверять соседние. Нужно во время чтения отслеживать 0000 и FFFF. Если выполняется условие, когда 0000 идет впереди FFFF, то это первая строка.
Далее фиксируем каждые 0000. Опять же, если после 0000 находим FFFF, то эти 0000 (возвращаемся на этот адрес) являются началом строки.

В процессе чтения пишем каждые 2 байта в массив. После того, как определили первую строку, алгоритм сменяется:

Читаем и пишем в массив. Также находим 0000 и проверяем FFFF. Если есть FFFF, то удаляем из массива вплоть до найденного перед этим 0000. Для этих операций нужны 2 вспомогательные переменные. Одна отвечает за чтение всего файла, другая - номер элемента массива. Здесь фактически мы не удаляем байты, а откатываем номер элемента массива на длину найденной строки и как бы перезаписываем уже записанные элементы массива другими значениями.

Читаем дальше. Каждую найденную строку "выбрасываем" таким же образом.

Как-то так. Может, глупость написал. :nez-nayu:

_______________________________________
There are 10 types of people in the world: those who understand binary, and those who don't.


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

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

Versus писал(а):
Можешь дать свой скомпиленный makerez для 3DO? Хочу попробовать помучить MPW.

Бинарник Makerez для 3DO - https://yadi.sk/d/e0J23348h3g7E

_______________________________________
Мой список начатых и пройденных игр (начиная с 26.11.2013): http://www.howlongtobeat.com/user.php?n ... c=list_all


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

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

Попробовал отключить отрисовку пола и потолка. Проверял на эмуляторе, но забегало гораздо быстрее. Надо будет проверить на приставке.
Попробовал также отключать музыку. Опять же, на эмуле не видно, продолжает ли читаться диск. Тоже надо будет проверить на железе.

_______________________________________
There are 10 types of people in the world: those who understand binary, and those who don't.


09 июн 2015, 00:25
Профиль
Аватара пользователя
Специалист
Специалист

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

О-оо. :co_ol: А как отключал? Просто убрал текстуры, или код нашел?
Переписать под CEL Engine не реально? Из другой игры слизать метод не реально (KT, например)?

А то, действительно, пол и потолок текстурировать ARM, а стены CEL - невыносимый косяк разработчиков. С учетом того, что CEL и ARM - "последовательно", а не параллельно работают, ну по банальному тактированию CPU это уже понятно, что архитектура своеобразная, надо было учитывать: [3DO] Разгон CPU (ARM60)

(А вот, CEL-engine в приставке крут :co_ol: ).

_______________________________________
Урча, пухлыми лапами кот вцепился в жидкую шевелюру конферансье и, дико взвыв, в два поворота сорвал голову с полной шеи. Две с половиной тысячи человек в театре вскрикнули как один.


09 июн 2015, 08:15
Профиль WWW
Аватара пользователя
Я консольный бог
Я консольный бог

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

aspyd
В коде строчки закомментировал. Взять и КТ вряд ли можно, т.к. исходников нет. Нужно самим выдумывать. :-(

Добавлено спустя 36 минут 14 секунд:
Чтобы отключить отрисовку пола и потолка, нужно в файле phase7.c удалить или закомментировать строку
DrawFloorColumn(y,x1,x2-x1,xfrac,yfrac,xstep,ystep);

Чтобы отключить музыку, нужно в файле sound.c удалить или закомментировать строки
PlaySong(SongLookup[music_id]);

PlaySong(0);


Добавлено спустя 3 часа 10 минут 30 секунд:
Если я понимаю правильно, то отрисовка пола и потолка (основа) прописана на ассемблере (единственный файл этого типа)
;
;void DrawASpan(Word Count,LongWord xfrac,LongWord yfrac,Fixed ds_xstep,
;   Fixed ds_ystep,Byte *Dest)
;

   AREA   |C$$code|,CODE,READONLY
|x$codeseg|

   EXPORT DrawASpan
   IMPORT PlaneSource

   MACRO
   Filler
   LCLA   Foo
Foo   SETA   280/4
   WHILE   Foo/=0
   AND      v4,v1,a3,LSR #20      ;v4 = first y index
   ORR      v4,v4,a2,LSR #26      ;V4 = first x,y index
   ADD      a2,a2,a4
   ADD      a3,a3,v2

   AND      v5,v1,a3,LSR #20
   ORR      v5,v5,a2,LSR #26
   ADD      a2,a2,a4
   ADD      a3,a3,v2

   AND      ip,v1,a3,LSR #20
   ORR      ip,ip,a2,LSR #26
   ADD      a2,a2,a4
   ADD      a3,a3,v2

   AND      a1,v1,a3,LSR #20
   ORR      a1,a1,a2,LSR #26
   ADD      a2,a2,a4
   ADD      a3,a3,v2      ;16 longs
   
   LDRB   v4,[v3,v4]
   LDRB   v5,[v3,v5]
   LDRB   ip,[v3,ip]
   LDRB   a1,[v3,a1]      ;20 longs
   ORR      v4,v5,v4,LSL #8
   ORR      ip,a1,ip,LSL #8
   ORR      ip,ip,v4,LSL #16
   STR      ip,[lr],#4      ;24 longs
   
Foo   SETA   Foo-1
   WEND
   MEND
   
;
; Main entry point for the span code
;


SrcP DCD   PlaneSource   ;Pointer to the source image

DrawASpan
   STMDB    sp!,{v1-v5,lr}
   MOV      a2,a2,LSL #10      ;XFrac
    MOV      a4,a4,LSL #10      ;YFrac
    MOV      a3,a3,LSL #10      ;XStep
    ADD      lr,sp,#&18
    LDR      v3,SrcP
    LDR      v3,[v3]      ;v3 = Src
    ADD      v3,v3,#64         ;Adjust past the PLUT
    LDMIA   lr,{v2,lr}      ;v2 = YStep, lr = Dest
    MOV      v2,v2,LSL #10   ;YStep
    MOV      v1,#&fc0      ;YMask
   RSB      ip,a1,#280      ;Negate the index
   MOV      ip,ip,LSR #2   ;Long word index
   ADD      ip,ip,ip,LSL #1   ;Mul by 3
   ADD      pc,pc,ip,LSL #5   ;Mul by 96
   NOP                  ;Not needed for pipeline

   Filler            ;Perform the runfill

   LDMIA    sp!,{v1-v5,pc}

   END

Как назло. Тут вообще ничего не понимаю...

_______________________________________
There are 10 types of people in the world: those who understand binary, and those who don't.


09 июн 2015, 08:49
Профиль
Аватара пользователя
Специалист
Специалист

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

Дак оно потому и на асме чтоб быстрее работало :) Разбираться долго придётся... чем вообще стены от пола отличаются? У них разный формат данных, даже на PC. Но с чем это связано пока не понимаю. При этом полы в исходниках представлены в виде cel картинок, а вот формат стен специфичен. По логике должно бысть всё наоборот - пол Cel Engine, а стены процем :du_ma_et:

_______________________________________
Мой список начатых и пройденных игр (начиная с 26.11.2013): http://www.howlongtobeat.com/user.php?n ... c=list_all


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

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

Цитата:
To convert these RAW image files for use for the 3DO version of DOOM.
Make a script in DEBABELIZER that does this...

Где взять этот DEBABELIZER для MacOS 7-8 ? Гугл находит только для OS X. Может кто найдет? (нашли же фотошоп где-то)

_______________________________________
Мой список начатых и пройденных игр (начиная с 26.11.2013): http://www.howlongtobeat.com/user.php?n ... c=list_all


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

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

aliast
Я искал его, когда разбирался с SDK. Не преуспел... Попробую ещё раз.

Добавлено спустя 1 час 37 минут 1 секунду:
Обратился к Ребекке. Обещала завтра выложить дистрибутив.

_______________________________________
There are 10 types of people in the world: those who understand binary, and those who don't.


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

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

Проверил болванки с отключенной музыкой и отключенными полами и потолком.
Музыка, как и полагается, не читается с диска, уровень грузится чуть быстрее и тише. Прогрузы с диска не настолько "взахлёб".
А вот с потолками и полами не совсем понятно. Вроде и быстрее бегает перс, но подтормаживания есть все равно. Особенно заметно во время открытия дверей.

Добавлено спустя 5 часов 31 минуту 30 секунд:
Если вы обращали внимание, то даже если полностью убрать ползунок громкости музыки на ноль, музыки хоть и не слышно, но она продолжает считываться с диска. Иногда на больших сложностях возникают такие "запилы" диска, что играть становится трудно.
Я сделал так, чтобы при нулевой громкости диска музыка не считывалась с диска и запускалась снова при прибавке громкости.

_______________________________________
There are 10 types of people in the world: those who understand binary, and those who don't.


11 июн 2015, 20:36
Профиль
Аватара пользователя
Специалист
Специалист

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

Versus писал(а):
Если вы обращали внимание, то даже если полностью убрать ползунок громкости музыки на ноль, музыки хоть и не слышно, но она продолжает считываться с диска. Иногда на больших сложностях возникают такие "запилы" диска, что играть становится трудно.
Я сделал так, чтобы при нулевой громкости диска музыка не считывалась с диска и запускалась снова при прибавке громкости.
Молодец, это очень полезная фича, экономит трафик CD-ROM. :bra_vo:

_______________________________________
Урча, пухлыми лапами кот вцепился в жидкую шевелюру конферансье и, дико взвыв, в два поворота сорвал голову с полной шеи. Две с половиной тысячи человек в театре вскрикнули как один.


12 июн 2015, 17:15
Профиль WWW
Аватара пользователя
Я консольный бог
Я консольный бог

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

Думаю замутить что-нибудь с сохранениями. Планирую использовать какую-нибудь клавишу на экране статистики после прохождения уровня. Загрузка планируется из главного меню.

_______________________________________
There are 10 types of people in the world: those who understand binary, and those who don't.


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

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

Сохранения частично работают. Частично, потому что неправильно определяется номер уровня для загрузки, хотя он сохраняется тоже. Все остальное сохраняется и загружается корректно.
Сохраняется все оружие (наличие и количество), здоровье, броня, backpack, номер уровня, громкости звуков и музыки, сложность (нужно проверить, загружается ли она).
Возможность сохранения возникает после окончания уровня. Там текстом указано, какой клавишей можно сохраниться. Правда уведомление об успешном сохранении пока не придумал, как сделать. Загрузка доступна из главного меню (пока срабатывает со второго нажатия) и после смерти героя.

Что нужно сделать:
1) Нужно отловить ошибку с определением номера уровня для загрузки.
2) Немного перекомпоновать главное меню, чтобы переместить пункт Load game. Сейчас он у меня находится выше номера уровня.
3) Уведомлять игрока, что есть возможность загрузиться после смерти другой клавишей.
4) Обработка ситуаций, когда файла с сохранениями нет, когда он некорректный (любой из параметров за пределами допустимого).

Добавлено спустя 1 час 28 минут:
Кстати, сохранение получилось всего лишь 92 байта. На каждую величину отводится по 4 байта. То есть, если нужно записать наличие BFG, то получается запись: 000001. Неэкономно, но что уж сделаешь... В принципе, общее количество сохраняемых параметров не такое большое, поэтому можно на это забить.
Подумал еще о записи демо в память приставки (там есть флаг для записи демо), а потом интеграции этих демок в REZFILE. Будут полноценные демки, как в других Doom. Правда, насколько этот код рабочий, неизвестно. :nez-nayu:

_______________________________________
There are 10 types of people in the world: those who understand binary, and those who don't.


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

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

Пункты 1, 3 сделал.
Обнаружил проблему, когда количество брони не уменьшается после загрузки файла. Даже не помогает прохождение через выход из уровня. Но, как только поднимешь какую-нибудь броню (если возможно), то глюк пропадает.
Починил. Нужно было добавить в файл сохранения armortype.

Следующие проблемы:
5) Не грузится backpack. Вернее, его отбирают перед загрузкой.
Починил.
6) При загрузке сохранения из другого уровня неправильно определяется, какое небо будет.
Небо починил.

_______________________________________
There are 10 types of people in the world: those who understand binary, and those who don't.


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

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

Цитата:
To convert these RAW image files for use for the 3DO version of DOOM.
Make a script in DEBABELIZER that does this...

Где взять этот DEBABELIZER для MacOS 7-8 ? Гугл находит только для OS X. Может кто найдет? (нашли же фотошоп где-то)

Вот.

Добавлено спустя 6 часов 22 минуты 22 секунды:
Может кому-нибудь будет интересно. Пока копался с кодом, естественно, появилась необходимость отслеживать работу функций. Придумал использовать для этого NVRAM. То есть, если функция сработала, создаем файл заданного имени. Можно туда тоже писать что-нибудь проходное. Очень наглядно, хоть и неудобно постоянно перезагружаться в GameGuru. :a_g_a:


Вложения

_______________________________________
There are 10 types of people in the world: those who understand binary, and those who don't.
21 июн 2015, 12:36
Профиль
Аватара пользователя
Я консольный бог
Я консольный бог

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

Versus писал(а):
2) Немного перекомпоновать главное меню, чтобы переместить пункт Load game. Сейчас он у меня находится выше номера уровня.

А, может, и нормально так... Просто не знаю, куда еще его можно засунуть.

aliast
Погляди, пожалуйста на код ниже.
/**********************************

   Execute the main menu

**********************************/

static void RunMenu(void)
{
   if (MiniLoop(M_Start,M_Stop,M_Ticker,M_Drawer)==ga_completed) {      /* Process the menu */
      S_StopSong();
      G_InitNew(StartSkill,StartMap);      /* Init the new game */
      G_RunGame();               /* Play the game */
   }
}


Здесь главное меню. Мне нужно сюда засунуть еще одну проверку. У меня появился статус ga_loading, истинность значения которого тоже нужно отследить. Если делаю так:

static void RunMenu(void)
{
if (MiniLoop(M_Start,M_Stop,M_Ticker,M_Drawer)==ga_loading) {      /* Process the menu */
      S_StopSong();
      G_InitNew_LOAD(gameskill,gamemap);      /* Init the loading game */
      G_RunGame();               /* Play the game */
   }   
if (MiniLoop(M_Start,M_Stop,M_Ticker,M_Drawer)==ga_completed) {      /* Process the menu */
      S_StopSong();
      G_InitNew(StartSkill,StartMap);      /* Init the new game */
      G_RunGame();               /* Play the game */
   }
}


То, естественно, если нажимаем в меню на LOAD GAME, то сначала проверяется верхний блок, возвращает истину и поперла игра. Если нажимаем просто запуск уровня (НЕ load game), то верхний блок не истина. Но чтобы сработал нижний блок, нужно еще раз нажать на кнопку. То есть, в RunMenu нужно сделать сразу проверку и на то, и на другое. Не знаешь, как можно это решить? Что-то сообразить не могу.

_______________________________________
There are 10 types of people in the world: those who understand binary, and those who don't.


22 июн 2015, 13:04
Профиль
Аватара пользователя
Специалист
Специалист

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

Versus писал(а):
А, может, и нормально так... Просто не знаю, куда еще его можно засунуть.

По моему, неплохо и пунктом - выше выбора уровня. :nez-nayu:

_______________________________________
Урча, пухлыми лапами кот вцепился в жидкую шевелюру конферансье и, дико взвыв, в два поворота сорвал голову с полной шеи. Две с половиной тысячи человек в театре вскрикнули как один.


22 июн 2015, 13:21
Профиль WWW
Аватара пользователя
Я консольный бог
Я консольный бог

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

Я тоже так подумал. Обратил внимание, что даже в оригинальной игре Options находятся на надписи Doom. И ничего, прокатывало. А у меня будет в главном меню load на этом же месте. :nez-nayu: А расположение курсора при запуске будет, по-прежнему, на Level.

_______________________________________
There are 10 types of people in the world: those who understand binary, and those who don't.


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

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

Versus писал(а):
if (MiniLoop(M_Start,M_Stop,M_Ticker,M_Drawer)==ga_loading) { /* Process the menu */
S_StopSong();
G_InitNew_LOAD(gameskill,gamemap); /* Init the loading game */
G_RunGame(); /* Play the game */
}
if (MiniLoop(M_Start,M_Stop,M_Ticker,M_Drawer)==ga_completed) { /* Process the menu */
S_StopSong();
G_InitNew(StartSkill,StartMap); /* Init the new game */
G_RunGame(); /* Play the game */

Выделенное жирным судя по всему функция.

Заведи премененную такого же типа как и функция, приравняй ей значение функции, а потом сравнивай уже.

т.е. должно получится так

Versus писал(а):
static void RunMenu(void)
{
/// обьявляем переменную Flag и далее присваиваем ей значение функции
тип Flag;
Flag=(MiniLoop(M_Start,M_Stop,M_Ticker,M_Drawer);
if Flag==ga_loading) { /* Process the menu */
S_StopSong();
G_InitNew_LOAD(gameskill,gamemap); /* Init the loading game */
G_RunGame(); /* Play the game */
}
if Flag==ga_completed) { /* Process the menu */
S_StopSong();
G_InitNew(StartSkill,StartMap); /* Init the new game */
G_RunGame(); /* Play the game */
}


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

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

Может просто добавить else ко второму условию?
else if (MiniLoop(M_Start,M_Stop,M_Ticker,M_Drawer)==ga_completed) {

А вообще идея с флагом хорошая, только сам по себе флаг врядли поможет.

Последний раз редактировалось aliast 22 июн 2015, 14:58, всего редактировалось 1 раз.


_______________________________________
Мой список начатых и пройденных игр (начиная с 26.11.2013): http://www.howlongtobeat.com/user.php?n ... c=list_all


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

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

Author
Ты записал по сути тоже самое, просто ввел дополнительную переменную. Есть ли в этом смысл? Получается же тоже самое... :du_ma_et: Или нет?
aliast
Не, так вообще не пашет. При нажатии бесконечно обновляется картинка с титров на большую надпись Doom, потом при следующем нажатии снова главное меню показывает и так далее. Ни запустить игру, ни загрузить.

_______________________________________
There are 10 types of people in the world: those who understand binary, and those who don't.


22 июн 2015, 14:56
Профиль
Аватара пользователя
Специалист
Специалист

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

Versus писал(а):
Получается же тоже самое...

Ну просто функция один раз вызывается, должно сказаться на производительности чутка.

_______________________________________
Мой список начатых и пройденных игр (начиная с 26.11.2013): http://www.howlongtobeat.com/user.php?n ... c=list_all


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

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

aliast, по else'у всё равно два раза вызов функции произойдёт (если первое условие не истина) ибо она в условии и там и там встречается.
Versus писал(а):
Ты записал по сути тоже самое, просто ввел дополнительную переменную

Нет это будет работать совершенно по разному и лишнего вызова к функции не будет, не придётся два раза на кнопку нажимать. В переменную занесётся результат работы функции (как я понял это выбор пользователем элемента меню?), а дальше мы функцию не трогаем уже и работаем только с её результатом записанным в переменную. Это всё равно что спросить пользователя "Что делать дальше?" и на выбор куча вариантов (10 штук например). Так по оригинальному коду его 10 раз спросят, если он выбрал 10 пункт - "выход", прежде чем выполнится нужное действие.


22 июн 2015, 15:01
Профиль
Показать сообщения за:  Поле сортировки  
Ответить на тему  [ Сообщений: 1366 ]  На страницу Пред.  1 ... 9, 10, 11, 12, 13, 14, 15 ... 46  След.

Кто сейчас на конференции

Сейчас этот форум просматривают: Bing [Bot] и гости: 1


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  
© 2008-2017 «3DOPLANET.ru». Создано на основе phpBB® Forum Software © phpBB Group
Designed by ST Software || Русская поддержка phpBB || Time : 0.061s | 21 Queries | GZIP : On
Valid XHTML 1.0!