goodboy
11.01.2016, 10:23
Некоторое время занимаюсь реверсом HOTM, большая часть данных разобрана, ковыряюсь с кодом.
К примеру, на текущий момент не очень понятно, каким образом спрайты печатаются в промежуточный буфер
с масштабированием (растягиванием) в реальном времени.
на фон локации накладывается (растягиваясь) маска, потом спрайт.
hl=спрайт, de=маска.
вход в процедуру зависит скорее всего от ширины спрайта.
для наглядного понятия построения как вариант можно корректировать IX вручную (автоматом с учитыванием третей) для вывода сразу на экран, минуя буфер
Да, это я раскурил. Мне непонятно, какой магией наложение происходит.
....................
О, спасибо! Что-то я не додумался визуализировать, пробовал на бумажке раскладывать как биты превращаются.
удваивание по-вертикали происходит при выводе на-экран из буфера.
(просто каждая строка печатается два раза)
видимо для упрощения растягивания (изначально нормальные) спрайты специально модифицируются (пауза после загрузки игры)
К примеру, на текущий момент не очень понятно, каким образом спрайты печатаются в промежуточный буфер
с масштабированием (растягиванием) в реальном времени.
на фон локации накладывается (растягиваясь) маска, потом спрайт.
hl=спрайт, de=маска.
вход в процедуру зависит скорее всего от ширины спрайта.
для наглядного понятия построения как вариант можно корректировать IX вручную (автоматом с учитыванием третей) для вывода сразу на экран, минуя буфер
Да, это я раскурил. Мне непонятно, какой магией наложение происходит.
....................
О, спасибо! Что-то я не додумался визуализировать, пробовал на бумажке раскладывать как биты превращаются.
удваивание по-вертикали происходит при выводе на-экран из буфера.
(просто каждая строка печатается два раза)
видимо для упрощения растягивания (изначально нормальные) спрайты специально модифицируются (пауза после загрузки игры)