[ Сообщений: 1386 ]  На страницу Пред.  1 ... 37, 38, 39, 40, 41, 42, 43 ... 47  След.
3DO Doom sources released 
Автор Сообщение
Аватара пользователя
Я консольный бог
Я консольный бог

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

aliast писал(а):
Потому что trooA 5 штук, TrooB 5 штук и т.д.

Это если заранее известно их количество. А если нет? Сейчас для распаковщика я так и не могу уяснить, как надо читать эти указатели...

Добавлено спустя 4 минуты 27 секунд:
Почему 5? К вот этим последующим
0D B8, 0A 4C, 05 BC
ведь первое смещение (68) плюсуем?


21 апр 2016, 12:34
Аватара пользователя
Я консольный бог
Я консольный бог

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

Я что-то совсем в афиге... Тестирую прогу на спрайтах с префиксами в указателях. Из 9 выбранных (все враги, главный герой и ракета) 3 не работают!
Формат спрайтов rSPR_DEMON, rSPR_OURHERO, rSPR_MISL и, может, еще чего-то, ДРУГОЙ? Пытаюсь распаковать первый кадр своей прогой, 6 отрабатывают корректно, а с 3-мя ничего не выходит... :sh_ok: Разрешение определяется, но прямоугольник почти черный, т.е. пикселями не заполняется.
Во вложении исходники моей недоделанной проги, проблемные файлы спрайтов и просмотрщик 3doresexplorer.exe. Гляньте, кто может, а?
Ниже те же исходники проги, но текстом, кому как удобно читать. (Во вложении весь проект Visual Studio)
#include "stdafx.h"
#include <cstdlib>
#include <iostream>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <ctype.h>
#include <conio.h>
#include <cmath>

typedef unsigned int Word;

using namespace std;

static void RestoreSprite(Word Config);
static void LoadSprites(FILE* fp);

static char Delimiters[] = " \t\n";        /* Token delimiters */
static char NumDelimiters[] = " ,\t\n";    /* Value delimiters */
static Word LineNum;               /* Line being executed from the script */
static char InputLine[256];        /* Input line from script */
static char *Commands[] = {
   "TYPE","LOAD","ENDIAN","LOADNEXT","LOADFIXED","LOADHANDLE"
};
#define CommandCount 6      /* Number of commands */

#define Swap2_2Bytes(val) val = ( (((val) >> 8) & 0x00FF) | (((val) << 8) & 0xFF00) )
#define Swap4Bytes(val) val = ( (((val) >> 24) & 0x000000FF) | (((val) >> 8) & 0x0000FF00) | (((val) <<  8) & 0x00FF0000) | (((val) << 24) & 0xFF000000) )
//#define SwapULong(val) val = ( (((val) >> 24) & 0x000000FF) | (((val) >> 8) & 0x0000FF00) | (((val) <<  8) & 0x00FF0000) | (((val) << 24) & 0xFF000000) )
//#define SwapULong(val) (val << 24 | (val << 8 & 0xFF0000) | (val >> 8 & 0xFF00) | val >> 24 & 0xFF)
#define Swap8Bytes(val) ( (((val) >> 56) & 0x00000000000000FF) | (((val) >> 40) & 0x000000000000FF00) | (((val) >> 24) & 0x0000000000FF0000) | (((val) >>  8) & 0x00000000FF000000) | (((val) <<  8) & 0x000000FF00000000) | (((val) << 24) & 0x0000FF0000000000) | (((val) << 40) & 0x00FF000000000000) | (((val) << 56) & 0xFF00000000000000) )
#define Swap2Bytes(val) ( (((val) >> 8) & 0x00FF) | (((val) << 8) & 0xFF00) )

int Count;


static void PrintError(char *Error)
{
   printf("# Error in Line %d, %s\n",LineNum,Error);
}




static void LoadSprites(FILE* fp)
{
   char *TextPtr;  /* Pointer to string token */
   Word i;         /* Index */

   while (fgets(InputLine,sizeof(InputLine),fp)) { /* Get a string */
      ++LineNum;          /* Adjust the line # */
      TextPtr = strtok(InputLine,Delimiters); /* Get the first token */
      if (!TextPtr) {
         continue;
      }
      i = 0;      /* Check for the first command */
      if (isalnum(TextPtr[0])) {  /* Comment? */
         do {
            if (!strcmp(TextPtr,Commands[i])) { /* Match? */
               switch (i) {        /* Execute the command */
               case 0:
//                  SetType();   /* Target machine */
                  break;
               case 1:
                  RestoreSprite(0);
                  break;
               }
               break;      /* Don't parse anymore! */
            }
         } while (++i<CommandCount); /* Keep checking */
      }
      if (i==CommandCount) {      /* Didn't find it? */
         printf("# Command %s not implemented\n",TextPtr);
      }
   }
}



static void RestoreSprite(Word Config) {
FILE *infile, *outfile;
char *TextPtr;
Count++;
char *FinName, *tmpName, *tmpName2;
Word temp, temp2;
int FileSize, i, Off2Entry, Count;
int start_offset, RealStartOffset, offset;
int Width, Height, PRE0, PRE1, PDAT_length;

int Prefix40 = 0x40;
int Prefix80 = 0x80;

struct {
      Word CCB;
      Word Head_50;
      Word Blank;
   } CCB;


struct {
      Word temp;
      Word PLUT;
      Word PLUT_size;
      Word PLUT_value;
   } PLUT;


struct {
      Word temp;
      Word PDAT;
   } PDAT;


      TextPtr = strtok(0,NumDelimiters);
   if (!TextPtr) {
      PrintError("Not enough parms for LOAD");
      return;
   }

   TextPtr = strtok(0,NumDelimiters);
   if (!TextPtr) {
      PrintError("Not enough parms for LOAD");
      return;
   }


//Открываем исходный файл спрайта для чтения
infile = fopen(TextPtr, "rb");
cout << "\nFile "<< TextPtr << " opened.";

// Определяем количество спрайтов внутри.
fseek(infile,0,SEEK_END);
FileSize = ftell(infile);
rewind(infile);

// Ищем сигнатуру
// Это будут флаги 47 E6 42 10. Читаем как 10 42 - E6 47
Count = 0;
for (i=0; i<FileSize/4; i++) {
         fread(&PDAT.temp,4,1,infile);
         temp = PDAT.temp;
            if (temp == 0x1042E647) {
               Count++;
               }
   }
cout << "\nFrames Count = "<< Count;
rewind(infile);

// Делаем имя файла для экспорта кадра спрайта.
char begin[30] = "Recover_";
//tmpName = strcat(begin, TextPtr);
FinName = strcat(begin, TextPtr);
//FinName = strcat(tmpName, itoa(Count, tmpName2, 10));
cout << "\nNew filename = "<< FinName;


// Открываем выходной файл для записи очередного кадра
outfile = fopen(FinName, "wb");

// Пишем сначала CCB заголовок.
CCB.CCB = 0x43434220;
temp = Swap4Bytes(CCB.CCB);
fwrite(&CCB.CCB, 4, 1, outfile);

CCB.Head_50 = 0x000050;
temp = Swap4Bytes(CCB.Head_50);
fwrite(&CCB.Head_50, 4, 1, outfile);

CCB.Blank = 0;
temp = Swap4Bytes(CCB.Blank);
fwrite(&CCB.Blank, 4, 1, outfile);

// Определим смещение к первой CCB

fseek(infile,0,SEEK_END);
FileSize = ftell(infile);
rewind(infile);


// Делаем цикл чтения кадров.
// Сначала читаем 2 байта и определяем префикс. В зависимости от этого по-разному определяется смещение
// к урезанному заголовку кадра.

// Если префикс =40, то к прочитанному далее указателю плюсуем то смещение, куда оно указывает.
// По тем указателям читаем подряд n-кадров. n=??????????

// Если префикса нет (==0), то просто переходим по данному указателю.


fread(&start_offset, 2, 1, infile);
fread(&start_offset, 2, 1, infile);
RealStartOffset = Swap2Bytes(start_offset);

for (i=0; i<RealStartOffset/2; i++) {
   fread(&offset, 2, 1, infile);
   temp2 = Swap2Bytes(offset);
}
// Получаем смещение к началу урезанной шапки CCB.
Off2Entry = RealStartOffset+temp2;
cout << "\nShape CCB offset= "<< Off2Entry;

// Установим позицию на начало PLUT.
rewind(infile);
fseek(infile,Off2Entry+4,SEEK_SET); // +4, потому что нужно еще пропустить 4 байта.
// Эти 4 байта, видимо, попали из PC версии, где означали размещение спрайта по X,Y.
   

   // Читаем и пишем урезанный заголовок CCB в outfile
   for (i=0; i<60/4; i++) {
         fread(&PLUT.temp,4,1,infile);
         temp = PLUT.temp;
         fwrite(&temp, 4, 1, outfile);
      }

// Определим размеры кадра и поменяем их местами, потому что спрайт повернут на 90 градусов
   // против часовой стрелки.
rewind(infile);
fseek(infile,Off2Entry+56,SEEK_SET);

Height = Width = 0;

fread(&PLUT.temp,4,1,infile);
PRE0 = Swap4Bytes(PLUT.temp);
//GetShapeHeight
Height = ((PRE0 >> 6) & 0x3FF) + 1;
cout << "\nHeight = " << Height;

fread(&PLUT.temp,4,1,infile);
PRE1 = Swap4Bytes(PLUT.temp);
//GetShapeWidth   
Width = (PRE1 & 0x7FF) + 1;
cout << "\nWidth = " << Width;

// Запишем ширину
temp = Swap4Bytes(Width);
fwrite(&Width, 4, 1, outfile);

// Запишем высоту
temp = Swap4Bytes(Height);
fwrite(&Height, 4, 1, outfile);


// Теперь запишем PLUT. Она в исходном файле спрайта идет без заголовка.
// Ориентируемся на размер 4C. Пока так.
// Заголовок:
PLUT.PLUT = 0x504C5554;
temp = Swap4Bytes(PLUT.PLUT);
fwrite(&temp, 4, 1, outfile);

PLUT.PLUT_size = 0x00004C;
temp = Swap4Bytes(PLUT.PLUT_size);
fwrite(&temp, 4, 1, outfile);

PLUT.PLUT_value = 0x000020;
temp = Swap4Bytes(PLUT.PLUT_value);
fwrite(&temp, 4, 1, outfile);

// Теперь пишем содержимое PLUT
rewind(infile);
fseek(infile,Off2Entry+64,SEEK_SET);

   for (i=0; i<16; i++) {
         fread(&PLUT.temp,4,1,infile);
         temp = PLUT.temp;
         fwrite(&temp, 4, 1, outfile);
      }

// Пишем заголовок PDAT.
PDAT.PDAT = 0x50444154;
temp = Swap4Bytes(PDAT.PDAT);
fwrite(&temp, 4, 1, outfile);

// Вычисляем длину PDAT.
PDAT_length = 0;
   for (i=0; i<FileSize/4; i++) {
         fread(&PDAT.temp,4,1,infile);
         temp = PDAT.temp;
         PDAT_length += 4;
            //Находим следующий PDAT. Это будут флаги 47 E6 42 10 как 10 42 - E6 47
            if (temp == 0x1042E647) {
               // Следующий PDAT найден.
//               PDAT_length += 4;
               cout << "\nNext CCB flags found";
               cout << "\nPDAT_length= " << PDAT_length;
               temp = Swap4Bytes(PDAT_length);
               fwrite(&temp, 4, 1, outfile);
               temp = Swap4Bytes(PDAT_length);
                  // Теперь запишем весь PDAT в выходной файл.
                  rewind(infile);
                  fseek(infile,Off2Entry+64+64,SEEK_SET); // 64 - длина обрезанного заголовка
                  // второе 64 - длина PLUT в исходном файле без заголовка (4C)
                  cout << "\nOFFSET to PDAT = " << Off2Entry+64+64;
                     for (i=0; i<PDAT_length/4-2; i++) { // -2, потому что заголовок PDAT и ее и размер мы уже записали
                           fread(&PDAT.temp,4,1,infile);
                           temp = PDAT.temp;
                           fwrite(&temp, 4, 1, outfile);
                        }
//// ЗДЕСЬ ПРОПИСАТЬ, ЕСЛИ КАДР ОДИН И ДОСТИГНУТ КОНЕЦ ФАЙЛА! ////////////

               break;
         }
   }
fclose(outfile);
fclose(infile);
cout << "\nFile "<< TextPtr << " closed.\n";
}

int _tmain(int argc, _TCHAR* argv[])
{
FILE *fp;

Count = 0;

fp = fopen("SpriteList.txt","r");    /* Read the ASCII script */
   if (!fp) {
      printf("# Can't open Textures script file %s.\n",argv[1]);    /* Oh oh */
      return 1;
   }

LoadSprites(fp);

fclose(fp);     /* Close the file */

   cout << "\nPress the enter key to continue ...";
    cin.get();

   return 0;
}


У вас нет необходимых прав для просмотра вложений в этом сообщении.


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

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

Пока тут затык, починил текстуру cratiny. В Rezfile она была засунута некорректно, из-за чего в игре было непонятное месиво.
Помню, что мы с соседом безуспешно пытались понять, что же это за выступ в углу?
Изображение
Ну и в других местах тоже отображалось непонятное, но на это мы внимания не обращали:
Изображение


Теперь текстура отображается корректно.
Изображение Изображение Изображение Изображение
Найти эти маленькие ящики можно только на 10 уровне здесь:
Изображение


24 апр 2016, 02:48
Аватара пользователя
Уже проживаю здесь
Уже проживаю здесь

Группа: Пользователи
Сообщения: 58
Регистрация: 01 май 2016, 21:23
Модель 3DO: Нет

Доброго времени суток! Я сюда попал из Emu-Land'а благодаря юзеру с ником Yaranga.

Я буквально несколько часов назад релизнул свой хак для GBA Doom'а (который тоже работает на основе Jaguar движка), и Yaranga предложил мне глянуть на "подобную" работу для 3DO версии.

Так вот, у меня есть наработки карт, которые были только в ПК релизе + несколько карт из Playstation релиза + E1M8b от Джона Ромеро, которыми с удовольствием поделюсь.

https://yadi.sk/d/_OxZtSMIrRbcy

Архив включает в себя карты, работающие именно под ПК движком (т.е. их надо будет переводить в 3ДО формат), файлы для распознавания в Дум Билдерах, НО НЕ включает в себя текстурпак ГБА Дума, поэтому при открытии в редакторе большинство текстур будут считаться "неизвестными". Надеюсь, эти файлы будут полезны, и пригодятся в деле.


01 май 2016, 21:33
Аватара пользователя
Консольный монстр
Консольный монстр

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

Да, к слову, на готовый результат для GBAшного Дума можно посмотреть по ссылкам в этой теме http://www.emu-land.net/forum/index.php ... msg1215767 и, естественно, как минимум понадобится эмулятор Nintendo Game Boy Advance - http://www.emu-land.net/portable/gba/emuls/windows (по-идее должен подойти любой из них, но предпочтение отдаётся эмуляторам на базе VBA: хороший функционал и много настроек).


01 май 2016, 22:02
Аватара пользователя
Я консольный бог
Я консольный бог

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

DeXiaZ
О! Приветствую! Спасибо за карты, пока бегло глянул, все текстуры и объекты на месте. GBA версия (если основана на Jaguar версии) использует те же самые текстуры. Поэтому эти карты можно брать и конвертировать "вчистую". Карты другие, и это радует! Не нужно будет заниматься подгонкой и подбором текстур. Сборку положил в кубышку. Эти уровни буду использовать, когда будет собираться пак для релиза. Спасибо большое! :-):

Добавлено спустя 1 минуту 43 секунды:
Yaranga
Гляну обязательно! :-):
DeXiaZ
Спасибо за GBA работу! Заценю на досуге!


01 май 2016, 22:04
Аватара пользователя
Уже проживаю здесь
Уже проживаю здесь

Группа: Пользователи
Сообщения: 58
Регистрация: 01 май 2016, 21:23
Модель 3DO: Нет

И вам спасибо! Жду с нетерпением новых результатов работы с 3DO! Если будут какие-то вопросы - обращайтесь! :-):


01 май 2016, 22:17
Аватара пользователя
Я консольный бог
Я консольный бог

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

DeXiaZ
Да, вопросы могут возникнуть. :a_g_a:
Первый: rom Jaguar пересобирался или как-то еще? Сорри, может не туда спросил, т.к. платформу GBA совсем не знаю. :smu:sche_nie:


01 май 2016, 22:20
Аватара пользователя
Консольный монстр
Консольный монстр

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

DeXiaZ, и тоже маленький вопрос: когда в новых уровнях падаешь с высоты более метра, слышится звук боли, повреждения, хотя повреждений на самом деле нет... В ГБАшной версии так изначально было или это уже вы сами прикрутили?


01 май 2016, 22:26
Аватара пользователя
Уже проживаю здесь
Уже проживаю здесь

Группа: Пользователи
Сообщения: 58
Регистрация: 01 май 2016, 21:23
Модель 3DO: Нет

Цитата:
Первый: rom Jaguar пересобирался или как-то еще? Сорри, может не туда спросил, т.к. платформу GBA совсем не знаю. :smu:sche_nie:


Первоначально я пытался пересобирать (это была самая первая доступная методика), но ничего не получалось, так как этот метод достаточно кривой, и им владел, по сути, только тот, кто этот метод и придумал :-)

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

Цитата:
и тоже маленький вопрос: когда в новых уровнях падаешь с высоты более метра, слышится звук боли, повреждения, хотя повреждений на самом деле нет... В ГБАшной версии так изначально было или это уже вы сами прикрутили?


Это так сделали в ГБА версии. Видимо, экономили вес игры.


02 май 2016, 10:40
Аватара пользователя
Я консольный бог
Я консольный бог

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

DeXiaZ
А как при этом исполняемый файл видит изменившееся количество уровней? Или автоматом подхватывает?


02 май 2016, 14:24
Аватара пользователя
Уже проживаю здесь
Уже проживаю здесь

Группа: Пользователи
Сообщения: 58
Регистрация: 01 май 2016, 21:23
Модель 3DO: Нет

DeXiaZ
А как при этом исполняемый файл видит изменившееся количество уровней? Или автоматом подхватывает?


Не понял вопроса.
Я не знаю, как именно устроена 3DO версия, но GBA версия - это типичный IWAD архив, сформированный в виде .gba рома, а не .wad файла. Это сопряжено с трудностями в редактировании (всякими слэйдами и xwe не откроешь).

Правда, по системе организации .gba похож на .pk3 - внутри архива находятся уровни, которые сами запакованы в .wad архивы.
Поэтому, для замены оригинальных карт надо пихать свою собственную в виде .wad файла (заменяя старую, оригинальную версию). Предварительно, надо сконвертировать готовую карту в GBA формат путем проги от Kaiser'а - в данных карты меняется файл SEGS (сегменты лайнов), и любая карта стабильно тяжелеет на 30-40 килобайт.

Вес играет важную роль - вес рома не должен быть выше первоначального. Меньше - можно. Поэтому, карты пришлось упрощать. Но было так, что два раза пришлось упрощать карты еще сильнее, чем я рассчитывал - во время бета тестинга FPS падал до 0 и вообще игра превращалась в месиво в определенных местах. То есть данные упрощения были направлены в сторону не уменьшения веса карты, а в сторону стабилизации FPS.

Собственно, у 3DO железо явно мощнее, поэтому все мои готовые карты должны работать еще лучше. Вдобавок, вы могли заметить, что иногда встречаются несколько версий одной и той же карты - самая "старая" версия - самая цельная по сравнению с ПК версией. Поэтому вы можете использовать ранние версии карт, чтобы геймплей был полноценнее.


02 май 2016, 14:56
Аватара пользователя
Я консольный бог
Я консольный бог

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

DeXiaZ
Понятно, в GBA с добавлением уровней проще. Подпихнул ему новые уровни и игра их подхватила. В 3DO так не прокатывает. Нужно перекомпилировать exe файл, чтобы игра поняла, что уровней сейчас другое количество. Да еще и логику их следования тоже прописывать нужно, ну там, сначала секретный, затем такой-то... А GBA в этом смысле действует также, как и PC, ну, если не считать технических ограничений.


02 май 2016, 15:01
Аватара пользователя
Уже проживаю здесь
Уже проживаю здесь

Группа: Пользователи
Сообщения: 58
Регистрация: 01 май 2016, 21:23
Модель 3DO: Нет

DeXiaZ
Понятно, в GBA с добавлением уровней проще. Подпихнул ему новые уровни и игра их подхватила. В 3DO так не прокатывает. Нужно перекомпилировать exe файл, чтобы игра поняла, что уровней сейчас другое количество. Да еще и логику их следования тоже прописывать нужно, ну там, сначала секретный, затем такой-то... А GBA в этом смысле действует также, как и PC, ну, если не считать технических ограничений.

А, ну так вы изменяете количество уровней. А я нет, поэтому мне не пришлось играться с такими вещами. Я просто заменял все 24 карты. И, как видно, мне хватило 19 карт с головой (1-18, 24). Оставшиеся (19-23) просто уровни из Дума 2 по хронологическому порядку.

Если вы специально меняете количество уровней, то конечно, это требует такие вот манипуляции. Что поделать, хардкодинг - зло :)


02 май 2016, 15:27
Аватара пользователя
Специалист
Специалист

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

До чего техника дошла - Doom на калькуляторе

Хочу себе такой калькулятор)) Понятно что это деньги на ветер, проще на мобилку прогу скачать, но, блин, прикольно!


06 май 2016, 11:39
Случайный аватар
Всё, я здесь навсегда!
Всё, я здесь навсегда!

Группа: Пользователи
Сообщения: 111
Регистрация: 22 окт 2015, 08:36
Модель 3DO: Panasonic FZ-10 NTSC-J

Здравствуйте. Посмотрел на форуме http://forum.zdoom.org/viewtopic.php?f=19&t=51919 Хочу спросить можно ли реализовать эту идею в 3DO DooM? Считаю что данная задумка будет смотреться шикарно. Хотя вы и скажете что это отклонение от оригинала, но раз вы имеете на руках исходники, то это уже нарушение.

Добавлено спустя 3 минуты 4 секунды:
Пользуясь случаем поздравлю всех с майскими праздниками


06 май 2016, 18:38
Аватара пользователя
Уже проживаю здесь
Уже проживаю здесь

Группа: Пользователи
Сообщения: 58
Регистрация: 01 май 2016, 21:23
Модель 3DO: Нет

Здравствуйте. Вообще, спрайты редактировать можно в любом Doom'е, вроде как. Я, правда, рискую с таким ответом касательно 3DO, так как с его аспектами моддинга знаком весьма поверхностно, но вообще-то можно сделать. Только анимация такой плавной не будет.


06 май 2016, 20:54
Случайный аватар
Всё, я здесь навсегда!
Всё, я здесь навсегда!

Группа: Пользователи
Сообщения: 111
Регистрация: 22 окт 2015, 08:36
Модель 3DO: Panasonic FZ-10 NTSC-J

Спасибо за разъяснения. Мне вообще фиолетово что вы с думом на 3до собираетесь сделать. Просто увидел вот это и решил что будет очень неплохо смотреться, мне кажется это подошло бы к думу. Смотриться как-то по новому и в тоже время оно и не выходит за рамки. А вот анимацию можно любую сделать. Пример Smooth Doom. Или я не прав?


06 май 2016, 21:10
Аватара пользователя
Уже проживаю здесь
Уже проживаю здесь

Группа: Пользователи
Сообщения: 58
Регистрация: 01 май 2016, 21:23
Модель 3DO: Нет

RomanKursant писал(а):
Хочу спросить можно ли реализовать эту идею в 3DO DooM?

RomanKursant писал(а):
Мне вообще фиолетово что вы с думом на 3до собираетесь сделать

Так определитесь сначала, что вам нужно и зачем вам нужно это знать, если вы обращаетесь сюда, к нам, но при этом вам фиолетово.

Я уже сказал, что спрайты тут меняются как в ванильном думе - оригинальный набор как он есть. Можно просто придать новый вид благодаря новым спрайтам. Но их количество ограничено, поэтому плавной анимации не будет. Какие еще могут быть вопросы?


06 май 2016, 22:58
Случайный аватар
Всё, я здесь навсегда!
Всё, я здесь навсегда!

Группа: Пользователи
Сообщения: 111
Регистрация: 22 окт 2015, 08:36
Модель 3DO: Panasonic FZ-10 NTSC-J

Когда я сказал фиолетово то подразумевал что "я предлагаю идею, а вы хотите делайте и хотите не делайте". Я тут не могу указывать как вам тут поступать. Мне интересно почему такая реакция на слово фиолетово? Я вроде ее не адресовывал какому-то конкретному лицу или группе лиц.


06 май 2016, 23:16
Аватара пользователя
Я консольный бог
Я консольный бог

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

RomanKursant
Такие нововведения уместно делать, когда есть полноценный Ultimate Doom и Doom 2. После этого можно баловаться с новыми неоригинальными и самодельными текстурами. Мое мнение такое.
RomanKursant писал(а):
Мне интересно почему такая реакция на слово фиолетово? Я вроде ее не адресовывал какому-то конкретному лицу или группе лиц.

Попахивает пренебрежением. А так да, никого не задел.
DeXiaZ
Спрайты мы пока раскурили не полностью. Как поймем полностью их формат, можно будет добавлять/менять.
RomanKursant писал(а):
А вот анимацию можно любую сделать. Пример Smooth Doom. Или я не прав?

Слишком много кадров не пойдет на пользу движку. И так скоростью 3DO Doom не блещет. Если удастся переписать отрисовку пола и потолка под cel-engine, то об этом можно начать говорить, хотя первостепенной задачей я бы это не ставил.
DeXiaZ писал(а):
Но их количество ограничено, поэтому плавной анимации не будет.

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


07 май 2016, 01:35
Аватара пользователя
Уже проживаю здесь
Уже проживаю здесь

Группа: Пользователи
Сообщения: 58
Регистрация: 01 май 2016, 21:23
Модель 3DO: Нет

RomanKursant писал(а):
Когда я сказал фиолетово то подразумевал что "я предлагаю идею, а вы хотите делайте и хотите не делайте".

Я это воспринял как "я просто спросил, но мне все равно на то, чем вы занимаетесь, меня просто заволновал этот вопрос и я решил спросить здесь". Косноязычие-с.
Versus писал(а):
Спрайты мы пока раскурили не полностью. Как поймем полностью их формат, можно будет добавлять/менять.

Формат у спрайтов в ПК Думе всегда отсутствовал. Некоторые редакторы его определили как .lmp (lump), так как картинки без форматов в Винде обычно не бывают. Но мододелы обычно определяют для редактирования как .bmp, самолично.

Предполагаю, что и в 3DO такая же фигня - спрайты не имеют файлового формата как такового.


07 май 2016, 08:21
Аватара пользователя
Я консольный бог
Я консольный бог

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

DeXiaZ
Ну, примерно так. У этих спрайтов есть формат (cel), но оставлено только само тело файла без всех заголовков. И восстанавливать их - жопное дело. На этой и предыдущей странице выжимки из этого опыта.


07 май 2016, 11:21
Случайный аватар
Всё, я здесь навсегда!
Всё, я здесь навсегда!

Группа: Пользователи
Сообщения: 111
Регистрация: 22 окт 2015, 08:36
Модель 3DO: Panasonic FZ-10 NTSC-J

Помню когда главный герой погибает возле двери или его придавливает после смерти чтобы начать уровень заново нужно нажать использовать когда нажимаешь использовать сначала приоткрывается дверь а потом окно загрузки


14 май 2016, 19:33
Аватара пользователя
Я консольный бог
Я консольный бог

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

RomanKursant
Это ты говоришь про оригинал?


14 май 2016, 20:21
Случайный аватар
Всё, я здесь навсегда!
Всё, я здесь навсегда!

Группа: Пользователи
Сообщения: 111
Регистрация: 22 окт 2015, 08:36
Модель 3DO: Panasonic FZ-10 NTSC-J

R.E.A.L.


14 май 2016, 20:42
Аватара пользователя
Я консольный бог
Я консольный бог

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

Так никто и не смог понять, какой формат у спрайта Demon-а?
3DO Doom sources released


10 июн 2016, 11:12
Аватара пользователя
Приставочник
Приставочник

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

Versus, у меня не было пока возможности даже попытаться вникнуть. Ты в отладчике своей проги пробовал пошагово смотреть почему отрисовка не происходит? Это же самый простой способ понять. Сразу увидишь на каком байте проблема при разборе файла. Либо алгоритм декодирования где-то падает и поэтому получаешь черный квадрат т.к. заполнение данных не произошло.


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

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

Мы о том говорим? Я разбираю уже скомпилированный (из REZFILE) файл спрайта. Там зашито несколько кадров. Пока пытаюсь достать только первый. При этом нужно дописать заголовок CCB, выдернуть PLUT и PDAT. В нескольких файлах спрайтов все происходит корректно. А вот с тремя обнаружилась проблема. То ли там размер PLUT другой, то ли хрен его знает, что еще.
Author писал(а):
Ты в отладчике своей проги пробовал пошагово смотреть почему отрисовка не происходит?

В том-то и дело, что алгоритм мой простейший и ошибок никаких нет. Мы просто выдираем определенное количество байт на PLUT, определенное количество байт на PDAT, читаем разрешение и все.


10 июн 2016, 13:35
Аватара пользователя
Приставочник
Приставочник

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

Versus писал(а):
Мы о том говорим?

Я говорю об исходниках твоей проги для восстановления спрайта.


Versus писал(а):
Мы просто выдираем определенное количество байт на PLUT, определенное количество байт на PDAT, читаем разрешение и все.

Допустим ты всё сделал правильно. А чем ты просматриваешь результат? CelViewer не полностью поддерживает CEL'ы. Там есть заглушки недоработанные, если по какому-то флагу туда попадёт декодер, то как раз будет чёрный экран. Так же в процессе декодирования может быть ошибка в данных приводящая к такому же результату.


10 июн 2016, 14:27
На страницу Пред.  1 ... 37, 38, 39, 40, 41, 42, 43 ... 47  След.
© 2008-2024 «3DOPLANET.ru». Создано на основе phpBB® Forum Software © phpBB Group
Designed by ST Software || Русская поддержка phpBB || Time : 0.070s | 22 Queries | GZIP : On