User Tag List

Страница 1 из 2 12 ПоследняяПоследняя
Показано с 1 по 10 из 101

Тема: Новый формат графического изображения для ZX совместимых компьютеров.

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

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

    Регистрация
    09.04.2009
    Адрес
    Зеленоград
    Сообщений
    449
    Спасибо Благодарностей отдано 
    132
    Спасибо Благодарностей получено 
    429
    Поблагодарили
    196 сообщений
    Mentioned
    39 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Переделал программы в первом посте для работы с командной строки.
    При написании видеоконтроллера оказалось, что на частоте работы 25 МГц
    ему не хватает производительности. Решил переделать атрибуты с одним
    байтом на INK и одним на PAPER. В этом случае как растр так и атрибуты
    занимают по 0x1800 байтов. Общий размер - 0x3000. Поэтому поместил
    в файле SCN атрибуты после растра, чтобы изображение умещалось
    в одну страницу 16 кБ. Сделал проект на плате Марсоход3.
    Архитектура - как у Spectrum128, только вместо BASIC128 пока написал
    простенький монитор. Память ROM (монитор 16 кБ), BASIC48 (16 кБ),
    VRAM (две страницы по 16 кБ) и быстрая нижняя память RAM
    (две страницы по 16 кБ) занимают внутреннюю память FPGA.
    Остальные 28 страниц RAM по 16 кБ находятся во внешней SDRAM.
    видеоконтроллер работает в 2-х режимах: стандартном и расширенном.
    Пока не могу проверить BASIC48, так как не знаю что нужно сделать
    в мониторе для его запуска. Значение 0x33 в порт #7FFD записываю.
    А что нужно еще - не знаю. В интернете не нашел.
    Может кто знает как из BASIC128 попасть в BASIC48?

    Программы для Windows (Visual Studio) с преобразованиями
    из BMP24 в SCN8 и обратно:
    scn82bmp_20170223.zip
    bmp2scn8_20170223.zip
    Картинки:
    Нажмите на изображение для увеличения. 

Название:	MENU.jpg 
Просмотров:	302 
Размер:	63.7 Кб 
ID:	59846
    Нажмите на изображение для увеличения. 

Название:	PARROT24.jpg 
Просмотров:	347 
Размер:	64.2 Кб 
ID:	59847

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

  3. #2

    Регистрация
    15.02.2015
    Адрес
    г. Могилёв, Беларусь
    Сообщений
    931
    Спасибо Благодарностей отдано 
    15
    Спасибо Благодарностей получено 
    119
    Поблагодарили
    73 сообщений
    Mentioned
    3 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Ynicky, может, лучше атрибуты не 4 на 4, а 8 на 2( в тандартном знакоместе получается тоже 4 атрибута как и при атрибуте 4 на 4) ?
    Последний раз редактировалось Smalovsky; 23.02.2017 в 22:11.
    ¡Un momento, señor fiscal!


  4. #3

    Регистрация
    09.04.2009
    Адрес
    Зеленоград
    Сообщений
    449
    Спасибо Благодарностей отдано 
    132
    Спасибо Благодарностей получено 
    429
    Поблагодарили
    196 сообщений
    Mentioned
    39 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Smalovsky Посмотреть сообщение
    может, лучше атрибуты не 4 на 4, а 8 на 2
    Мне кажется, качество по горизонтали будет плохое, а по вертикали хорошее.
    И конфликт атрибутов по горизонтали останется прежним.
    Хороший вариант получается если в растре использовать два бита на пиксель.
    При этом в стандартном знакоместе (8х8) будет не 2 атрибута (INK и PAPER), а четыре.
    При байтовом размере атрибутов изображение не будет превышать 16 кБ.
    И конфликта атрибутов не будет, если следовать следующим правилам:
    - 1 атрибут на фон и 3 атрибута на спрайт;
    - 2 атрибута на фон и 2 атрибута на спрайт;
    - 3 атрибута на фон и 1 атрибут на спрайт;

  5. #4

    Регистрация
    15.02.2015
    Адрес
    г. Могилёв, Беларусь
    Сообщений
    931
    Спасибо Благодарностей отдано 
    15
    Спасибо Благодарностей получено 
    119
    Поблагодарили
    73 сообщений
    Mentioned
    3 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Ynicky, при двух битах на пиксель старые методы кодирования графики не подойдут. Количество байтов под атрибуты 768х4х2=6144 при байт на инк и байт на папер. Растр 6144х2=12288 байт.
    Если делать атрибут 8 на 2, то будет подобие аппаратного мультиколора с расширенными атрибутами. Но есть плюс - есть наработки для мультиколора в движке нирвана с размером чанка 8 на 2( биколор). Там режим программный, а при аппаратном ускорении высвободится больше быстродействия. Вот ссылка про движок
    http://zx-pk.ru/threads/22175-novyj-...k-nirvana.html
    спрайты в мультиколоре 8 на 2.

    Наработки программные с нуля не надо писать будет.
    Последний раз редактировалось Smalovsky; 24.02.2017 в 13:27.
    ¡Un momento, señor fiscal!


  6. #5

    Регистрация
    08.09.2005
    Адрес
    Воронеж
    Сообщений
    4,966
    Записей в дневнике
    3
    Спасибо Благодарностей отдано 
    319
    Спасибо Благодарностей получено 
    314
    Поблагодарили
    237 сообщений
    Mentioned
    11 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Smalovsky Посмотреть сообщение
    Если делать атрибут 8 на 2, то будет подобие аппаратного мультиколора с расширенными атрибутами.
    а если делать атрибут 1 на 1, то получится подобие целого вороха режимов, в том числе пока еще не придуманных
    Прихожу без разрешения, сею смерть и разрушение...

  7. #6

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

    По умолчанию

    Цитата Сообщение от Ynicky Посмотреть сообщение
    Значение 0x33 в порт #7FFD записываю.
    А что нужно еще - не знаю. В интернете не нашел.
    Может кто знает как из BASIC128 попасть в BASIC48?
    Если насовсем, то out (#7ffd),#20. Если на чуть-чуть, то out (#7ffd),#10 - туда, out (#7ffd),#00 - обратно

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

    Цитата Сообщение от Ynicky Посмотреть сообщение
    Пока не могу проверить BASIC48, так как не знаю что нужно сделать
    в мониторе для его запуска.
    Запоздалая мысль. out (#7ffd),#33 включит BASIC48 (и страницу 4 в #c000, не знаю зачем тебе это), но сброс не сделает, продолжит исполнение в другой ROM со следующего после out адреса. А что там в ROM1? Если хочешь сброс, делай out либо в RAM, либо в том адресе ROM0, после которого ROM1 уйдет на сброс (например, затолкай в стек #0000 и переключись там, где в ROM1 по следующему адресу будет ret). Переключение в RAM надежнее.
    ZX Evolution Rev C + ZXM-SoundCard Extreme + NeoGS.

  8. #7

    Регистрация
    09.04.2009
    Адрес
    Зеленоград
    Сообщений
    449
    Спасибо Благодарностей отдано 
    132
    Спасибо Благодарностей получено 
    429
    Поблагодарили
    196 сообщений
    Mentioned
    39 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Alex Rider, спасибо за подсказку.
    Сделал так:
    0048 BASIC48
    0048 31 00 3D ld SP,#3d00
    004B 3E 33 ld a,#33
    004D 01 FD 7F ld bc,#7ffd;
    0050 ED 79 out (c),a
    0052 C9 ret

    Так как команда ret имеет еще 2 чтения адреса, то записывать в стек #0000 нельзя.
    ПЗУ уже переключилось на BASIC48, а там по начальным адресам не нули.
    Нашел в BASIC48 место с нулями - #3d00, и записал это в стек.
    После этого сработало как надо.

  9. #8

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

    По умолчанию

    Цитата Сообщение от Ynicky Посмотреть сообщение
    Так как команда ret имеет еще 2 чтения адреса, то записывать в стек #0000 нельзя.
    ПЗУ уже переключилось на BASIC48, а там по начальным адресам не нули.
    Нашел в BASIC48 место с нулями - #3d00, и записал это в стек.
    После этого сработало как надо.
    Ага, точно. Важно еще, что в ROM1 по адресу 0052 тоже ret. Собственно, в твоем мониторе ret по 0052 не сказать, чтобы нужен, но и не возбраняется. Если надо сэкономить, можно попробовать так (пишу без отладки, из головы):
    Код:
      org #0273
      ld a,#30
      ld bc,#7ffd
      out (c),a
      rst #0
    По адресу #027a лежит #c7 = rst #0, что тоже сброс. Но да, #c7 встречается нечасто, поэтому куда угодно этот кусок не засунешь.
    Цитата Сообщение от Ynicky Посмотреть сообщение
    004B 3E 33 ld a,#33
    А зачем #33? При переходе в ROM1 с #c000 включится страница 3 - это так специально надо?
    ZX Evolution Rev C + ZXM-SoundCard Extreme + NeoGS.

  10. #9

    Регистрация
    09.04.2009
    Адрес
    Зеленоград
    Сообщений
    449
    Спасибо Благодарностей отдано 
    132
    Спасибо Благодарностей получено 
    429
    Поблагодарили
    196 сообщений
    Mentioned
    39 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Alex Rider Посмотреть сообщение
    А зачем #33? При переходе в ROM1 с #c000 включится страница 3 - это так специально надо?
    Я думал, что в Spectrum-е 48K используется 1, 2 и 3-я страницы. А так как у меня 3-я страница находится в быстром внутреннем ОЗУ FPGA, то я ее и подключил. Хотя программе все равно 0-я или 3-я страницы. Во внутренней памяти у меня находятся 2, 3, 5, и 7-я страницы.

    P.S. Забыл еще сказать. Процессор у меня стоит nextZ80, работающий на частоте 40 МГц с каждым вторым wait стейтом при работе с внутренними ROM и RAM. При работе с внешней SDRAM wait останавливает процессор на 10 тактов из 11. При переходе на BASIC48 - тоже на 10 из 11 с внутренней памятью (3,64 МГц).
    Последний раз редактировалось Ynicky; 26.02.2017 в 09:05.

  11. #10

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

    По умолчанию

    Цитата Сообщение от Ynicky Посмотреть сообщение
    Я думал, что в Spectrum-е 48K используется 1, 2 и 3-я страницы.
    Нет, в 48К (точнее, после установки 5 бита #7ffd) все равно какая страница включена, но единственная - #7ffd после этого блокируется, и до аппаратного сброса страницу поменять не получится. Оригинальный BASIC48 ничего про страницы не знает, какую впечатали, той и пользуется.
    ZX Evolution Rev C + ZXM-SoundCard Extreme + NeoGS.

Страница 1 из 2 12 ПоследняяПоследняя

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

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

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

Похожие темы

  1. Новый, более эффективный кассетный формат
    от Barmaley_m в разделе Программирование
    Ответов: 312
    Последнее: 11.08.2018, 18:21
  2. Ответов: 22
    Последнее: 23.04.2012, 15:34
  3. Продаж картриджи для Денди и совместимых
    от djvini в разделе Барахолка (архив)
    Ответов: 27
    Последнее: 05.04.2012, 23:20
  4. Ответов: 2
    Последнее: 26.02.2005, 18:17

Ваши права

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