{"id":1236,"date":"2020-06-27T17:50:42","date_gmt":"2020-06-27T15:50:42","guid":{"rendered":"https:\/\/www.pmd85.cz\/?page_id=1236"},"modified":"2020-06-27T17:51:08","modified_gmt":"2020-06-27T15:51:08","slug":"prince-of-persia-zobrazovac-postavy-hrace","status":"publish","type":"page","link":"https:\/\/www.pmd85.cz\/?page_id=1236","title":{"rendered":"Prince of Persia &#8211; zobrazova\u010d postavy hr\u00e1\u010de"},"content":{"rendered":"<p>Tento modul se star\u00e1 o korektn\u00ed zobrazen\u00ed postavy hr\u00e1\u010de. Pokud je hr\u00e1\u010d na obrazovce p\u0159\u00edtomen, nutn\u011b zasahuje do n\u011bkter\u00fdch pieces (modul 4&#215;64 videobajt\u016f). Minim\u00e1ln\u011b do jednoho ur\u010dit\u011b. Ale hra ve verzi PMD-85 umo\u017e\u0148uje, aby t\u011bch postavou hr\u00e1\u010de &#8222;zasa\u017een\u00fdch&#8220; pieces bylo maxim\u00e1ln\u011b \u010dty\u0159i na \u0161\u00ed\u0159ku a maxim\u00e1ln\u011b dva na v\u00fd\u0161ku. To kv\u016fli geometrie voln\u00e9 RAM v z\u00e1pisn\u00edku vedle videoram.<\/p>\n<p>Postup p\u0159i kreslen\u00ed postavy hr\u00e1\u010de je n\u00e1sleduj\u00edc\u00ed. Vygeneruji seznam zasa\u017een\u00fdch pieces a ve spr\u00e1vn\u00e9m vz\u00e1jemn\u00e9m prostorov\u00e9m uspo\u0159\u00e1d\u00e1n\u00ed vykresl\u00edm do buferu vedle videoram pozad\u00ed z t\u011bchto pieces. Pak op\u011bt na spr\u00e1vnou pozici v buferu vykresl\u00edm postavu hr\u00e1\u010de a nakonec p\u0159id\u00e1m pop\u0159ed\u00ed. Takto vygenerovan\u00e9 pieces zkop\u00edruji z buferu do videoram.<\/p>\n<p>Ov\u0161em kreslen\u00ed hr\u00e1\u010de dle v\u00fd\u0161e uveden\u00e9ho je sp\u00ed\u0161e jeden z t\u011bch hierarchicky ni\u017e\u0161\u00edch modul\u016f. Nad n\u00edm jsou moduly, kter\u00e9 podle tabulky FRAMEDEF &#8222;um\u00ed&#8220; spr\u00e1vn\u011b usadit vlastn\u00ed bitmapy postavy do prostoru, n\u00e1sledn\u011b podle tabulky SEQTABLE \u0159ad\u00ed bitmapy do spr\u00e1vn\u00e9 sekvence a synchronn\u011b m\u011bn\u00ed pozici postavy, a ty nejvy\u0161\u0161\u00ed moduly u\u017e jen d\u00e1vaj\u00ed po\u017eadavky typu &#8222;p\u0159ejdi na sekvenci skok&#8220;.<\/p>\n<p>Jedn\u00edm z kl\u00ed\u010dov\u00fdch po\u017eadavk\u016f na portaci pro PMD-85 je z\u00e1sadn\u00ed redukce anima\u010dn\u00edch dat postavy hr\u00e1\u010de. V Mechnerov\u00fdch podkladech uv\u00e1d\u011bn\u00fdch 30kB je \u0161\u00edlen\u00e9 \u010d\u00edslo. Proto m\u00e1 verze pro PMD-85 zavedenu kompresi, spo\u010d\u00edvaj\u00edc\u00ed v existenci atributu &#8222;CRLF&#8220;, kter\u00fd p\u0159ed\u010dasn\u011b ukon\u010d\u00ed kreslen\u00ed mikro\u0159\u00e1dku postavy a p\u0159ejde na dal\u0161\u00ed. Jakkoliv to nevypad\u00e1 na nic p\u0159evratn\u00e9ho, prvn\u00ed v\u00fdsledky jsou uspokojiv\u00e9. A pak m\u00e1m je\u0161t\u011b jedno komprima\u010dn\u00ed \u017eel\u00edzko v ohni..<\/p>\n<p>Drtivou v\u011bt\u0161inu procedur, kter\u00e9 kreslen\u00ed hr\u00e1\u010de pou\u017e\u00edv\u00e1, p\u016fjde pou\u017e\u00edt i pro ostatn\u00ed objekty typu &#8222;postava&#8220; (v\u010detn\u011b my\u0161i). Op\u011bt se vyu\u017e\u00edv\u00e1 modulu TriStatePixel, kter\u00fd umo\u017en\u00ed definovat v jednom videobajtu nejen zhasnut\u00e9 a rozsv\u00edcen\u00e9 pixely, ale i pixely typu &#8222;pozad\u00ed-nem\u011bnit&#8220;. A to bez n\u00e1r\u016fstu d\u00e9lky p\u0159edlohy obr\u00e1zk\u016f. Jakmile dokon\u010d\u00edm p\u0159evod anima\u010dn\u00edch postav hr\u00e1\u010de a jejich kompresi, bude nav\u00edc jasn\u00e9, zda \u017eije nad\u011bje i pro 48kB verzi. Prvn\u00edch 15 anima\u010dn\u00edch f\u00e1z\u00ed bez komprese zab\u00edr\u00e1 2917 bajt\u016f a prostou extrapolac\u00ed se ukazuje, \u017ee 48kB verze je utopie. Ale \u00fa\u010dty se budou skl\u00e1dat a\u017e po kompletaci v\u0161ech anima\u010dn\u00edch f\u00e1z\u00ed.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Tento modul se star\u00e1 o korektn\u00ed zobrazen\u00ed postavy hr\u00e1\u010de. Pokud je hr\u00e1\u010d na obrazovce p\u0159\u00edtomen, nutn\u011b zasahuje do n\u011bkter\u00fdch pieces (modul 4&#215;64 videobajt\u016f). Minim\u00e1ln\u011b do jednoho ur\u010dit\u011b. Ale hra ve verzi PMD-85 umo\u017e\u0148uje, aby t\u011bch postavou hr\u00e1\u010de &#8222;zasa\u017een\u00fdch&#8220; pieces bylo maxim\u00e1ln\u011b \u010dty\u0159i na \u0161\u00ed\u0159ku a maxim\u00e1ln\u011b dva na v\u00fd\u0161ku. To kv\u016fli geometrie voln\u00e9 RAM v [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"parent":1148,"menu_order":0,"comment_status":"open","ping_status":"closed","template":"","meta":[],"_links":{"self":[{"href":"https:\/\/www.pmd85.cz\/index.php?rest_route=\/wp\/v2\/pages\/1236"}],"collection":[{"href":"https:\/\/www.pmd85.cz\/index.php?rest_route=\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/www.pmd85.cz\/index.php?rest_route=\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/www.pmd85.cz\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.pmd85.cz\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=1236"}],"version-history":[{"count":1,"href":"https:\/\/www.pmd85.cz\/index.php?rest_route=\/wp\/v2\/pages\/1236\/revisions"}],"predecessor-version":[{"id":1237,"href":"https:\/\/www.pmd85.cz\/index.php?rest_route=\/wp\/v2\/pages\/1236\/revisions\/1237"}],"up":[{"embeddable":true,"href":"https:\/\/www.pmd85.cz\/index.php?rest_route=\/wp\/v2\/pages\/1148"}],"wp:attachment":[{"href":"https:\/\/www.pmd85.cz\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=1236"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}