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

User Tag List

Страница 1 из 6 12345 ... ПоследняяПоследняя
Показано с 1 по 10 из 57

Тема: Программирование графики MSX

  1. #1
    Administrator Аватар для CityAceE
    Регистрация
    13.01.2005
    Адрес
    г. Москва
    Сообщений
    4,567
    Записей в дневнике
    7
    Спасибо Благодарностей отдано 
    395
    Спасибо Благодарностей получено 
    1,205
    Поблагодарили
    393 сообщений
    Mentioned
    48 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию Программирование графики MSX

    Сходу не смог найти. Почитатели MSX помогайте! Дайте, пожалуйста, ссылку на документ, где описано как программировать графику MSX-1, то есть ту, которая ближе всего к графике Спектрума. Грубо говоря, вот я хочу написать простую программку, которая выведет на экран MSX картинку в стандартном спектрумовском формате, то есть файл длиной 6912 байт. Мне нужно описание того, что я должен делать на MSX, чтобы добиться этой цели.

    P.S. У меня вообще любое знакомство с платформой или каким-то фреймворком начинается с того, что я пишу программу, которая выводит заставку Exolon'а, нарисованную Мацеем Ставицки.
    С уважением, Станислав.

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

  3. #2
    Master
    Регистрация
    03.07.2021
    Адрес
    г. Кировск
    Сообщений
    905
    Спасибо Благодарностей отдано 
    75
    Спасибо Благодарностей получено 
    205
    Поблагодарили
    153 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Возможно, что-то найдется ниже по ссылке в разделе доков, да и вообще там много всячины

    http://www.msxarchive.nl/pub/msx/

  4. #3
    Member
    Регистрация
    29.01.2019
    Адрес
    г. Владивосток
    Сообщений
    85
    Спасибо Благодарностей отдано 
    3
    Спасибо Благодарностей получено 
    21
    Поблагодарили
    9 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    На MSX ближе всего к спековскому режиму:
    Screen2 (G1)(256x192, тайлмод 32х24 тайла, 2 цвета на тайл, 1 набор из 256 тайлов на весь экран, спрайтмод1 - 4 спрайта в строке, одноцвет, graphic1)
    или Screen4 (G2,G3)(256х192, тайлмод 32х24, 2 цвета на строку тайла, 1 набор из 256 тайлов на каждую треть экрана, спрайтмод2 - 8 спрайтов в строке, многоцветные спрайты с операциями сложения цветов). graphic2 & graphic3)

    Задача выглядит как инициализация видеопроцессора с загрузкой даты в нужные таблицы:
    1. Установка видеорежима (запись указанных в таблице режима бит в регистры R0 и R1)
    2. Установка адреса таблицы имен (регистр R2)
    3. Установка адреса таблицы цветогенератора (регистры R3 и R10)
    4. Установка адреса таблицы знакогенератора (регистр R4)
    5. Загрузка данных по адресам:
    5.1 Установка старших бит адреса в R14
    5.2 Установка младших бит адреса, записью в порт #1 (0x99)
    5.3 Установка оставшихся бит адреса и направления операции обмена данными, записью в порт #1 (0x99)
    После установки адреса, запись производится отправкой данных в порт #0 (0x98), после записи байта, адрес инкрементируется автоматически.
    Доступ к VRAM

    Yamaha v9938 русская редакция с исправлениями и дополнениями (в разработке)
    V9938-programmers-guide.pdf

    PS: все выше относится к MSX2. В MSX1 памяти меньше, установка адреса происходит проще, старшие регистры адреса не используются, режимы совпадают, кроме наличия спрайтмода2.
    TMS9918A_TMS9928A_TMS9929A_Video_Display_Processor s_Data_Manual_Nov82.pdf
    Последний раз редактировалось Dolphin101546015; 23.10.2021 в 00:37. Причина: Обновление ссылок
    Yamaha YIS-503-IIIR КУВТ2 (MSX2 + MSX2+ / X-Basic 2.1 MOD)
    MSX-Basic, z80 Assembler, C/C++ samples on YouTube, created by Dolphin_Soft

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

    CityAceE (23.10.2021), GreyWolf (23.10.2021), Oleg N. Cher (23.10.2021), vwarlock (25.10.2021), Wierzbowsky (23.10.2021)

  6. #4
    Administrator Аватар для CityAceE
    Регистрация
    13.01.2005
    Адрес
    г. Москва
    Сообщений
    4,567
    Записей в дневнике
    7
    Спасибо Благодарностей отдано 
    395
    Спасибо Благодарностей получено 
    1,205
    Поблагодарили
    393 сообщений
    Mentioned
    48 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Dolphin101546015, спасибо за исчерпывающий ответ со ссылками. Сходу всё сложно и ничего не понятно Но буду разбираться!

    Пока мест по сведениям из этого сообщение вообще непонятно как можно заполнить экран разнородной графикой (768 тайлов 8х8) имея ограничения только в 256 тайлов. Или это нужно делать за три захода? Но судя по всему, так тоже нельзя. Как же тогда получаются полноэкранные заставки? А как можно получить векторную графику, типа как в Elite?
    С уважением, Станислав.

  7. #5
    Guru
    Регистрация
    07.08.2008
    Адрес
    г. Уфа
    Сообщений
    7,842
    Спасибо Благодарностей отдано 
    654
    Спасибо Благодарностей получено 
    1,814
    Поблагодарили
    1,043 сообщений
    Mentioned
    22 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от CityAceE Посмотреть сообщение
    как можно заполнить экран разнородной графикой (768 тайлов 8х8) имея ограничения только в 256 тайлов
    В scr2 3*256=768 тайлов, каждую точку можно задать индивидуально (и векторную графику нарисовать).
    Возможно сразу с портов сложно начинать, в качестве первого шага можно попробовать из бейсика. Второй промежуточный шаг - воспользоваться процедурами msx bios.

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

    CityAceE (23.10.2021)

  9. #6
    Guru
    Регистрация
    27.02.2005
    Адрес
    москва
    Сообщений
    13,767
    Записей в дневнике
    1
    Спасибо Благодарностей отдано 
    142
    Спасибо Благодарностей получено 
    1,173
    Поблагодарили
    770 сообщений
    Mentioned
    18 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    вот пример вывода ZXкартинки с #8000
    Код:
    	PUSH HL
    	PUSH DE
    	PUSH BC
    	PUSH AF
    	EXX
    	PUSH HL
    	PUSH DE
    	PUSH BC
    	PUSH AF
    	LD   HL,#8000
    	LD   C,#20
    	LD   B,#18
    	CALL #A075
    	POP  AF
    	POP  BC
    	POP  DE
    	POP  HL
    	EXX
    	POP  AF
    	POP  BC
    	POP  DE
    	POP  HL
    	RET
    Код:
    #A075	PUSH HL
    	RES  7,H
    	LD   A,L
    	SRL  A
    	SRL  A
    	SRL  A
    	SRL  A
    	SRL  A
    	OR   H
    	LD   (#A12B),HL
    	POP  HL
    	OR   #40
    	LD   D,A
    	LD   A,L
    	AND  #1F
    	SLA  A
    	SLA  A
    	SLA  A
    	PUSH HL
    	PUSH BC
    	LD   E,A
    	PUSH DE
    LA098:	DI
    	OUT  (#99),A
    	LD   A,D
    	OUT  (#99),A
    	EI
    	PUSH BC
    	PUSH DE
    	PUSH HL
    LA0A2:	PUSH HL
    	LD   E,#08
    LA0A5:	LD   A,(HL)
    	OUT  (#98),A
    	INC  H
    	DEC  E
    	JR   NZ,LA0A5
    	POP  HL
    	INC  L
    	DEC  C
    	JR   NZ,LA0A2
    	POP  HL
    	LD   A,L
    	CP   #E0
    	JR   NC,LA0BD
    	LD   DE,#0020
    	ADD  HL,DE
    	JR   LA0C5
    LA0BD:	LD   A,H
    	ADD  A,#08
    	LD   H,A
    	LD   A,L
    	AND  #1F
    	LD   L,A
    LA0C5:	POP  DE
    	POP  BC
    	INC  D
    	LD   A,E
    	DEC  B
    	JR   NZ,LA098
    	POP  DE
    	POP  BC
    	POP  HL
    	LD   A,D
    	OR   #20
    	LD   D,A
    	PUSH BC
    	PUSH DE
    	LD   B,#00
    	LD   A,(#A12B)
    	LD   C,A
    	LD   A,(#A12C)
    	LD   L,A
    	LD   H,#00
    	ADD  HL,HL
    	ADD  HL,HL
    	ADD  HL,HL
    	ADD  HL,HL
    	ADD  HL,HL
    	ADD  HL,BC
    	LD   A,H
    	OR   #98
    	LD   H,A
    	POP  DE
    	POP  BC
    LA0ED:	PUSH BC
    	PUSH HL
    	LD   A,E
    	DI
    	OUT  (#99),A
    	LD   A,D
    	OUT  (#99),A
    	EI
    LA0F7:	LD   A,(HL)
    	PUSH AF
    	AND  #07
    	EXX
    	LD   L,A
    	LD   H,#00
    	LD   DE,#A12D
    	ADD  HL,DE
    	LD   C,(HL)
    	POP  AF
    	RRCA
    	RRCA
    	RRCA
    	AND  #07
    	LD   L,A
    	LD   H,#00
    	LD   DE,#A135
    	ADD  HL,DE
    	LD   A,(HL)
    	OR   C
    	LD   B,#08
    LA115:	OUT  (#98),A
    	NOP
    	NOP
    	DJNZ LA115
    	EXX
    	INC  HL
    	DEC  C
    	JR   NZ,LA0F7
    	POP  HL
    	LD   BC,#0020
    	ADD  HL,BC
    	POP  BC
    	INC  D
    	DEC  B
    	JR   NZ,LA0ED
    	RET

  10. #7
    Guru
    Регистрация
    07.08.2008
    Адрес
    г. Уфа
    Сообщений
    7,842
    Спасибо Благодарностей отдано 
    654
    Спасибо Благодарностей получено 
    1,814
    Поблагодарили
    1,043 сообщений
    Mentioned
    22 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Стоит отметить, что эта процедура предполагает, что scr 2 заранее включен и в видеопамяти все настроено. Ну и в конце не хватает двух таблиц преобразования атрибутов.

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

    И яркость здесь не обрабатывается.

  11. #8
    Guru
    Регистрация
    27.02.2005
    Адрес
    москва
    Сообщений
    13,767
    Записей в дневнике
    1
    Спасибо Благодарностей отдано 
    142
    Спасибо Благодарностей получено 
    1,173
    Поблагодарили
    770 сообщений
    Mentioned
    18 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    это я на скорую руку дёрнул кусок из игры.
    CityAceE, как вариант посмотри (что-то небольшое) из того что есть на ZX и проведи параллель.
    например Eric & Floaters / BomberMan

  12. #9
    Activist
    Регистрация
    05.05.2019
    Адрес
    г. Йошкар-Ола
    Сообщений
    220
    Спасибо Благодарностей отдано 
    369
    Спасибо Благодарностей получено 
    80
    Поблагодарили
    41 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Работающие примеры для MSX с писанием будут опубликованы.

  13. #10
    Member
    Регистрация
    29.01.2019
    Адрес
    г. Владивосток
    Сообщений
    85
    Спасибо Благодарностей отдано 
    3
    Спасибо Благодарностей получено 
    21
    Поблагодарили
    9 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от CityAceE Посмотреть сообщение
    Или это нужно делать за три захода? Но судя по всему, так тоже нельзя. Как же тогда получаются полноэкранные заставки? А как можно получить векторную графику, типа как в Elite?
    В три захода делать не нужно, таблицы патернов идут подряд друг за другом (3 раза по 2048 байт), таблицы цветности так же идут подряд.
    А таблица имен одна на экран, просто для каждой трети экрана выбираются свои тайлы из соответствующей трети таблиц.
    Например если заполнишь три раза подряд таблицу имен от 0 до 255 (каждую треть по восемь строк), то коды тайлов повторяются, а тайлы на экране будут различаться. И все тайлы на экране будут выглядеть уникальными.
    Чтобы нарисовать вектор, тебе нужно вычислить в каких тайлах его нужно рисовать, а потом у этих тайлов обновлять битовую маску для соответствующих точек вектора.
    Чтобы было проще, начни с режима GR1, там всего 256 уникальных тайлов на экран, и проще понять будет с выводом. Потом перейдешь к G2.
    Только ты должен понимать, что памяти он потребует больше 256*8*3, для патернов, 256*8*3 для таблицы цветности и 768 на экран.
    Yamaha YIS-503-IIIR КУВТ2 (MSX2 + MSX2+ / X-Basic 2.1 MOD)
    MSX-Basic, z80 Assembler, C/C++ samples on YouTube, created by Dolphin_Soft

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

    GreyWolf (23.10.2021)

Страница 1 из 6 12345 ... ПоследняяПоследняя

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

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

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

Похожие темы

  1. Next Generation MSX and IoT MSX
    от caro в разделе MSX
    Ответов: 2
    Последнее: 24.08.2018, 16:03
  2. Ответов: 30
    Последнее: 28.11.2017, 02:51
  3. Ответов: 0
    Последнее: 24.04.2017, 16:24
  4. Ответов: 12
    Последнее: 24.06.2009, 12:33
  5. Ответов: 0
    Последнее: 08.05.2006, 13:56

Ваши права

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