Важная информация

User Tag List

Страница 16 из 40 ПерваяПервая ... 121314151617181920 ... ПоследняяПоследняя
Показано с 151 по 160 из 398

Тема: Игра "Зона" на ДВК

  1. #151

    Регистрация
    20.12.2005
    Адрес
    Москва
    Сообщений
    2,051
    Спасибо Благодарностей отдано 
    1,142
    Спасибо Благодарностей получено 
    1,473
    Поблагодарили
    525 сообщений
    Mentioned
    20 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    За вчера-сегодня исправил несколько ошибок.
    Написал программу для патчинга строк (на C#) - по сути та работа что была проделана Oleg H. над бинарным файлом, но я её делаю над ассемблерным текстом.
    Вообще конечно я себе сильно поднасрал тем что стал разбирать уже патченый файл игры, но что уж теперь сделаешь.

    На данный момент между .SAV-файлом, полученным из Паскаля + патчинг строк и файлом STALK.GME - 48 различающихся байт.
    В основном это инстркции NOP вставленные там где я не понял почему так.

    Верхняя граница памяти программы отличается на 2 байта - пока не понял почему.

    В процедуре L03362 (переход на этах вверх/вниз и отрисовк игрового поля) - идут странные манипуляции с регистром R4, как будто в нём запоминают на сколько нужно подобрать стек в L04170, но в R4 всегда ноль. Я пока не понял что вызывает такую обработку.

    Перед выходом (exit) из игрового цикла всегда делается сброс стека через MOV 050406, SP - ошчушчение что это генерирует компилятор (но не тот что есть у меня), хотя может это и ассемблерные вставки.

    Кое-где есть недостижимый код - как пример, L31036, L31134, L31416 - всё это также около команды exit. Возможно, ошибка в компиляторе, тот что есть у меня такого не делает.

    В общем, текущий вариант это "почти готово", но я пока не пробовал его запускать и проверять в деле.
    Собираюсь ещё раз пройтись по всем местам отличий - то есть сделать третий проход.

    Напомню, паскалевский текст здесь - https://github.com/nzeemin/uknc-vari...CAL/STALK1.PAS

    Эти 8 пользователя(ей) поблагодарили nzeemin за это полезное сообщение:

    Alex_K(16.04.2021), hobot(16.04.2021), Hunta(16.04.2021), Oleg N. Cher(16.04.2021), Radon17(17.04.2021), Sandro(16.04.2021), shattered(17.04.2021), svofski(16.04.2021)

  2. #151
    С любовью к вам, Yandex.Direct
    Размещение рекламы на форуме способствует его дальнейшему развитию

  3. #152

    Регистрация
    30.11.2015
    Адрес
    г. Самара
    Сообщений
    7,508
    Спасибо Благодарностей отдано 
    344
    Спасибо Благодарностей получено 
    714
    Поблагодарили
    596 сообщений
    Mentioned
    13 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Титанический труд Я похожим образом начинал восстанавливать исходники не то третьей, не то четвёртой версии Oracle, только там был C

    Этот пользователь поблагодарил Hunta за это полезное сообщение:

    nzeemin(16.04.2021)

  4. #153

    Регистрация
    24.08.2007
    Адрес
    Днепропетровская обл.
    Сообщений
    1,681
    Спасибо Благодарностей отдано 
    2,716
    Спасибо Благодарностей получено 
    170
    Поблагодарили
    130 сообщений
    Mentioned
    1 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    А я так восстанавливал Dark Woods на QuickBasic. Но не добился полной идентичности, иногда просто непонятно что в исходнике было. И ещё было сильное желание восстановить King Башурова (он на Turbo Pascal), тоже приступил, но запал быстро угас. Я ещё и декомпиляторы искал для DOS x86 16bit. Но все, что находил, или не работает вообще, или работает отвратительно.

  5. #154

    Регистрация
    20.01.2010
    Адрес
    г. Зеленоград
    Сообщений
    600
    Спасибо Благодарностей отдано 
    28
    Спасибо Благодарностей получено 
    231
    Поблагодарили
    123 сообщений
    Mentioned
    1 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от nzeemin Посмотреть сообщение
    За вчера-сегодня исправил несколько ошибок.

    В общем, текущий вариант это "почти готово", но я пока не пробовал его запускать и проверять в деле.
    Собираюсь ещё раз пройтись по всем местам отличий - то есть сделать третий проход.

    Напомню, паскалевский текст здесь - https://github.com/nzeemin/uknc-vari...CAL/STALK1.PAS
    Спасибо! Ждём результата третьего прохода. Хотя, в принципе и этот вариант должен работать, почему нет? Я просмотрел паскалевский исходник, никакого криминала не вижу.

    Нда, но компилятор ужасен однако. Никаких представлений об оптимизации вообще. Если переписать на ассемблер руками, то результат должен нормально влезть в БК-0010, к примеру. Кода всего ничего в общем-то. Я думал, что в игре функционала больше, просто его найти надо.

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

    То ли жди, то ли сейчас начинай переписывать ... Всё же на БК подобной игрушки как-то не хватало.

    Этот пользователь поблагодарил Sandro за это полезное сообщение:

    nzeemin(16.04.2021)

  6. #155

    Регистрация
    30.08.2011
    Адрес
    Зеленоград
    Сообщений
    7,161
    Спасибо Благодарностей отдано 
    2,979
    Спасибо Благодарностей получено 
    374
    Поблагодарили
    311 сообщений
    Mentioned
    13 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Sandro Посмотреть сообщение
    Всё же на БК подобной игрушки как-то не хватало.
    есть для старших БКашек под ОС БК работает

    Код:
    Время           Дата
    17:05:50        16-Апр-2021, Пятница
    
    .RU STALKB
    
    STALKER БК-0011М VERSION
    ЗАГАДАЙТЕ ЧИСЛО.МОЖЕТ БЫТЬ, ОНО ВАМ ПРИГОДИТСЯ... ТАМ...
    Код:
          Подземелье             1
      1 -   -   -   -   -   -   -   -   -   -   -   -   -     -   -  Рейтинг    0
      !                                                              Энергия   22
      !                                                             !Оружие    15
                                                                    !Защита    11
                                                                     В банке    0
      !
      !                                                             !Вредность  9
                                                                    !
                                                                      Рюкзак:
      !   - - -                                                        . . < . . .
      !   . . .                                                     !
          . . .                                                     !
    
      !
      !                                                             !
        -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
    БА-А-А-А-Х !!! ...
    Последний раз редактировалось hobot; 16.04.2021 в 20:46.
    Архив программ для УК-НЦ, ДВК и БК.

    Ищу игру "СТРАНА МОНСТРОВ" [monstr.sav] для ДВК.

  7. #156

    Регистрация
    20.12.2005
    Адрес
    Москва
    Сообщений
    2,051
    Спасибо Благодарностей отдано 
    1,142
    Спасибо Благодарностей получено 
    1,473
    Поблагодарили
    525 сообщений
    Mentioned
    20 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Как говорится, следите за руками, показываю один раз:
    Код:
    label 1;
    BEGIN {MAIN}
    ...
    1:
    ...
    goto 1;
    ...
    Код:
       6770					; 					goto 1;
       6771	037052	016706 	000000G			MOV	$RESR6,%6
       6772	037056	000167 	146566 			JMP	L98

    Эти 3 пользователя(ей) поблагодарили nzeemin за это полезное сообщение:

    Alex_K(16.04.2021), Hunta(16.04.2021), Oleg N. Cher(17.04.2021)

  8. #157

    Регистрация
    07.10.2007
    Адрес
    п.Пудость Гатчинского р-на Лен.обл.
    Сообщений
    3,250
    Спасибо Благодарностей отдано 
    360
    Спасибо Благодарностей получено 
    639
    Поблагодарили
    415 сообщений
    Mentioned
    46 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от nzeemin Посмотреть сообщение
    goto 1;
    Ну вот! И вся структурность потерялась ...

  9. #158

    Регистрация
    30.11.2015
    Адрес
    г. Самара
    Сообщений
    7,508
    Спасибо Благодарностей отдано 
    344
    Спасибо Благодарностей получено 
    714
    Поблагодарили
    596 сообщений
    Mentioned
    13 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от nzeemin Посмотреть сообщение
    Как говорится, следите за руками, показываю один раз:
    Нда... когда это видишь - понимаешь всю очевидность. А догадаться по первости - фиг получится. Внутри это "блока" может быть сколько угодно добавления "локальных" переменных, а надо привести указатель стека в правильное состояние

    - - - Добавлено - - -

    Цитата Сообщение от Alex_K Посмотреть сообщение
    вся структурность потерялась
    Спасибо goto и метках. Хотя, как сказал мой первый сенсей по программированию - программа на Паскале с goto - плохая программа

  10. #159

    Регистрация
    20.12.2005
    Адрес
    Москва
    Сообщений
    2,051
    Спасибо Благодарностей отдано 
    1,142
    Спасибо Благодарностей получено 
    1,473
    Поблагодарили
    525 сообщений
    Mentioned
    20 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Разбираюсь с L03362 - там тоже что-то наверчено на goto и возможно циклах с exit.
    Смысл в том, что процедура проверяет - если мы идём вверх/вниз и стоим НЕ на лестнице - то это исключение, и рисовать игровой экран уже не нужно, выходим на конец процедуры.
    Но оператора return у нас нет, поэтому здесь возникает какая-то мешанина.

    - - - Updated - - -

    Окей, с процедурой L03362 всё получилось, но без ассемблера не обошлось.
    И тут либо автор знал как записать оператор выхода (я пробовал в разных комбинациях, не нашёл), либо он сделал примерно так же как и я.
    В любом случае, эта процедура теперь совпадает до байта.
    Код:
    procedure L03362(A:char);
    begin
    ...
    		{$C	JMP L05114 } { Выход из процедуры }
    ...
    {$C
    L05114: } {метка для выхода из процедуры}
    end;
    Осталось 16 несовпадающих байт.

    - - - Updated - - -

    Нашёл все различия кроме одного байта в заголовочном блоке:
    Comparing files STALKP.SAV and ..\STALK\STALK.GME
    00000028: 0C 0E
    Я не особо понимаю почему эта разница на два байта - 0x600E в оригинале и 0x600C у меня, подозреваю что как-то связано с глобальными переменными.

    - - - Updated - - -

    Переименовал:
    L02332 -> RUKSEEK
    L02574 -> ZVERX

    - - - Updated - - -

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

    Эти 7 пользователя(ей) поблагодарили nzeemin за это полезное сообщение:

    Alex_K(17.04.2021), Arseny(17.04.2021), hobot(17.04.2021), Oleg N. Cher(17.04.2021), Sandro(17.04.2021), svofski(17.04.2021), S_V_B(17.04.2021)

  11. #160

    Регистрация
    20.01.2010
    Адрес
    г. Зеленоград
    Сообщений
    600
    Спасибо Благодарностей отдано 
    28
    Спасибо Благодарностей получено 
    231
    Поблагодарили
    123 сообщений
    Mentioned
    1 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Всё-таки не удержался и прошелся по уже имеющемуся исходнику с расстановкой осмысленных имён переменных и кое-где -- комментариев.

    В принципе, всю внутреннюю логику я понял. Её не так уж и много. Есть странности и недоделки, в количестве. Но всё это можно повыкидывать/заоптимизировать.

    Правда, когда возьмусь -- не знаю.

    http://sandro.pdp-11.ru/misc/stalker/stalk_literate.pas

    Эти 2 пользователя(ей) поблагодарили Sandro за это полезное сообщение:

    nzeemin(27.04.2021), Oleg N. Cher(18.04.2021)

Страница 16 из 40 ПерваяПервая ... 121314151617181920 ... ПоследняяПоследняя

Информация о теме

Пользователи, просматривающие эту тему

Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)

Похожие темы

  1. Ответов: 17
    Последнее: 26.12.2015, 23:22
  2. Ответов: 31
    Последнее: 15.04.2012, 19:24
  3. [аукцион] "корзины" от ДВК, Э-60
    от Agat в разделе Барахолка (архив)
    Ответов: 8
    Последнее: 08.11.2011, 14:22
  4. Ответов: 0
    Последнее: 15.08.2010, 14:38

Ваши права

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