User Tag List

Показано с 1 по 10 из 87

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

Комбинированный просмотр

Предыдущее сообщение Предыдущее сообщение   Следующее сообщение Следующее сообщение
  1. #1

    Регистрация
    13.01.2005
    Адрес
    г. Москва
    Сообщений
    5,216
    Записей в дневнике
    7
    Спасибо Благодарностей отдано 
    707
    Спасибо Благодарностей получено 
    1,652
    Поблагодарили
    574 сообщений
    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)

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

  3. #2

    Регистрация
    13.01.2005
    Адрес
    г. Москва
    Сообщений
    5,216
    Записей в дневнике
    7
    Спасибо Благодарностей отдано 
    707
    Спасибо Благодарностей получено 
    1,652
    Поблагодарили
    574 сообщений
    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)

  4. #3

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

    По умолчанию

    Цитата Сообщение от CityAceE Посмотреть сообщение
    возможно, А не может иметь нулевое значение
    На мой взгляд это более вероятный вариант. В (извините) эксолоне несколько раз встречаются таблицы, в которых 0й индекс никогда не бывает, поэтому адрес как бы начала такой таблицы приходится на завершение предыдущего кода или данных.

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

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

Эту тему просматривают: 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

Ваши права

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