User Tag List

Страница 6 из 8 ПерваяПервая ... 2345678 ПоследняяПоследняя
Показано с 51 по 60 из 80

Тема: LASER BASIC 2

  1. #51

    Регистрация
    07.02.2008
    Адрес
    г. Рязань
    Сообщений
    2,928
    Спасибо Благодарностей отдано 
    37
    Спасибо Благодарностей получено 
    124
    Поблагодарили
    44 сообщений
    Mentioned
    5 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Oleg N. Cher Посмотреть сообщение
    Alex Rider, я обязательно воспользуюсь любезным предложением помочь с матчастью: туда дальше вынесу на общую разработку пару своих идей игр, просто не надеюсь, что кто-то захочет присоединиться, из-за чего интерес не очень сильный.
    Я больше про рассказать что-нить более понятным языком. Возможно по Skype, возможно, с реализацией в прямом эфире. Сам писать не хочу.
    ZX Evolution Rev C + ZXM-SoundCard Extreme + NeoGS.

  2. #52

    Регистрация
    24.08.2007
    Адрес
    Днепропетровская обл.
    Сообщений
    1,681
    Спасибо Благодарностей отдано 
    2,712
    Спасибо Благодарностей получено 
    170
    Поблагодарили
    130 сообщений
    Mentioned
    1 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Слышали анек про работника кроватного завода, который тащил детальки и собирал дома - то автомат получается, то пистолет. ;-) Так и я, не пойдёт мне эта теория впрок. Максимум, что я могу, это написать с её помощью что-то, положить такую процедуру бережно в либу и сдувать с неё пыль. Но к дизайну либы хорошо бы если бы приложил руку более опытный гейммейкер.

    drbars, Bedazzle, благодарю. С миррорингом более или менее всё ясно.

    Я реализовал AWRV, SL1V, SR1V, WL1V, WR1V. Байтовый (на 8 точек) и битовый (на 1 точку) скроллинг - обычный и циклический - проблем не вызвал. Больше вопросов вызывает горизонтальный скроллинг на 4 бита. Есть идея, как сделать его оптимально? Навскидку приходит на ум только побитовый сдвиг 4 раза и потом логическое наложение AND #F : OR x ( AND #F0 : OR x ).

  3. #53

    Регистрация
    02.05.2015
    Адрес
    г. Таллин, Эстония
    Сообщений
    1,691
    Спасибо Благодарностей отдано 
    302
    Спасибо Благодарностей получено 
    223
    Поблагодарили
    159 сообщений
    Mentioned
    11 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Oleg N. Cher Посмотреть сообщение
    Навскидку приходит на ум только побитовый сдвиг 4 раза
    Ещё как вариант использовать

  4. #54

    Регистрация
    24.08.2007
    Адрес
    Днепропетровская обл.
    Сообщений
    1,681
    Спасибо Благодарностей отдано 
    2,712
    Спасибо Благодарностей получено 
    170
    Поблагодарили
    130 сообщений
    Mentioned
    1 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Да, действительно. Лучше этих команд ничего и не придумаешь. Годится.

    Код:
    void Laser2_SL4V (unsigned char col, unsigned char row, unsigned char len, unsigned char hgt) __z88dk_callee
    {
      __asm
                      POP   DE
                      POP   BC              ; C = col; B = row
                      CALL  _Laser2_XYtoScr
                      POP   BC              ; C = len; B = hgt
                      PUSH  DE
                      LD    A, C
                      DEC   A
                      ADD   L
                      LD    L, A
    SL4V_HLINE$:      PUSH  BC
                      LD    D, #8
                      LD    E, L
    SL4V_ROLL_LINE8$: LD    B, C
                      XOR   A
    SL4V_ROLL_LINE$:  RLD
                      DEC   L
                      DJNZ  SL4V_ROLL_LINE$
                      LD    L, E
                      INC   H
                      DEC   D
                      JR    NZ, SL4V_ROLL_LINE8$
                      LD    A, L
                      ADD   #0x20           ; Next charline
                      LD    L, A            ; If carry then jump to next third of screen
                      JR    C, SL4V_CONT_1_3$
                      LD    A, H
                      SUB   #8              ; HL := HL - 0x0800
                      LD    H, A
    SL4V_CONT_1_3$:   POP   BC
                      DJNZ  SL4V_HLINE$     ; End of loop on charlines (the same third)
      __endasm;
    } //Laser2_SL4V

  5. #55

    Регистрация
    24.08.2007
    Адрес
    Днепропетровская обл.
    Сообщений
    1,681
    Спасибо Благодарностей отдано 
    2,712
    Спасибо Благодарностей получено 
    170
    Поблагодарили
    130 сообщений
    Mentioned
    1 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Реализовал SL4V, SR4V, WL4V, WR4V, MIRV и MARV. Зеркалирование экрана использует код, предложенный Bedazzle. Для зеркалирования атрибутов удалось использовать команду LDI. Такты не считал, но думаю, получилось хорошо.

    DemoMirr.zip

    Мне остался только вертикальный скроллинг окна (вверх и вниз) на произвольное кол-во пикселей, обычный и циклический. И писать его не хочется, с удовольствием слямзил бы готовый.

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

    Всё-таки посчитал такты. Неа, LDI здесь не эффективнее. Такой расклад.

    Код:
    MARV_MIRR_LINE$:  LD    A, (DE)         ;  7
                      LDI                   ; 16
                      DEC   L               ;  4
                      LD    (HL), A         ;  7
                      INC   L               ;  4
                      DEC   DE              ;  6
                      DEC   E               ;  4
                      DJNZ  MARV_MIRR_LINE$ ; 48t, 8 bytes
    Код:
    MARV_MIRR_LINE$:  LD    A, (DE)         ;  7
                      LD    C, (HL)         ;  7
                      LD    (HL), A         ;  7
                      LD    A, C            ;  4
                      LD    (DE), A         ;  7
                      INC   L               ;  4
                      DEC   E               ;  4
                      DJNZ  MARV_MIRR_LINE$ ; 40t, 7 bytes

  6. #56

    Регистрация
    01.03.2005
    Адрес
    Новосибирск
    Сообщений
    2,080
    Спасибо Благодарностей отдано 
    87
    Спасибо Благодарностей получено 
    480
    Поблагодарили
    145 сообщений
    Mentioned
    7 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Oleg N. Cher Посмотреть сообщение
    Зеркалирование экрана использует код, предложенный Bedazzle
    Удалил более быстрый и короткий пример.

  7. #57

    Регистрация
    24.08.2007
    Адрес
    Днепропетровская обл.
    Сообщений
    1,681
    Спасибо Благодарностей отдано 
    2,712
    Спасибо Благодарностей получено 
    170
    Поблагодарили
    130 сообщений
    Mentioned
    1 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    drbars, код Bedazzle зеркалит сразу 2 байта одним махом. Чего и требуется.

    Если я что-то не так понял, прошу объяснить, а не удалять.

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

    drbars, ваш пример оптимальнее для зеркалирования одного байта, и с этим никто даже не собирался спорить. А тут сразу два байта. Если вы внимательно подумаете, то поймёте, что в моём случае (зеркалится окно) код Bedazzle оптимальнее.

    Так что зря удалили.

  8. #58

    Регистрация
    02.05.2015
    Адрес
    г. Таллин, Эстония
    Сообщений
    1,691
    Спасибо Благодарностей отдано 
    302
    Спасибо Благодарностей получено 
    223
    Поблагодарили
    159 сообщений
    Mentioned
    11 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Oleg N. Cher Посмотреть сообщение
    код Bedazzle оптимальнее.
    Мной он только выковырян.

  9. #59

    Регистрация
    24.08.2007
    Адрес
    Днепропетровская обл.
    Сообщений
    1,681
    Спасибо Благодарностей отдано 
    2,712
    Спасибо Благодарностей получено 
    170
    Поблагодарили
    130 сообщений
    Mentioned
    1 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    drbars, ну что это за "барышня обиделась"? Восстановите посты, могут кому-то пригодиться. В т.ч. и мне потом, мало ли.

    Господа, у кого-то они остались в кэше браузера? Запостите. (У меня нет, долбанный Chrome)

  10. #60

    Регистрация
    02.05.2015
    Адрес
    г. Таллин, Эстония
    Сообщений
    1,691
    Спасибо Благодарностей отдано 
    302
    Спасибо Благодарностей получено 
    223
    Поблагодарили
    159 сообщений
    Mentioned
    11 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Oleg N. Cher Посмотреть сообщение
    Господа, у кого-то они остались в кэше браузера?
    эти?

    ; mirror byte (example 2)
    ; 17 bytes, 66 t.

    LD C,A
    RLCA
    RLCA
    XOR C
    AND %10101010
    XOR C
    LD C,A
    RLCA
    RLCA
    RLCA
    RRC C
    XOR C
    AND %01100110
    XOR C

    ; Результат = reg A.
    Так же, если проблема со свободными регистрами можно использовать только аккумулятор.
    18 bytes

    LD A,(HL)
    RLCA
    RLCA
    XOR (HL)
    AND %10101010
    XOR (HL)
    LD (HL),A
    RLCA
    RLCA
    RLCA
    RRC (HL)
    XOR (HL)
    AND %01100110
    XOR (HL)
    LD (HL),A

Страница 6 из 8 ПерваяПервая ... 2345678 ПоследняяПоследняя

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

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

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

Похожие темы

  1. LASER BASIC
    от VETER в разделе Программирование
    Ответов: 8
    Последнее: 04.01.2015, 04:48
  2. laser basic
    от johnny в разделе Программирование
    Ответов: 32
    Последнее: 17.02.2014, 22:57
  3. LASER BASIC decompiled by HVG
    от Raydac в разделе Программирование
    Ответов: 0
    Последнее: 21.12.2009, 23:04
  4. Возрождение Laser Squad
    от Odrick в разделе Игры
    Ответов: 17
    Последнее: 08.11.2005, 02:18
  5. Re: Laser Genius
    от Oleg Golenkoff (2:451/19) в разделе Софт
    Ответов: 3
    Последнее: 01.10.2005, 06:06

Ваши права

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