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

User Tag List

Страница 1 из 5 12345 ПоследняяПоследняя
Показано с 1 по 10 из 50

Тема: Быстрый вывод картинки 88*88

  1. #1
    Veteran Аватар для ALKO
    Регистрация
    25.09.2009
    Адрес
    Одесса
    Сообщений
    1,426
    Благодарностей: 347
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию Быстрый вывод картинки 88*88

    Нужна процедура ввода\вывода картинки.
    80*88 пикселей в любую область экрана.
    ввод (занесение в память ОЗУ содержимого видео-ОЗУ) может осущесвляться с левого верхнего угла, а вот вывод желательно с указанием координат.
    Подкиньте, пожалуйста асмовскую процедуру...

    ---------- Post added at 16:46 ---------- Previous post was at 16:45 ----------

    координаты не обязательно попиксельные, можно и по знакоместу.

    ---------- Post added at 16:49 ---------- Previous post was at 16:46 ----------

    упс,ошибся...размер 88х88
    Последний раз редактировалось Shadow Maker; 14.03.2011 в 18:22.

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

  3. #2
    Guru Аватар для VNN_KCS
    Регистрация
    11.10.2007
    Адрес
    Донецкая обл. г.Енакиево
    Сообщений
    2,316
    Благодарностей: 755
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Обычный вывод спрайтов подойдёт?

  4. #3
    Master Аватар для GM BIT
    Регистрация
    27.11.2008
    Адрес
    Красноярск
    Сообщений
    747
    Благодарностей: 230
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    ;EmuzWin ZX Assembler++

    org 30000
    jp get_spt
    ld b,0 ;координата Y (+4)
    ld c,0 ;координата X (+6)
    call set_adr
    ex de,hl
    ld hl,40000
    ld b,88
    out1 push bc push de
    ld bc,11
    ldir
    pop de pop bc
    call down_de
    djnz out1
    ret

    get_spt ld hl,16384
    ld de,40000
    ld b,88
    get1 push bc push hl
    ld bc,11
    ldir
    pop hl pop bc
    call down_hl
    djnz get1
    ret

    set_adr ld a,b
    rrca rrca rrca
    and #e0
    ld l,a
    ld a,b and #18 or #40 ld h,a
    ld b,0 add hl,bc
    ret
    down_hl inc h ld a,h and 7
    ret nz
    ld a,l add a,32 ld l,a
    ret c
    ld a,h sub 8 ld h,a
    ret
    down_de inc d ld a,d and 7
    ret nz
    ld a,e add a,32 ld e,a
    ret c
    ld a,d sub 8 ld d,a
    ret

    Вызов 30000 - снимет спрайт в координатах 0,0 и поместит его в 40000
    Вызов 30003 - выведет спрайт из 40000 в экран по координатам в ячейках 30004(Y),30006(X)
    Проверок на вывод за экран в программе нет
    Последний раз редактировалось GM BIT; 15.03.2011 в 05:47.

  5. Этот пользователь поблагодарил GM BIT за это полезное сообщение:
    ALKO (16.05.2012)

  6. #4
    Veteran
    Регистрация
    06.05.2006
    Адрес
    Ливны, Орловская обл
    Сообщений
    1,169
    Благодарностей: 192
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    >;EmuzWin ZX Assembler++
    >ld a,b and #18 or #40 ld h,a
    Оо Ядрёный асм =)

    >ld b,88
    >...
    >call down_de
    >djnz out1
    Может стоит развернуть цикл и по 8 линий сразу сделать без лишних вызовов down_rr?
    В связи с этим возник тоже интересный вопрос, переброс от сотни до пары тысяч байт лучше делать ldir или есть варианты со стеком, всосать/выплюнуть все регистры?

  7. #5
    Guru Аватар для VNN_KCS
    Регистрация
    11.10.2007
    Адрес
    Донецкая обл. г.Енакиево
    Сообщений
    2,316
    Благодарностей: 755
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от NovaStorm Посмотреть сообщение
    есть варианты со стеком, всосать/выплюнуть все регистры?
    Так намного шустрей, но памяти займёт гораздо больше.

    ---------- Post added at 11:09 ---------- Previous post was at 11:07 ----------

    Цитата Сообщение от GM BIT Посмотреть сообщение
    down_hl inc h ld a,h and 7
    ret nz
    ld a,l add a,32 ld l,a
    ret c
    ld a,h sub 8 ld h,a
    ret
    down_de inc d ld a,d and 7
    ret nz
    ld a,e add a,32 ld e,a
    ret c
    ld a,d sub 8 ld d,a
    ret
    Зачем 2 процедуры? А нельзя сделать ex de.hl?

  8. #6
    Veteran
    Регистрация
    06.05.2006
    Адрес
    Ливны, Орловская обл
    Сообщений
    1,169
    Благодарностей: 192
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от VNN_KCS Посмотреть сообщение
    Так намного шустрей, но памяти займёт гораздо больше.
    Не, ну разворачивать тоже без фанатизма надо =)
    Цикл по
    pop
    exx
    pop
    push
    exx
    push
    ?
    Что-то у меня такой цикл со счётчиком по прикидкам LDIR не обгоняет из-за накладных расходов на этот самый счётчик и модификацию SP, упустил может что...

  9. #7
    Guru Аватар для VNN_KCS
    Регистрация
    11.10.2007
    Адрес
    Донецкая обл. г.Енакиево
    Сообщений
    2,316
    Благодарностей: 755
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Упустил то, что PUSH и POP юзают сразу 2 байта.

  10. #8
    Veteran Аватар для ALKO
    Регистрация
    25.09.2009
    Адрес
    Одесса
    Сообщений
    1,426
    Благодарностей: 347
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    спасибо за исходники,но я тут примерил,довольно много памяти будет занимать всё это - 968 байт (!) картинка.
    Не влезет в 48к машину то что хотел.
    а именно файтинг со средней анимацией (хотя б 2(3) кадра на удар) +basiс компилятор в верхней области +сам бейсик сзади будет поджимать, и между этими двумя голодными тварями наврят ли поместится хотя б 20 кадров.
    ....
    А, чуть не забыл ещё +область куда компилируется исходный код.

  11. #9
    Veteran
    Регистрация
    06.05.2006
    Адрес
    Ливны, Орловская обл
    Сообщений
    1,169
    Благодарностей: 192
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от VNN_KCS Посмотреть сообщение
    Упустил то, что PUSH и POP юзают сразу 2 байта.
    Не, ну как так можно =)
    Проблема в том что регистров мало и нужен регистр на счётчик(минус BC).
    Даже если взять только костяк
    pop af,de,hl
    exa,exx
    pop af,de,hl
    ...
    push hl,de,af
    exa,exx
    push hl,de,af
    то это уже 142/12=почти по 12 тактов на байт, не считая танцев с SP. А пачка развёрнутых LDI будет жрать по 16 с небольшим.
    В общем, пример можно?

    ---------- Post added at 16:23 ---------- Previous post was at 16:14 ----------

    Цитата Сообщение от ALKO Посмотреть сообщение
    968 байт (!) картинка.
    И это без маски...
    Цитата Сообщение от ALKO Посмотреть сообщение
    Не влезет в 48к машину то что хотел.
    Про бейсик лучше забыть, про 48к забыть крайне желательно. Анимация сожрёт слишком много места.
    Но! Если есть сильное желание, для файтинга можно попробовать сегментировать бойцов и выводить их по кускам.

  12. #10
    Veteran Аватар для ALKO
    Регистрация
    25.09.2009
    Адрес
    Одесса
    Сообщений
    1,426
    Благодарностей: 347
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Сегментацией будет гемморойнее.
    А про 48к не смогу забыть, так как у меня 128к нету.
    Под реал хочу создать,эмулятор - отстой...у него нет души.

    ---------- Post added at 17:34 ---------- Previous post was at 17:29 ----------

    я раньше создавал некое подобие говнофайта.
    Там человечки 8х8 были, и вся анимация уместилась в UDG...
    AI был таков - рандомный выбор (нанесение ударов (нога (рука)) уход назад), если же противник (тобиш игрок) далеко - подойти и произвести рандомное действие.

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

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

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

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

Похожие темы

  1. Быстрый проигрыватель AY-музыки (980-1300t)
    от TmK в разделе Программирование
    Ответов: 45
    Последнее: 20.08.2016, 13:31
  2. Вывод картинки на экран
    от Alex Clap в разделе Для начинающих
    Ответов: 17
    Последнее: 22.08.2010, 13:46
  3. Ответов: 11
    Последнее: 21.07.2010, 15:58
  4. Куплю проц Z84C0006PEC или более быстрый.
    от Evgeny Muchkin в разделе Барахолка (архив)
    Ответов: 6
    Последнее: 19.09.2006, 09:24

Метки этой темы

Ваши права

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