Вход

Просмотр полной версии : Дизассемблирование игры Commando



nzeemin
21.02.2021, 13:14
Доброго дня.
До некоторой степени сделал дизасм игры Commando (1985), с помощью Skoolkit.
Карточка игры: https://spectrumcomputing.co.uk/entry/9325/ZX-Spectrum/Commando
Незакончено, далеко не всё описано, возможно даже не весь код представлен.

Из интересного:
- Нет теневого экрана, всё сразу выводится на основной экран, причём по XOR.
- По адресу $A000 лежат 128 спрайтов 24 x 21 (64 байта на спрайт), причём большинство представлены в четырёх вариантах сдвига, по 2 пиксела; программно делается сдвиг только на 1 пиксел, если это нужно. Байты этих спрайтов хранятся змейкой: в чётных строках байты идут слева направо, в нечётных справо налево.

Если хорошо поискать, то можно найти архивы GoingCommando.zip и CommandoEditor.zip, с подробным описанием того как устроены уровни и редактор уровней там же. По сути, уровень это последовательность двухбайтовых тэгов; тэг это байт типа тэга + байт параметра; в этих тэгах либо объект, либо тэг пропуска вертикального места. Уровень описывает только рельеф, враги не входят в последовательность, они появляются сами по себе, исходя из заданных объектов. Например, если поставить траншею, то в ней будет сидеть чувак, если камень, то за ним тоже засядет чел.

goodboy
21.02.2021, 13:58
там интересная работа IM2.
с приходом прерывания адрес возврата ложится на стек, однако стек может быть в данных (он используется для быстрой печати)
повреждённые данные корректируются addr=#7405