Важная информация

User Tag List

Страница 12 из 14 ПерваяПервая ... 891011121314 ПоследняяПоследняя
Показано с 111 по 120 из 140

Тема: Ретро-ЯП Millfork для Atari, Apple II, ZX Spectrum, MSX, CP/M, NES, Game Boy и MS-DOS

  1. #111
    Guru Аватар для breeze
    Регистрация
    11.02.2005
    Адрес
    【RB】
    Сообщений
    3,760
    Спасибо Благодарностей отдано 
    63
    Спасибо Благодарностей получено 
    67
    Поблагодарили
    45 сообщений
    Mentioned
    4 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Shiny Посмотреть сообщение
    Вот шрифт от редактора
    Забавно, значит надо искать печаталку

    Цитата Сообщение от Shiny Посмотреть сообщение
    я с этими режимами - 32/48 не сталкивался, надо смотреть исходник. А нужно ли оно для сдвигов?
    Ну конечно, ты «печатаешь» за кадром новые тайлы, а потом они спокойно выезжают.

    Очень подробная статья про эти самые скроллы.

    Другой вопрос, что мне как обычно хочется «странного»

    Я прошелся дебаггером в альтире (благо что там есть пошаговая возможность отображения луча экрана)
    И пришел к выводу, что на одной линии DLI не успевает и сменить разрешайку на 48 и поменять шрифт и поменять цвета. Только 2 из 3х

    И тут либо костылить и пропускать линию предыдущего блока, либо текущего, как вариант не трогать разрешайку и сразу всем врубить 48

    Короче надо думать

  2. #112
    Guru Аватар для Shiny
    Регистрация
    19.01.2017
    Адрес
    г. Арзамас
    Сообщений
    2,355
    Записей в дневнике
    42
    Спасибо Благодарностей отдано 
    7
    Спасибо Благодарностей получено 
    123
    Поблагодарили
    92 сообщений
    Mentioned
    7 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    А зачем тебе установка значений в DLI?

  3. #113
    Guru Аватар для breeze
    Регистрация
    11.02.2005
    Адрес
    【RB】
    Сообщений
    3,760
    Спасибо Благодарностей отдано 
    63
    Спасибо Благодарностей получено 
    67
    Поблагодарили
    45 сообщений
    Mentioned
    4 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Shiny Посмотреть сообщение
    А зачем тебе установка значений в DLI?
    Не понял вопроса

    Есть три области, в них разные графические режимы, цвета и размеры.
    По моему DLI как раз-таки и задумывался для переключения оных, или я чего-то не знаю?

  4. #114
    Guru Аватар для Shiny
    Регистрация
    19.01.2017
    Адрес
    г. Арзамас
    Сообщений
    2,355
    Записей в дневнике
    42
    Спасибо Благодарностей отдано 
    7
    Спасибо Благодарностей получено 
    123
    Поблагодарили
    92 сообщений
    Mentioned
    7 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от breeze Посмотреть сообщение
    Не понял вопроса

    Есть три области, в них разные графические режимы, цвета и размеры.
    По моему DLI как раз-таки и задумывался для переключения оных, или я чего-то не знаю?
    Почему 3?
    Я бы сделал две области - строка статуса со счетчиком игры и индикатором жизней и игровое поле с фоном - выходит джве, и параметры цвета и шрифта задаются для каждой зоны.
    Тогда в Display List:
    .byte $80 ; цвета и шрифт для статуса
    .byte $42
    .word status_text; это для данных
    .byte $80 ; второе прерывание задает параметры для игрового поля

    В прерывании удобнее сделать запись в $200/$201 адреса второго вектора, так меньше тактов.

    Со сдвигом фона можно использовать трюк наподобие того, что я применял в 16К WYSIWIC

    , но не буду отсылать к исходникам, а попробую описать:
    Строки Display List:
    .byte $52 ; $40+$10+2 lms+hscroll+mode_gr_0
    .word screena
    .byte $52
    .word screena+80
    .byte $52
    .word screena+120
    ...
    Данные фона генерируются и записываются столбцом по адресу screena+40,screena+120...
    Когда сдвиг завершен(значения меняются от 3 до 0, да?), данные копируются с адреса screena+40 в screena, из screena+120 в screena+80.
    Затем для строк увеличиваются адреса на 1: screena+1,screena+80+1.Если адрес первой строки достиг screena+40, то сброс на screena.

    Выглядит сложно, но получишь бесконечный сдвиг фона.

  5. Эти 2 пользователя(ей) поблагодарили Shiny за это полезное сообщение:

    andrews (02.11.2024), breeze (02.11.2024)

  6. #115
    Guru Аватар для breeze
    Регистрация
    11.02.2005
    Адрес
    【RB】
    Сообщений
    3,760
    Спасибо Благодарностей отдано 
    63
    Спасибо Благодарностей получено 
    67
    Поблагодарили
    45 сообщений
    Mentioned
    4 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Shiny Посмотреть сообщение
    Почему 3?
    Ну сути это не меняет, можно хоть 10. В моём случае три потому что я хотел сделать вверху логотип, потом игровую область (нет смысла её делать огромной), и внизу очки, жизни итд.

    Цитата Сообщение от Shiny Посмотреть сообщение
    В прерывании удобнее сделать запись в $200/$201 адреса второго вектора, так меньше тактов.
    Ну скорее всего ты прав, попробую такой вариант.

    Цитата Сообщение от Shiny Посмотреть сообщение
    Со сдвигом фона можно использовать трюк наподобие того, что я применял в 16К WYSIWIC
    До движений я так пока и не дошел. Но спасибо посмотрю.

    Цитата Сообщение от Shiny Посмотреть сообщение
    Строки Display List:
    .byte $52 ; $40+$10+2 lms+hscroll+mode_gr_0
    Надо более детально врубится в команды дисплей листа, ибо я только пока понял, что:
    $8x - вызвать DLI,
    $4x - новый адрес для карты тайлов (экрана)
    $Cx - совместить 8x и 4x (но оно тоже хер пойми как вызывается, толи адрес сначала меняется, толи сначала DLI влетает)

    младшие значение режим антика $x2 $x4 итд

    Сейчас вижу у тебя $10 как я понял это отсрочка или в конце строки DLI вызывать?

    Что такое $52?

  7. #116
    Guru Аватар для Shiny
    Регистрация
    19.01.2017
    Адрес
    г. Арзамас
    Сообщений
    2,355
    Записей в дневнике
    42
    Спасибо Благодарностей отдано 
    7
    Спасибо Благодарностей получено 
    123
    Поблагодарили
    92 сообщений
    Mentioned
    7 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от breeze Посмотреть сообщение
    $8x - вызвать DLI,
    $4x - новый адрес для карты тайлов (экрана)
    $Cx - совместить 8x и 4x (но оно тоже хер пойми как вызывается, толи адрес сначала меняется, толи сначала DLI влетает)

    младшие значение режим антика $x2 $x4 итд

    Сейчас вижу у тебя $10 как я понял это отсрочка или в конце строки DLI вызывать?

    Что такое $52?
    Старшие биты 7-4 это и есть комбинация возможных значений. В mapping указаны значения, но вертикальный и горизонтальный сдвиги перепутаны.
    $52 это комбинация флагов и режима: $40-команда LMS(нужно слово адреса в памяти), $10 - горизонтальный сдвиг, 2 - текстовый режим.

    Прерывание начнется раньше, я указал $80.

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

    breeze (02.11.2024)

  9. #117
    Guru Аватар для breeze
    Регистрация
    11.02.2005
    Адрес
    【RB】
    Сообщений
    3,760
    Спасибо Благодарностей отдано 
    63
    Спасибо Благодарностей получено 
    67
    Поблагодарили
    45 сообщений
    Mentioned
    4 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Ну нашел наконец-таки нормальное описание битов:

    7 6 5 4 3 2 1 0
    DLI LMS VSCROLL HSCROLL

    Mode

    The 4 flags are:

    DLI ($80): enable a display list interrupt when processing this instruction

    LMS ($40): trigger a Load Memory Scan, changing where ANTIC looks for screen data, and requires an additional 2 byte address immediately following this instruction byte.

    VSCROLL ($20): enable vertical scrolling for this mode line

    HSCROLL ($10): enable horizontal scrolling for this mode line
    - - - Добавлено - - -

    Цитата Сообщение от Shiny Посмотреть сообщение
    Старшие биты 7-4 это и есть комбинация возможных значений. В mapping указаны значения, но вертикальный и горизонтальный сдвиги перепутаны.
    $52 это комбинация флагов и режима: $40-команда LMS(нужно слово адреса в памяти), $10 - горизонтальный сдвиг, 2 - текстовый режим.

    Прерывание начнется раньше, я указал $80.
    Спасибо. Короче нужно ставить дебаг в альтирре и проходить потактово, что бы понять как это всё работает

  10. #118
    Guru Аватар для Shiny
    Регистрация
    19.01.2017
    Адрес
    г. Арзамас
    Сообщений
    2,355
    Записей в дневнике
    42
    Спасибо Благодарностей отдано 
    7
    Спасибо Благодарностей получено 
    123
    Поблагодарили
    92 сообщений
    Mentioned
    7 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от breeze Посмотреть сообщение
    Ну нашел наконец-таки нормальное описание битов:
    полистай DeReAtari.pdf, итак расписано.



    Цитата Сообщение от breeze Посмотреть сообщение
    Спасибо. Короче нужно ставить дебаг в альтирре и проходить потактово, что бы понять как это всё работает
    Шальная мысль: задать одно значение в ячейке 559(48 символов) и работать с памятью с учетом смещений. Но печать пойдет наискосок - если я правильно понял исходники OS, то процедура жестко пришита к стандартным видеорежимам, без учета размеров в 559:
    https://atariwiki.org/wiki/Wiki.jsp?...urce%20Listing
    процедура INCRSB



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


    Обычный режим с poke 559,35 и poke 82,0

  11. #119
    Guru Аватар для breeze
    Регистрация
    11.02.2005
    Адрес
    【RB】
    Сообщений
    3,760
    Спасибо Благодарностей отдано 
    63
    Спасибо Благодарностей получено 
    67
    Поблагодарили
    45 сообщений
    Mentioned
    4 Post(s)
    Tagged
    0 Thread(s)

    Exclamation

    С помощью воззвания у чьей-то *** и врубления wide для всех сразу таки удалось получить что-то похожее на правду, вопрос теперь только в том, почему смещение у блока посредине не цикличное, а на пару байт всего?

    Я на каждом вызове VBI инкременчу позицию

    Код:
                    inc     scrollPos
                    lda     scrollPos
                    sta     $D404                   // HSCROLL
    и получается вот это:


  12. #120
    Guru Аватар для Lethargeek
    Регистрация
    08.09.2005
    Адрес
    Воронеж
    Сообщений
    4,749
    Записей в дневнике
    3
    Спасибо Благодарностей отдано 
    295
    Спасибо Благодарностей получено 
    273
    Поблагодарили
    215 сообщений
    Mentioned
    11 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от breeze Посмотреть сообщение
    С помощью воззвания у чьей-то *** и врубления wide для всех сразу таки удалось получить что-то похожее на правду, вопрос теперь только в том, почему смещение у блока посредине не цикличное, а на пару байт всего?

    Я на каждом вызове VBI инкременчу позицию
    так регистр четырёхбитный, так и должно быть
    https://atariwiki.org/wiki/Wiki.jsp?page=HSCROL
    Прихожу без разрешения, сею смерть и разрушение...

Страница 12 из 14 ПерваяПервая ... 891011121314 ПоследняяПоследняя

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

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

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

Похожие темы

  1. Ответов: 11
    Последнее: 08.12.2023, 17:18
  2. Bad Apple для MSX/MSX2
    от Pyhesty в разделе MSX
    Ответов: 4
    Последнее: 31.05.2021, 21:45
  3. Перенос игр с Game Boy на ZX Spectrum
    от CityAceE в разделе Программирование
    Ответов: 104
    Последнее: 14.02.2019, 10:56
  4. Game Boy Advance
    от megabyte в разделе Nintendo
    Ответов: 8
    Последнее: 22.05.2006, 14:48
  5. Game Boy Advance в Питере.
    от Surfin_Bird в разделе Nintendo
    Ответов: 10
    Последнее: 21.08.2005, 09:50

Ваши права

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