{"id":1150,"date":"2020-01-10T19:38:17","date_gmt":"2020-01-10T18:38:17","guid":{"rendered":"https:\/\/www.pmd85.cz\/?page_id=1150"},"modified":"2020-04-13T07:55:46","modified_gmt":"2020-04-13T06:55:46","slug":"prince-of-persia-modul-staticke-grafiky-pozadi","status":"publish","type":"page","link":"https:\/\/www.pmd85.cz\/?page_id=1150","title":{"rendered":"Prince of Persia &#8211; modul statick\u00e9 grafiky pozad\u00ed"},"content":{"rendered":"<p>T\u00edmto modulem za\u010dnu. Bude postaven na technologii TriStatePixel (sou\u010d\u00e1st knihovny TriPlane, vyvinut\u00e9 pro hru The Magician&#8217;s Curse), kter\u00e1 je \u0159e\u0161en\u00edm probl\u00e9mu pam\u011b\u0165ov\u00e9 n\u00e1ro\u010dnosti t\u00e9to hry. Tato technologie m\u00e1 polovi\u010dn\u00ed n\u00e1roky na ulo\u017een\u00ed grafick\u00fdch dat postavy hr\u00e1\u010de, kdy jak masku, tak i vlastn\u00ed pixelov\u00e1 data lze ulo\u017eit v\u017edy pouze do jednoho bajtu nam\u00edsto dvou (maska AND + data OR). Ov\u0161em to je t\u0159eba ch\u00e1pat tak, \u017ee i kdy\u017e budou m\u00edt anima\u010dn\u00ed data polovi\u010dn\u00ed objem, budou m\u00edt v z\u00e1sad\u011b stejnou d\u00e9lku jako origin\u00e1l. P\u016fvodn\u00ed hra kresl\u00ed bez masky, a v t\u011bch n\u011bkolika m\u00e1lo p\u0159\u00edpadech, kdy masku pot\u0159ebuje, tak ji pou\u017eije (masky jsou ulo\u017eeny jako b\u011b\u017en\u00e9 obr\u00e1zky, maj\u00ed pouze sv\u016fj re\u017eim kreslen\u00ed &#8211; AND).<\/p>\n<p>Mechner\u016fv origin\u00e1l \u0159e\u0161\u00ed probl\u00e9m postupn\u00e9ho \u0159azen\u00ed objekt\u016f za sebe jinak. Na 6. stran\u011b doprovodn\u00e9ho souboru POPSOURCE009.PDF je zaj\u00edmav\u00fd obr\u00e1zek s obd\u00e9ln\u00edky, ozna\u010den\u00fdmi A, B, C a D (chyb\u00ed tam je\u0161t\u011b rovina FRONT, kresl\u00edc\u00ed \u00fapln\u011b dop\u0159edu, tedy i p\u0159ed postavy). Jejich postupn\u00fdm vykreslov\u00e1n\u00edm ve zm\u011bn\u011bn\u00fdch pol\u00edch obrazovky doch\u00e1z\u00ed k p\u0159irozen\u00e9mu \u0159azen\u00ed objekt\u016f podle geometricko-fyzik\u00e1ln\u00edch pravidel vid\u011bn\u00ed. Syst\u00e9m TriStatePixel je tak pouze n\u00e1strojem pro kreslen\u00ed s maskou a nakonec tedy nen\u00ed nositelem z\u00e1kladn\u00ed funkcionality pro dosa\u017een\u00ed precizn\u00edho technick\u00e9ho proveden\u00ed grafiky hry, kter\u00fdm je Prince of Persia pov\u011bstn\u00fd.<\/p>\n<p>Ov\u0161em syst\u00e9m TriStatePixel pomohl i jinak. Proto\u017ee ka\u017ed\u00fd bajt grafick\u00e9 p\u0159edlohy je pouze intern\u00edm k\u00f3dem, kter\u00fd ur\u010duje jak masku tak i obrazov\u00e1 data, kter\u00e1 jsou ulo\u017eena v tabulce 2&#215;256 bajt\u016f, tak pouhou zm\u011bnou dvou r\u016fzn\u00fdch tabulek mohu dosahovat zrcadlov\u00e9ho zobrazen\u00ed bit\u016f. A pokud vykresluji videobajty nav\u00edc i opa\u010dn\u00fdm sm\u011brem, pak cel\u00fd obr\u00e1zek je vykreslen korektn\u011b horizont\u00e1ln\u011b oto\u010den\u00fd. Ale op\u011bt, Mechner to d\u011bl\u00e1 principi\u00e1ln\u011b stejn\u011b, u verze pro PMD-85 to je pouze integr\u00e1ln\u00ed sou\u010d\u00e1st\u00ed pou\u017eit\u00e9ho syst\u00e9mu.<\/p>\n<p>Vyv\u00edjen\u00fd subsyst\u00e9m hry pro kreslen\u00ed grafiky pozad\u00ed zahrnuje i animaci tzv. TROBs &#8211; objekt\u016f, kter\u00e9 z\u016fst\u00e1vaj\u00ed na m\u00edst\u011b, tj. m\u0159\u00ed\u017ee, br\u00e1na, pochodn\u011b, lahvi\u010dky, gilotiny, plo\u0161iny, atd. Ka\u017ed\u00e9 pole obrazovky (je jich 10 horizont\u00e1ln\u011b a 3 vertik\u00e1ln\u011b) m\u00e1 sv\u00e9 ID, ur\u010duj\u00edc\u00ed <strong>CO<\/strong> tam je nakresleno, a sv\u016fj <strong>atribut<\/strong>, kter\u00fd modifikuje tento objekt. A syst\u00e9m pro zobrazov\u00e1n\u00ed grafiky bere data i z pole atribut a podle toho nap\u0159\u00edklad vybere anima\u010dn\u00ed f\u00e1zi pochodn\u011b, ov\u0161em pochode\u0148 je jako objekt definov\u00e1na v polo\u017ece ID. Nebo jin\u00fd p\u0159\u00edklad: m\u0159\u00ed\u017e je definov\u00e1na v polo\u017ece ID, stupe\u0148 jej\u00edho zvednut\u00ed v pixelech je v polo\u017ece atribut. Nad\u0159azen\u00fd programov\u00fd modul se pak star\u00e1 o to, \u017ee m\u011bn\u00ed \u00fadaje v pol\u00edch ID, atribut (a je\u0161t\u011b ve t\u0159et\u00edm poli XCHG, indikuj\u00edc\u00edm prob\u011bhlou zm\u011bnu) a o zbytek u\u017e se star\u00e1 vykreslova\u010d.<\/p>\n<p>Zde je mo\u017en\u00e1 na m\u00edst\u011b uv\u00e9st skute\u010dnou geometrii hern\u00ed plochy. My vid\u00edme pouze 10&#215;3 obrazov\u00fdch pol\u00ed (a k tomu jeden \u010dty\u0159i pixely vysok\u00fd \u0159\u00e1dek zcela naho\u0159e, kde je vid\u011bt struktura podlahy obrazovky o jednu v\u00fd\u0161e &#8211; pokud existuje). Z hlediska program\u00e1tora to je ale jinak. Existuj\u00ed ji\u017e zm\u00edn\u011bn\u00e1 t\u0159i pole: ID, ATTR, XCHG, kde ka\u017ed\u00e9 z nich m\u00e1 rozm\u011br 11&#215;5 bajt\u016f. V t\u011bchto pol\u00edch jsou po zacentrov\u00e1n\u00ed doprava doprost\u0159ed ta viditeln\u00e1 pole 10&#215;3. Nav\u00edc jsou v prvn\u00edm sloupci um\u00edst\u011bna data z obrazovky vlevo a v horn\u00edch a spodn\u00edch \u0159\u00e1dc\u00edch jsou data z obrazovek naho\u0159e a dole. To kv\u016fli pr\u016fniku obrazov\u00fdch dat z t\u011bchto sousedn\u00edch obrazovek do t\u00e9 pr\u00e1v\u011b viditeln\u00e9. Tato t\u0159i pole (ID, ATTR, XCHG) jsou sestavena v\u017edy p\u0159i vstupu do m\u00edstnosti a hra se pak u\u017e nezdr\u017euje vyhled\u00e1v\u00e1n\u00edm dat ze sousedn\u00edch m\u00edstnost\u00ed.<\/p>\n<p>Tolik p\u0159edmluva k prvn\u00edmu kvart\u00e1lu 2020 a v\u00fdvoji prvn\u00ed \u010d\u00e1sti hry Prince of Persia.<\/p>\n<p>&nbsp;<\/p>\n","protected":false},"excerpt":{"rendered":"<p>T\u00edmto modulem za\u010dnu. Bude postaven na technologii TriStatePixel (sou\u010d\u00e1st knihovny TriPlane, vyvinut\u00e9 pro hru The Magician&#8217;s Curse), kter\u00e1 je \u0159e\u0161en\u00edm probl\u00e9mu pam\u011b\u0165ov\u00e9 n\u00e1ro\u010dnosti t\u00e9to hry. Tato technologie m\u00e1 polovi\u010dn\u00ed n\u00e1roky na ulo\u017een\u00ed grafick\u00fdch dat postavy hr\u00e1\u010de, kdy jak masku, tak i vlastn\u00ed pixelov\u00e1 data lze ulo\u017eit v\u017edy pouze do jednoho bajtu nam\u00edsto dvou (maska AND [&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\/1150"}],"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=1150"}],"version-history":[{"count":6,"href":"https:\/\/www.pmd85.cz\/index.php?rest_route=\/wp\/v2\/pages\/1150\/revisions"}],"predecessor-version":[{"id":1193,"href":"https:\/\/www.pmd85.cz\/index.php?rest_route=\/wp\/v2\/pages\/1150\/revisions\/1193"}],"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=1150"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}