User Tag List

Страница 15 из 45 ПерваяПервая ... 111213141516171819 ... ПоследняяПоследняя
Показано с 141 по 150 из 443

Тема: Пишу шедевр для «Вектора 06Ц»

  1. #141

    Регистрация
    24.08.2012
    Адрес
    г. Волжский
    Сообщений
    458
    Спасибо Благодарностей отдано 
    792
    Спасибо Благодарностей получено 
    268
    Поблагодарили
    103 сообщений
    Mentioned
    2 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Исправил появление главного героя "из стены".
    Исправил глюк с палитрой, который был в предыдущей версии.
    Переписал рисование ширмы с учётом некоторых предложенных здесь идей.
    Ширма рисуется быстрее и вроде без глюков.
    Ниже (rom) для тестов

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

    Вот новый код рисования ширмы в программе обработки прерываний:

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


    lda kub_napr ; узнаём направление главного героя 3-вверх 4-вниз
    ;если вертикального движения нет то ширму не рисуем и не стираем

    cpi 3 ; движение вверх скрол вниз
    jnz ruft12
    ;=======затриаем_сверху=4 строки + снизу рисуем 8 строк
    ; стираем ширму сверху
    lxi b,0
    lxi h,0
    dad sp ; HL=HL+SP
    shld s_sp ; сохраняем значение стека
    lda scroll
    sui 7
    mov l,a
    mvi h,0e0h
    mvi a,32
    shirmczz: sphl ; перенос из HL в SP 8
    push b ; запись в экран 16
    push b ; запись в экран 16
    inr h
    dcr a ; 8
    jnz shirmczz ; 12

    ; рисуем снизу
    lxi b,0FFFFh
    lda scroll
    adi 9
    mov l,a
    mvi h,0e1h
    mvi a,31
    shirmc2r: sphl ; перенос из HL в SP 8
    push b ; запись в экран 16
    push b ; запись в экран 16
    push b ; запись в экран 16
    push b ; запись в экран 16
    inr h
    dcr a ; 8
    jnz shirmc2r ; 12

    lhld s_sp ; возвращаем значение стека
    sphl
    jmp ruft14


    ruft12:
    cpi 4 ; движение вниз скрол вверх затриаем снизу строку 08 + сверху рисуем 8 строк
    jnz ruft14 ;иначе ничего не делаем
    ;=======затриаем_сверху=4 строки + снизу рисуем 8 строк
    ; стираем ширму снизу
    lxi b,0
    lxi h,0
    dad sp ; HL=HL+SP
    shld s_sp ; сохраняем значение стека
    lda scroll
    adi 13
    mov l,a
    mvi h,0e0h
    mvi a,32
    shirmc44: sphl ; перенос из HL в SP 8
    push b ; запись в экран 16
    push b ; запись в экран 16
    inr h
    dcr a ; 8
    jnz shirmc44 ; 12

    ; рисуем сверху
    lxi b,0FFFFh
    lda scroll
    adi 1
    mov l,a
    mvi h,0e1h
    mvi a,31
    shirmc2r44: sphl ; перенос из HL в SP 8
    push b ; запись в экран 16
    push b ; запись в экран 16
    push b ; запись в экран 16
    push b ; запись в экран 16
    inr h
    dcr a ; 8
    jnz shirmc2r44 ; 12

    lhld s_sp ; возвращаем значение стека
    sphl
    ;===================================

    ruft14:
    [свернуть]
    Вложения Вложения
    Последний раз редактировалось metamorpho; 23.07.2020 в 11:36.

  2. #142

    Регистрация
    07.08.2008
    Адрес
    г. Уфа
    Сообщений
    8,391
    Спасибо Благодарностей отдано 
    763
    Спасибо Благодарностей получено 
    2,367
    Поблагодарили
    1,317 сообщений
    Mentioned
    39 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

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

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

    metamorpho(22.07.2020)

  3. #143

    Регистрация
    01.03.2005
    Адрес
    Samara
    Сообщений
    4,866
    Спасибо Благодарностей отдано 
    328
    Спасибо Благодарностей получено 
    310
    Поблагодарили
    234 сообщений
    Mentioned
    12 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    metamorpho,почему не используешь модифицирующийся код?

    Код:
    shld s_sp ; сохраняем значение стека
    
    ld sp,$
    s_sp equ-2
    С уважением,
    Jerri / Red Triangle.

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

    metamorpho(22.07.2020)

  4. #144

    Регистрация
    24.08.2012
    Адрес
    г. Волжский
    Сообщений
    458
    Спасибо Благодарностей отдано 
    792
    Спасибо Благодарностей получено 
    268
    Поблагодарили
    103 сообщений
    Mentioned
    2 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от jerri Посмотреть сообщение
    metamorpho,почему не используешь модифицирующийся код?
    jerri, я пока не знаю что это такое и в чём преимущество этого.
    Я ведь только пару-тройку недель вникаю в ассемблер.
    Насколько я понимаю ld это же команда не из ассемблера для КР580ВМ80А ?

    Цитата Сообщение от ivagor Посмотреть сообщение
    Только при старте нижняя строка рисуется испорченной (похоже на проблему с инициализацией ширмы, но это я пальцем в небо, внутрь не смотрел). И KTSerg вроде уже упоминал, что рестарт для игрушки является проблемой. Не то чтобы это было критично, но по возможности лучше попробовать обеспечить и нормальную реакцию на ресет.
    Нижнюю строку исправил. А вот с рестартом пока не пойму где проблема.

  5. #145

    Регистрация
    01.03.2005
    Адрес
    Samara
    Сообщений
    4,866
    Спасибо Благодарностей отдано 
    328
    Спасибо Благодарностей получено 
    310
    Поблагодарили
    234 сообщений
    Mentioned
    12 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от metamorpho Посмотреть сообщение
    jerri, я пока не знаю что это такое и в чём преимущество этого.
    Я ведь только пару-тройку недель вникаю в ассемблер.
    Насколько я понимаю ld это же команда не из ассемблера для КР580ВМ80А ?
    Да это ассемблер Z80
    это команда инициализации стека

    для i80

    LXI sp,$
    и ставишь метку переменный на данные вносимые в SP

    грубо говоря

    #8003 lxi hl,#0000
    #8006 lhld #800a
    #8009 lxi sp,#0000

    просто я не очень люблю систему команд i80 - она не очень наглядная.

    грубо говоря переменная s_sp используется в одном месте и хранит определенное значение - стек при отрисовке ширмы
    экономия 5 байтов
    Последний раз редактировалось jerri; 22.07.2020 в 21:19.
    С уважением,
    Jerri / Red Triangle.

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

    metamorpho(22.07.2020)

  6. #146

    Регистрация
    24.08.2012
    Адрес
    г. Волжский
    Сообщений
    458
    Спасибо Благодарностей отдано 
    792
    Спасибо Благодарностей получено 
    268
    Поблагодарили
    103 сообщений
    Mentioned
    2 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Исправил глюк с нижней строкой при старте.
    Баг рестарта тоже исправлен.
    Ниже свежий (rom) для тестов
    Вложения Вложения

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

    electroscat(23.07.2020), ivagor(23.07.2020), x-code(23.07.2020)

  7. #147

    Регистрация
    22.03.2018
    Адрес
    г. Усть-Каменогорск, Казахстан
    Сообщений
    1,410
    Спасибо Благодарностей отдано 
    91
    Спасибо Благодарностей получено 
    178
    Поблагодарили
    138 сообщений
    Mentioned
    21 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    metamorpho, по человечески.. завидую Столько откликов и рац. предложений.... было бы у меня с LastMission на УКНЦ.. такое .. давно бы дописал.., а так... одни снобские ФЕ...
    БK 0010-01, БК 11М, БК11М+,МС 0511 (УКНЦ)х3, Atari 65XE, Commodore 64, AMIGA 500 (HDD), ZX EVO

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

    metamorpho(23.07.2020)

  8. #148

    Регистрация
    01.03.2005
    Адрес
    Samara
    Сообщений
    4,866
    Спасибо Благодарностей отдано 
    328
    Спасибо Благодарностей получено 
    310
    Поблагодарили
    234 сообщений
    Mentioned
    12 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от S_V_B Посмотреть сообщение
    metamorpho, по человечески.. завидую Столько откликов и рац. предложений.... было бы у меня с LastMission на УКНЦ.. такое .. давно бы дописал.., а так... одни снобские ФЕ...
    Ты зря так, тебе и Манве подсказывал и еще там ктото
    просто основной контингент форума далеко от PDP-11 и ничего машиннозависимого подсказать не сможет.
    С уважением,
    Jerri / Red Triangle.

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

    metamorpho(23.07.2020)

  9. #149

    Регистрация
    24.08.2012
    Адрес
    г. Волжский
    Сообщений
    458
    Спасибо Благодарностей отдано 
    792
    Спасибо Благодарностей получено 
    268
    Поблагодарили
    103 сообщений
    Mentioned
    2 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от S_V_B Посмотреть сообщение
    metamorpho, по человечески.. завидую Столько откликов и рац. предложений.... было бы у меня с LastMission на УКНЦ.. такое .. давно бы дописал.., а так... одни снобские ФЕ...
    Если что на Вектор-06Ц можно ещё много чего интересного сделать (насколько я понял) используя его разные технические возможности.
    Так что Вектор-06Ц "ждёт" новых шедевров

  10. #150

    Регистрация
    22.02.2014
    Адрес
    г. Курган
    Сообщений
    1,706
    Спасибо Благодарностей отдано 
    275
    Спасибо Благодарностей получено 
    318
    Поблагодарили
    222 сообщений
    Mentioned
    1 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    metamorpho, дошло до меня наконец, почему при переходе скроллинга через 00, смещается ширма...
    Всё просто. Если указатель ширмы например $E100 - это вторая колонка экрана, но самая левая из используемых при формировании лабиринта. То при формировании ширмы происходит уменьшение адреса указателя стека, и получаем адрес $E0FF, $E0FE - а это самая левая колонка экрана, и левее лабиринта.

    Если ограничить высоту ширмы 4-мя строками, то можно избавиться от смещения с помощью коррекции указателя ширмы.
    Это модифицированная функция формирования ширмы:

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


    Код:
    	lxi	h,0	;\
    	dad	sp	; сохраняем указатель стека
    	shld	w_sp+1	;/
    ;
    	lhld	ashirm	; положение ширмы
    	mov	a,l	 ;\
    	ora	a	 ;/ проверим на переход ширмы через 00
    	jnz	shirmx	; если не 00 - коррекции положения ширмы не требуется
    	inr	h	 ; при переходе ширмы через 00 - смещаем ширмц вправо
    shirmx:	lxi	b,0	; ставим или удаляем ширму
    	mvi	a,30	 ; длина ширмы по горизонтали
    ;
    shirmc:	sphl		; адрес секции ширмы в стек
    	push	b	 ;\
    	push	b	 ;/ удаляем или ставим 4 строки ширмы
    	inr	h	; переходим к лседующей колонке ширмы
    	dcr	a	 ; сколько колонок осталось
    	jnz	shirmc	; пока не все колонки ширмы
    ;
    w_sp:	lxi	sp,0	;/ восстанавливаем указатель стека
    ;
    	ret
    [свернуть]

Страница 15 из 45 ПерваяПервая ... 111213141516171819 ... ПоследняяПоследняя

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

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

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

Похожие темы

  1. Бейсики для Вектора-06Ц и клонов
    от ivagor в разделе Вектор
    Ответов: 696
    Последнее: 25.10.2025, 02:34
  2. Картотека ПО для Вектора-06ц
    от svofski в разделе Вектор
    Ответов: 719
    Последнее: 04.04.2024, 11:13
  3. Восстановление Вектора-06ц
    от Daniil Chislov 86 в разделе Вектор
    Ответов: 100
    Последнее: 11.03.2021, 00:23
  4. Ответов: 198
    Последнее: 26.04.2020, 13:05
  5. Ответов: 58
    Последнее: 06.07.2019, 23:56

Ваши права

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