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. Зарянок

    Зарянок

    Регистрация:
    9 май 2017
    Сообщения:
    69
    @warr11r, Если не трудно, то сделайте, буду рад любой помощи!
     
  4. warr11r Игропотрошитель

    warr11r

    Переводчик

    Регистрация:
    9 сен 2015
    Сообщения:
    1.807
    @Зарянок, вам будет проще, если я код кину или готовый exe?
     
  5. Зарянок

    Зарянок

    Регистрация:
    9 май 2017
    Сообщения:
    69
  6. warr11r Игропотрошитель

    warr11r

    Переводчик

    Регистрация:
    9 сен 2015
    Сообщения:
    1.807
    Итак: agext.exe - извлекает raw-графику, afreimp.exe - возвращает обратно после редактирования. Запускать из папки с dat-файлом.

    Палитру сбивать не советую. Имён файлов не обнаружил, так что название у них "позиция в dat_ширина_высота". Не забываем, что картинки 16-битные.

    Для конвертирования raw в другие форматы можно использовать Irfanview, TextureFinder, или же мой любимый GBS. У меня вон вообще плагин для Окошек стоит, эскизы в папке отображаются.
     

    Вложения:

    • tools.zip
      Размер файла:
      6,3 МБ
      Просмотров:
      62
    Dimouse, Steel Rat и kirik-82 нравится это.
  7. Зарянок

    Зарянок

    Регистрация:
    9 май 2017
    Сообщения:
    69
    @warr11r, Попробовал. Изображения тулза вытаскивала и портила их. Появлялись зеленые помехи. Но мне ещё помогли.
    Пользователь на YouTube c ником SpacePilot3ooo скинул мне тулзу, которую я прикрепил ниже. Она без проблем открыла файлы и вытащила изображения в формате PNG. Думаю кому-нибудь будет полезно.
     

    Вложения:

    • agharta.zip
      Размер файла:
      9,6 КБ
      Просмотров:
      67
    kirik-82, Dimouse и warr11r нравится это.
  8. AlexeiK

    AlexeiK

    Регистрация:
    11 ноя 2010
    Сообщения:
    81
  9. Tigoro AI General

    Tigoro

    Регистрация:
    4 фев 2010
    Сообщения:
    3.143
  10. Agains

    Agains

    Регистрация:
    12 сен 2007
    Сообщения:
    594
    А напомните пожалуйста программу для просмотра и распаковки ресурсов игр Gold Box . Была она у меня точно помню а сейчас что то найти не могу
     
  11. lCanekl

    lCanekl

    Регистрация:
    16 янв 2018
    Сообщения:
    31
    Меня интересует последовательность работы со ЗВУКОМ.
    Как работать с DOS файлами, если хочешь заменить англ. зв. дорожку на свою. Кто сможет написать туториал одного файла? [в Hex-редакторе например?], Или как сделать это другим способом (GameExtractor легче - фото? offset-ы что отмечены хорошо, но версия неполная, в Hex посмотрел - >_<, всё это интересно, но пока не понял как менять код-ы, определить правильно длину - у всех "4D 4F 56 49 - MOVI" и главное, новую "длину" уже нового файла, чтобы это ещё работало после "ctrl+v" грубо говоря, Offtop
    и не перепутать с последовательностью, одинаково ли они расположены в Hex-коде (от 1 до 117) и вырезаны из res-файла-фото, есть и другой архив формат .RM - фото [оригинальный из СистемШок?], каждый этот файл нашел- между собой. Т.е не знаю в какой последовательности рабросаны эти файлы в .res Hex коде. В момент теста-прохождения, всё это конечно я буду смотреть, но интересует-как! не перепутать между собой "коды" озвучек.
    Через "дизассемблер" это как-то работает, в PE Explorer или нет?), или resource-hacker, любые варианты, если есть ссылки, оставьте. [Qviev - фото]

    Основа - системный файл игры формат - .res, в данном случае CITALOG.RES и CITBARK.RES, папка "DATA".
    - выделить звуковые файлы из них мне удалось отдельной программой-ссылка на сайт, её кодOfftop
    /*
    This quick hack of a program extracts sound files from the game
    "System Shock" by Looking Glass. The game and all contents thereof
    are owned and copyrighted by Looking Glass, Origin Systems, and Electronic
    Arts. Use this program at your own risk (legal and otherwise) :)

    NOTE: This program must be compiled with a 32-bit compiler, not a 16-bit
    compiler. Otherwise the "int" type is the wrong size and everything will
    just go to pot. Not that things might not get screwed up anyhow...

    Also note that this only extracts the Cd-enhanced sounds (logs, e-mails,
    computer announcements, etc), which are contained in the files
    "citalog.res" and "citbark.res" (English),
    "geralog.res" and "gerbark.res" (German), or
    "frnalog.res" and "frnbark.res" (French).
    The normal sound effects are .voc files stored (uncompressed) in the file
    "digifx.res" which can be extracted with any standard ripper program out
    on the Net.
    */

    #include <stdio.h>
    #include <iostream.h>
    #include <stdlib.h>
    #include <string.h>

    int main() {
    FILE *inf, *outf;
    char filenin[100],filenout[108], filenoutbase[100], filenoutnum[4];
    unsigned char header[44], *hpt;
    unsigned char in, movcheck[4];
    char *data;
    int movsize, curdatsize, skip;
    int numfiles;

    cout << "SS1 log extractor v1.1\n\n";
    cout << "The input file must be \"XXXalog.res\" or \"XXXbark.res\", where\n";
    cout << "\"XXX\" is either \"cit\", \"ger\", or \"frn\" depending on which\n";
    cout << "language you want. These files are found on your System Shock 1 CD\n";
    cout << "in the folder \"CDROM\\DATA\"\n\n";

    //A file counter for naming the output files sequentially
    numfiles = 1;

    //Down below, we know we'll be skipping at least 1012 bytes, so
    //set the data buffer to that size initially
    curdatsize = 1012;
    data = new char[curdatsize];

    cout << "Enter input file name: ";
    cin >> filenin;
    cout << "\nEnter output file base name (e.g. if you enter \"sound\", the program\n";
    cout << "will output files \"sound1.wav\", \"sound2.wav\", etc.): ";
    cin >> filenoutbase;
    cout << "\n\n";

    //Set up the .wav file header for 8-bit 22050Hz mono
    hpt = header;
    *hpt++ = 'R';
    *hpt++ = 'I';
    *hpt++ = 'F';
    *hpt++ = 'F';
    *hpt++ = 0x21;
    *hpt++ = 0xc9;
    *hpt++ = 0x13;
    *hpt++ = 0x00;
    *hpt++ = 'W';
    *hpt++ = 'A';
    *hpt++ = 'V';
    *hpt++ = 'E';
    *hpt++ = 'f';
    *hpt++ = 'm';
    *hpt++ = 't';
    *hpt++ = ' ';
    *hpt++ = 0x10;
    *hpt++ = 0x00;
    *hpt++ = 0x00;
    *hpt++ = 0x00;
    *hpt++ = 0x01;
    *hpt++ = 0x00;
    *hpt++ = 0x01;
    *hpt++ = 0x00;
    *hpt++ = 0x22;
    *hpt++ = 0x56;
    *hpt++ = 0x00;
    *hpt++ = 0x00;
    *hpt++ = 0x22;
    *hpt++ = 0x56;
    *hpt++ = 0x00;
    *hpt++ = 0x00;
    *hpt++ = 0x01;
    *hpt++ = 0x00;
    *hpt++ = 0x08;
    *hpt++ = 0x00;
    *hpt++ = 'd';
    *hpt++ = 'a';
    *hpt++ = 't';
    *hpt++ = 'a';


    inf = fopen(filenin,"rb");
    in = 0;
    if (inf != NULL) {
    while (!feof(inf)) {
    //First, search for the "MOVI" heading
    fread(&in,sizeof(in),1,inf);
    if (in == 'M') {
    fread(movcheck,sizeof(char),3,inf);
    if ((movcheck[0] == 'O') && (movcheck[1] == 'V') &&
    (movcheck[2] == 'I')) {

    //Skip the next eight bytes-- I dunno what they're for
    fread(data,8 * sizeof(char),1,inf);

    //Get the sound file size. Little endian
    fread(&in,sizeof(in),1,inf);
    //For some reason, the size is always one byte too long, so...
    in--;
    //...and don't forget to add it to the header
    hpt[0] = in;
    movsize = (int)in;
    fread(&in,sizeof(in),1,inf);
    hpt[1] = in;
    movsize = movsize + ((int)in * 256);
    fread(&in,sizeof(in),1,inf);
    hpt[2] = in;
    movsize = movsize + ((int)in * 256 * 256);
    fread(&in,sizeof(in),1,inf);
    hpt[3] = in;
    movsize = movsize + ((int)in * 256 * 256 * 256);

    //Skip the next 1012 bytes. Again, I dunno what they're for
    fread(data,1012 * sizeof(char),1,inf);

    //The next two bytes indicate how long the whole "MOVI" header
    //is, so we should skip all that and go straight to the sound
    //data
    fread(&in,sizeof(in),1,inf);
    skip = (int)in;
    fread(&in,sizeof(in),1,inf);
    skip = skip + ((int)in * 256);
    //...but we already skipped through a bunch of the header
    //to get to this point, so reduce the total skip ahead from
    //this point:
    skip -= 1030;

    //If the data buffer isn't big enough, embiggen it
    if (skip > curdatsize) {
    delete data;
    data = new char[skip];
    curdatsize = skip;
    }
    fread(data,skip * sizeof(char),1,inf);

    //Create the output file name for this sound file
    ltoa(numfiles,filenoutnum,10);
    numfiles++;
    strcpy(filenout,filenoutbase);
    strcat(filenout,filenoutnum);
    strcat(filenout,".wav");
    outf = fopen(filenout,"wb");
    if (outf != NULL) {
    cout << "File: " << filenout << " \tSize: " << movsize / 1024 << " KB\n";
    //Write out the header
    fwrite(header,sizeof(char),44,outf);
    //If the data buffer isn't big enough, embiggen it
    if (movsize > curdatsize) {
    delete data;
    data = new char[movsize];
    curdatsize = movsize;
    }
    //Read the data from input, write the data to output
    fread(data,movsize * sizeof(char),1,inf);
    fwrite(data,movsize * sizeof(char),1,outf);

    fclose(outf);
    }
    else { //If for some reason we couldn't open the output file...
    cout << "Couldn't open file \"" << filenout;
    cout << "\" for output\n";
    fclose(inf);
    exit(EXIT_FAILURE);
    }
    }
    }
    }
    delete data;
    fclose(inf);
    }
    return 1;

    }
    , (как я понимаю сохранять новые придется в "8 битный звук на 11 кГц .wave" или нет "6-битный RAW/ RW?", но это не самое сложное.... и их уже "запихнуть" в .res ...
    Offtop
    Почти закончил готовить озвучку, 12-15 файлов осталось, все заготовки собраны (~200 файлов готовы), но пока не обрабатаны, скоро будет необходимо разобраться с res файлами и тэстить на прохождение файлы и экспериментировать с обработкой, дело встанет, если не разберусь, хочу понять - "как!" домучить и завершить ... Работаю с руссифицированным СистемШок файлом ГоГ-сборки (озвучка оригинальная)... п.с Делаю для себя, и уже наслушался оригинальной, пока делал свои [пример1, пример2], хочу освоить этот процесс, в первую очередь ушел от эмоциональных "актерских" озвучек, они вечно переигрывают (люди так не разговаривают, а получается театральное прочтение), по-этому нейтральная интонация понравилась больше, это навевает 90-ые, пиратские - самые любимые фильмы делались именно так, до сих пор не могу привыкнуть к полному дубляжу...
     
    Последнее редактирование: 24 апр 2018
  12. bckpkol

    bckpkol

    Регистрация:
    18 мар 2011
    Сообщения:
    214
    @ICanekl, логика подсказывает мне, что 80433200 это (big endian? кажется, но я их путаю) либо 32bit размер всего файла, либо блока данных, и EE56 (того же endian) 16bit размер одного звукового файла. Единственный способ узнать - попробовать. Если надо просто выдрать сырой звук, меньше всего кода получится в C++, если закодирован, намного проще собрать в Python, если надо очистить звук, я бы в C++ точно не лез. Лучше всего писать на том, что знаешь, меня можешь не слушать. Это MHO.
    7.3. struct — Interpret strings as packed binary data — Python 2.7.15 documentation
    P.S. всё-таки little, т.к нулями кончается. Кажется. Брать надо меньший.
    Порядок байтов — Википедия
     
    Последнее редактирование: 15 май 2018
    lCanekl нравится это.
  13. Neitan

    Neitan

    Регистрация:
    1 дек 2007
    Сообщения:
    451
    SWAT 4
    Mожно ли адаптировать шрифт игры русской версии под нестандартные для игры разрешения, например, 1360х769? Игра старая, на современных мониторах нормально не настроить. В моде SWAT: Elite Force это реализовано, но только для английского языка и не для оригинальной игры. Есть ещё SWAT 4 Widescreen Mod (Gold Edition), но опять же, только для английского языка.
     
    Последнее редактирование модератором: 18 май 2018
  14. Bato-San Чеширский волк-киборг

    Bato-San

    Регистрация:
    24 июн 2010
    Сообщения:
    14.136
    @Neitan, можно. Берёшь уже адаптированную английскую версию, перерисовываешь шрифт на русский, вставляешь руссификацию и обнародуешь.
     
  15. Neitan

    Neitan

    Регистрация:
    1 дек 2007
    Сообщения:
    451
    Идея понятна, но чёрт его знает, как этот шрифт выдрать. И где он лежит. SWAT 4 Widescreen Mod состоит из 2-х файлов: SwatGUIState.ini и SwatGame.int. Оба шрифт не содержат.
    --- добавлено 18 май 2018, предыдущее сообщение размещено: 18 май 2018 ---
    Кажется нашёл, это russianfonts.exec Чем его можно редактировать?
     

    Вложения:

    • russianfonts.rar
      Размер файла:
      564 байт
      Просмотров:
      31
  16. Vissavald

    Vissavald

    Регистрация:
    9 янв 2013
    Сообщения:
    1.310
    Я в теме всяких этих компиляций-декомпиляций не силён, поэтому вопрос вполне может оказаться дурацким.

    Есть игра. Представляет собой один небольшой ЕХЕ-файл, на 11 метров. В нём, соответственно, упрятано всё: и графические, и звуковые ресурсы, и тексты. И всё это хотелось бы оттуда достать. Возможно ли сие?
     
  17. Bato-San Чеширский волк-киборг

    Bato-San

    Регистрация:
    24 июн 2010
    Сообщения:
    14.136
    да.

    Но учитывая что
    ...:spiteful:
    --- добавлено 20 май 2018, предыдущее сообщение размещено: 20 май 2018 ---
    вордпадом. Но сам шрифт судя по нижней строке - текстура.
     
  18. al_exquemelin

    al_exquemelin

    Регистрация:
    12 окт 2017
    Сообщения:
    354
    Морские легенды / Sea Legends (1995, DOS)
    Пробовал кто-нибудь разбирать ресурсы этой игры? Интересует возможность вытащить музыку (формат - hmp), а в перспективе, может, и исправить баг с серьгой в финале русской версии от NMG.
    Сам я дилетант, с дизассемблером не знаком, но интуиция и HEX-редактор мне подсказывают, что все ресурсы игры - в файлах *.RES, в начале каждого файла что-то типа таблицы смещений (little endian?). В файлах *.ANR, судя по всему, анимированные заставки (абордаж, гибель героя и т. д.). Дальше моя интуиция не идёт. Для зацепки выкладываю сам MUSIC.RES.
     

    Вложения:

    • MUSIC.RES.zip
      Размер файла:
      235,8 КБ
      Просмотров:
      41
  19. Scorp Никто и звать меня никак

    Scorp

    Регистрация:
    21 апр 2005
    Сообщения:
    2.955
    Думаю если гугл результата не принес - тебе только знакомство поможет. Судя по файлу эти hmp в твоем файле упакованы или криптованы, сути дела не меняет - надо лезть в дебуггер и смотреть, чего там игра делает и как она файлы грузит.
     
  20. Vissavald

    Vissavald

    Регистрация:
    9 янв 2013
    Сообщения:
    1.310
    Учиться никогда не поздно. Хотя бы в общих чертах? Последовательность действий, необходимый инструментарий?
     
  21. Bato-San Чеширский волк-киборг

    Bato-San

    Регистрация:
    24 июн 2010
    Сообщения:
    14.136
    рвение твоё похвально, но готов ли ты осваивать всё в полном объёме хотя бы минимального курса ?

    1. Изучаем технический ангельский язык.
    2. Изучаем основы информатики и программирования.
    3. Изучаем обязательно ассемблер х86, кроме пары ЯВУ.
    4. Внимательно от корки до корки изучаем MSDN и WinAPI.
    5. Потом, если пропустили - документацию по формату исполняемых файлов для DOS/ OS/2 /Windows/Unix
    6. Выбираем, уже понимая "что и как" инструменты.
    7. Собсно осваиваем реверсинг.

    Это долгий, но правильный путь, который позволит решать широкий спектр задач.
     
    Последнее редактирование: 21 май 2018
  22. Vissavald

    Vissavald

    Регистрация:
    9 янв 2013
    Сообщения:
    1.310
    @Bato-San, первые два пункта есть. Остальные - нет времени.

    И широкий спектр не нужен. Нужна одиночная эпизодическая задача.
     
  1. На этом сайте используются файлы cookie, чтобы персонализировать содержимое, хранить Ваши предпочтения и держать Вас авторизованным в системе, если Вы зарегистрировались.
    Продолжая пользоваться данным сайтом, Вы соглашаетесь на использование нами Ваших файлов cookie.
    Скрыть объявление