Важная информация

User Tag List

Страница 1 из 3 123 ПоследняяПоследняя
Показано с 1 по 10 из 22

Тема: Порт игры Desolate на БК

  1. #1
    Member Аватар для Sandro
    Регистрация
    20.01.2010
    Адрес
    г. Зеленоград
    Сообщений
    62
    Спасибо Благодарностей отдано 
    1
    Спасибо Благодарностей получено 
    19
    Поблагодарили
    10 сообщений
    Mentioned
    1 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию Порт игры Desolate на БК

    ... можно скачать по адресу http://sandro.pdp-11.ru/bin/desolate01.zip

    Там загрузочный диск и крайне непричёсанные исходники. Требуется БК-0011М, так как игра занимет 43КБ ОЗУ плюс экран. Основой послужил порт Никиты Зимина для УКНЦ (https://zx-pk.ru/threads/32566-porti...-na-uknts.html). Оригинал был написан ещё в 2004 (?) году для программируемого калькулятора TI-83 Plus (очень мощная штука, кстати говоря).

    Управление -- стрелки, пробел/ввод -- действие, Q переключает стрельбу/исследование, I - инвентарь, P - пауза/меню. Сохранений нет и в исходной игре никогда не было. Это хоррор, в нём убивают навсегда. Коды к замкам при повторном прохождении не подходят (кроме замков первого уровня).
    Не забываем читать все записи, которые находим. Карту рисовать надо, игра большая.

    Версию пока ставлю 0.1, потому как дорабатывать напильником там можно много чего, начиная с загрузчика Ну наиболее важно, разумеется, сконвертировать графику специально для БК, в оригинале она в не чисто ЧБ, а в оттенках серого. На БК можно было бы и раскрасить. И сделать тайлы 8x10 вместо 8x8, для квадратности.

    Звук бы тоже не помешал. Да и графику можно упаковать, код поджать есть куда, возможностей много. Но когда это всё будет -- неизвестно, поэтому пока выкладываю так.

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

    Adam Bazaroff (10.02.2021), Manwe (10.02.2021), nzeemin (10.02.2021)

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

  4. #2
    Veteran Аватар для nzeemin
    Регистрация
    20.12.2005
    Адрес
    Москва
    Сообщений
    1,557
    Спасибо Благодарностей отдано 
    552
    Спасибо Благодарностей получено 
    519
    Поблагодарили
    237 сообщений
    Mentioned
    9 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Воу... Это было... быстро!

    1. Нужен "дневной" режим, чтобы меню и игровой режим не были инверсными.
    Как вариант, можно хранить режим в переменной, и сделать два варианта копирования теневого экрана на реальный - при включении "дневного" режима делать BIS для половины битиков - тем самым выдавая другой цвет. А остальное сделать палитрой.
    2. Лучше сместить всё ниже, чтобы сверху был отступ равный отступу снизу.
    3. Все задержки нужно уменьшать раза в два - я так делал при портировании на Вектор-06Ц.

    Последний раз редактировалось nzeemin; 10.02.2021 в 18:41.

  5. #3
    Veteran Аватар для Manwe
    Регистрация
    06.12.2017
    Адрес
    г. Москва
    Сообщений
    1,447
    Спасибо Благодарностей отдано 
    78
    Спасибо Благодарностей получено 
    300
    Поблагодарили
    192 сообщений
    Mentioned
    9 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Крутота!
    Manwe/SandS

  6. #4
    Junior
    Регистрация
    14.11.2010
    Адрес
    Kazan
    Сообщений
    17
    Спасибо Благодарностей отдано 
    15
    Спасибо Благодарностей получено 
    3
    Поблагодарили
    3 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Круто! Много там графики? Могу помочь «растянуть».

  7. #5
    Veteran Аватар для nzeemin
    Регистрация
    20.12.2005
    Адрес
    Москва
    Сообщений
    1,557
    Спасибо Благодарностей отдано 
    552
    Спасибо Благодарностей получено 
    519
    Поблагодарили
    237 сообщений
    Mentioned
    9 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Adam Bazaroff Посмотреть сообщение
    Круто! Много там графики? Могу помочь «растянуть».
    Вот все тайлы и спрайты: https://github.com/nzeemin/spectrum-...tate/tiles.png
    1-я группа это тайлы фона, нет прозрачности, только чёрный цвет значим, остальные считаются белым.
    2-я группа это спрайты, тёмно-серый цвет это прозрачный, на его основе делается маска, из остальных цветов только чёрный цвет значим, остальные считаются белым.
    3-я группа это тайлы для наложения на фон, тёмно-серый цвет прозрачный.
    4-я группа это стрелки для меню/индикаторов, а также иконки для инвертаря, все без прозрачности.
    То что для "белого" использовано больше цветов чем нужно (также светло-серый и светло-голубой) - это потому что в оригинале все тайлы и спрайты были 4-цветными.

    Да, ещё - конвертация тайлов/спрайтов в код делается программой SpriteRotate (на C#), соответственно её тоже нужно будет поправить.
    Причём, при работе над графикой я этой программой генерил файлы roomsnew.png и spritesnew.png - там рисуются все комнаты и все фазы ГГ, чтобы сразу можно было оценить изменения.
    Последний раз редактировалось nzeemin; 10.02.2021 в 19:28.

  8. #6
    Member Аватар для Sandro
    Регистрация
    20.01.2010
    Адрес
    г. Зеленоград
    Сообщений
    62
    Спасибо Благодарностей отдано 
    1
    Спасибо Благодарностей получено 
    19
    Поблагодарили
    10 сообщений
    Mentioned
    1 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от nzeemin Посмотреть сообщение
    Воу... Это было... быстро!
    Так как машины состоят в близком родстве, то удалось обойтись заменой процедуры копирования теневого экрана в реальный и некоторыми исправлениями в опросе клавиатуры. На самом дел, основное время ушло на разбор исходного кода. Его не так уж много, но всё же 4К строк -- это 4К строк.

    Цитата Сообщение от nzeemin Посмотреть сообщение
    1. Нужен "дневной" режим, чтобы меню и игровой режим не были инверсными.
    Уже сделал и перезалил поверх. Ночь была просто из-за того, что поторопился.

    Цитата Сообщение от nzeemin Посмотреть сообщение
    Как вариант, можно хранить режим в переменной, и сделать два варианта копирования теневого экрана на реальный - при включении "дневного" режима делать BIS для половины битиков - тем самым выдавая другой цвет. А остальное сделать палитрой.
    Я в конечном счёте сделал через XOR и палитру.

    Цитата Сообщение от nzeemin Посмотреть сообщение
    2. Лучше сместить всё ниже, чтобы сверху был отступ равный отступу снизу.
    Не уверен. В общем-то это вкусовщина... ну надо подумать.


    Цитата Сообщение от nzeemin Посмотреть сообщение
    3. Все задержки нужно уменьшать раза в два - я так делал при портировании на Вектор-06Ц.
    На самом деле я их вовсе обнулил. Оно сейчас упирается в отрисовку тайловой карты в теневой буфер (каждый кадр!), и несколько в меньшей степени -- в разворачивание буфера в 2 бита/пиксель.

    Надо как-то это дело переписать для скорости.

    Кстати, движок, несмотря на простоту, в общем-то может довольно многое при простых модификациях. Игра такая скромная (почти нет предметов, и всего 7 загадок) исключительно потому, что у калькулятора закончилась память. Автор сам писал, что ему пришлось выкинуть часть комнат, чтобы она влезла. На 11М запас-то ещё огромный, есть куда развернуться.

    Да даже без дополнительных страниц, так код можно где-то на килобайт сократить просто переписав все простыни cmp/beq на таблицы и сделав хотя бы минимальный байткод для логики. Только на это время нужно ...

  9. Этот пользователь поблагодарил Sandro за это полезное сообщение:

    nzeemin (10.02.2021)

  10. #7
    Veteran Аватар для nzeemin
    Регистрация
    20.12.2005
    Адрес
    Москва
    Сообщений
    1,557
    Спасибо Благодарностей отдано 
    552
    Спасибо Благодарностей получено 
    519
    Поблагодарили
    237 сообщений
    Mentioned
    9 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Sandro Посмотреть сообщение
    Да даже без дополнительных страниц, так код можно где-то на килобайт сократить просто переписав все простыни cmp/beq на таблицы и сделав хотя бы минимальный байткод для логики. Только на это время нужно ...
    Я там нашёл резерв примерно в 2Кбайта на том чтобы улучшить RLE алгоритм при распаковке комнат - сейчас он слишком расточительный.
    Ну и по производительности - описание комнаты каждый раз разворачивается для очередной проверки "а что у нас тут", хотя это можно делать один раз при входе в комнату.

  11. #8
    Member Аватар для Sandro
    Регистрация
    20.01.2010
    Адрес
    г. Зеленоград
    Сообщений
    62
    Спасибо Благодарностей отдано 
    1
    Спасибо Благодарностей получено 
    19
    Поблагодарили
    10 сообщений
    Mentioned
    1 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от nzeemin Посмотреть сообщение
    Я там нашёл резерв примерно в 2Кбайта на том чтобы улучшить RLE алгоритм при распаковке комнат - сейчас он слишком расточительный.
    О, да. С учётом того что номера тайлов семибитные -- да и в описаниях комнат тоже всё в 7 битах, то напрашивается канонический ход -- кодировать команду "повторить предыдущий байт" как 0x80 +n, что сразу даёт изрядный выигрыш. Плюс применить шаблонирование -- незачем копировать стенки 72 раза, они всё равно почти одинаковые. Кодировать только дельту от шаблона.
    А некоторые комнаты вообще не сжаты, например 64 и 68. Почему -- неясно.

    И с монстрами да предметами печаль.

    Собственно, когда я об этом думаю, то сразу вспоминается спектрумовская The Bard's Tale, с её ошеломляющим монстрятником в 127 видов! С атрибутами, заклинаниями, и даже картинками! Страшненькими, но все же.

    Столько, может, и не надо, но с 32 байтами (допустим) на объект мы можем себе позволить эдак десятка три объектов и десяток монстров. Это вполне нормально, В Betrayal at Krondor меньше и того, и другого, а игра отличная получилась.
    Главное -- не запихивать каждый чих в код, он от этого разрастается очень резво. Таблички, какой-нибудь байтовый интерпретатор -- всё это очень сильно помогает.

    Цитата Сообщение от nzeemin Посмотреть сообщение
    Ну и по производительности - описание комнаты каждый раз разворачивается для очередной проверки "а что у нас тут", хотя это можно делать один раз при входе в комнату.
    Да, это я тоже заметил. Хорошо хоть, оно по размеру -- всего ничего.

  12. #9
    Guru Аватар для NEO SPECTRUMAN
    Регистрация
    22.05.2011
    Адрес
    г. Дзержинск, Украина
    Сообщений
    6,241
    Спасибо Благодарностей отдано 
    359
    Спасибо Благодарностей получено 
    547
    Поблагодарили
    435 сообщений
    Mentioned
    8 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Sandro Посмотреть сообщение
    но всё же 4К строк -- это 4К строк.
    тю
    eсть два мнения - моё и неправильное

  13. #10
    Member Аватар для Sandro
    Регистрация
    20.01.2010
    Адрес
    г. Зеленоград
    Сообщений
    62
    Спасибо Благодарностей отдано 
    1
    Спасибо Благодарностей получено 
    19
    Поблагодарили
    10 сообщений
    Mentioned
    1 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Пережал карты комнат вышеописанным алгоритмом.

    Код:
    66 unique tile maps found
    Packed all unique tile maps to 4063 bytes (58.8%), old 4683 bytes (67.8%)
    Несжатые комнаты занимают 6912 байт.

    Для эксперимента пережал наивным способом (отсутствие разницы с предыдущей комнатой кодируется специальным кодом тайла). Уже 3044 байта!

    Где-то ещё байт 400 там можно отыграть ИМХО.
    Последний раз редактировалось Sandro; 11.02.2021 в 11:23.

Страница 1 из 3 123 ПоследняяПоследняя

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

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

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

Похожие темы

  1. Портирование Desolate с TI-83 Plus на УКНЦ
    от nzeemin в разделе ДВК, УКНЦ
    Ответов: 45
    Последнее: 11.02.2021, 11:32
  2. Desolate порт с TI-83 Plus
    от nzeemin в разделе Игры
    Ответов: 55
    Последнее: 10.02.2021, 14:01
  3. Parachute — порт игры с Atari 2600
    от michellekg в разделе Игры
    Ответов: 0
    Последнее: 21.12.2017, 08:08
  4. Ответов: 0
    Последнее: 13.03.2012, 23:18

Ваши права

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