Привет всем. Я тут новенький, а так старенький 8-бит электронщик/программист. Первый собранный комп был "Специалист".
Мою любовь и боль. Как все помнят сборка на мгтф и половина горелых микросхем с ес-1020.Сборка и отладка заняла почти 2 года.
Потом быстрая пересадка на IBM PC и я на больше чем 30 лет забыл про 8-битный мир. Потом увидел статьи CityAceE и ностальжи
вернуло меня на путь истинный.
Посмотрев на попытку CityAceE переписать с Атари tony захотелось самому перенести какую то игру. Выбор пал на King's Bounty 1990 года под DOS(PC). Окунувшись в проект я так
увлекся что трачу на это все свое свободное время(когда глаза позволяют.)
С начала попробовал конвертировать обе заставки игры. Контроль режима 2 цвета на полоску в восемь точек(байт) из которых один черный вручную оказался очень трудоемок,
пришлось написать утилитку на Python-e которая контролировала корректность цветов. Конвертация изображения на удивление заняла много времени. Я совсем не художник и мне
было трудно дорисовывать элементы которые конвертировать не удалось.
Разобравшись с заставками дело перешло на карту уровня. Пришлось нарисовать заготовку редактора уровня на том же Python-е.
Ввод даже в редактор уровня занял почти 2 дня. Пришлось одновременно играть в игру.
А дальше началось самое интересное. В игре игрок остается в центре экрана и скролится вся область видимости на карту. Это и так непосильная задача(очистка экрана с использованием команд работы со стеком занимает порядка 70000 тактов с разверткой цикла на 64 push) для Специалиста(при выводе по спрайтово и используя маски наложения вывод залетает за 250000 тактов), так и размер блока спрайтов залезает за 30кб. Здесь я застрял почти на 3 месяца. Попытка сжать спрайты и разархивировать на лету(zx0) привело к падению отображения до 1750000 тактов.1 fps меня
не устраивал и началась оптимизация. Первым делом перестал перерисовывать спрайты которые совпадает со спрайтом в предыдущим положении игрока. Заменил процедуру вывода трех спрайтов
(вода, трава, песок) на простую заливку. Все это дало 1250000 тактов на кадр. Подумывал копировать область экрана с места на место, но в связи с тем что атрибут цвета не читается с экрана придется атрибуты хранить отдельно, а памяти и так не хватало. Потом Viktor Pykhonin дорисовал в свой эмулятор(Emu80) поддержку SD и жизнь заиграла новыми красками. Отказался от сжатия.
Создал что то типа ассоциативного кеша(памяти на все спрайты 32 кб все равно не хватало). Отвел под него 10кб а недостающие спрайты подкачивал. Таким образом довел отображение кадра от
100000 тактов до 450000 когда в кеш не попадаем. На этой оптимизации мои мозги(на данный момент) закончились и я вернулся к игре
Сделал перемещение по карте игрока и коллизии столкновений. Реверс изображения героя сделал через таблицу. Параллельно перерисовываю оставшийся контент от игры(ох много его там)
Сейчас идет добавление интерактивности элементам карты. Перерисовал штатный фонт чтоб он содержал русские буквы и уместился в 1 кб.
Разработка продолжается. Пока на этом все.


Ответить с цитированием
Размещение рекламы на форуме способствует его дальнейшему развитию 
