User Tag List

Страница 3 из 9 ПерваяПервая 1234567 ... ПоследняяПоследняя
Показано с 21 по 30 из 87

Тема: Дизассемблирование игры Batty

  1. #21

    Регистрация
    27.02.2005
    Адрес
    москва
    Сообщений
    14,289
    Записей в дневнике
    1
    Спасибо Благодарностей отдано 
    202
    Спасибо Благодарностей получено 
    1,456
    Поблагодарили
    946 сообщений
    Mentioned
    18 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от CityAceE Посмотреть сообщение
    если изменить адрес компиляции, то игра перестаёт работать.
    если я правильно понял то основной блок плотно окружён создаваемыми буферами/таблицами, куда его двигать-то ?
    кроме того вполне возможны выборки со строгим учётом того что данные начинаются с #XX00
    хотя как вариант можно попробовать сдвинуть вниз на 256байт, с учётом коррекции стека (сейчас он 24576) вроде должно заработать.

  2. #22

    Регистрация
    13.01.2005
    Адрес
    г. Москва
    Сообщений
    5,213
    Записей в дневнике
    7
    Спасибо Благодарностей отдано 
    706
    Спасибо Благодарностей получено 
    1,644
    Поблагодарили
    572 сообщений
    Mentioned
    50 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от goodboy Посмотреть сообщение
    если я правильно понял то основной блок плотно окружён создаваемыми буферами/таблицами
    Да, нет, буферы, конечно, есть, но не так уж там и плотно - свободного места там ещё полно.

    Цитата Сообщение от goodboy Посмотреть сообщение
    кроме того вполне возможны выборки со строгим учётом того что данные начинаются с #XX00
    Все такие места вынесены в буферы, на сколько я увидел.

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

  3. #23

    Регистрация
    27.02.2005
    Адрес
    москва
    Сообщений
    14,289
    Записей в дневнике
    1
    Спасибо Благодарностей отдано 
    202
    Спасибо Благодарностей получено 
    1,456
    Поблагодарили
    946 сообщений
    Mentioned
    18 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    вот например странный момент
    Код:
    #C084 LD A,(#5CDD) ; 23773 ???
          AND A
          CALL NZ,
    после старта эта переменная не инициализируется (теоретически там может быть что угодно)

  4. #24

    Регистрация
    22.05.2011
    Адрес
    г. Дзержинск, Украина
    Сообщений
    6,829
    Спасибо Благодарностей отдано 
    483
    Спасибо Благодарностей получено 
    663
    Поблагодарили
    513 сообщений
    Mentioned
    10 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от goodboy Посмотреть сообщение
    после старта эта переменная не инициализируется (теоретически там может быть что угодно)
    например отладочный режим с god mode

    только такую конструкцию я видел дето на геймбое

  5. #25

    Регистрация
    27.02.2005
    Адрес
    москва
    Сообщений
    14,289
    Записей в дневнике
    1
    Спасибо Благодарностей отдано 
    202
    Спасибо Благодарностей получено 
    1,456
    Поблагодарили
    946 сообщений
    Mentioned
    18 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    на спеке такое тоже встречается, но конкретно в нашем случае эта задумка испорчена (там после загрузки точно не ноль)
    игра грузится 23296,23156 и потом блок пересылается выше

  6. #26

    Регистрация
    13.01.2005
    Адрес
    г. Москва
    Сообщений
    5,213
    Записей в дневнике
    7
    Спасибо Благодарностей отдано 
    706
    Спасибо Благодарностей получено 
    1,644
    Поблагодарили
    572 сообщений
    Mentioned
    50 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от goodboy Посмотреть сообщение
    после старта эта переменная не инициализируется (теоретически там может быть что угодно)
    Я там вот столько их нашёл:

    Код:
    ; Переменные BASIC'а?
    L5C78 EQU $5C78
    L5CD8 EQU $5CD8
    L5CD9 EQU $5CD9
    L5CDB EQU $5CDB
    L5CDC EQU $5CDC
    L5CDD EQU $5CDD
    Что это и для чего они, ещё предстоит разобраться. Очевидно это нужно для корректной работы IM1. Этот режим задаётся в игре в явном виде:
    Код:
    LC077:
      LD IY,(LB793)
      LD A,(L5C78)
      LD (LB7E7),A
      EI
      IM 1
      LD A,(L5CDD)
      AND A
      CALL NZ,L974A
      LD IX,LC0B8
      LD B,$05
    LC077_0:
      PUSH BC
      LD A,(IX+$00)
      AND A
      CALL NZ,LC0AB
      LD BC,$0007
      ADD IX,BC
      POP BC
      DJNZ LC077_0
      LD A,(L5C78)
      LD B,A
      LD A,(LB7E7)
      CP B
      DI
      RET
    Игра запускается и без проблем работает даже если загрузить кодовый блок в полностью чистую память.

    Нашёл в игре вот такое. Откуда оно и для чего пока не знаю:

    Надпись появляется перед игрой, если в ячейку #B973 записать 0. Эта ячейка нигде не записывается. Возможно, это некий Easter Egg.
    С уважением, Станислав.

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

    Barmaley_m(28.06.2020)

  7. #27

    Регистрация
    07.08.2008
    Адрес
    г. Уфа
    Сообщений
    8,391
    Спасибо Благодарностей отдано 
    763
    Спасибо Благодарностей получено 
    2,367
    Поблагодарили
    1,317 сообщений
    Mentioned
    38 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Ячейка 5CDD похожа на признак необходимости оперативно (не дожидаясь потери жизни) обновить цифры счета на экране. При обычной загрузке там не 0, но даже если будет 0, то проблем это на первый взгляд не вызывает.

  8. #28

    Регистрация
    27.02.2005
    Адрес
    москва
    Сообщений
    14,289
    Записей в дневнике
    1
    Спасибо Благодарностей отдано 
    202
    Спасибо Благодарностей получено 
    1,456
    Поблагодарили
    946 сообщений
    Mentioned
    18 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от CityAceE Посмотреть сообщение
    то, что я изначально принял за декодирование блока, оказалось инверсией спрайтов (плюс ещё какие-то манипуляции с данными). Почему автор сразу не положил графику в нужном виде, а непосредственно перед запуском инвертирует её, совсем непонятно.
    возможно данные рисовались на `старшем` компе (Amiga/AtariST), и формат подразумевал (пусть и примитивное) сжатие
    ...............
    кажется нашёл автора https://twitter.com/mrmbee
    попробуйте, может удастся его разговорить
    послужной список у него приличный
    https://www.mobygames.com/developer/...loperId,51899/
    Последний раз редактировалось goodboy; 14.06.2020 в 17:47.

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

    CityAceE(15.06.2020)

  9. #29

    Регистрация
    07.08.2008
    Адрес
    г. Уфа
    Сообщений
    8,391
    Спасибо Благодарностей отдано 
    763
    Спасибо Благодарностей получено 
    2,367
    Поблагодарили
    1,317 сообщений
    Mentioned
    38 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    5CD9 - количество активных шариков/мячиков

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

    CityAceE(15.06.2020)

  10. #30

    Регистрация
    13.01.2005
    Адрес
    г. Москва
    Сообщений
    5,213
    Записей в дневнике
    7
    Спасибо Благодарностей отдано 
    706
    Спасибо Благодарностей получено 
    1,644
    Поблагодарили
    572 сообщений
    Mentioned
    50 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от CityAceE Посмотреть сообщение
    Нашёл в игре вот такое.
    Оказалось, что это уже известная информация.
    Нил Киннок - это британский политик, который в год выхода Batty (1987) баллотировался на выборах.

    Добился того, что скомпилированная по новому адресу игра запускается и работает в главном меню и таблице рекордов. Но стоит только запустить саму игру, как она сбрасывается. Копаем дальше

    Встретил интересную конструкцию:
    Код:
    L9F37:
      LD BC,$0016
      LD B,C
      DB $C3	; JP L8EDA
    L9F3C:
      DEFW L8EDA
      DEFW L9F63
      DEFW LA27E
      DEFW LA27E
      DEFW LA55A
      DEFW LA5A3
      DEFW LA89A
      DEFW LA8D2
      DEFW LA902
      DEFW LA9BC
      DEFW LAA30
      DEFW LA58D
    ; Routine at 9F54
    L9F54:
      LD HL,L9F3C
      LD A,(IX+$00)
      ADD A,A
      CALL hl_add_a
      LD A,(HL)
      INC HL
      LD H,(HL)
      LD L,A
      JP (HL)
    L9F37 - это подпрограмма, которая вызывается из других мест. Адрес L8EDA одновременно используется и в этой подпрограмме, и в таблице ниже. Для чего такая экономия непонятно... Конечно, возможно, А не может иметь нулевое значение, но тем не менее...
    Последний раз редактировалось CityAceE; 15.06.2020 в 08:38.
    С уважением, Станислав.

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

    Barmaley_m(28.06.2020)

Страница 3 из 9 ПерваяПервая 1234567 ... ПоследняяПоследняя

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

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

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

Похожие темы

  1. Дизассемблирование спектрумовских игр
    от CityAceE в разделе Утилиты
    Ответов: 4
    Последнее: 13.04.2016, 09:44
  2. ранняя версия Batty
    от goodboy в разделе Игры
    Ответов: 18
    Последнее: 24.10.2009, 03:34
  3. World Shaker - игра от Michael Batty, но на PC
    от Shadow Maker в разделе Игры
    Ответов: 6
    Последнее: 01.01.2009, 22:43
  4. Batty
    от CityAceE в разделе Игры
    Ответов: 1
    Последнее: 14.03.2005, 05:55

Ваши права

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