Материал из Chipwiki
Перейти к: навигация, поиск
Master System/Pixel Art — различия между версиями
 
(не показано 14 промежуточных версий этого же участника)
Строка 1: Строка 1:
 +
<div style="float:right;">__TOC__</div>
 
{{Основная статья|Sega Master System|Текст=Информация о Master System}}
 
{{Основная статья|Sega Master System|Текст=Информация о Master System}}
{{Основная статья|Портал:Графика|Текст=Портал:Графика}}
+
{{Основная статья|Pixel Art|Текст=Портал:Pixel Art}}
  
Разрешение: 256х192, 256х224 или {{Подсказка|256х240|не работает при NTSC}} в зависимости от настроек
+
Разрешение: 256х192, 256х224 или {{Подсказка|256х240|только для PAL}} в зависимости от настроек
  
 
Палитра:<br/>
 
Палитра:<br/>
[[Файл:SMS palitra.png]]<br/>
+
[[Файл:R2-G2-B2.png]]<br/>
  
 
Графическая система тайловая, т.е. данные изображения хранятся в виде плиток 8х8. В видеопамяти может храниться 488 плиток. На фон можно использовать все 488 плиток. Плитки фона можно отзеркаливать.
 
Графическая система тайловая, т.е. данные изображения хранятся в виде плиток 8х8. В видеопамяти может храниться 488 плиток. На фон можно использовать все 488 плиток. Плитки фона можно отзеркаливать.
Строка 15: Строка 16:
 
==Обход ограничений==
 
==Обход ограничений==
 
* Используя прерывания, возможно менять палитру каждые две строки
 
* Используя прерывания, возможно менять палитру каждые две строки
* Переключение графических банков в нужный момент отрисовки изображения позволяет задействовать уникальные тайлы на всей площади картины, однако возможное количество одновременных цветов будет уменьшено
+
* Переключение графических банков в нужный момент отрисовки изображения позволяет задействовать уникальные тайлы на всей площади картины, однако возможное количество одновременных цветов будет уменьшено.
 +
* Быстрое переключение двух изображений для визуального увеличения количества цветов (гигаскрин) возможно, но тайлы двух изображений должны делить один банк памяти из-за медленного VDP консоли.
  
 
==Примеры работ==
 
==Примеры работ==
Строка 21: Строка 23:
 
File:Back to the Arcade by illm.png
 
File:Back to the Arcade by illm.png
 
File:Bustin makes me feel good by Bob.png
 
File:Bustin makes me feel good by Bob.png
 +
File:a~y by pixelrat.png
 
</gallery>
 
</gallery>
  
 
==Инструкции и исходники==
 
==Инструкции и исходники==
 
<spoiler text="Простая картинка">
 
<spoiler text="Простая картинка">
Скачиваем [[Файл:SMS-withoutsprites.zip|этот]] архив со всем необходимым.
+
Скачиваем [[:Файл:SMS-withoutsprites.zip|этот]] архив со всем необходимым.
  
 
Нажатие на "Convertimage&Compile.bat" сконвертирует и скомпилирует файл картинки.
 
Нажатие на "Convertimage&Compile.bat" сконвертирует и скомпилирует файл картинки.
  
 
Файл картинки должен иметь разрешение {{Подсказка|256х192|Можно и 256х240, но отображаться будет только верхняя часть}} и цветовую глубину 16 цветов.
 
Файл картинки должен иметь разрешение {{Подсказка|256х192|Можно и 256х240, но отображаться будет только верхняя часть}} и цветовую глубину 16 цветов.
 +
 +
Можно нарисовать изображение разрешением 256х224, тогда для этого в файле "source.asm" потребуется найти строчку:
 +
<pre>printBackgroundTiles:
 +
    ld hl, $3800
 +
    call prepareVram
 +
    ld hl,backgroundTilemap
 +
    ld bc,backgroundTilemapEnd-backgroundTilemap
 +
    call writeToVram
 +
</pre>
 +
и поменять 3800 на 3700.
 +
 +
Далее нужно найти
 +
<pre>turnOnScreen:
 +
    ld a,%11000000
 +
;          |||| |`- Zoomed sprites -> 16x16 pixels
 +
;          |||| `-- Doubled sprites -> 2 tiles per sprite, 8x16
 +
;          |||`---- 30 row/240 line mode
 +
;          ||`----- 28 row/224 line mode
 +
;          |`------ VBlank interrupts
 +
;          `------- Enable display
 +
</pre>
 +
и поменять 11000000 на 11010000.
 
</spoiler>
 
</spoiler>
 
<spoiler text="Простая картинка со спрайтами">
 
<spoiler text="Простая картинка со спрайтами">
Скачиваем [[Файл:SMS-withsprites.zip|этот]] архив со всем необходимым.
+
Скачиваем [[:Файл:SMS-withsprites.zip|этот]] архив со всем необходимым.
  
 
"ConvertBackground.bat" сконвертирует файл "image.bmp" в данные фона.<br/>
 
"ConvertBackground.bat" сконвертирует файл "image.bmp" в данные фона.<br/>
Строка 39: Строка 64:
  
 
Файлы фона и спрайтов должны иметь цветовую глубину 16 цветов. Файл фона должен иметь разрешение {{Подсказка|256х192|Можно и 256х240, но отображаться будет только верхняя часть}}.
 
Файлы фона и спрайтов должны иметь цветовую глубину 16 цветов. Файл фона должен иметь разрешение {{Подсказка|256х192|Можно и 256х240, но отображаться будет только верхняя часть}}.
 +
 +
Можно нарисовать изображение разрешением 256х224, тогда для этого в файле "source.asm" потребуется найти строчку:
 +
<pre>printBackgroundTiles:
 +
    ld hl, $3800
 +
    call prepareVram
 +
    ld hl,backgroundTilemap
 +
    ld bc,backgroundTilemapEnd-backgroundTilemap
 +
    call writeToVram
 +
</pre>
 +
и поменять 3800 на 3700.
 +
 +
Далее нужно найти
 +
<pre>turnOnScreen:
 +
    ld a,%11000000
 +
;          |||| |`- Zoomed sprites -> 16x16 pixels
 +
;          |||| `-- Doubled sprites -> 2 tiles per sprite, 8x16
 +
;          |||`---- 30 row/240 line mode
 +
;          ||`----- 28 row/224 line mode
 +
;          |`------ VBlank interrupts
 +
;          `------- Enable display
 +
</pre>
 +
и поменять 11000000 на 11010000.
  
 
Расположение спрайтов на экране осуществляется путём редактирования файла "source.asm" на этих строчках:
 
Расположение спрайтов на экране осуществляется путём редактирования файла "source.asm" на этих строчках:
Строка 57: Строка 104:
 
Если изображение занимает более 256 плиток, то запустив скомпилированный ром, мы увидим, что вместо некоторых фоновых плиток находятся спрайтовые. Чтобы это исправить, нам нужно записать плитки спрайтов по другому адресу.
 
Если изображение занимает более 256 плиток, то запустив скомпилированный ром, мы увидим, что вместо некоторых фоновых плиток находятся спрайтовые. Чтобы это исправить, нам нужно записать плитки спрайтов по другому адресу.
  
Открываем скомпилированный ром в [http://www.smspower.org/meka/ эмуляторе Meka] и смотрим тайловые карту и набор.
+
Открываем скомпилированный ром в [https://github.com/ocornut/meka/releases эмуляторе Meka] и смотрим тайловые карту и набор.
  
 
[[File:SMS-spritemanual4.png|600px]]
 
[[File:SMS-spritemanual4.png|600px]]
Строка 67: Строка 114:
 
Отсчёт спрайтовых тайлов в любом случае начинается с 256-го, поэтому в соответствующую строчку нужно внести соответствующее изменение. В случае примера тайлы спрайтов будут иметь номера 37 и 38.
 
Отсчёт спрайтовых тайлов в любом случае начинается с 256-го, поэтому в соответствующую строчку нужно внести соответствующее изменение. В случае примера тайлы спрайтов будут иметь номера 37 и 38.
 
</spoiler>
 
</spoiler>
==Ссылки==
 
* http://www.smspower.org/
 
* http://logbook.farpoint.space/sms/
 
 
 
[[Категория:Графика]]
 
[[Категория:Графика]]

Текущая версия на 12:40, 25 февраля 2024

Разрешение: 256х192, 256х224 или 256х240 в зависимости от настроек

Палитра:
R2-G2-B2.png

Графическая система тайловая, т.е. данные изображения хранятся в виде плиток 8х8. В видеопамяти может храниться 488 плиток. На фон можно использовать все 488 плиток. Плитки фона можно отзеркаливать.

Платформа имеет аппаратные спрайты: 64 штуки размером 8х8 или 8х16, не более 8 спрайтов на строке. Спрайты могут браться из первых 256 тайлов или последующих.

Из палитры одновременно на экране может быть использовано 16 цветов для фона и 15 цветов (не считая прозрачного) для спрайтов. В каждом тайле можно использовать 16 цветов из набранной палитры.

Обход ограничений

  • Используя прерывания, возможно менять палитру каждые две строки
  • Переключение графических банков в нужный момент отрисовки изображения позволяет задействовать уникальные тайлы на всей площади картины, однако возможное количество одновременных цветов будет уменьшено.
  • Быстрое переключение двух изображений для визуального увеличения количества цветов (гигаскрин) возможно, но тайлы двух изображений должны делить один банк памяти из-за медленного VDP консоли.

Примеры работ

Инструкции и исходники

Простая картинка

Простая картинка со спрайтами