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

User Tag List

Страница 18 из 34 ПерваяПервая ... 141516171819202122 ... ПоследняяПоследняя
Показано с 171 по 180 из 338

Тема: Ассемблер Радио-86РК

  1. #171
    Activist Аватар для SegaBoy
    Регистрация
    12.11.2009
    Адрес
    Москва
    Сообщений
    390
    Спасибо Благодарностей отдано 
    38
    Спасибо Благодарностей получено 
    80
    Поблагодарили
    59 сообщений
    Mentioned
    2 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Уплывание экрана никак не связано с цветом. Цвет можно проверить и без программы. С помощью директивы Монитора 'M' поместить в экранную область какое-нибудь значение соответствующее цветному атрибуту.

    Вложение 63109

    Если цвета нет, то скорее всего что-то не так со схемой его получения.
    Последний раз редактировалось SegaBoy; 29.11.2017 в 17:09.

  2. #172
    Veteran Аватар для Pyk
    Регистрация
    05.04.2013
    Адрес
    с. Починки, Нижегородская обл.
    Сообщений
    1,181
    Спасибо Благодарностей отдано 
    264
    Спасибо Благодарностей получено 
    457
    Поблагодарили
    182 сообщений
    Mentioned
    7 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    norduk, принимается, постараюсь сделать ключик командной строки для этой цели: что-то вроде "-d" или "--debug"...

  3. #173
    R.I.P.
    Регистрация
    17.08.2013
    Адрес
    г. Москва
    Сообщений
    965
    Спасибо Благодарностей отдано 
    64
    Спасибо Благодарностей получено 
    67
    Поблагодарили
    42 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от SegaBoy Посмотреть сообщение
    Уплывание экрана никак не связано с цветом. Цвет можно проверить и без программы. С помощью директивы Монитора 'M' поместить в экранную область какое-нибудь значение соответствующее цветному атрибуту.

    Вложение 63109

    Если цвета нет, то скорее всего что-то не так со схемой его получения.
    Забавно. При этом:
    http://s015.radikal.ru/i331/1711/cc/693fd2820427.png

    Т.е., emu1.1-b2m (при выбранном Radio86RK-color) - у меня уплывает, emu80v3 - ок, а emu80v4 - тоже уплывает.
    Вбиваю, как можно догадаться: M77C2 и заношу туда 85, всё.

    Какой комп там был выбран в эмуляторе?

  4. #174
    Guru
    Регистрация
    24.01.2008
    Адрес
    Уфа
    Сообщений
    3,847
    Спасибо Благодарностей отдано 
    84
    Спасибо Благодарностей получено 
    229
    Поблагодарили
    167 сообщений
    Mentioned
    9 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от norduk Посмотреть сообщение
    Какой комп там был выбран в эмуляторе?
    Судя по заголовку Radio86RK-color, а позиция курсора указывает, что когда был сделан скрин, всё тоже "уплывало".

  5. #175
    R.I.P.
    Регистрация
    17.08.2013
    Адрес
    г. Москва
    Сообщений
    965
    Спасибо Благодарностей отдано 
    64
    Спасибо Благодарностей получено 
    67
    Поблагодарили
    42 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Вроде что-то стало получатся.
    http://s010.radikal.ru/i312/1711/a4/d6b3178b3608.png

    - - - Добавлено - - -

    Получается вот так.


    Два вопроса:
    1) Ко всем - как вывести цветные символы без пробелов между ними? Т.е., если я правильно понимаю, то при включении нужного режима атрибутные параметры ВГ75 просто не отображает (но память при этом они, разумеется, занимают). Именно поэтому возникает ситуация, когда размер видеопамяти может меняться при изменениях атрибутов на значения символов и наборот...
    2) К SegaBoy, внезависимости от no_trans_attr картинка в emu80v3 у меня одинаковая. Сейчас попробую в других эмуляторах. В других эмулях ничего не рисует)

    Скрытый текст



    .org 33h

    ;--------------------------------------------------------------------------
    ;**************************************************************************

    screen_addr equ 0x746C ; адрес экранной области (можно переназначить в другое место)

    ; параметры горизонтальной строки (в символах)
    h_back equ 8 ; отступ слева
    h_act equ 64 ; видимых символов в строке
    h_front equ 6 ; отступ справа
    h_sync equ 8 ; строчный синхроимпульс (2..32)
    h_total equ h_back + h_act + h_front ; общее количество символов в строке без учёта синхроимпульса (1..80)

    ; параметры кадра (в строках)
    v_back equ 4 ; отступ сверху
    v_act equ 30 ; видимых строк в кадре
    v_front equ 4 ; отступ снизу
    v_sync equ 1 ; кадровый синхроимпульс (1..4)
    v_total equ v_back + v_act + v_front ; общее количество строк в кадре без учёта синхроимпульса (1..64)

    line_per_row equ 8 ; линий в строке (1..16)
    under_line equ 8 ; позиция линии подчёркивания в строке (1..16) если этот параметр больше 8, то верхняя и нижняя линии в строке гасятся
    spaced_row equ 0 ; пропущенные строки (0..1) если 1, то каждая вторая строка гасится (соответственно и строк в кадре надо указывать в два раза меньше, и память под экран занимает в два раза меньше)
    offset_line equ 0 ; смещение для первой линии в строке символов (0..1) если 1, то первая линия строки будет отображаться второй (для псевдографики нужно ставить 0)
    no_trans_attr equ 0 ; отображаемые атрибуты (0..1) если 1, то атрибут отображается как пустой символ и занимает место в видеопамяти (на Радио-86РК стоит по умолчанию 0, поэтому если кинуть атрибутом в экран он начинает уплывать)
    cursor_type equ 1 ; тип курсора (1..4)

    ; команды и параметры для инициализации контроллера дисплея
    disp_ctrl_addr equ 0xC000 ; адрес контроллера дисплея
    disp_reset_com equ 0 ; команда Сброс
    disp_param_1 equ spaced_row*128 + h_total - 1
    disp_param_2 equ (v_sync - 1)*64 + v_total - 1
    disp_param_3 equ (under_line - 1)*16 + line_per_row - 1
    disp_param_4 equ offset_line*128 + no_trans_attr*64 + cursor_type*16 + h_sync/2 - 1
    disp_cursor_com equ 0x80 ; команда Установка курсора
    disp_start_com equ 0x27 ; команда Начать отображение
    disp_ir_flag equ 0x20 ; константа для проверки флага Запрос прерывания

    ; команды и параметры для инициализации контроллера ПДП
    dma_ctrl_addr equ 0xE000 ; адрес контроллера ПДП
    dma_reset_com equ 0x80 ; команда Сброс
    dma_param_1 equ screen_addr & 0x00FF
    dma_param_2 equ screen_addr >> 8
    dma_param_3 equ (0x4000 + h_total*v_total - 1) & 0x00FF
    dma_param_4 equ (0x4000 + h_total*v_total - 1) >> 8
    dma_start_com equ 0xA4 ; команда Запуск ПДП

    ;----------------------------------
    ;чистим область ОЗУ для экрана
    ;----------------------------------
    mov m,e
    cmp e
    lxi sp,0746BH
    lxi h,0746CH
    xra a
    mov c,a

    clrscr:
    mov m,c
    inx h
    ora h
    jp clrscr


    InitDisplay:
    lxi h, disp_ctrl_addr + 1
    mvi m, disp_reset_com
    dcr l
    mvi m, disp_param_1
    mvi m, disp_param_2
    mvi m, disp_param_3
    mvi m, disp_param_4
    inr l
    mvi m, disp_cursor_com
    dcr l
    mvi m, 0xFF
    mvi m, 0xFF
    inr l
    mvi m, disp_start_com
    mov a, m

    WaitFlag:
    mov a, m
    ani disp_ir_flag
    jz WaitFlag

    InitDma:
    lxi h, dma_ctrl_addr + 8
    mvi m, dma_reset_com
    mvi l, 4
    mvi m, dma_param_1
    mvi m, dma_param_2
    inr l
    mvi m, dma_param_3
    mvi m, dma_param_4
    mvi l, 8
    mvi m, dma_start_com

    **************************************************************************
    ;--------------------------------------------------------------------------

    pic_start_addr equ screen_addr + 140h


    lxi HL, pic_start_addr ; задаём верхний угол экрана
    mvi A, 0Fh ; задаём счётчик
    mvi C, 080h ; задаём начальный цвет

    once_again:
    mov M, C ; пишем цвет
    inr C
    inx H

    mvi M, 12h ; пишем символ

    inx H
    dcr A
    jnz once_again

    inf_cyc:
    jmp inf_cyc


    ;-----------------------------------------------------------------

    [свернуть]
    Вложения Вложения
    • Тип файла: zip hello.zip (216 байт, Просмотров: 61)
    Последний раз редактировалось norduk; 30.11.2017 в 12:01.

  6. #176
    Activist Аватар для SegaBoy
    Регистрация
    12.11.2009
    Адрес
    Москва
    Сообщений
    390
    Спасибо Благодарностей отдано 
    38
    Спасибо Благодарностей получено 
    80
    Поблагодарили
    59 сообщений
    Mentioned
    2 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от norduk Посмотреть сообщение
    ...
    2) К SegaBoy, внезависимости от no_trans_attr картинка в emu80v3 у меня одинаковая. Сейчас попробую в других эмуляторах. В других эмулях ничего не рисует)
    ...
    А вопрос какой?
    --------------------
    Атрибуты бывают всего в двух состояниях - отображаемые как пустое знакоместо или неотображаемые вовсе. Четвёртый параметр команды Сброс (ВГ75) состоит из M_F_CC_ZZZZ, где F это Field Attribute Mode. 0 = Transparent, 1 = Non-Transparent.
    Если атрибуты отображаются как пустое знакоместо, то размер пересылаемых данных контроллером ПДП в стандартном случае равен X*Y знакомест (так как раз сделано в моём примере, ведь тогда речь шла только о количестве линий в строке и количестве строк в экране). Если атрибуты не отображаются, то есть несколько способов.
    Например, увеличить размер ПДП на количество атрибутов в экране. Но тут экран опять уплывёт если добавить/убрать атрибут в экранную область в дальнейшем.
    Можно поместить в конец экранной области спецсимвол 0xF3 (Конец экрана, стоп ПДП). Тогда ничего никуда уплывать не будет, сколько атрибутов не добавляй/убирай. Но могут наблюдаться сдвиги строк.
    Или ставить в конце строк спецсимвол 0xF1 (Конец строки, стоп ПДП).

    В любом случае это требует некоторого опыта, навыков и трюков. На примере Болдера очень хорошо видно, что атрибут включён в начале строки и выключен в конце. Именно поэтому мы и наблюдаем полосатое цветное поле (как в некоторых играх на атари 2600) и персонажа меняющего цвет при перемещении вверх-вниз. Там ведь не сделаны разным цветом камни, алмазы, стены, и сам персонаж. В таком виде это аналог цветных накладок на экраны в древних чёрно-белых игровых автоматах. Иначе это потребует виртуозного программирования и пересчётов экрана во время самого игрового процесса (у vinxru были такие примеры).
    Последний раз редактировалось SegaBoy; 30.11.2017 в 13:12.

  7. #177
    R.I.P.
    Регистрация
    17.08.2013
    Адрес
    г. Москва
    Сообщений
    965
    Спасибо Благодарностей отдано 
    64
    Спасибо Благодарностей получено 
    67
    Поблагодарили
    42 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Спасибо, что разжевали. Попробую переварить и поиграться со спецсимволами.
    А такой момент: если ограничение на количество изменений атрибутов в строке - 16, то почему нельзя эти 16 байт заложить на каждую строку (разумеется, при условии, что их потребуется заполнять, хотя бы даже и повторяющимися атрибутами) и таким образом получить прозрачную математику адресации?

  8. #178
    Activist Аватар для SegaBoy
    Регистрация
    12.11.2009
    Адрес
    Москва
    Сообщений
    390
    Спасибо Благодарностей отдано 
    38
    Спасибо Благодарностей получено 
    80
    Поблагодарили
    59 сообщений
    Mentioned
    2 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Почему нельзя? Можно = ))

  9. #179
    Veteran Аватар для zebest
    Регистрация
    11.01.2008
    Адрес
    Ладошкино
    Сообщений
    1,673
    Записей в дневнике
    4
    Спасибо Благодарностей отдано 
    323
    Спасибо Благодарностей получено 
    221
    Поблагодарили
    174 сообщений
    Mentioned
    7 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Нужно. Делаешь режим с прозрачными атрибутами, и к своемуу спрайту спереди и сзади добавляешь по атрибуту, включить цвет\выключить. И двигаешь как и раньше, но на +2 шЫрше. ну или кажное знакоместо разукрашиваешь, тогда добавляешь поболее
    Profi v3.2 -=- Speccy2010,r2

  10. #180
    R.I.P.
    Регистрация
    17.08.2013
    Адрес
    г. Москва
    Сообщений
    965
    Спасибо Благодарностей отдано 
    64
    Спасибо Благодарностей получено 
    67
    Поблагодарили
    42 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Ну вот и решение) С этим уже "можно работать". Осталось только запрограммировать.

    В таком случае выставляю:
    1) h_act equ 80 ; видимых символов в строке
    2) no_trans_attr=0
    3) пересчитываю объём и адрес видеопамяти, сдвигаю на 480 байт назад (16*30) (на 0x728Ch, вместо 0x746Bh)..
    И в результате....ожидаемо слетает синхронизация...) Это в emu80v4. В emu80v3 - без изменений: либо цветное, но с дырками, либо без дырок, но и без цвета)
    В emuv1.1-b2m - совсем не запустилось..

    И, кстати, по болдеру и иже с ним: понятно, что разукрасить полосами с подобными ограничениями было гораздо проще, чем сделать нормальное раскрашивание, как сделано в Dizzy75.
    Но в Диззи я так понял этим самые приёмы и навыки применяются) С пересчётами каждой локации...

    Попробую поглядеть какие там выставлены параметры ВГ и ВТ.

Страница 18 из 34 ПерваяПервая ... 141516171819202122 ... ПоследняяПоследняя

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

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

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

Похожие темы

  1. РАДИО-86РК на Z80
    от Vladimir_S в разделе Радио-86РК
    Ответов: 310
    Последнее: 06.06.2017, 21:13
  2. Радио-86РК: По страницам журнала "Радио"
    от Viktor2312 в разделе Радио-86РК
    Ответов: 79
    Последнее: 13.02.2014, 08:34
  3. Радио 86рк на AVR
    от PWA в разделе Радио-86РК
    Ответов: 6
    Последнее: 10.06.2013, 13:01
  4. Радио 86РК
    от Shnurkov в разделе Барахолка (архив)
    Ответов: 1
    Последнее: 02.01.2009, 12:52

Ваши права

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