User Tag List

Страница 40 из 51 ПерваяПервая ... 363738394041424344 ... ПоследняяПоследняя
Показано с 391 по 400 из 501

Тема: Тема для всяких глупых вопросов

  1. #391

    Регистрация
    08.09.2005
    Адрес
    Воронеж
    Сообщений
    4,963
    Записей в дневнике
    3
    Спасибо Благодарностей отдано 
    319
    Спасибо Благодарностей получено 
    312
    Поблагодарили
    236 сообщений
    Mentioned
    11 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Shiny Посмотреть сообщение
    ldir/lddr это верное решение, но стек все же лучше.
    ну тут атрибуты же, их немного; а если lddr развернуть в ldd-ldd (благо размер заранее известен) - тогда всё успеет перебросить еще на бордере
    Прихожу без разрешения, сею смерть и разрушение...

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

  3. #392

    Регистрация
    25.09.2009
    Адрес
    Одесса
    Сообщений
    2,311
    Спасибо Благодарностей отдано 
    96
    Спасибо Благодарностей получено 
    186
    Поблагодарили
    89 сообщений
    Mentioned
    4 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    ещë один мега-дыбильный вопрос.

    ld a,0
    loop1:
    inc a

    jp po, loop0
    ; код программы, если флаг чëтный
    loop0:

    ;продолжение кода
    jp loop1

    По задумке чëт/нечет должен переключаться при каждом инкременте, и соответственно перескакивать по условию. Но не перескакивает. Оно только для константных чисел работает что ли? Ну, типа, явное присвоение ld a, 228, например? Как мне щëлкать флаг в цикле, шоба пульсировало подобно мультивибратору?
    Последний раз редактировалось ALKO; 18.09.2024 в 21:34.

  4. #393

    Регистрация
    18.01.2010
    Адрес
    Крым
    Сообщений
    238
    Спасибо Благодарностей отдано 
    7
    Спасибо Благодарностей получено 
    41
    Поблагодарили
    34 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от ALKO Посмотреть сообщение
    По задумке чëт/нечет должен переключаться при каждом инкременте
    Это хитрый флаг. Согласно букварю, при инкременте: P/V is set if r was 7FH before operation; reset otherwise.
    При декременте: P/V is set if m was 80H before operation; reset otherwise. Т.е., при данных операциях это не паритет вовсе, а переполнение.

  5. #394

    Регистрация
    08.09.2005
    Адрес
    Воронеж
    Сообщений
    4,963
    Записей в дневнике
    3
    Спасибо Благодарностей отдано 
    319
    Спасибо Благодарностей получено 
    312
    Поблагодарили
    236 сообщений
    Mentioned
    11 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от ALKO Посмотреть сообщение
    По задумке чëт/нечет должен переключаться при каждом инкременте,
    даже если бы на чётность работал для арифметики (как в 8080) - всё равно не переключался бы каждый раз
    потому что это чётность кол-ва единичных битов в числе, а не самого числа

    если всё же для условия непременно нужен именно как флаг чётности - сделай после инкремента and/or a
    Прихожу без разрешения, сею смерть и разрушение...

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

    ALKO(19.09.2024)

  6. #395

    Регистрация
    25.09.2009
    Адрес
    Одесса
    Сообщений
    2,311
    Спасибо Благодарностей отдано 
    96
    Спасибо Благодарностей получено 
    186
    Поблагодарили
    89 сообщений
    Mentioned
    4 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    что-то аномалия какая-то у меня в процедуре закраски массивом атрибутов в области ректангла.


    Есть такая процедурка. С ней всё ок. Тут выводит лишь отдельно взятый атрибут по указанным X|Y
    Код:
    ATTR
    		ld a,(_ATTRY)
    	ld b,a
    	ld a,(_ATTRX)
    		ld c,a
    ; расчет адреса атрибутов знакоместа в DE, B-вертик.координата, C-гориз.координата
    			LD	A,B
    			RRCA
    			RRCA
    			RRCA
    			LD	L,A
    			AND	31
    			OR	88
    			LD	H,A
    			LD	A,L
    			AND	252
    			OR	C
    			LD	L,A
    			LD A,(_ATTRC)
    			LD (HL),A
    			RET
    Пробую то же самое уже для массива атрибутов из линейного DEFB сверху вниз/слева направо (правда тут иные регистровые пары используются, и рисуется в буфер), так почему-то при достижении позиции Y определённого значения оно перескакивает на начало экрана. Что-то не то в булевой алгебре AND OR
    _SPR_H, _SPR_W - высота/ширина ректангла, соответственно.

    Код:
    ld hl, SPR_ATTR ;указатель на массив DEFB
    
    
    		ld a,(_SPR_Y)
    		ld d,a
    		ld a,(_SPR_X)
    		ld e,a
    		ld	a,(_SPR_H)
    		ld	b,a
    
    PUTSPRITES2	push	bc
    		push	de
    
                    LD	A,D			
                    RRCA
                    RRCA
                    RRCA
                    LD	C,A
                    AND	31
                    OR	242 ; 61952/256
                    LD	B,A
                    LD	A,C
                    AND	252
                    OR	E
                    LD	C,A
    
    		ld	d,b
    		ld	e,c
    		ld	bc,(_SPR_W)
    		ld	b,0
    		ldir
    
    		pop	de
    
    		inc	d
    
    		pop	bc
    		djnz	PUTSPRITES2
    
    	ret

  7. #396

    Регистрация
    08.09.2005
    Адрес
    Воронеж
    Сообщений
    4,963
    Записей в дневнике
    3
    Спасибо Благодарностей отдано 
    319
    Спасибо Благодарностей получено 
    312
    Поблагодарили
    236 сообщений
    Mentioned
    11 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от ALKO Посмотреть сообщение
    Пробую то же самое уже для массива атрибутов из линейного DEFB сверху вниз/слева направо (правда тут иные регистровые пары используются, и рисуется в буфер),
    напиши все параметры буфера, тут не телепаты сидят
    и вообще, зачем пересчитываешь адрес в каждой строке?
    Прихожу без разрешения, сею смерть и разрушение...

  8. #397

    Регистрация
    25.09.2009
    Адрес
    Одесса
    Сообщений
    2,311
    Спасибо Благодарностей отдано 
    96
    Спасибо Благодарностей получено 
    186
    Поблагодарили
    89 сообщений
    Mentioned
    4 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Lethargeek Посмотреть сообщение
    напиши все параметры буфера, тут не телепаты сидят
    и вообще, зачем пересчитываешь адрес в каждой строке?
    ну он как и реальный экран - 32х24 атрибута содержит. По окончанию рисования с него просто монолитно лдирится на реальный экран.

    что касается второго вопроса, у меня же W H картинки кастомные. Поэтому приходится пересчитывать.

  9. #398

    Регистрация
    08.09.2005
    Адрес
    Воронеж
    Сообщений
    4,963
    Записей в дневнике
    3
    Спасибо Благодарностей отдано 
    319
    Спасибо Благодарностей получено 
    312
    Поблагодарили
    236 сообщений
    Mentioned
    11 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от ALKO Посмотреть сообщение
    ну он как и реальный экран - 32х24 атрибута содержит. По окончанию рисования с него просто монолитно лдирится на реальный экран.
    ну мало ли, буферы бывают больше экрана, чтобы не считать отдельно обрезку спрайтов
    или меньше, если на экране меньше область активная

    Цитата Сообщение от ALKO Посмотреть сообщение
    что касается второго вопроса, у меня же W H картинки кастомные. Поэтому приходится пересчитывать.
    почему "приходится"? что мешает сразу к адресу смещение прибавлять?

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

    вообще надо бы тебе освоить трассировку в эмуле каком-нить, например xpeccy
    Прихожу без разрешения, сею смерть и разрушение...

  10. #399

    Регистрация
    10.01.2010
    Адрес
    Смоленская обл.
    Сообщений
    556
    Спасибо Благодарностей отдано 
    187
    Спасибо Благодарностей получено 
    197
    Поблагодарили
    100 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от ALKO Посмотреть сообщение
    Есть такая процедурка. С ней всё ок. Тут выводит лишь отдельно взятый атрибут по указанным X|Y
    Блин... Привыкай писать значения в шестнадцатиричном формате, быстрее будешь понимать когда ерунду пишешь ))
    По поводу

    Цитата Сообщение от ALKO Посмотреть сообщение
    ; расчет адреса атрибутов знакоместа в DE, B-вертик.координата, C-гориз.координата
    Код:
    		
    			LD	A,B
    			RRCA
    			RRCA
    			RRCA
    			LD	L,A
    			AND	31    ; это #1F но нахрена если там 2 значащих бита всего , AND #03 и всё
    			OR	88            ; это #58
    			LD	H,A
    			LD	A,L
    			AND	252   ;это  #FC и опять нахрена  ->  AND #E0
    			OR	C
    			LD	L,A
    			LD A,(_ATTRC)
    			LD (HL),A
    			RET

    Нет в исходном состоянии работает конечно, если позиции не выходят за рамки, но всётаки

    А теперь следующее

    Цитата Сообщение от ALKO Посмотреть сообщение
    Что-то не то в булевой алгебре AND OR
    _SPR_H, _SPR_W - высота/ширина ректангла, соответственно.
    Код:
                  ***
                    LD	A,D			
                    RRCA
                    RRCA
                    RRCA
                    LD	C,A
                    AND	31                ;опять это #1F
                    OR	242 ; 61952/256   ; #F2 то есть буфер по адресу #F200 - ну-ну
                    LD	B,A
                    LD	A,C
                    AND	252          ; и опять #FC
                    OR	E
                    LD	C,A
                 ***
    Получается что ты к буферу по некратному адресу пытаешься применить метод адресации экрана, в результате у тебя OR #F2 затирает старший бит позиции Y

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

    Замени OR #F2 на ADD #F2 чтоб прокатило ))
    А вообще тебе правильно сказали, из цикла лучше исключить расчет адреса, достаточно сделать один раз, а потом просто смещение добавлять.

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

    ALKO(23.09.2024)

  11. #400

    Регистрация
    25.09.2009
    Адрес
    Одесса
    Сообщений
    2,311
    Спасибо Благодарностей отдано 
    96
    Спасибо Благодарностей получено 
    186
    Поблагодарили
    89 сообщений
    Mentioned
    4 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Dart Alver Посмотреть сообщение
    а потом просто смещение добавлять.
    но оно не константное жи. А обратно пропорционально ширине пикчи.

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

    хотя да. Наверное быстрее вычислить значение вначале

    LD HL, offset
    LD B, (_SPR_W)
    LD A, 32
    SUB B
    LD (HL), A

    Наверное так.

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

    Цитата Сообщение от Dart Alver Посмотреть сообщение
    Замени OR #F2 на ADD #F2 чтоб прокатило ))
    Таки да. Помогло. Благодарю.

Страница 40 из 51 ПерваяПервая ... 363738394041424344 ... ПоследняяПоследняя

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

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

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

Похожие темы

  1. Ответов: 42
    Последнее: 05.05.2021, 17:01
  2. Общая тема для моих вопросов (ассемблер и zx spectrum)
    от moronizzz в разделе Для начинающих
    Ответов: 17
    Последнее: 23.08.2016, 18:13
  3. тема для мобильного....
    от rasmer в разделе Музыка
    Ответов: 0
    Последнее: 18.01.2008, 20:25

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

Ваши права

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