User Tag List

Страница 10 из 11 ПерваяПервая ... 67891011 ПоследняяПоследняя
Показано с 91 по 100 из 113

Тема: ASTEROIDS на УКНЦ

Комбинированный просмотр

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

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

    По умолчанию

    Цитата Сообщение от Hunta Посмотреть сообщение
    Буковки голубеньким подкрась - реально ускорится
    подкрасил:
    Код:
            MOV	R0, R1
    	SXT     R1
    	ADD	R1, R0
    	XOR	R1, R0
    БK 0010-01, БК 11М, БК11М+,МС 0511 (УКНЦ)х3, Atari 65XE, Commodore 64, AMIGA 500 (HDD), ZX EVO

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

  3. #2

    Регистрация
    30.11.2015
    Адрес
    г. Самара
    Сообщений
    7,508
    Спасибо Благодарностей отдано 
    344
    Спасибо Благодарностей получено 
    714
    Поблагодарили
    596 сообщений
    Mentioned
    13 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Код:
      TST R0
      BPL 10$
      NEG R0
    10$:

  4. #3

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

    По умолчанию

    Код:
    TST R0
      BPL 10$
      NEG R0
    10$:
    Это очевидный вариант.

    Нужно без ветвлений - "борьба за скорость"
    Например при расчете AABB этих ABS будет много.

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

    Скоро проверю в "реальной жизни" несколько вариантов.. там видно будет.
    Последний раз редактировалось S_V_B; 18.05.2021 в 12:48.
    БK 0010-01, БК 11М, БК11М+,МС 0511 (УКНЦ)х3, Atari 65XE, Commodore 64, AMIGA 500 (HDD), ZX EVO

  5. #4

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

    По умолчанию

    Заменил конструкцию:
    Код:
            MOV	R3,R2
    	ASR	R2
    	ASR	R2
    	ASR	R2
    	MUL	#40.,R2    ;Y/8*40
    	ADD	R3, R0     ; адрес под спрайтом в тайлбуфере
    на эквивалентную
    Код:
            BIC	#7, R3
    	MOV	R3,R2
    	ASL	R3
    	ASL	R3
    	ADD	R2,R3
    	ADD	R3, R0     ; адрес под спрайтом в тайлбуфере
    БK 0010-01, БК 11М, БК11М+,МС 0511 (УКНЦ)х3, Atari 65XE, Commodore 64, AMIGA 500 (HDD), ZX EVO

  6. #5

    Регистрация
    19.04.2013
    Адрес
    г. Чебоксары
    Сообщений
    612
    Спасибо Благодарностей отдано 
    18
    Спасибо Благодарностей получено 
    175
    Поблагодарили
    135 сообщений
    Mentioned
    10 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от S_V_B Посмотреть сообщение
    на эквивалентную
    Она не эквивалентная.
    ADD R3, R0 после команды MUL, к R0 прибавляет не R2*5, а старшую часть умножения на 40., то, что за 16 бит из R2 вылезло.
    У меня эквивалентный код получается такой:
    Код:
    mov R3, R2
    bic #7, R2
    clr R3
    mov R2, -(SP)
    asl R2
    rol R3
    asl R2
    rol R3
    add (SP)+, R2
    adc R3
    add R3, R0
    - - - Добавлено - - -

    Ну, либо в первом примере опечатка.
    Последний раз редактировалось gid; 20.05.2021 в 13:35.

  7. #6

    Регистрация
    30.11.2015
    Адрес
    г. Самара
    Сообщений
    7,508
    Спасибо Благодарностей отдано 
    344
    Спасибо Благодарностей получено 
    714
    Поблагодарили
    596 сообщений
    Mentioned
    13 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от gid Посмотреть сообщение
    что за 16 бит из R2 вылезло.
    Там такая формула получается

    R3 := (R3*8193*40) mod 65536

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

    И до 1638 даёт в результате в R3 умножение на 40, дальше пошло усечение результата

  8. #7

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

    По умолчанию

    Цитата Сообщение от gid Посмотреть сообщение
    ADD R3, R0 после команды MUL, к R0 прибавляет не R2*5, а старшую часть умножения на 40., то, что за 16 бит из R2 вылезло.
    Код эквивалентный по результату.
    в первом примере Y (в точках) делится на 8 (8х8) тайл и умножается на 40 (ширина буфера в байтах) = адрес в нужной строке буфера.
    во втором примере сократили деление на 8 и сделали быстрое умножение.

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

    работает заметно быстрее
    БK 0010-01, БК 11М, БК11М+,МС 0511 (УКНЦ)х3, Atari 65XE, Commodore 64, AMIGA 500 (HDD), ZX EVO

  9. #8

    Регистрация
    30.11.2015
    Адрес
    г. Самара
    Сообщений
    7,508
    Спасибо Благодарностей отдано 
    344
    Спасибо Благодарностей получено 
    714
    Поблагодарили
    596 сообщений
    Mentioned
    13 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Вот только MUL #40.,R2 - это, внезапно, не умножение R2 на 40, а умножение 32-ух битного числа (R2 старшая часть и R3 младшая часть) на 40, так что по результату - тупо умножить R3 на 40 с усечением до 16 бит

  10. #9

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

    По умолчанию

    Цитата Сообщение от Hunta Посмотреть сообщение
    не умножение R2 на 40, а умножение 32-ух битного числа
    А MUL как будет работать с 16ю битами?
    БK 0010-01, БК 11М, БК11М+,МС 0511 (УКНЦ)х3, Atari 65XE, Commodore 64, AMIGA 500 (HDD), ZX EVO

  11. #10

    Регистрация
    19.04.2013
    Адрес
    г. Чебоксары
    Сообщений
    612
    Спасибо Благодарностей отдано 
    18
    Спасибо Благодарностей получено 
    175
    Поблагодарили
    135 сообщений
    Mentioned
    10 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от S_V_B Посмотреть сообщение
    Код эквивалентный по результату.
    Он был бы эквивалентный, если бы в оригинале было бы
    Код:
            MOV	R3,R2
    	ASR	R2
    	ASR	R2
    	ASR	R2
    	MUL	#40.,R2    ;Y/8*40
    	ADD	R2, R0     ; адрес под спрайтом в тайлбуфере
    к R0 прибавляли бы R2

    Цитата Сообщение от Hunta Посмотреть сообщение
    Вот только MUL #40.,R2 - это, внезапно, не умножение R2 на 40, а умножение 32-ух битного числа
    В 1801ВМ2 и ВМ3 - нет, MUL там умножение Rn:Rn+1 = Rn * (SS), т.е. умножение 16-битного числа на 16 битное число, с сохранением результата в 32-х битное число

Страница 10 из 11 ПерваяПервая ... 67891011 ПоследняяПоследняя

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

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

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

Похожие темы

  1. Ответов: 247
    Последнее: 17.11.2024, 07:55
  2. УКНЦ 3D
    от nzeemin в разделе ДВК, УКНЦ
    Ответов: 29
    Последнее: 15.01.2021, 17:07
  3. Гигаскрин на УКНЦ
    от S_V_B в разделе ДВК, УКНЦ
    Ответов: 62
    Последнее: 03.10.2020, 03:54
  4. УКНЦ и я
    от Hunta в разделе ДВК, УКНЦ
    Ответов: 122
    Последнее: 03.05.2019, 17:55
  5. Продам МС5310 блок дисководов к УКНЦ+КМД УКНЦ
    от Mad Killer/PG в разделе Барахолка (архив)
    Ответов: 7
    Последнее: 19.03.2012, 11:27

Ваши права

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