Описание: Алгоритмы |
Поиск в теме | Версия для печати |
Guyver |
Отправлено: 05 Июня, 2024 - 17:39:55
|
Chief-Net
Покинул форум
Сообщений всего: 10117
Дата рег-ции: Окт. 2014
Откуда: Магадан
|
Решил разобраться с алгоритмами более подробно.
С 1bpp кое-как разобрался.
Всё не очень сложно. Информация тайла кодируется 8 байтами. Каждый байт - это строка, получается 8 строк. Переводим из шестнадцатеричной системы счисления в двоичную, 0 - нет точки, 1 - есть точка.
И рисовать не очень сложно:
1. Читаем символ из рома в hex виде: Read (File, B)
2. Переводим его в бинарный вид: inttoBin(B)
3. Так делаем 8 раз и получаем 64 символа из нулей и единичек
4. Рисуем точку или нет, двигаясь по всей считанной информации на поле 8х8 точек.
А вот уже с 2bpp я вообще не пойму никак алгоритм... Там получается не 0 и 1, а уже 4 цвета (прозрачный цвет и 1, 2, 3). Как описать алгоритм по пунктам?
Все мои редакторы используют вместо графики из рома заранее подготовленные картинки, что не есть гуд. Хотелось бы понять как вывести графику прямо из рома.
----- Я не волшебник - я только учусь... |
|
|
Марат |
Отправлено: 05 Июня, 2024 - 23:17:29
|
Chief-Net
Покинул форум
Сообщений всего: 2183
Дата рег-ции: Окт. 2014
Откуда: Казахстан
|
Здесь можешь почитать пояснения к форматам https://github.com/shonumi/Emu-D...m/consolegfx.txt
2 bpp хранятся по-разному, в зависимости от консоли.
Для nes, например, биты одного пикселя разнесены по разным байтам.
Если например первый бит хранится в первом байте, то второй в восьмом.
Таким образом для первой строки пикселей младшие биты хранятся в первом байте, а старшие биты в восьмом байте.
CODE:
[r0, bp1], [r1, bp1], [r2, bp1], [r3, bp1], [r4, bp1], [r5, bp1], [r6, bp1], [r7, bp1]
[r0, bp2], [r1, bp2], [r2, bp2], [r3, bp2], [r4, bp2], [r5, bp2], [r6, bp2], [r7, bp2]
Здесь в квадратных скобках это один байт, всего здесь 16 байт.
r0 - означает строка пикселей под индексом 0. Всего 8 строк. bp1 битовый план 1, bp2, соответственно, битовый план 2. Битовые планы - это младшие и старшие биты пикселя.
Таким образом, мы видим, что в первом байте [r0, bp1], первая строка пикселей с младшими битами, а в восьмом байте [r0, bp2], первая строка пикселей со старшими битами. Во втором байте [r1, bp1], вторая строка пикселей с младшими битами, а в девятом [r1, bp2] вторая строка пикселей со старшими битами и т.д. |
|
|
Guyver |
Отправлено: 10 Июня, 2024 - 23:55:28
|
Chief-Net
Покинул форум
Сообщений всего: 10117
Дата рег-ции: Окт. 2014
Откуда: Магадан
|
Хорошо, а сега тогда как считается? Мне осталось освоить сегу и гба, но пока что-то не получается алгоритм повторить...
Сега:
[p1-2 r0: bp*], [p2-3 r0: bp*], [p4-5 r1: bp*], [p6-7 r1: bp*]
[p1-2 r2: bp*], [p2-3 r2: bp*], [p4-5 r3: bp*], [p6-7 r3: bp*]
[p1-2 r4: bp*], [p2-3 r4: bp*], [p4-5 r5: bp*], [p6-7 r5: bp*]
[p1-2 r6: bp*], [p2-3 r6: bp*], [p4-5 r7: bp*], [p6-7 r7: bp*]
Что это за звёздочки? В других алгоритмах всё понятно:
[r0, bp1], [r0, bp2], [r0, bp3], [r0, bp4], [r1, bp1], [r1, bp2], [r1, bp3], [r1, bp4]
[r2, bp1], [r2, bp2], [r2, bp3], [r2, bp4], [r3, bp1], [r3, bp2], [r3, bp3], [r3, bp4]
[r4, bp1], [r4, bp2], [r4, bp3], [r4, bp4], [r5, bp1], [r5, bp2], [r5, bp3], [r5, bp4]
[r6, bp1], [r6, bp2], [r6, bp3], [r6, bp4], [r7, bp1], [r7, bp2], [r7, bp3], [r7, bp4]
А тут?
----- Я не волшебник - я только учусь... |
|
|
Марат |
Отправлено: 11 Июня, 2024 - 22:43:12
|
Chief-Net
Покинул форум
Сообщений всего: 2183
Дата рег-ции: Окт. 2014
Откуда: Казахстан
|
Мне кажется там ошибка в описании. И если следовать описанию формата, то должно быть так
CODE:
[p0-1 r0: bp*], [p2-3 r0: bp*], [p4-5 r0: bp*], [p6-7 r0: bp*], [p0-1 r1: bp*], [p2-3 r1: bp*], [p4-5 r1: bp*], [p6-7 r1: bp*],
|
|
|
|
Поиск в теме | Версия для печати |
Страниц (1): [1] |
Сейчас эту тему просматривают: 1 (гостей: 1, зарегистрированных: 0) |
« Программирование » |
Все гости форума могут просматривать этот раздел. Только зарегистрированные пользователи могут создавать новые темы в этом разделе. Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
|
|
|