metamorpho, по человечески.. завидуюСтолько откликов и рац. предложений.... было бы у меня с LastMission на УКНЦ.. такое .. давно бы дописал.., а так... одни снобские ФЕ...
metamorpho, по человечески.. завидуюСтолько откликов и рац. предложений.... было бы у меня с LastMission на УКНЦ.. такое .. давно бы дописал.., а так... одни снобские ФЕ...
БK 0010-01, БК 11М, БК11М+,МС 0511 (УКНЦ)х3, Atari 65XE, Commodore 64, AMIGA 500 (HDD), ZX EVO
metamorpho(23.07.2020)
С любовью к вам, Yandex.Direct
Размещение рекламы на форуме способствует его дальнейшему развитию
metamorpho(23.07.2020)
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[свернуть]
Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)