PDA

Просмотр полной версии : Несовместимость видеоконтроллера с IBM CGA?



Vizer
01.05.2016, 13:19
Пытаюсь адаптировать игру Boulder Dash к записи и загрузке с кассеты на Поиске, столкнулся с тем, что рендеринг работает на Поиске некорректно.

В игре есть большое поле, по которому бегает игрок, и по мере прохождения, поле скроллится вертикально или горизонтально. Пока я еще не реверсил игру полностью, но почти уверен что скроллинг реализован путем изменения регистров CRT через порты обращения к видеоконтроллеру, а именно установкой положения вертикальной и горизонтальной синхронизации, что позволяет циклически перемещать изображение по монитору. На поиске картинка выглядит так, будто бы эти смещения не применились и изображение "рвется" посередине. Если описал непонятно, могу позже сделать фото :)

По книгам Фроловых, я говорю об этих регистрах: http://www.frolov-lib.ru/books/bsp/v03/ch6_2.htm
Порты CGA, как здесь написано, 3D4h и 3D5h

Если кто-то знает, действительно ли в поиске нет таких возможностей, или может они реализованы на других портах?

Сама игра во вложении...
57041

Tronix
05.05.2016, 20:19
Я щаз не могу досконально изучить вопрос, у меня тут развод, свадьба потеря работы, устройство на новую работу, отпуск и еще миллион дел. Но вкратце - конечно нет там сдвигов через порты CRT. Проще всего взять исходник бивиса и там посмотреть - все обращения к портам ловятся программно и программно же обрабатываются. Возможно сдвиги есть с помощью int 10h, не помню уже. Поэтому игруху надо хакать на переход с портовых сдвигов на сдвиги по int 10h. Но это будут тормоза конечно. Либо просто ставить свои call'ы на свои же процедуру сдвигов прям в коде где-нить внизу. Ничего сложного, но я сейчас не могу по вышеописанным обстоятельствам -)

Vizer
12.05.2016, 09:23
Понятно, но раз нет аппаратных сдвигов, то искать в биосе их программную обработку мало смысла, не факт что они там есть, тем более что работать будут убийственно медленно. Так что да, самый разумный вариант - похачить игру, дописать туда свои процедуры скролла, по аналогии со спектрумовской версией, сдвигать пикселов на 10 за один проход. Попробую сделать так, наверное.