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

User Tag List

Страница 1 из 2 12 ПоследняяПоследняя
Показано с 1 по 10 из 14

Тема: Чанки 4*4

  1. #1
    Guru Аватар для moroz1999
    Регистрация
    17.01.2005
    Адрес
    Tallinn
    Сообщений
    2,517
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    86
    Поблагодарили
    39 сообщений
    Mentioned
    1 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию Чанки 4*4

    Вопрос простой: как лучше выводить на экран чанки 4*4? Интересуют разные методы, но более всего хочется найти разумный компромисс между скоростью и размером.

    Сколько градаций имеет смысл использовать? Можно ли обойтись меньшим количеством, чем 16? Есть ли смысл?
    Сейчас думаю, что имеет смысл все варианты совпадений чанковых пар в знакоместе просчитать заранее и хранить отдельной таблицей:
    При количестве градаций=16, количество пар будет 16*16, каждая по 4 байта, итого килобайт на таблицу.

    Можно ли как-то выводить такие пары стеком? есть ли смысл?

    Имхо, стоит сразу выводить горизонтальными рядами толщиной в 1 пиксель, чтобы не пересчитывать каждый раз адрес следующей строки экрана?

    Или есть какой-то более продуманный и оптимальный метод?

    Готовые процедуры не особо интересуют, потому что самостоятельная реализация даёт немалую часть удовольствия, да и для обучения гораздо полезнее

    Может быть, кто-то вспомнит готовые статьи с теорией?

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

  3. #2
    Member Аватар для Krenon
    Регистрация
    16.04.2007
    Адрес
    Санкт-Петербург
    Сообщений
    67
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    0
    Поблагодарили
    0 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Хорошая статья была в DoD#2. Ещё в SNG#2 Senat писал, что надо делать буффер 38*256, кстати такой использовался и в гоа и в рефреше.
    C Nonsense in BASIC, 0:1

  4. #3
    Veteran Аватар для Sinus
    Регистрация
    29.01.2005
    Адрес
    Belarus, Grodno
    Сообщений
    1,279
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    1
    Поблагодарили
    1 сообщение
    Mentioned
    1 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    ой, 100 лет назад это было
    градаций меньше чем 16 использовать смысла нет, если не надо только сильно экономить память.
    буфер ИМХО оптимальный - 32x64. напальм, догма, ещё куча демок.

    Имхо, стоит сразу выводить горизонтальными рядами толщиной в 1 пиксель, чтобы не пересчитывать каждый раз адрес следующей строки экрана?
    смотря что будет приносить большие затраты по времени, либо INC H (D, B) на переход на следующую строку в экране, либо просчёт адреса чанка

    если я правильно помню как делал, то забирать из чанкового буфера надо через стек, а на экран валить через LD (HL),r

    спойлер:


    LD SP,BUFEND
    DUP 32*32
    LD DE,#4000 ; адрес в экране
    POP HL
    LD A,H
    ADD A,#xx
    LD H,A
    LD A,(HL):LD (DE),A:INC H:INC D
    LD A,(HL):LD (DE),A:INC H:INC D
    LD A,(HL):LD (DE),A:INC H:INC D
    LD A,(HL):LD (DE),A:INC H:INC D
    EDUP

    данные в буфере предполагаются валидными.
    кстати, немного извратив методу, можно избавиться от
    LD A,H
    ADD A,#xx
    LD H,A

    [target] [zemu] [js8x] [pouet] KAY-1024, 5''FDD, 3''FDD, HDD

  5. #4
    Vitamin C++ Аватар для Vitamin
    Регистрация
    14.01.2005
    Адрес
    Таганрог, Россия
    Сообщений
    4,254
    Спасибо Благодарностей отдано 
    9
    Спасибо Благодарностей получено 
    80
    Поблагодарили
    34 сообщений
    Mentioned
    7 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Иногда делается набор процедур (256 штук) для вывода половинки знакоместа по вертикали. Входной буфер анализируется и строится стек. Потом просто делается возврат по стеку. Туда же пихаются вызовы процедур пересчета адреса. Получается весьма быстро, но затраты на построение стека...

  6. #5
    Master
    Регистрация
    16.09.2005
    Адрес
    Дзержинск (DustCity)
    Сообщений
    919
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    1
    Поблагодарили
    1 сообщение
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Например так:
    (большие затраты памяти, хорошая скорость)

    чанки хранятся по одному в байте
    таблица буфера имеет размер 64*48 линейный
    из него берем через стек два значения: левый чанк в знакоместе и правый, соединяем их со смещением в 4 бита - получаем байт 0..255
    по нему из таблички переходов берем адрес перехода на построение текущего значения чанков
    типа вот процедура вывода:
    chunkXXX ld a,h
    ld (hl),nn
    inc h
    ld (hl),nn
    inc h
    ld (hl),nn
    inc h
    ld (hl),nn
    ld h,a
    jp ret_adr

    Адрес следующей строки берем тоже из таблички

    Добавлено через 1 минуту
    выводить по половинкам неоптимально!!!!
    в любом случае как бы не хранился сам буфер с изображением выводим сразу и правую и левую половинку знакоместа одновременно!!!

    Добавлено через 3 минуты
    Вся эта процедура будет занимать порядка 6K
    Последний раз редактировалось TmK; 21.05.2007 в 13:11. Причина: Добавлено сообщение

  7. #6
    Guru Аватар для newart
    Регистрация
    19.01.2005
    Адрес
    Санкт-Петербург
    Сообщений
    11,435
    Спасибо Благодарностей отдано 
    191
    Спасибо Благодарностей получено 
    145
    Поблагодарили
    61 сообщений
    Mentioned
    4 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Столько демок понаписно, а вы тут велосипед изобретаете.
    Harm смотрите и прочие демки от TBK/4D.
    И CJ молчит, демку наверно пишет?

    Точно помню алонкодер в своем журнале писал полезные вещи по поводу чанок и 2d эффектов.
    Последний раз редактировалось newart; 21.05.2007 в 15:14.

  8. #7
    Banned Аватар для psndcj
    Регистрация
    22.02.2005
    Адрес
    triebkraft
    Сообщений
    712
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    0
    Поблагодарили
    0 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    пишу - пишу =)

  9. #8
    Guru Аватар для moroz1999
    Регистрация
    17.01.2005
    Адрес
    Tallinn
    Сообщений
    2,517
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    86
    Поблагодарили
    39 сообщений
    Mentioned
    1 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    всем спасибо, будем пробовать

  10. #9
    Guru Аватар для newart
    Регистрация
    19.01.2005
    Адрес
    Санкт-Петербург
    Сообщений
    11,435
    Спасибо Благодарностей отдано 
    191
    Спасибо Благодарностей получено 
    145
    Поблагодарили
    61 сообщений
    Mentioned
    4 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от moroz1999 Посмотреть сообщение
    всем спасибо, будем пробовать
    Все что напробуешь посылай на Di:Halt!!

  11. #10
    Master
    Регистрация
    16.09.2005
    Адрес
    Дзержинск (DustCity)
    Сообщений
    919
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    1
    Поблагодарили
    1 сообщение
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от newart Посмотреть сообщение
    Все что напробуешь посылай на Di:Halt!!
    Давно бы уж создали команду ZX.PK.RU и сделали демку :-)
    Если не ошибаюсь - в прошлом году так поступили democoder.ru

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

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

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

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

Ваши права

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