Увидел на форуме тему «Написания распаковщика графики для
Dendy (http://pscd.ru/forum/index.php?/topic/309-napisaniia-raspakovschika-grafiki-dlia-dendy/)». Эта тема натолкнула меня на мысль, а
какое устройство у несжатой графики в Hex-редакторе. Так сказать, каким образом она
хранится в роме игры. В этой теме я попробую это выяснить и заодно то, как она хранится на других приставках.
Как и в случае с моей статьёй «
Sega MegaDrive палитра (http://pscd.ru/forum/index.php?/topic/116-sega-megadrive-palitra/)» умных слов не будет, и я постараюсь максимально понятно объяснить
методы хранения несжатой графики.
Надеюсь, многим моя статья будет полезна и интересна.
1BPP (Метод хранение несжатой графики
1BPP) (http://pscd.ru/forum/index.php?/topic/316-khranenie-neszhatoi-grafiki-na-razlichnykh-igrovy/?p=3277)
GB/GBC (Метод хранение несжатой графики в играх для
GB/GBC (http://pscd.ru/forum/index.php?/topic/316-khranenie-neszhatoi-grafiki-na-razlichnykh-igrovy/?p=3274)) (http://pscd.ru/forum/index.php?/topic/316-khranenie-neszhatoi-grafiki-na-razlichnykh-igrovy/?p=3254)
GBA (Метод хранение несжатой графики в играх для
GBA) (http://pscd.ru/forum/index.php?/topic/316-khranenie-neszhatoi-grafiki-na-razlichnykh-igrovy/?p=3276)
SMS/GG (Метод хранение несжатой графики в играх для
SMS/GG) (http://pscd.ru/forum/index.php?/topic/316-khranenie-neszhatoi-grafiki-na-razlichnykh-igrovy/?p=3275)
SNES (Метод хранение несжатой графики в играх для
SNES) (http://pscd.ru/forum/index.php?/topic/316-khranenie-neszhatoi-grafiki-na-razlichnykh-igrovy/?p=3254)
Sega 32X (Метод хранение несжатой графики в играх для
Sega 32X) (http://pscd.ru/forum/index.php?/topic/316-khranenie-neszhatoi-grafiki-na-razlichnykh-igrovy/?p=3278)
8-bit (color indices) (A1B5G5R5) (http://pscd.ru/forum/index.php?/topic/316-khranenie-neszhatoi-grafiki-na-razlichnykh-igrovy/?p=3278)
PSX (TIM 4-bit (color indices)) (http://pscd.ru/forum/index.php?/topic/360-tim-faily--format-khraneniia-grafiki-psx/?p=3683)
PSX (TIM 8-bit (color indices)) (http://pscd.ru/forum/index.php?/topic/360-tim-faily--format-khraneniia-grafiki-psx/?p=3685)
PSX (TIM 16-bit (actual colors) [TBGR / A1B5G5R5] (http://pscd.ru/forum/index.php?/topic/360-tim-faily--format-khraneniia-grafiki-psx/?p=3647))
PSX (TIM 24-bit (actual colors) [RGB / R8G8B8]) (http://pscd.ru/forum/index.php?/topic/360-tim-faily--format-khraneniia-grafiki-psx/?p=3721)
Sega MegaDrive / Sega CD
Метод хранение несжатой графики в играх для SMD / SCD
Так же используется и в играх для Sega 32X.
(http://pscd.ru/forum/uploads/monthly_03_2015/post-95-0-78890000-1426600065.png)
Для простоты будем рассматривать
один тайл. Размер одного тайла
8 на 8 пикселей. То есть один тайл содержит в себе
64 пикселя. (
Тайл может содержать в себе 16 различных цветов (15+цвет фона))
(http://pscd.ru/forum/uploads/monthly_03_2015/post-95-0-03551100-1426600066.png)
Как на мой взгляд, у
SMD довольно простая система хранения графики. Но в связи с этим, графика занимает не мало места в роме.
Для хранения одного тайла нужно 32 байта.
(http://pscd.ru/forum/uploads/monthly_03_2015/post-95-0-28028300-1426600066.png)
В свою очередь
один пиксель занимает пол байта или
4 бита.
(http://pscd.ru/forum/uploads/monthly_03_2015/post-95-0-56320600-1426600065.png)
Как я писал раньше, тайл может содержать в себе
16 различных цветов. Каждый пиксель должен соответствовать какому-то цвету. Палитра тайлам присваивается позже, поэтому
каждый пиксель соответствует месту в палитре (
номеру цвета). От
0 до
F (в шестнадцатеричной системе счисления).
(http://pscd.ru/forum/uploads/monthly_03_2015/post-95-0-53889300-1426600066.png)
Пример для лучшего понимания.
(http://pscd.ru/forum/uploads/monthly_03_2015/post-95-0-30244600-1426600065.png)
Тут всё посложнее, чем в случае с SMD, но я постараюсь разъяснить. Nintendo Entertainment System
Метод хранение несжатой графики в играх для NES
(http://pscd.ru/forum/uploads/monthly_03_2015/post-95-0-78890000-1426600065.png)
Как и в прошлый раз, в качестве примера будет рассматривать один тайл. Один тайл состоит из
64 пикселей. (
Тайл содержит в себе всего 4 цвета, а фактически три (3+цвет фона)).
(http://pscd.ru/forum/uploads/monthly_03_2015/post-1-0-04730500-1426623064.png)
Для хранения одного тайла нужно
16 байт.
(http://pscd.ru/forum/uploads/monthly_03_2015/post-1-0-85180600-1426623063.png)
Один
пиксель занимает два (2) бита. При этом система хранения довольно интересная. Это связано с тем, что нам нужно хранить данные о четырёх цветах, а не о двух, иначе было бы намного проще.
Данный
тайла разделены на две области по
8 байт или
64 бита.
01111111, 11111111, 11111111, 11111111, 11111111, 11111111, 11111111, 11111111, 11111111,
01111111, 11111111, 11111111, 11111111, 11111111, 11111111, 11111111, 11111111, 11111111
Месту каждого пикселя соответствует его «порядковый номер» в битах. То есть первому пикселю соответствует первый бит первой и второй группы бит. Последнему пикселю соответствует последний (64) бит в обеих группах бит. Объяснить это сложно, лучше посмотреть на картинку, нагляднее намного понятнее.
(http://pscd.ru/forum/uploads/monthly_03_2015/post-1-0-59390000-1426623063.png)
10000000 00000000 00000000 000
10000 00000000 00000000 00000000 0000000
110000000 00000000 00000000 000
01000 00000000 00000000 00000000 0000000
1 Пиксели назначаются (обозначаются) следующим образом:
Первый цвет соответствует значению
0 0 (
Условно прозрачный)
Второй цвет соответствует значению
1 0Третья цвет соответствует значению
0 1Четвёртая цвет соответствует значению
1 1
Мне лично непонятно, зачем было выдумывать столь заумную систему хранения несжатой графики в
SNES, возможно сказывается наследие
NES. А может всё из-за архитектуры приставки. Ответ на этот вопрос оставим специалистам. Нас же интересует не почему, а как.
Объяснить метод хранения несжатой графики в
SNES играх будет сложно, но я всё же попробую сделать это максимально доходчиво.
Super Nintendo Entertainment System
Метод хранение несжатой графики в играх для SNES
Опять же, как и в предыдущих случаях с
SMD и
NES, мы будем рассматривать один тайл. Повторюсь, один
тайл состоит из 64 пикселей. (
Так же как и в SMD, тайл может содержать в себе до 16 цветов.)
(http://pscd.ru/forum/uploads/monthly_03_2015/post-95-0-66976000-1426682968.png)
Как и в случае с Sega MegaDrive
тайл занимает 32 байта. На этом, пожалуй, сходства с МегаДрайвом заканчиваются.
(http://pscd.ru/forum/uploads/monthly_03_2015/post-95-0-50093100-1426682968.png)
Условно эти
32 байта мы
делим на 8 частей. Каждая из частей, соответствует определенной строке в тайле (
строка состоит из 8 пикселей). Лучше посмотреть на картинку и попытаться визуально понять, чем я буду писать кучу текста и только больше вас запутывать им.
(http://pscd.ru/forum/uploads/monthly_03_2015/post-95-0-29902000-1426682968.png)
Дальше нам предстоит работать с битами.
(http://pscd.ru/forum/uploads/monthly_03_2015/post-95-0-82373800-1426682968.png)
Каждому
пикселю соответствует своё место в битах (
по номеру пикселя в строке из 8 пикселей). А точнее даже
четыре места,
в каждом из байт.
То есть
для определения одного пикселя мы используем четыре (4) бита. При помощи этих четырёх (
4) бит мы
узнаём цвет, а точнее
номер цвета пикселя в палитре.
Таким образам
каждому цвету соответствует набор из 4 бит.
Палитра состоит из 16 цветов. Будем их нумеровать с первой (1) по шестнадцатую включительно (16) [
1-16].
Спойлер
Первый цвет в палитре (1):
0 0
0 0
Второй цвет в палитре (2):
1 0
0 0
Третий цвет в палитре (3):
0 1
0 0
Четвёртый цвет в палитре (4):
1 1
0 0
Пятый цвет в палитре (5):
0 0
1 0
Шестой цвет в палитре (6):
1 0
1 0
Седьмой цвет в палитре (7):
0 1
1 0
Восьмой цвет в палитре (8):
1 1
1 0
Девятый цвет в палитре (9):
0 0
0 1
Десятый цвет в палитре (10):
1 0
0 1
Одиннадцатый цвет в палитре (11):
0 1
0 1
Двенадцатый цвет в палитре (12):
1 1
0 1
Тринадцатый цвет в палитре (13):
0 0
1 1
Четырнадцатый цвет в палитре (14):
1 0
1 1
Пятнадцатый цвет в палитре (15):
0 1
1 1
Шестнадцатый цвет в палитре (16):
1 1
1 1
Переходим к
Game Boy и
Game Boy Color соответственно. По-моему у них одинаковое устройство хранения несжатой графики, если я ошибаюсь, поправьте меня.
Схема хранения похожа на схему хранения для
NES (http://pscd.ru/forum/index.php?/topic/316-khranenie-neszhatoi-grafiki-na-razlichnykh-igrovy/?p=3241), но имеет кое-какие различия.
Nintendo Game Boy / Game Boy Color
Метод хранение несжатой графики в играх для GB / GBC
(http://pscd.ru/forum/uploads/monthly_03_2015/post-95-0-78890000-1426600065.png)
В очередной раз повторюсь для тех, кто мог не читать материал представленный выше.
Для простоты будем рассматривать
один тайл. Размер одного тайла
8 на 8 пикселей. То есть один тайл содержит в себе
64 пикселя. (
Тайл содержит в себе 4 цвета)
(http://pscd.ru/forum/uploads/monthly_03_2015/post-1-0-04730500-1426623064.png)
Для хранения одного тайла нужно
16 байт.
(http://pscd.ru/forum/uploads/monthly_03_2015/post-1-0-24708400-1426771209.png)
Один
пиксель занимает два (2) бита. Визуально разделяем
16 байт на пары по два (
получится восемь частей).
Два байта (
16 бит) соответствуют
одной строке (
строка состоит из 8 пикселей). Дальше мы будем рассматривать одну строку.
(http://pscd.ru/forum/uploads/monthly_03_2015/post-1-0-94557700-1426771208.png)
Одна
строка из 8 пикселей занимает два (2) байта. Эти
два байта делятся между собой по
8 бит (
8 бит и 8 бит). Место в этих восьми (8) бит
соответствует месту пикселя в строке.
Цвет пиксели назначается (обозначается) следующим образом:
Первый цвет соответствует значению
0 0Второй цвет соответствует значению
1 0Третья цвет соответствует значению
0 1Четвёртая цвет соответствует значению
1 1 (
Значения цветов соответствуют значению цветов в NES)
Вот подошло время рассмотреть
Sega Master System (
SMS). Таким же образом несжатая графика хранится в играх для
Sega Game Gear (
GG).
Мне опять-таки непонятно, почему нельзя было хранить несжатую графику, так же как и в
SMD (http://pscd.ru/forum/index.php?/topic/316-khranenie-neszhatoi-grafiki-na-razlichnykh-igrovy/?p=3241). Метод хранение несжатой графики в играх для
SMS больше похож на метод хранение несжатой графики в
SNES (http://pscd.ru/forum/index.php?/topic/316-khranenie-neszhatoi-grafiki-na-razlichnykh-igrovy/?p=3254). Но, естественно, имеются кое-какие различия.
Sega Master System / Sega Game Gear
Метод хранение несжатой графики в играх для SMS / GG.
(http://pscd.ru/forum/uploads/monthly_03_2015/post-95-0-78890000-1426600065.png)
Для простоты будем рассматривать
один тайл. Размер одного тайла
8 на 8 пикселей. То есть один тайл содержит в себе
64 пикселя. (
Тайл может содержать в себе до 16 различных цветов)
(http://pscd.ru/forum/uploads/monthly_03_2015/post-1-0-12693600-1427101744.png)
Для хранения одного тайла нужно 32 байта.
(http://pscd.ru/forum/uploads/monthly_03_2015/post-1-0-45692000-1427101744.png)
Делим 32 байта на восемь (8) частей по четыре (
4) байта.
Тут для восприятия будет попроще. Строки идут подряд. То есть
первые четыре (4) байта отвечают за первую строку, состоящую из
8 пикселей.
Следующие четыре (
4) байта отвечают
за вторую строку, состоящую из
8 пикселей. Далее будет рассматривать строку (
Строка состоит из восьми пикселей).
(http://pscd.ru/forum/uploads/monthly_03_2015/post-1-0-61329900-1427101744.png)
Дальше мы будем работать с битами.
Для хранения одного пикселя понадобится четыре (4) бита. Каждый их этих битов
стоит на своём месте в каждом из четырёх (
4) байт.
Месту бита соответствует
место пикселя в строке. То есть первый пиксель будет первым байтом в каждом из четырёх байт. Для лучшего восприятия нужно внимательно посмотреть на картинку.
(http://pscd.ru/forum/uploads/monthly_03_2015/post-1-0-91356700-1427101743.png)
Палитра состоит из 16 цветов. Будем их нумеровать с первого (1) по шестнадцатый включительно (16) [
1-16].
Первый цвет в палитре (1):
0 0 0 0Второй цвет в палитре (2):
1 0 0 0Третий цвет в палитре (3):
0 1 0 0Четвёртый цвет в палитре (4):
1 1 0 0Пятый цвет в палитре (5):
0 0 1 0Шестой цвет в палитре (6):
1 0 1 0Седьмой цвет в палитре (7):
0 1 1 0Восьмой цвет в палитре (8):
1 1 1 0Девятый цвет в палитре (9):
0 0 0 1Десятый цвет в палитре (10):
1 0 0 1Одиннадцатый цвет в палитре (11):
0 1 0 1Двенадцатый цвет в палитре (12):
1 1 0 1Тринадцатый цвет в палитре (13):
0 0 1 1Четырнадцатый цвет в палитре (14):
1 0 1 1Пятнадцатый цвет в палитре (15):
0 1 1 1Шестнадцатый цвет в палитре (16):
1 1 1 1
Сегодня я постараюсь рассказать вам о том,
как же хранится несжатая графика в играх для GBA. Тут всё довольно просто и очень схоже с методом хранения несжатой графики в играх для
SMD (http://pscd.ru/forum/index.php?/topic/316-khranenie-neszhatoi-grafiki-na-razlichnykh-igrovy/?p=3241).
Nintendo Game Boy Advance
Метод хранение несжатой графики в играх для GBA.
(http://pscd.ru/forum/uploads/monthly_03_2015/post-95-0-78890000-1426600065.png)
Для простоты будем рассматривать
один тайл. Размер одного тайла
8 на 8 пикселей. То есть один тайл содержит в себе
64 пикселя. (
Тайл может содержать в себе 16 различных цветов)
(http://pscd.ru/forum/uploads/monthly_03_2015/post-1-0-96259700-1427184175.png)
У
ГБА довольно простая система хранения для визуального восприятия.
Один тайл занимает 32 байта.
(http://pscd.ru/forum/uploads/monthly_03_2015/post-1-0-72459100-1427184175.png)
Один пиксель занимает пол байта или
4 бита. Но в отличие от
SMD, здесь
значения перевёрнуты. То есть сначала идёт второй пиксель, а потом первый. Проще говоря, пиксели в байте считываются
справа налево.
Палитра состоит из 16 цветов. Будем их нумеровать с первого (1) по шестнадцатый включительно (16) [
1-16].
Первый цвет в палитре (1):
0000Второй цвет в палитре (2):
0001Третий цвет в палитре (3):
0010Четвёртый цвет в палитре (4):
0011Пятый цвет в палитре (5):
0100Шестой цвет в палитре (6):
0101Седьмой цвет в палитре (7):
0110Восьмой цвет в палитре (8):
0111Девятый цвет в палитре (9):
1000Десятый цвет в палитре (10):
1001Одиннадцатый цвет в палитре (11):
1010Двенадцатый цвет в палитре (12):
1011Тринадцатый цвет в палитре (13):
1100Четырнадцатый цвет в палитре (14):
1101Пятнадцатый цвет в палитре (15):
1110Шестнадцатый цвет в палитре (16):
1111
Вот и подошла очередь рассмотреть
формат хранения 1BPP. Данный формат хранения несжатой графики может использоваться на различных игровых системах.
1BPP
Метод хранение несжатой графики в формате 1BPP
(http://pscd.ru/forum/uploads/monthly_03_2015/post-95-0-78890000-1426600065.png)
Ещё раз повторюсь для тех, кто не читал посты выше.
Для простоты будем рассматривать
один тайл. Размер одного тайла
8 на 8 пикселей. То есть один тайл содержит в себе
64 пикселя. (
Тайл содержит в себе два (2) цвета)
(http://pscd.ru/forum/uploads/monthly_03_2015/post-1-0-73041900-1427447098.png)
Тайл занимает 8 байт.
(http://pscd.ru/forum/uploads/monthly_03_2015/post-1-0-94578700-1427447098.png)
Каждый
байт соответствует одной строке (
строка состоит из 8 пикселей). Дальше мы будем рассматривать одну строку.
(http://pscd.ru/forum/uploads/monthly_03_2015/post-1-0-38916400-1427447098.png)
Каждому пикселю соответствует свой бит в байте. Считывание данных происходит стандартно (
слева на право). Поскольку цветов всего два, значения может быть либо
0, либо
1. Следовательно, 0 соответствует первому цвету, а 1 – второму.
10101101
Sega 32X
8-bit (color indices) (A1B5G5R5)
Метод хранение несжатой графики в играх для Sega 32X.
Данный метод хранение схож с методом хранения
TIM файлов формата
8-bit (color indices) для
PSX (http://pscd.ru/forum/index.php?/topic/360-tim-faily--format-khraneniia-grafiki-psx/?p=3685).
(http://pscd.ru/uploads/posts/2012-05/1337959272_32x-sample-program-celtic-pwm-test-logo.png)
В качестве примера рассмотрим тестовую демку для
S32X под названием
32X Sample Program - Celtic - PWM Test (http://pscd.ru/games/32x/0-932x/1188-32x-sample-program-celtic-pwm-test.html). (
Почему-то данный ром запустился у меня только на Fusion)
(http://pscd.ru/forum/uploads/monthly_05_2015/post-1-0-82181500-1431952658.png)
Так выглядит часть г
рафических данных (рисунка) в
Hex-редакторе. Данные изображения начинаются с $
5F0B4 и заканчиваются $
6ECB7 включительно.
Устройство изображения:2 байта – ширина
2 байта – высота
200 байт – палитра
Ширина *
Высоту байт – пиксели (изображение)
(http://pscd.ru/forum/uploads/monthly_05_2015/post-1-0-78082900-1431952659.png)
Ширина. Сколько пикселий выводить по
X.
01 40 =
320 (http://pscd.ru/forum/uploads/monthly_05_2015/post-1-0-03876700-1431952660.png)
Высота. Сколько пикселий выводить по
Y.
00 C8 =
200 (http://pscd.ru/forum/uploads/monthly_05_2015/post-1-0-12797500-1431952659.png)
Палитра. Данные
занимают 512 (0x200) байт. По
2 байта на один цвет. Всего
256 цветов. Палитра хранится в формате
TBGR / A1B5G5R5.
(http://pscd.ru/forum/uploads/monthly_05_2015/post-1-0-34205400-1431952659.png)
Первый цвет. Занимает 2 байта. Хранится в формате
TBGR / A1 B5 G5 R5. То есть
по 5 бит на цвет (
RGB). Как расшифровать цвет рассказывать не буду. Это описано в статье
TIM 16-bit (actual colors) [TBGR / A1B5G5R5] (http://pscd.ru/forum/index.php?/topic/360-tim-faily--format-khraneniia-grafiki-psx/?p=3647). (
Но в нашем случае байты местами менять ненужно.)
(http://pscd.ru/forum/uploads/monthly_05_2015/post-1-0-55747500-1431952659.png)
Один пиксель занимает
8 бит или, проще говоря, равен
одному байту.
Счёт идёт от
00 до
FF, то есть всего
256 значений.
Сообщения пришлось удалить.
Вот история сообщений:
Спойлер
OdysseyОгромное спасибо, это ведь таким образом можно найти тайлы которые нужно перерисовывать, если их зрительно найти не получается.
Greengh0stOdyssey, если зрительно не получается, то скорее всего она пожата и мне кажется так её будет не найти.
SPOTЦитироватьOdyssey сказал(а) 17 Мар 2015 - 16:42:
Огромное спасибо, это ведь таким образом можно найти тайлы которые нужно перерисовывать, если их зрительно найти не получается.
Да, можно.
ЦитироватьGreengh0st сказал(а) 17 Мар 2015 - 18:07:
Odyssey, если зрительно не получается, то скорее всего она пожата и мне кажется так её будет не найти.
Зрительно можно искать различные буквы или заставки. А вот если нужно найти какую-то часть персонажа, да её ещё нет в основной массе тайлов. То можно попробовать найти графику через
Hex-редактор.
MefistotelДоступно изложено для новичков."Пиксиль" по всему тексту нужно исправить на "пиксЕль". Всё-таки грамотность никто не отменял.И не мешало бы добавить СНЕС, ну и может, геймбой и прочее.
SPOTНе успел ещё, так же в них ещё самому нужно разобраться :)
Greengh0stМожет их под спойлер убрать, хотя не будет каши посмотри у шефов статья про указатели и поболе этой будет, лучше всё таки вместе, а то ползать по теме не совсем удобно. просто спрятать их а картиночку красивенькую прикрутить.
Добавил обновление по методу хранения несжатой графики в играх для GB/GBC (http://pscd.ru/forum/index.php?/topic/316-khranenie-neszhatoi-grafiki-na-razlichnykh-igrovy/?p=3274)
Есть пожелания. Первое, проверь орфографию своих статей хотя бы в ворде. Или попроси кого-нибудь. Словечки типо "мок" режут глаз. Это, вроде как, форум переводчиков.
Второе, не помешало бы добавить и Turbografx-16 (PC Engine). Консолька имеет два процессора, 8 битный центральный и 16 битный видео.
Добавил обновление по методу хранения несжатой графики в играх для SMS/GG (http://pscd.ru/forum/index.php?/topic/316-khranenie-neszhatoi-grafiki-na-razlichnykh-igrovy/?p=3275)
Добавил обновление по методу хранения несжатой графики в играх для GBA (http://pscd.ru/forum/index.php?/topic/316-khranenie-neszhatoi-grafiki-na-razlichnykh-igrovy/?p=3276)
Цитата: SPOT от 24 марта 2015, 10:11Добавил обновление по методу хранения несжатой графики в играх для GBA (http://pscd.ru/forum/index.php?/topic/316-khranenie-neszhatoi-grafiki-na-razlichnykh-igrovy/?p=3276)
Про турбика не забудь)
Цитата: Mefistotel от 19 марта 2015, 23:42Есть пожелания. Первое, проверь орфографию своих статей хотя бы в ворде. Или попроси кого-нибудь. Словечки типо "мок" режут глаз. Это, вроде как, форум переводчиков.
Второе, не помешало бы добавить и Turbografx-16 (PC Engine). Консолька имеет два процессора, 8 битный центральный и 16 битный видео.
В Турбографе используется тот же формат, что и в SNES.
И на Turbografx-16 мало переводов((( Надо бы заняться комунить)))) Бонк до сих пор лежит у меня, но я и до него доберусь, не зря мы выковыриваем всё что лежало у нас с незапамятных времен.
Добавил обновление по методу хранения несжатой графики 1BPP (http://pscd.ru/forum/index.php?/topic/316-khranenie-neszhatoi-grafiki-na-razlichnykh-igrovy/?p=3277)
Добавил информацию по методу хранения несжатой графики в SEGA 32X (http://pscd.ru/forum/index.php?/topic/316-khranenie-neszhatoi-grafiki-na-razlichnykh-igrovy/?p=3278).
Можно было добавить, что на SNES довольно часто встречается графика в формате 2BPP (Phantom 2040, Demon`s Crest) - 16 байт на тайл, а также экзотические штуки, такие как 8BPP (титульник в Spell Craft) - 64 байта на тайл.
В некоторых редакторах есть режим 3BPP SNES (YY-CHR). Мне, пока, такой не попадался.