User Tag List

Показано с 1 по 6 из 6

Тема: King's Bounty: Попытка перенести KB с PC(DOS) на Специалист

  1. #1

    Регистрация
    17.07.2025
    Адрес
    г. Ульяновск
    Сообщений
    7
    Спасибо Благодарностей отдано 
    1
    Спасибо Благодарностей получено 
    25
    Поблагодарили
    3 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию King's Bounty: Попытка перенести KB с PC(DOS) на Специалист

    Привет всем. Я тут новенький, а так старенький 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 кб.
    Разработка продолжается. Пока на этом все.

    Эти 19 пользователя(ей) поблагодарили aspgnom за это полезное сообщение:

    Alex_LG(27.07.2025), anarchyman(19.07.2025), anasana(19.07.2025), b2m(19.07.2025), Beaver(19.07.2025), CityAceE(19.07.2025), CodeMaster(18.07.2025), Eltaron(30.07.2025), nzeemin(20.07.2025), Oleg N. Cher(29.07.2025), parallelno(29.07.2025), Pyk(26.07.2025), Romych(29.07.2025), SoftLight(19.07.2025), svofski(29.07.2025), Trol73(31.07.2025), Vatr(03.08.2025), Willy(29.07.2025), wl[illusion](30.07.2025)

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

  3. #2

    Регистрация
    13.01.2005
    Адрес
    г. Москва
    Сообщений
    5,213
    Записей в дневнике
    7
    Спасибо Благодарностей отдано 
    706
    Спасибо Благодарностей получено 
    1,643
    Поблагодарили
    572 сообщений
    Mentioned
    50 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Отлично! Спасибо за подробности, о которых ты до этого не рассказывал. Игра выглядит довольно интересно! Сразу даже и не скажешь, что это стандартный Специалист с восьмицветомцветом. Очень надеюсь, что твоего энтузиазма хватит, чтобы довести эту работу до финала

    По-моему ты ни разу не упоминал ассемблер, в котором пишешь. Это SJAsmPlus?
    С уважением, Станислав.

  4. #3

    Регистрация
    17.07.2025
    Адрес
    г. Ульяновск
    Сообщений
    7
    Спасибо Благодарностей отдано 
    1
    Спасибо Благодарностей получено 
    25
    Поблагодарили
    3 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Первый что нашел меня вполне удовлетворял - Retro Assembler V2022.1. Правда недавно наткнулся , что по документации он может работать с любой кодировкой, а по факту
    там всего 3-4 кодировки работают и utf-8. Из за этого файл с текстом в 1251 программа считывает с SD.

    Эти 2 пользователя(ей) поблагодарили aspgnom за это полезное сообщение:

    CityAceE(19.07.2025), parallelno(29.07.2025)

  5. #4

    Регистрация
    04.08.2005
    Адрес
    Россия, Московская область.
    Сообщений
    104
    Спасибо Благодарностей отдано 
    78
    Спасибо Благодарностей получено 
    13
    Поблагодарили
    12 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    aspgnom, Шикарнейший проект. KB - одна из моих любимейших игр была для DOS. Более того сейчас готовлю тоже проект (достаточно глобальный) связанный с King's Bounty.
    (скоро я сделаю анонс).
    Вопрос такой: а сейчас (на данном этапе) - вся механика, рандом и условный ИИ - это самописно, или реверс (дизасм) DOS версии, адаптированной под 8bit cpu?
    В любом случае буду с огромным интересом наблюдать за прогрессом! Если ведете что-то вроде "дневника разработчика" - так же было бы интересно ознакомиться.
    Желаю успехов в проекте, и главное сил довести его до конца.
    У меня Специалист на данный момент доступен только через эмулятор - но если нужно будет содействие какое то для тестирования - я всегда буду рад помочь в этом проекте.

  6. #5

    Регистрация
    29.06.2022
    Адрес
    г. Ирвайн, США
    Сообщений
    408
    Спасибо Благодарностей отдано 
    590
    Спасибо Благодарностей получено 
    340
    Поблагодарили
    109 сообщений
    Mentioned
    3 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Классно!!! Удачи и сил чтобы доделать.
    Я тоже использую retro assembler для своего проекта. Понаделал кучку полезных макросов. Если интересно, могу поделиться, правда у меня код в мнемониках i8080.

  7. #6

    Регистрация
    17.07.2025
    Адрес
    г. Ульяновск
    Сообщений
    7
    Спасибо Благодарностей отдано 
    1
    Спасибо Благодарностей получено 
    25
    Поблагодарили
    3 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Код в мнемониках i8080 - это достоинство, а не недостаток. Нужна вся арифметика, чтоб не изобретать велосипед.

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

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

Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)

Похожие темы

  1. Ответов: 30
    Последнее: 28.11.2017, 02:51
  2. Ответов: 8
    Последнее: 22.02.2017, 18:33
  3. King's Bounty хочу поиграть
    от point777 в разделе Игры
    Ответов: 16
    Последнее: 21.04.2014, 14:41

Ваши права

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