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

    Скрыть объявление
  2. Пожалуйста, внимательно прочитайте правила раздела.
  3. Если Вы видите это сообщение, значит, вы ещё не зарегистрировались на нашем форуме.

    Зарегистрируйтесь, если вы хотите принять участие в обсуждениях. Перед регистрацией примите к сведению:
    1. Не регистрируйтесь с никами типа asdfdadhgd, 354621 и тому подобными, не несущими смысловой нагрузки (ник должен быть читаемым!): такие пользователи будут сразу заблокированы!
    2. Не регистрируйте больше одной учётной записи. Если у вас возникли проблемы при регистрации, то вы можете воспользоваться формой обратной связи внизу страницы.
    3. Регистрируйтесь с реально существующими E-mail адресами, иначе вы не сможете завершить регистрацию.
    4. Обязательно ознакомьтесь с правилами поведения на нашем форуме, чтобы избежать дальнейших конфликтов и непонимания.
    С уважением, администрация форума Old-Games.RU
    Скрыть объявление

Вопросы по работе с ресурсами игр

Тема в разделе "Мастерская", создана пользователем Alex2x, 10 янв 2005.

  1. Alex2x

    Alex2x

    Регистрация:
    9 июл 2004
    Сообщения:
    206
    Пишите в эту тему если вы:

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


    Несколько полезных ссылок для работы с ресурсами игр:

    Руководство по HEX-редакторам от reg2s

    Сайты с описаниями различных игровых форматов:

    http://wiki.xentax.com/index.php/GRAFs/All
    Category:Game Formats - MultimediaWiki
    Category:Game Intro Page - ModdingWiki
    watto studios - http://www.watto.org
    oezmen.eu > Game resources

    Multi Ripper 2.80
    Mega Ripper 5.00
    +плагин Game Archive UnPacker 0.6.0.1 PRO для Total Commander

    Шапка by Dimouse

    -------------------------------------Оригинальное сообщение---------------------------------Люди, это, конечно, не техническая проблема, но никто не знает, можно ли и как вытащить из игры миди-музыку?
    //Перенесено из темы про Alone in the Dark.

    оригинальное сообщение
     
    Последнее редактирование модератором: 3 фев 2019
    OLD-NEW Player, AndyFox и Corak нравится это.
  2.  
  3. oFF_rus .

    oFF_rus

    Хелпер

    Регистрация:
    25 фев 2007
    Сообщения:
    2.149
    только если размер нового файла такой же как у старого, а у автора размер файла изменился.
     
  4. ForceKeeper

    ForceKeeper

    Регистрация:
    2 май 2008
    Сообщения:
    16
    oFF_rus
    Понял, просто мне раньше казалось, что, допустим, в самом mov-файле есть метка "я здесь начинаюсь" и "я здесь заканчиваюсь".
    Отлично! Осталось научиться программированию)
     
  5. Dimouse King of Mice

    Dimouse

    Администратор Переводчик

    Регистрация:
    18 апр 2003
    Сообщения:
    35.133
    ForceKeeper, я могу тебе дать программку свою, но тебе нужно узнать где хранятся сами смещения. Обычно в таких "архивах" смещения находятся в самом начале. Если ты можешь определить где начинаются MOV файлы, то ты фактически их знаешь. Дальше дело за малым - сделать поиск этих значений, учитывая, что они хранятся задом наперед. То есть, если первый MOV заканивается по 0x1234 то следует искать 0x3412.
     
  6. ForceKeeper

    ForceKeeper

    Регистрация:
    2 май 2008
    Сообщения:
    16
    Dimouse
    Давай, попробую поизвращаться.
     
  7. oFF_rus .

    oFF_rus

    Хелпер

    Регистрация:
    25 фев 2007
    Сообщения:
    2.149
    в файлах MOV она вполне может быть (обычно оба значения в начале файла), но это бывает не во всех форматах файлов и в разных форматах в разных местах.

    Не очень оптимально - прочитать, допустим, начало пары сотен файлов разного формата (ещё и формат надо определять?), лежащих в MHK с не очень быстрого CD (когда вышел Myst, какой CDROm у него в требованиях?) вжикая приводом, только для того, чтобы знать кто где. А можно прочитать один кусок этого MHK (как говорит Dimouse из начала или конца) и сразу всё знать. Вопрос удобства для пользователя.


    можешь выложить какой-нибудь маленький MHK? Я ничего заранее не обещаю, но посмотрел бы.
     
  8. Siberian_GRemlin

    Siberian_GRemlin

    Регистрация:
    22 ноя 2004
    Сообщения:
    4.050
    Это если игра использует остроконечный порядок записи для хранения смещений в архиве, что не всегда имеет место быть.
     
  9. ForceKeeper

    ForceKeeper

    Регистрация:
    2 май 2008
    Сообщения:
    16
    У меня есть мысль лучше, ибо в природе существует целая Вика по этому архиву) Но так как я не знаком с кодингом, для меня там все слишком поверхностно объяснено.
    http://insidethelink.ortiche.net/wiki/index.php/Mohawk_archive_format

    upd
    Если кто-то зайдет по линку, то Riven - это и есть второй Мист.
     
    Последнее редактирование: 26 апр 2009
  10. Dimouse King of Mice

    Dimouse

    Администратор Переводчик

    Регистрация:
    18 апр 2003
    Сообщения:
    35.133
    Siberian_GRemlin, ну да, не всегда так.

    ForceKeeper, я посмотрел, у меня программка все-таки вставляет файлы внутрь архива, заменяя столько же байтов, сколько занимает этот файл. Чтобы он в середину добавлял сколько-то байтов лишних, надо по-другому писать, но эту программу еще найти надо. Вот код такой, которая заменяет байты. Может спецы (oFF_rus) сразу сообразят какие надо изменения сделать, чтобы заменить только определенное количество байтов, а остальные добавить.

    Код:
    #include <sys\stat.h>
    #include <string.h>
    #include <stdio.h>
    #include <fcntl.h>
    #include <io.h>
    #include <malloc.h>
    #include <conio.h>
    
    int main()
    {
       char *infiles = "fontnew.dat";
       char *outfiles = "runit";
        
       int offset = 0x14638;
    
       printf("%s -> %s...",infiles,outfiles);
            
       int handle1, handle2;
       char* ch;
    
       /* create a file */
       handle1 = open(infiles, O_CREAT | O_RDWR, S_IREAD | S_IWRITE);
       handle2 = open(outfiles, O_CREAT | O_RDWR, S_IREAD | S_IWRITE);
    
       /* seek to the begining of the file */
       lseek(handle2, offset, SEEK_SET);
    
       ch = (char *) malloc(filelength(handle1));
    
       read(handle1,ch,filelength(handle1));
       write(handle2,ch,filelength(handle1));
    
       free(ch);
    
       close(handle2);
       close(handle1);
    
       printf("done.\n");
    
       return 1;
    }
    
     
    Последнее редактирование: 26 апр 2009
  11. oFF_rus .

    oFF_rus

    Хелпер

    Регистрация:
    25 фев 2007
    Сообщения:
    2.149
    O.K. по информации из этой Вики я написал программу, которая перечисляет все ресурсы в MHWK файлах. Попробуй натравить её на тот файл, который ты хочешь исправлять. Если я нигде не напутал с форматом, то ты получишь файл MHKResult.csv со всей той информацией, которую потом надо будет менять.

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

    Для запуска нужна Java JRE версии старше 1.4 (пятая и шестая наверняка подойдут): http://java.sun.com Распакуй zip - получишь файл с расширением jar. Его распаковывать не надо - надо запускать.

    Полученный файл MHKResult.csv передай мне. Я посмотрю, нет ли каких проблем со структурой и как ловчее спроектировать программу, вставляющую обновлённые мувики. Если будут ошибки во время работы, тоже сообщай (я мог что-то и упустить, так как у меня Riven'а нет - проверял только на файлах из Myst Masterpiece Edition).
     

    Вложения:

  12. Dimouse King of Mice

    Dimouse

    Администратор Переводчик

    Регистрация:
    18 апр 2003
    Сообщения:
    35.133
    Нашел программку, которую MaxEd написал для того, чтобы в файл озвучки игры Simon the Sorcerer можно было вставлять свои mp3 файлы (там тоже один большой файл, состоящий из маленьких mp3 (либо voc в случае DOS'а)). Собственно с минимальными изменениями можно применить и в данном случае.

    Код:
    #include <stdio.h>
    #include <string.h>
    #include <stdlib.h>
    
    int file_size(FILE *f)
    {
    	int old_pos = ftell(f);
    	fseek(f,0,SEEK_END);
    	int len = ftell(f);
    	fseek(f,old_pos,SEEK_SET);
    	return len;
    }
    
    int main(int argc, char **argv)
    {
    	if (argc < 3)
    	{
    		printf("Usage:\n rr.exe file n\nn - number of WAV file to be replaced (from the beginning)\n");
    		exit(-1);
    	}
    
    	char *file = argv[1];
    	int num = atoi(argv[2]);
    	FILE *simon = fopen("simon2.mp3","rb+");
    	if (!simon)
    	{
    		printf("simon2.mp3 not found!\n");
    		exit(-1);
    	}
    
    	FILE *infile = fopen(file,"rb+");
    	if (!infile)
    	{
    		printf("%s not found!\n",file);
    		exit(-1);
    	}
    
    	if (num > 11997)
    	{
    		printf("Too big RIFF number (>3623)\n");
    		exit(-1);
    	}
    
    	FILE *outfile = fopen("simon2_new.mp3","wb+");
    
    	int offsets[11997];
    	fseek(simon,4,SEEK_SET);
    
    	int i;
    	for (i=0;i<11997;i++)
    	{
    		fread(&offsets[i],1,sizeof(int),simon);
    	}
    	
    
    	int infile_size = file_size(infile);
    	char *buffer_new = new char[infile_size];
    	fread(buffer_new,infile_size,1,infile);
    	fclose(infile);
    
    	int simon_size = file_size(simon);
    	
    	const int first_riff = offsets[0];
    
    	int pre_size = offsets[num] - offsets[0];
    	int post_size;
    	if (num!=11997) post_size = simon_size - offsets[num+1];
    	else post_size = 0;
    
    	char *buffer_pre = new char[pre_size];
    	char *buffer_post = new char[post_size];
    	fseek(simon,offsets[0],SEEK_SET);
    	fread(buffer_pre,1,pre_size,simon);
    	if (num!=11997) 
    	{
    		fseek(simon,offsets[num+1],SEEK_SET);
    		fread(buffer_post,1,post_size,simon);
    	}
    
    	fwrite("\0\0\0\0	",1,4,outfile);
    
    	int diff = -(offsets[num+1]-offsets[num]-infile_size);
    	for (i=0;i<11997;i++)
    	{
    		if (offsets[i] > offsets[num]) offsets[i]+=diff;
    		fwrite(&offsets[i],1,sizeof(int),outfile);
    	}
    	
    	fwrite(buffer_pre,1,pre_size,outfile);
    	fwrite(buffer_new,1,infile_size,outfile);
    	fwrite(buffer_post,1,post_size,outfile);
    	
    	fclose(outfile);
    	fclose(simon);
    
    	return 0;
    }
    
     
  13. ForceKeeper

    ForceKeeper

    Регистрация:
    2 май 2008
    Сообщения:
    16
    oFF_rus
    Просканировал твоей прогой один из mhk-архивов.
     

    Вложения:

    • MHKResult.rar
      Размер файла:
      57 КБ
      Просмотров:
      50
  14. СотаСил

    СотаСил

    Регистрация:
    29 май 2009
    Сообщения:
    3
    Arena

    Помогите плиз.Как вытащить из The Elder Scrolls Arena текстовые файлы(дабы перевести их)?
     
  15. Steel Rat Stainless

    Steel Rat

    Регистрация:
    28 дек 2006
    Сообщения:
    3.260
    Т.е. шрифты ты уже русифицировал?
     
  16. СотаСил

    СотаСил

    Регистрация:
    29 май 2009
    Сообщения:
    3
    А что такое шрифты?)XD
    И вообще как руссифицируются игры?:banghead::wub:
     
    Последнее редактирование: 31 май 2009
    Wild_Wolf нравится это.
  17. kreol Старший офицер Чёрной Гвардии

    kreol

    Администратор

    Регистрация:
    2 июл 2007
    Сообщения:
    115.081
    СотаСил, по-моему, тебе надо или проспаться, или сходить на пару деньков в интересную часть света...

    За следующее такое сообщение будет бан на два дня, я не шучу.
     
  18. XeTaG M

    XeTaG M

    Регистрация:
    5 апр 2009
    Сообщения:
    266
    Я хотел спросить - можно ли перекинуть кампанию из Knights of Mercants во Вторую корону? Или хотя бы из второй короны как нибудь перенести ускорение времени в 1 часть? Иры вроде бы одинаковые, а как сделать ен знаю
     
  19. Newbilius Программуль

    Newbilius

    Регистрация:
    24 авг 2007
    Сообщения:
    4.602
    Никто не разбирался с последними версиями паков моделей к JDoom (Doomsday)? Там какой то новый формат (dmd).
    К DronEngine (такое же расширение файлов моделей) отношения не имеет.
     
  20. Химик

    Химик

    Регистрация:
    22 июл 2009
    Сообщения:
    16
    Я собираюсь попробовать русифицировать Dune I. Какими прогами надо пользоваться?
     
  21. Dizzy

    Dizzy

    Регистрация:
    16 окт 2006
    Сообщения:
    112
    Добрый вечер.

    Хочу достать из ЕХЕ код AI. Как это возможно реализовать?

    Спасибо.
     
  22. MisterGrim Very old

    MisterGrim

    Legacy

    Регистрация:
    29 ноя 2007
    Сообщения:
    25.423
    Дизассемблером и последующим анализированием кода. Другого способа не вижу.
     
    kreol нравится это.
  1. На этом сайте используются файлы cookie, чтобы персонализировать содержимое, хранить Ваши предпочтения и держать Вас авторизованным в системе, если Вы зарегистрировались.
    Продолжая пользоваться данным сайтом, Вы соглашаетесь на использование нами Ваших файлов cookie.
    Скрыть объявление