User Tag List

Показано с 1 по 10 из 501

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

Древовидный режим

Предыдущее сообщение Предыдущее сообщение   Следующее сообщение Следующее сообщение
  1. #11

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

    По умолчанию

    Цитата Сообщение от ALKO Посмотреть сообщение
    хотя да. Наверное быстрее вычислить значение вначале

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

    Наверное так.
    Хмм... Нет такой команды 'LD B, (**)', есть 'LD A,(**)' или 'LD BC,(**)'
    И много лишнего, например HL зря приплёл.

    можно:

    Код:
    LD A,(_SPR_W)
    LD B,A
    LD A,32
    SUB B
    LD (offset),A
    но лучше например

    Код:
    LD A,(_SPR_W)
    NEG            ; A=-A
    ADD A,32
    LD (offset),A

    Оба варианта одинаковы и по тактам и по размеру, но во втором случае портится только регистр A

    А можно сохранять позицию перед LDIR.

    Например вот вариант изменения твоего кода для примера.

    Код:
       ld hl, SPR_ATTR  ;указатель на массив DEFB
    
    ; Для начала если расположение ячеек координат и размера идёт друг за другом
    ; типо так :  
    ;_SPR_X  DB ?
    ;_SPR_Y  DB ?
    ;_SPR_W  DB ?
    ;_SPR_H  DB ?
    ;  то можно вместо конструкции
      
           ;         ld a,(_SPR_Y)
           ;         ld d,a
           ;         ld a,(_SPR_X)
           ;         ld e,a
           ;         ld a,(_SPR_H)
           ;         ld b,a
         
    ; поступить проще
    
                    ld de,(_SPR_X)  ; E=(_SPR_X) , D=(_SPR_Y)
                    ld bc,(_SPR_W)  ; C=(_SPR_W) , B=(_SPR_H)
                                                           
    ; а теперь вместо этого              
    
    ;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
    
    ; сначала найдём адрес в буфере (почти та же процедура) ))
    
                     ld a,d
                     rrca
                     rrca
                     rrca
                     ld d,a
                     and #E0
                     or e
                     ld e,a
                     ld a,d
                     and 3
                     add a,#F2  ; Для буфера в #F200
                     ld d,a     ; в DE - адрес, никаких BC портить не надо
                
                     ld a,32    ; ну а вот и наше смещение
                     sub c      ; теперь в A - смещение для строки
    
    1          ; всё начинаем цикл
                     push bc
                     ld b,0     
                     ldir
                     ld c,a         ; теперь bc - смещение
                     ex de,hl
                     add hl,bc      ; переход на новую строку
                     ex de,hl
                     pop bc            
                    djnz 1B
    
                  ret
    Как-то так. Это пример конечно, можно и ещё поколдовать )) Да я и обшибиться мог, не проверял всё-таки ))
    И да - код что этот, что изначальный предполагает что спрайт атрибутов целиком помещается в экране,
    если вылезет - будет пичалька ))

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

    ALKO(23.09.2024)

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

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

Эту тему просматривают: 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

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

Ваши права

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