Speccy - наш выбор!

Speccy - наш выбор! (http://zx-pk.ru/index.php)
-   Для начинающих (http://zx-pk.ru/forumdisplay.php?f=43)
-   -   Вопрос по экранной области памяти (http://zx-pk.ru/showthread.php?t=8438)

ipaSoft 19th September 2008 01:13

Вопрос по экранной области памяти
 
Здравствуйте! В последнее время увлекся изучением программирования для ZX Spectrum. Меня интересует вопрос, который возник в процессе прочтения книги издательства "ПИТЕР":
1) Почему размер файла-изображения, созданного в Art Studio, составляет 6912 байт?
2) Разрешение экрана 256*176 глубина цвета 3 бита (8 цветов). Итого вес матрицы должен составить 135 168 бит (16 896 байт). Я правильно думаю?

[bETA]mEN 19th September 2008 01:25

Quote:

Originally Posted by ipaSoft (Post 153158)
2) Разрешение экрана 256*176 глубина цвета 3 бита (8 цветов). Итого вес матрицы должен составить 135 168 бит (16 896 байт). Я правильно думаю?

нет
http://en.wikipedia.org/wiki/ZX_Spectrum_graphic_modes

ipaSoft 19th September 2008 02:30

Более чем понятно. Это изображение грузится в область символов, определяемых пользователем, емкостью 32*24*9 = 6912 байт. Буду разбираться дальше. Спасибо.

boo_boo 19th September 2008 03:34

Quote:

Originally Posted by ipaSoft (Post 153171)
грузится в область символов, определяемых пользователем

не, в экранную область. в то что называют "область символов, определяемых пользователем" атрибуты не загрузишь, и структура данных другая, и символов не хватит.
(256*192) / 8 бит = 6144 байт монохромной графики
(256*192) / 64 пиксела в блоке 8х8 = 768 байт цветовых данных
6144+768 = 6912 байт всего

ipaSoft 19th September 2008 15:24

boo_boo, Ясно. Адрес начала области UDG я смогу найти
(let a = usr chr$(0)), там можно разместить всего 49152 бит своих монохромных блоков 8х8.
А как найти адрес области памяти, куда можно записывать атрибуты каждого из блоков (3 бита цвет знака, 3 бита цвет фона, 1 бит повышенной яркости и 1 бит мерцания знакоместа)?

skyther 19th September 2008 15:38

забудь про UDG
экран начинается с $4000 = 16384
атрибуты $5800 = 22528

poke 16384,128 - точка в левом-верхнем
poke 22528,0 - черный inc/paper в левом-верхнем

boo_boo 19th September 2008 17:26

Quote:

Originally Posted by ipaSoft (Post 153268)
(let a = usr chr$(0))

ага, skyther дело говорит, забудь про UDG :)
UDG -- абстракция, существующая на уровне бейсиковских процедур печати, железо ни о каком UDG не знает, оно знает только о области памяти начинающейся с 16384 и длиной 6912 байт. сначала идут 6144 байт монохромных пикселов (причем нелинейно, увидишь, если сделаешь в цикле poke 16384+i, 255). потом 768 байт цвета познакоместно, линейно.
подробно см например в http://trd.speccy.cz/book/ZX_TRDOS.ZIP (архитектура ZX Spectrum -- организация памяти -- экранная область памяти)

ipaSoft 20th September 2008 00:26

skyther,
boo_boo, Большое вам спасибо!

rasmer 20th September 2008 09:58

Лучше почитай книгу "Как написать игру на Ассемблере" издательства Питер...

ipaSoft 20th September 2008 17:25

rasmer, Я начал читать предыдущую, ту что на бейсике. Думаете, что ее следует пропустить?


All times are GMT +4. The time now is 06:18.

Powered by vBulletin® Version 3.8.3
Copyright ©2000 - 2014, Jelsoft Enterprises Ltd.