User Tag List

Страница 29 из 54 ПерваяПервая ... 252627282930313233 ... ПоследняяПоследняя
Показано с 281 по 290 из 531

Тема: ZX Like Pascal

  1. #281

    Регистрация
    29.12.2010
    Адрес
    Москва
    Сообщений
    1,869
    Спасибо Благодарностей отдано 
    142
    Спасибо Благодарностей получено 
    110
    Поблагодарили
    66 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Либо спрайт-пустышку, либо, если есть фон с изображением:
    - запомнить фон в памяти командой WindowGet;
    - вывести спрайт;
    - через некоторое время вывести обратно фон WindowPut (затереть спрайт).

    Способы перемещения спрайтов тут, раздел "Мультипликация"

  2. #282

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

    По умолчанию

    .если старшие биты soplo_anim нигде не нужны, можно обойтись без остатка
    сначала "soplo_anim := 1 - soplo_anim", потом "if soplo_anim = 0"
    В том и дело, что я оптимизации ради хотел юзать одну переменную как для анимации Алисы, так и для анимации огонька. Типа они с разным интервалом кадры меняют.
    Но пришлось для этого задействовать две переменных. Соответственно, два инкремента, больше условий.

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

    А вот реально, проверка бит не помешала бы.
    Допустим, для огонька 0 1 нулевого бита проверять, а для алисы 0 1 первого или второго бита.
    И саму переменную можно тупо инкрементировать до бесконечности, всё равно станет 0 после 255.

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

    Как такое сделать в данном паскале?

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

    Ещё думаю ща над рандомной генерацией препятствий.
    После джавы и плюсов с их динамическими массивами, тут уже малость непривычно. Если по несколько препятствий будет генериться одновременно на экране...

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

    Кстати, вот ещё один случай, где 16 бит важны - таймер, по которому сперва один набор препятствий, затем второй и тд. Или события там всякие. На всяких анлимитед дистанциях, а не на фиксированной карте 256х256 тайлов.

  3. #283

    Регистрация
    29.12.2010
    Адрес
    Москва
    Сообщений
    1,869
    Спасибо Благодарностей отдано 
    142
    Спасибо Благодарностей получено 
    110
    Поблагодарили
    66 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от ALKO Посмотреть сообщение
    А вот реально, проверка бит не помешала бы.
    Тебе уже на ассемблер нужно переходить

    Цитата Сообщение от ALKO Посмотреть сообщение
    Как такое сделать в данном паскале?
    repeat
    anim:=anim+1;
    if anim>3 then anim:=0;
    case anim of
    0: огонек_0, алиса_0;
    1: огонек_1, алиса_0;
    2: огонек_0, алиса_1;
    3: огонек_1, алиса_1;
    end;
    until...

    Хотя, если огонек и алиса независимы, то лучше две переменных юзать.

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

    Цитата Сообщение от ALKO Посмотреть сообщение
    Ещё думаю ща над рандомной генерацией препятствий.
    После джавы и плюсов с их динамическими массивами, тут уже малость непривычно. Если по несколько препятствий будет генериться одновременно на экране...
    Заведи обычный массив. Генери в нем рандомно и/или обнуляй неиспользуемые. Нулевые позиции не выводи.

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

    Цитата Сообщение от ALKO Посмотреть сообщение
    Ещё думаю ща над рандомной генерацией препятствий.
    После джавы и плюсов с их динамическими массивами, тут уже малость непривычно. Если по несколько препятствий будет генериться одновременно на экране...
    Заведи обычный массив. Генери в нем рандомно и/или обнуляй неиспользуемые. Нулевые позиции не выводи.

  4. #284

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

    По умолчанию

    .Заведи обычный массив. Генери в нем рандомно и/или обнуляй неиспользуемые. Нулевые позиции не выводи.
    Дофига проверок. А мне нужен шустрый скролл при этом.

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

    Прост с таким подходом придётся в цикле по массиву шерудить в поисках неиспользуемого.

  5. #285

    Регистрация
    29.12.2010
    Адрес
    Москва
    Сообщений
    1,869
    Спасибо Благодарностей отдано 
    142
    Спасибо Благодарностей получено 
    110
    Поблагодарили
    66 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Ну если препятствий 5-10 штук, то можно и массив перебрать, недолго. А если больше, то проще завести карту. Операторы (процедуры) для карт имеются.

  6. #286

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

    По умолчанию

    Цитата Сообщение от Andrew771 Посмотреть сообщение
    Либо спрайт-пустышку
    Во благо скорости не делал фон.
    Ща думаю не спрайтом-пустышкой затирать, а тупа атрибутами, что намного быстрее, чем заливка пиксельного слоя нулевыми значениями.
    Всё равно спрайты отрисовываются по принципу SpritePutClear.

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

  8. #287

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

    По умолчанию

    Ещё есть некоторые замечания по СпрайтГену.
    Во-первых, он генерит инверсно. То есть чёрный цвет на BMP-шке для него будет нулевым битом, что при чёрном INK и белом Paper спектрума тождественно белому пикселю.

    Во-вторых он генерит неиспользуемые знакоместа в том числе, что приходится вручную подчищать, и менять в инициализации общее количество знакомест. Тоже малость неудобно.

  9. #288

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

    По умолчанию

    Что я делаю не так по атрибутам?
    Почему-то ресетится прога.

    код в писькале
    attrx:=1;
    attry:=1;
    asm(ATTR);

    код в блоке асма

    ATTR
    LD B, _ATTRY
    LD C, _ATTRX
    ; расчет адреса атрибутов знакоместа в DE, B-вертик.координата, C-гориз.координата
    LD A,B
    RRCA
    RRCA
    RRCA
    LD E,A
    AND 31
    OR 88
    LD D,A
    LD A,E
    AND 252
    OR C
    LD E,A
    LD (DE),0
    RET
    - - - Добавлено - - -

    хмм... ща ищу доки по Z80... кажись LD (DE) берёт значения только с аккумулятора.
    Или я чёто путаю...

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

    Наверное всё-таки надо присвоить в аккум. значение цвета

    LD A, 0
    LD (DE), A

    Так ведь? Ща прост не за компом, не могу проверить.

  10. #289

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

    По умолчанию

    Цитата Сообщение от Andrew771 Посмотреть сообщение
    Либо спрайт-пустышку, либо, если есть фон с изображением:
    - запомнить фон в памяти командой WindowGet;
    - вывести спрайт;
    - через некоторое время вывести обратно фон WindowPut (затереть спрайт).
    Горбатыш и так шпарит слишком много данных ради примитивной графики уровня "Тамагочи".
    Так что было бы правильнее не ректанглом копировать фон в память, а по контуру знакомест спрайта.
    Вот такую фитчу тоже на будущее в зх-паскаль не помешало бы, если чё.
    Ну, это для тех, чьи спрайты превышают квадратик 16х16 пикселей. Как, например, в Savage.

  11. #290

    Регистрация
    29.12.2010
    Адрес
    Москва
    Сообщений
    1,869
    Спасибо Благодарностей отдано 
    142
    Спасибо Благодарностей получено 
    110
    Поблагодарили
    66 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от ALKO Посмотреть сообщение
    Ещё есть некоторые замечания по СпрайтГену.
    Во-первых, он генерит инверсно. То есть чёрный цвет на BMP-шке для него будет нулевым битом, что при чёрном INK и белом Paper спектрума тождественно белому пикселю.
    Во-вторых он генерит неиспользуемые знакоместа в том числе, что приходится вручную подчищать, и менять в инициализации общее количество знакомест. Тоже малость неудобно.
    Это фигово, AzAtom не учел. Пользуйся тогда моим конвертером, там правильно.


    Цитата Сообщение от ALKO Посмотреть сообщение
    Что я делаю не так по атрибутам?
    Почему-то ресетится прога.
    В тексте программы на асме Ттолько метки в начале строки должны быть, а команды не в начале строки, иначе они воспринимаются как метки.
    Команды ld (de),0 не существует, так что ты правильно написал:
    ld a,0
    ld (de),a
    Правда, принято у продвинутых перцев вместо ld a,0 писать xor a, команда занимает 1 байт и выполняется быстрее.
    А в данной процедуре можно заменить во всех командах de на hl (т.е. d на h, e на l), тогда можно будет написать одной командой ld (hl),0, такая команда есть.

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

    Цитата Сообщение от ALKO Посмотреть сообщение
    Так что было бы правильнее не ректанглом копировать фон в память, а по контуру знакомест спрайта.
    Не факт, что будет быстрее копировать. Т.к. нужно бегать по всему спрайту, вычислять координаты каждого знакоместа. А так прямоугольная область копируется ldir-ами. Вычисляются только адреса начала строк.

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

    ALKO(09.10.2019)

Страница 29 из 54 ПерваяПервая ... 252627282930313233 ... ПоследняяПоследняя

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

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

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

Похожие темы

  1. PASCAL + MACRO11 (УКНЦ-ДВК).
    от hobot в разделе ДВК, УКНЦ
    Ответов: 341
    Последнее: 15.01.2022, 17:30
  2. Turbo Pascal для msx/msx2
    от Оззя в разделе MSX
    Ответов: 4
    Последнее: 23.02.2020, 23:59
  3. в розыске дисковая версия Pascal.
    от goblinish в разделе Программирование
    Ответов: 18
    Последнее: 16.08.2011, 16:30
  4. Pascal
    от Andrew771 в разделе Программирование
    Ответов: 22
    Последнее: 24.05.2011, 21:20
  5. Скопировать/вставить из/в HiSoft Pascal в эмуляторе
    от kit в разделе Программирование
    Ответов: 1
    Последнее: 05.02.2010, 15:35

Ваши права

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