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

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

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

Противостояние - военная хроника 1997г

Тема в разделе "Мастерская", создана пользователем jack7277, 24 фев 2013.

  1. jack7277

    jack7277

    Регистрация:
    23 май 2004
    Сообщения:
    1.115
    start.exe вызывает на исполнение addplr.daw, который представлен похоже в 32 битном линейном режиме через dos4gw.
     
  2. jack7277

    jack7277

    Регистрация:
    23 май 2004
    Сообщения:
    1.115
    В adddata.adw точно хранятся картинки, причем большие.
    В начале файла идет таблица смещений по 4 байта. Последнее смещение = длине файла adddata.adw
    Затем идут данные. Пробовал изменять центр потока на мусор, типа 00-FF длинными кусками, определил, что первой идет картинка - "Вставьте диск". Длина 213847 байт. Если в центр записать мусор, то картинку рвет на части, но потом идет с определенного момента снова нормальная часть.
    Она точно в 640x480, 256 цветов. Если берем цвет=байт, то нужно нежатых 307200 байт.
    Ищу инфу по какому-нибудь тесту на разные алгоритмы сжатия. Так неохота разбирать дос код. Досбокс записал лог на 80 тысяч исполнений команд до отрисовки главного меню.

    ---------- Сообщение добавлено в 18:38 ---------- Предыдущее сообщение размещено в 18:20 ----------

    Какие методы рисования были кроме записи в видеопамять по 0A000 ? Так как 640x480x8 bit уже вроде как svga, то там по другому как-то ? Там используется VESA режим.

    ---------- Сообщение добавлено в 18:54 ---------- Предыдущее сообщение размещено в 18:38 ----------

    Для видеороликов используется VGA mode 13h (320x200x8bit)
     
  3. jack7277

    jack7277

    Регистрация:
    23 май 2004
    Сообщения:
    1.115
    Успех был так близок.
    1. Пробовал VirtualPC 2007 + Win98 + Softice 2.7 (DriverStudio 2.7). Под Windows 98 свежее нет. В итоге провал.

    2. Vmware7 + win98 + эта же версия softice приводит к глюкам, вызвать sice нельзя. Картинка из этой версии.
     

    Вложения:

    • vmware.png
      vmware.png
      Размер файла:
      133,1 КБ
      Просмотров:
      709
  4. jack7277

    jack7277

    Регистрация:
    23 май 2004
    Сообщения:
    1.115
    Так и придется доставать старый комп, ставить на него win98 и softice. Я очень надеюсь, что на реальном железе не перекосит все цвета и что-то появится.
     
  5. jack7277

    jack7277

    Регистрация:
    23 май 2004
    Сообщения:
    1.115
    На дюроне с виндой 98 и сайсом под винду тоже самое. Все изображение перекашивает и ничего не видно.
    Фото с реального железа.
     

    Вложения:

    Последнее редактирование: 1 мар 2013
  6. jack7277

    jack7277

    Регистрация:
    23 май 2004
    Сообщения:
    1.115
    Универсальный драйвер в сайсе вызывает кашу, а стандартный драйвер VGA отключает монитор, пишет типа неподдерживаемый сигнал. Чтож делать то, как посмотреть.
    Последний шанс в досе использовать sice версии 2.8, вроде он последний дос, при запуске sice.exe ребут сразу.
     
  7. jack7277

    jack7277

    Регистрация:
    23 май 2004
    Сообщения:
    1.115
    Вроде бы для vesa режима выделяется окно не более 64 кб для записи напрямую в видеопамять. Можно использовать разный размер буфера, надо наверное найти какой размер использует игра и плясать от этого.
    Может подскажет кто как хранится графика и цвет ? Чтобы читать что то конкретное а не все подряд.
     
  8. Gamerun

    Gamerun

    Хелпер

    Регистрация:
    13 июн 2010
    Сообщения:
    8.590
    jack7277, если есть реальное железо, попробуй сделать дамп памяти с помощью какой-нибудь программы. На Windows 98 не в курсе как это делается, так как не уверен, что также, как на более современных системах через диспетчер задач.
     
  9. jack7277

    jack7277

    Регистрация:
    23 май 2004
    Сообщения:
    1.115
    Игра под дос, через dos4gw, использует vesa. Подскажи чем? Можно в досбокс, но не понял пока с какого сегмента делать дамп.

    ---------- Сообщение добавлено в 11:16 ---------- Предыдущее сообщение размещено в 10:56 ----------

    С видео получилось следующее, там тоже сырые потоки данных, картинки в перемешку со звуком. Вынул первое видео из movie.adw на 1.64МБ, засунул в GAP (22кГц, 8бит, моно, unsigned) - идет вперемешку шум-звуки-шум-звуки, где шум это поток картинок в 320х200х256, а звук в raw.
    Предполагаю, что если пошариться внимательно по файлу, то звук должен быть отделен какими-то смещениями. Видео начинается с букв DLM, его легко найти + если проверить начальную таблицу смещений в movie.adw, то они будут указывать на DLM.

    Видео:
    - Заголовок 4 байта - DLM + 0
    - Размер видео + звук - 4 байта (Совпадает с выдраным видеокуском)
    - Непонятные 4 байта (типа, E3 00 00 00 = 227, хз чего 227, самплов, кусков, да точно количество смещений)
    - Размер по горизонтали, 4 байта, 40 01 00 00 = 320
    - Размер по вертикали, 4 байта, C8 00 00 00 = 200
    - Какой-то разделитель в 4 байта = 04 00 00 00
    - Затем 227 смещений в файле по 4 байта
    - Затем снова разделитель 04 00 00 00

    - И похоже до конца поток данных

    ---------- Сообщение добавлено в 12:15 ---------- Предыдущее сообщение размещено в 11:16 ----------

    Добрался до чтения про палитры - плачу кровавыми слезами.

    ---------- Сообщение добавлено в 13:45 ---------- Предыдущее сообщение размещено в 12:15 ----------

    Слышна последовательность:
    - шум как данные
    - музыка звуки

    Данные слушать конечно мозг рвет.
     
    Последнее редактирование: 2 мар 2013
  10. Bato-San Чеширский волк-киборг

    Bato-San

    Регистрация:
    24 июн 2010
    Сообщения:
    14.136
    jack7277, Чем то странным вы занимаетесь, сударь... С великим интересом прочитал все варианты проделанных вами извращений :blush: и так и не понял, почему Вы по простому, по русски, не использовали встроенный в DosBox отладчик или TRW2000 под win98 ? Ну или IDA на худой конец уж.

    Ну. Дальше будет интереснее настолько, что стигматы откроются.:yes:
     
  11. jack7277

    jack7277

    Регистрация:
    23 май 2004
    Сообщения:
    1.115
    Bato-San, пока что пробую сам по быстрому поглядеть через хекс редактор.

    Меня смущает, что отладчик досбокса пишет адрес в виде сегмент:смещение, а ida открывает его как линейный файл и как состыковать адреса непонятно.
    Записал лог 2000 исполнений команд при воспроизведении видео, их анализ займет у меня намного дольше времени, чем я пойму глядя в winhex.

    ---------- Сообщение добавлено в 15:27 ---------- Предыдущее сообщение размещено в 14:28 ----------

    Ага trw2000 запустил игру и не искажает изображение когда попадает в отладчик. В настройках надо vesa=on включить.
     
    Последнее редактирование: 2 мар 2013
  12. jack7277

    jack7277

    Регистрация:
    23 май 2004
    Сообщения:
    1.115
    Звуки находятся в maindata.daw, формат 11кГц, 8 бит, моно, unsigned.
    Музыка меню из опаленного снега находится в maindata.adw в формате 22кГц и тд.

    Остались спрайты и видео, самый геморрой.
     
    Последнее редактирование: 3 мар 2013
    Bato-San нравится это.
  13. jack7277

    jack7277

    Регистрация:
    23 май 2004
    Сообщения:
    1.115
    Вообще не догоняю как отладчик работает в dosbox'е. Нажимаю F11 иду по одной команде, вроде всё нормально. У отладчика нет анализатора кода, поэтому команды прыгают постоянно. Наткнулся на repe movsb, нажал F10, чтобы пропустить огромный цикл, а игра вместо того, чтобы показать следующую команду, запустилась.
    Как так?

    В отладчике сегмент:смещение идут 160:17D326, к примеру, где repe встретилось. В ида адресация от 0 до 19E5Bh. А в trw2000 вообще 16f:000024
    Вот как их подружить, чтобы смотреть параллельно?

    На vogons подсказали, что нужно ядро переключить с динамического на нормальное и вся трассировка стала отображаться корректно, никакой каши кода, всё команда за командой.
     
    Последнее редактирование: 3 мар 2013
    bvedargh нравится это.
  14. jack7277

    jack7277

    Регистрация:
    23 май 2004
    Сообщения:
    1.115
    Пробую плясать от int21 с вынутым диском. Он рисует картинку вставьте диск. Читает файл adddata.adw, но поймать не могу блок отрисовки, уходит на Int16 опрашивать клаву и потом отладчик досбокса перепрыгивает непонятно куда и картинка разом выводится.
     
  15. Bato-San Чеширский волк-киборг

    Bato-San

    Регистрация:
    24 июн 2010
    Сообщения:
    14.136
    jack7277, а поискать адрес видеобуфера - не судьба ?:yes:
     
  16. jack7277

    jack7277

    Регистрация:
    23 май 2004
    Сообщения:
    1.115
    Bato-San, если бы знал что искать нашел бы, а пока просто блуждаю в поисках мысли какой нибудь.
    Подскажи куда копать еще.
     
    Последнее редактирование: 3 мар 2013
  17. jack7277

    jack7277

    Регистрация:
    23 май 2004
    Сообщения:
    1.115
    Блок отрисовки меню из отладчика досбокса, дальше пока не смотрел.
    Идет цикл от 480 (y) до 0, в этом цикле рисуется линия командой repe movsd, за один раз пересылается 4*ECX байт, где ECX=A0h=160, то есть циклом отрисовывает квадрат 640*480. Теперь надо отматывать код назад смотреть как формируется массив.
    После отрисовки "рисуется" цвет выводится палитра в порт 3c8h=0, индекс палитры и в порт 3c9h цвета.
    Палитра как мне показалось по первым байтам хранится в чистом несжатом виде в файле adddata.adw, длиной 768 байт. На диске в этом же файле картинка вставьте диск занимает 107443 байт, что явно недостаточно.

    асм код

    ---------- Сообщение добавлено в 22:55 ---------- Предыдущее сообщение размещено в 21:27 ----------

    Используется RLE, опишу алгоритм чуть позже.
    Кодирование/сжатие идет строками, то есть последовательность в 640 пикселей сжимается, получается типа
    количество повторов, байт для повтора, в конце 0.
    К примеру, последовательность из 640 пикселей-нулей сжимается до
    7F 00, 7F 00, 7F 00, 7F 00, 7F 00, 05 00,
    7Fh=127 * 5 повторов = 635 + 5 повторов нулей и завершающий ноль в конце строки.
    7Fh потому что это первые 7 бит байта, читал статью там расписано, щас по памяти не воспроизведу.

    ---------- Сообщение добавлено в 23:14 ---------- Предыдущее сообщение размещено в 22:55 ----------

    Хотя похоже вру.

    ---------- Сообщение добавлено в 23:18 ---------- Предыдущее сообщение размещено в 23:14 ----------

    Восьмой бит отделяет сжатые группы от обычных байт несжатых.

    ---------- Сообщение добавлено в 23:21 ---------- Предыдущее сообщение размещено в 23:18 ----------

    Восьмой бит в 1 говорит, что следующие числа - это обычные байты, убираем 8 бит, получаем количество некодированных следующих байт.

    ---------- Сообщение добавлено в 23:21 ---------- Предыдущее сообщение размещено в 23:21 ----------

    Короче всё понял, как освобожусь сяду распаковщик картинок писать.
     
    Последнее редактирование: 5 мар 2013
    bvedargh нравится это.
  18. jack7277

    jack7277

    Регистрация:
    23 май 2004
    Сообщения:
    1.115
    Очень надеюсь что видео пожато так же.
     
  19. jack7277

    jack7277

    Регистрация:
    23 май 2004
    Сообщения:
    1.115
    Вот картинку "вставьте диск" я распаковал, палитру сохранил рядом, как их теперь склеить в общую картинку?
    Вообще не догоняю пока.
     
  20. Gamerun

    Gamerun

    Хелпер

    Регистрация:
    13 июн 2010
    Сообщения:
    8.590
    Точно не помню, но можно попробовать TiledGGD - открываем картинку, а потом берем файл с палитрой и сохраняем.
     
    bvedargh нравится это.
  1. На этом сайте используются файлы cookie, чтобы персонализировать содержимое, хранить Ваши предпочтения и держать Вас авторизованным в системе, если Вы зарегистрировались.
    Продолжая пользоваться данным сайтом, Вы соглашаетесь на использование нами Ваших файлов cookie.
    Скрыть объявление