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

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

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

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



Ответить на тему  [ Сообщений: 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) плюсуем?

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


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;
}


Вложения

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

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

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


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

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


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
Профиль WWW
Аватара пользователя
Консольный монстр
Консольный монстр

Группа: Разработчики
Сообщения: 2106
Регистрация: 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
Профиль WWW
Аватара пользователя
Я консольный бог
Я консольный бог

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

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

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

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


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

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

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


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

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

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

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


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

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

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


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

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

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


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

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

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


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


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

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

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

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


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
Профиль WWW
Аватара пользователя
Я консольный бог
Я консольный бог

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

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

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


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
Профиль WWW
Аватара пользователя
Специалист
Специалист

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

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

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

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


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
Профиль WWW
Случайный аватар
Всё, я здесь навсегда!
Всё, я здесь навсегда!

Группа: Пользователи
Сообщения: 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
Профиль WWW
Случайный аватар
Всё, я здесь навсегда!
Всё, я здесь навсегда!

Группа: Пользователи
Сообщения: 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 писал(а):
Но их количество ограничено, поэтому плавной анимации не будет.

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

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


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

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

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

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

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

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


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

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

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

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


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
Это ты говоришь про оригинал?

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


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

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


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, читаем разрешение и все.

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


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
Профиль
Показать сообщения за:  Поле сортировки  
Ответить на тему  [ Сообщений: 1386 ]  На страницу Пред.  1 ... 37, 38, 39, 40, 41, 42, 43 ... 47  След.

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

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 159


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

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