{"id":3852,"date":"2025-03-11T18:45:05","date_gmt":"2025-03-11T18:45:05","guid":{"rendered":"https:\/\/research.swissdigitization.ch\/?p=3852"},"modified":"2025-03-11T18:50:08","modified_gmt":"2025-03-11T18:50:08","slug":"atari-st-und-co-das-virtuelle-sprite","status":"publish","type":"post","link":"https:\/\/research.swissdigitization.ch\/?p=3852","title":{"rendered":"Atari ST und Co: Das virtuelle Sprite"},"content":{"rendered":"\n<figure class=\"wp-block-video\"><video height=\"720\" style=\"aspect-ratio: 1142 \/ 720;\" width=\"1142\" controls src=\"https:\/\/research.swissdigitization.ch\/wp-content\/uploads\/2025\/03\/Screen-2025-03-11-192925.mp4\"><\/video><\/figure>\n\n\n\n<p>Der Atari ST bringt wie viele klassische Computer keine Sprites mit. Diese m\u00fcssen m\u00fchsam simuliert werden. Dabei wird aus dem einfachen Reinladen der Daten in die Hardwaresprites dann ein:<br>1. Aufbereiten (Maske erstellen)<br>2. Background sichern <br>3. Die Maske mit AND auf das Videomemory anwenden und ein Loch herstellen<br>4. Mit OR das nun leere Memory f\u00fcllen <br>5. Warten auf den Raster (= Wechseln des Bildes)<br>(6. Sprite wieder mit gesichertem Background \u00fcberschreiben)<br>GOTO 1<\/p>\n\n\n\n<!--more-->\n\n\n\n<p>All das passiert im Film (Unten werden noch Zeilen direkt kopiert) oben und sieht in der Erstellung so aus:<\/p>\n\n\n\n<p><strong>AND (Maske anwenden)<\/strong> &#8211; Loch erstellen<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"286\" height=\"202\" src=\"https:\/\/research.swissdigitization.ch\/wp-content\/uploads\/2025\/03\/Bildschirmfoto-2025-03-11-um-19.36.16.png\" alt=\"\" class=\"wp-image-3856\"\/><\/figure>\n\n\n\n<p><strong>OR (Hineinkopieren des Sprites) &#8211; Loch f\u00fcllen<\/strong><\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"286\" height=\"238\" src=\"https:\/\/research.swissdigitization.ch\/wp-content\/uploads\/2025\/03\/Bildschirmfoto-2025-03-11-um-19.37.06.png\" alt=\"\" class=\"wp-image-3857\"\/><\/figure>\n\n\n\n<p>Und da steht das B, es wurde eingef\u00fcgt. Im Video ist es noch ein bisschen komplizierter, da hier noch der Schatten zuerst hineingerechnet wird. Wobei das dann nichts mehr technisch Zus\u00e4tzliches is, es ist nur per AND die Maske angewendt. Also eine angewandete Maske und dann dar\u00fcber das Loch und darin das B. <\/p>\n\n\n\n<figure class=\"wp-block-image size-full is-resized\"><img loading=\"lazy\" decoding=\"async\" width=\"518\" height=\"360\" src=\"https:\/\/research.swissdigitization.ch\/wp-content\/uploads\/2025\/03\/Bildschirmfoto-2025-03-11-um-18.46.52.png\" alt=\"\" class=\"wp-image-3858\" style=\"width:304px;height:auto\" srcset=\"https:\/\/research.swissdigitization.ch\/wp-content\/uploads\/2025\/03\/Bildschirmfoto-2025-03-11-um-18.46.52.png 518w, https:\/\/research.swissdigitization.ch\/wp-content\/uploads\/2025\/03\/Bildschirmfoto-2025-03-11-um-18.46.52-300x208.png 300w\" sizes=\"auto, (max-width: 518px) 100vw, 518px\" \/><\/figure>\n\n\n\n<p><br>Code m\u00e4ssig wird hier tats\u00e4chlich nur AND und Or ben\u00fctzt. Der Code dazu vom Project cryAtariEngine<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"772\" src=\"https:\/\/research.swissdigitization.ch\/wp-content\/uploads\/2025\/03\/Bildschirmfoto-2025-03-11-um-19.41.20-1024x772.png\" alt=\"\" class=\"wp-image-3859\" srcset=\"https:\/\/research.swissdigitization.ch\/wp-content\/uploads\/2025\/03\/Bildschirmfoto-2025-03-11-um-19.41.20-1024x772.png 1024w, https:\/\/research.swissdigitization.ch\/wp-content\/uploads\/2025\/03\/Bildschirmfoto-2025-03-11-um-19.41.20-300x226.png 300w, https:\/\/research.swissdigitization.ch\/wp-content\/uploads\/2025\/03\/Bildschirmfoto-2025-03-11-um-19.41.20-768x579.png 768w, https:\/\/research.swissdigitization.ch\/wp-content\/uploads\/2025\/03\/Bildschirmfoto-2025-03-11-um-19.41.20-624x470.png 624w, https:\/\/research.swissdigitization.ch\/wp-content\/uploads\/2025\/03\/Bildschirmfoto-2025-03-11-um-19.41.20.png 1104w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<p>Zuerst wird quasi das Loch (Schatten) erstellt (and.w). Weil das Bild 16 Farben hat sind das jeweils 2 Bytes (2b = 1w) f\u00fcr 16 Pixel * 4 Ebenen (a1)-6(a1). Dann werden die 4 * 2Bytes geladen in die CPU, das sind dann 16 Pixel in 4 Ebenen (Bitplanes) mit dem Loch und dann per OR (oder) die 4 Ebenen eingef\u00fcgt ins Schwarz. Danach wird das ganze wieder zur\u00fcckkopiert ins Videoram.<\/p>\n\n\n\n<p>Und genau hier w\u00fcrde man damit anfangen eine Demo oder ein Game zu machen.<\/p>\n\n\n\n<p>Auf einem C64 ist dies alles ausgelagert, da gibt es Hardwaresprites. Auf dem Amiga gibt es die auch, aber oft macht das der Blitter. Diese arbeitet genauso wie die Routine oben, einfach dass das Ganze in einem Spezialchip (Blitter) l\u00e4uft und dann nur aus Parametern an diesen Chip besteht. <\/p>\n\n\n\n<p><br><\/p>\n\n\n\n<p><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Der Atari ST bringt wie viele klassische Computer keine Sprites mit. Diese m\u00fcssen m\u00fchsam simuliert werden. Dabei wird aus dem einfachen Reinladen der Daten in die Hardwaresprites dann ein:1. Aufbereiten (Maske erstellen)2. Background sichern 3. Die Maske mit AND auf das Videomemory anwenden und ein Loch herstellen4. Mit OR das nun leere Memory f\u00fcllen 5. [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[1],"tags":[],"class_list":["post-3852","post","type-post","status-publish","format-standard","hentry","category-uncategorized"],"_links":{"self":[{"href":"https:\/\/research.swissdigitization.ch\/index.php?rest_route=\/wp\/v2\/posts\/3852","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/research.swissdigitization.ch\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/research.swissdigitization.ch\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/research.swissdigitization.ch\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/research.swissdigitization.ch\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=3852"}],"version-history":[{"count":6,"href":"https:\/\/research.swissdigitization.ch\/index.php?rest_route=\/wp\/v2\/posts\/3852\/revisions"}],"predecessor-version":[{"id":3864,"href":"https:\/\/research.swissdigitization.ch\/index.php?rest_route=\/wp\/v2\/posts\/3852\/revisions\/3864"}],"wp:attachment":[{"href":"https:\/\/research.swissdigitization.ch\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=3852"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/research.swissdigitization.ch\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=3852"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/research.swissdigitization.ch\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=3852"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}