{"id":6188,"date":"2014-04-19T10:44:05","date_gmt":"2014-04-19T09:44:05","guid":{"rendered":"http:\/\/www.gamelab.ch\/?p=6188"},"modified":"2014-04-19T10:44:05","modified_gmt":"2014-04-19T09:44:05","slug":"homebrew-oder-axe-1-0-an-atari-2600-vcs-game-released-just-now","status":"publish","type":"post","link":"https:\/\/www.gamelab.ch\/?p=6188","title":{"rendered":"Homebrew oder AXE 1.0 an Atari 2600 \/ VCS Game released just now!"},"content":{"rendered":"<p><img loading=\"lazy\" decoding=\"async\" class=\"alignleft size-medium wp-image-6187\" title=\"2_ingame\" src=\"http:\/\/www.gamelab.ch\/wp-content\/uploads\/2_ingame-300x194.jpg\" alt=\"\" width=\"300\" height=\"194\" \/><br \/>\nWer sich mit alten Consolen auseinandersetzt, kommt im Zeitalter von frei verf\u00fcgbaren Engines nicht darum herum zu fragen: Wie schwierig war es eigentlich damals ein Game zu machen? Und wo f\u00e4ngt man an bei der Retro-Auseinandersetzung?<br \/>\nEinstiegspunkt f\u00fcr Atari 2600+:\u00a0<a href=\"http:\/\/www.atariage.com\" target=\"_blank\">www.atariage.com<\/a><br \/>\nTaucht man dann ein in die Welt der Retro-Consolen-Programmierer, findet man sich in der Homebrew-Szene wieder. Eine Szene, die f\u00fcr praktisch alle erdenklichen Systeme (von VCS \u00fcber NES bis zur WII) Entwicklungssysteme &#8211; sprich Assembler &amp;\u00a0Compilers und bereit h\u00e4lt.<br \/>\nSelbstverst\u00e4ndlich alle einspielbar \u00fcber rechtlich bedenkliche Karten und Hacks auf den Orginalconsolen &#8211; denn einzig die erste Konsole &#8211; die Atari 2600 &#8211; ist frei von Kopiersch\u00fctzen und war deswegen auch im Bereich&#8220;<a href=\"http:\/\/www.youtube.com\/watch?v=n4O9PIDrl-k\" target=\"_blank\">Pornogames<\/a>&#8220; weit vorne (Wobei die Spiele meistenes nicht gerade geschmackvoller &#8218;Suspens&#8216; sind, sondern eher Hardcore-PixelPorn sind).<br \/>\n<strong>Compiler, Emulatoren und USB-Cartridges<\/strong><br \/>\n<strong><!--more--><br \/>\n<\/strong><br \/>\nIn den Foren findet man dann alles, was sich Entwickler vor 35 Jahren gew\u00fcnscht h\u00e4tten. Schnelle Compiler f\u00fcr schnelle Rechner und die M\u00f6glichkeit das Ganze dann auch auf Emulatoren zu testen, bevor man es \u00fcber eine Flash-Karte in einer konkreten Cartridge am konkreten Ger\u00e4t probt (Karten gibt es f\u00fcr die meisten Konsolen &#8211; Ausnahme leider die Intellivision).<br \/>\n<a href=\"http:\/\/stella.sourceforge.net\" target=\"_blank\">Stella<\/a> &#8211; Atari 2600 Emulator mit integriertem Debugger (Einschaltbar \u00fcber die Optionen &#8218;Toggle Debugger&#8216;)<br \/>\n<a href=\"http:\/\/www.gamelab.ch\/wp-content\/uploads\/Bildschirmfoto-2014-04-22-um-22.37.08.png\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-large wp-image-6211\" title=\"Bildschirmfoto 2014-04-22 um 22.37.08\" src=\"http:\/\/www.gamelab.ch\/wp-content\/uploads\/Bildschirmfoto-2014-04-22-um-22.37.08-1024x704.png\" alt=\"\" width=\"614\" height=\"422\" \/><\/a><br \/>\n<strong>Homebrew in Wellen<\/strong><br \/>\nWer sich durch die Foren k\u00e4mpft findet schnell heraus, dass es Wellen von Entwicklungen gibt. Zeiten also in denen neue Leute reinkommen und anfangen neue Spiele oder Demos herzustellen und Zeiten,wo es ruhiger wird um konkrete Releases und mehrheitlich alte Module\/Cartridges wieder aufgelegt werden. Und dennoch freut sich die Szene \u00fcber neue Releases auf neuen Cartridges mit eigenen Booklets. Das Booklet und das Cartrige kanalisiert ja bekanntlicherweise die Interpretation der Pixel &#8211; shaped also den Erwartungshorizont.<br \/>\n<a href=\"http:\/\/www.gamelab.ch\/wp-content\/uploads\/Bildschirmfoto-2014-04-22-um-22.49.08.png\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-large wp-image-6219\" title=\"Bildschirmfoto 2014-04-22 um 22.49.08\" src=\"http:\/\/www.gamelab.ch\/wp-content\/uploads\/Bildschirmfoto-2014-04-22-um-22.49.08-1024x597.png\" alt=\"\" width=\"614\" height=\"358\" \/><\/a><br \/>\n<strong>Atari 2600 \/ VCS &#8211; die Vorh\u00f6lle<\/strong><br \/>\nDas Atari 2600 entpuppt sich als die H\u00f6lle f\u00fcr Spielprogrammierung. Die Console passte in die Jahre um 1977: Entwickelt f\u00fcr den Heimbreich und dor vor allem auf Sportspiele am Computer ausgelegt: zwei Gegnersprites, zwei Sch\u00fcsse und ein Ball. Die Spiele mussten ohne Videoram auskommen und nur mit 170 Bytes. Ein Spurt durch die H\u00f6lle.<br \/>\nEinen Einblick geben die folgenden Slides:\u00a0<a href=\"http:\/\/de.slideshare.net\/chesterbr\/atari-2600programming\" target=\"_blank\">de.slideshare.net\/chesterbr\/atari-2600programming &gt;<\/a><br \/>\n<span style=\"font-weight: bold;\">Atari 2600 Hardware &#8211; ein Adventure<\/span><br \/>\nDas Spiel AXE wurde f\u00fcr den Atari 2600 in Assembler geschrieben (Es gibt inzwischen auch Batari &#8211; ein Basic f\u00fcr Atari 2600). Der Entwicklungsprozess hat sich als sehr aufw\u00e4ndig herausgestellt. Selbst wenn man schon aus der Assemblerprogrammierung kommt und eigentlich &#8222;nur&#8220; 20j\u00e4hriges Wissen wieder ausgraben muss, kommt hier an seine Grenzen: Es gibt nur 3 Register zum Rechnen und 170 Bytes freies RAM. Das sind Grenzen, die sich bei der Verwaltung des Projektes auswirken. \u00a0Die 8Bitigkeit des Systems tut ihr \u00fcbriges &#8211; wenn man etwa einen Z\u00e4hler \u00fcber 256 Stufen gehen lassen will oder wenn es auf einmal Schwarz wird auf dem Emulator wenn bei einem Vergleich die Sprungmarke f\u00fcrs Branchen zu &#8222;weit&#8220; ist. Step bei Step kommt man vorw\u00e4rts. Oder anders gesagt: These um These (Wenn A, dann m\u00fcsste B&#8216;) und deren Validierung (&#8218;aha so geht das nicht&#8216;).<br \/>\n<a href=\"http:\/\/www.gamelab.ch\/wp-content\/uploads\/Bildschirmfoto-2014-04-22-um-21.53.15.png\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-6202\" title=\"Bildschirmfoto 2014-04-22 um 21.53.15\" src=\"http:\/\/www.gamelab.ch\/wp-content\/uploads\/Bildschirmfoto-2014-04-22-um-21.53.15.png\" alt=\"\" width=\"405\" height=\"309\" \/><\/a><br \/>\nDie gr\u00f6sste Herausforderung ist aber, dass es kein VideoRAM gibt: Das heisst im Code muss das Programm warten, bis der Strahl auf der richtigen Zeile und am etwa richtigen horizontalen Ort ist. Dann kann gezeichnet werden. Jeder Fehler wirkt sich in verschobenen Sprites, nicht gezeichneten Sprites oder einem flackernden Bildschirm in Schwarz aus. Dabei wird schnell klar, die Referenzspiele auf dem Atari 2600 mit vielen Sprites sind Meisterleistungen in der Verwaltung des Spiels, sowie der Ausf\u00fchrung oft angereichert mit diversen Tricks, um \u00fcberhaupt etwas in der Komplexit\u00e4t anzeigen zu k\u00f6nnen.<br \/>\n<strong>AXE &#8211; HackNSlash 2014<\/strong><br \/>\n<img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-6223\" title=\"1_splash\" src=\"http:\/\/www.gamelab.ch\/wp-content\/uploads\/1_splash1.jpg\" alt=\"\" width=\"600\" height=\"389\" \/><br \/>\nAm Ende entstand AXE &#8211; ein klassisches HackNSlash, das ohne grosse Tricks arbeitet.<br \/>\n<strong>AXE Mechanik<\/strong><br \/>\nDie Mechanik ist dabei einfach. Versuche die gegnerischen Horden zu t\u00f6ten. Du bist alleine unterwegs und kannst sie nur t\u00f6ten, wenn sie nicht schlagen. Andernfalls beisst du ins Grass. Der Rand hilft dir, \u00fcber ihn hinaus kannst du fliehen und wieder von der anderen Seite angreifen. Die Gegner kommen in verschiedenen Waves undvarieren in Anzahl, Geschwindigkeit und Verhalten. Es geht also konkret darum, den richtigen Moment zu finden, um t\u00f6dlich zuzuschlagen.<br \/>\n<img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-6222\" title=\"2_ingame\" src=\"http:\/\/www.gamelab.ch\/wp-content\/uploads\/2_ingame1.jpg\" alt=\"\" width=\"600\" height=\"389\" \/><br \/>\n<strong>Programmierung<\/strong><br \/>\nDie Programmierung arbeitet mit bekannten Patterns wie GameLoop (hier 1:1 der ScanLoop &#8211; Rasterstrahl) und einer Statemaschine f\u00fcr Game, Spieler, Gegner und deren FlipAnimationen. \u00a0Behaviours wie Gangfolge (links, rechts) oder Schlagmuster wurden alle auf BitEbenen gel\u00f6st und wurden mit BitRotationen realisiert. LookUpTables wurden keine verwendet. Der Code sowie weitere Kommentare befinden sich im Zip des Spiels<br \/>\n<strong>Das Spiel als Rom f\u00fcr Emulatoren oder Cartridges<\/strong><br \/>\nDas Spiel, das sich auf <a href=\"http:\/\/stella.sourceforge.net\" target=\"_blank\">Stella<\/a> spielen l\u00e4sst, findet man hier:<br \/>\n<a href=\"http:\/\/atariage.com\/forums\/topic\/224560-homebrew-axe-10-released-la1n-2014\/\" target=\"_blank\">atariage.com\/forums\/topic\/224560-homebrew-axe-10-released-la1n-2014 &gt;<\/a><br \/>\nEs ist immer eine schlechte Idee mit der Atari 2600 Programmierung zu beginnen!<br \/>\n<strong>GameOver<\/strong><br \/>\nEs gibt zwei &#8218;alternative&#8216; Enden.<br \/>\nEnde 1: Das Ende<br \/>\n<a href=\"http:\/\/www.gamelab.ch\/wp-content\/uploads\/3_gameover.jpg\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-6225\" title=\"3_gameover\" src=\"http:\/\/www.gamelab.ch\/wp-content\/uploads\/3_gameover.jpg\" alt=\"\" width=\"600\" height=\"393\" \/><\/a><br \/>\nEnde 2: Das Ende als Statue im Kunsthaus<br \/>\n<a href=\"http:\/\/www.gamelab.ch\/wp-content\/uploads\/4_statue.jpg\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-6226\" title=\"4_statue\" src=\"http:\/\/www.gamelab.ch\/wp-content\/uploads\/4_statue.jpg\" alt=\"\" width=\"600\" height=\"390\" \/><\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Wer sich mit alten Consolen auseinandersetzt, kommt im Zeitalter von frei verf\u00fcgbaren Engines nicht darum herum zu fragen: Wie schwierig war es eigentlich damals ein Game zu machen? Und wo f\u00e4ngt man an bei der Retro-Auseinandersetzung? Einstiegspunkt f\u00fcr Atari 2600+:\u00a0www.atariage.com &hellip; <a href=\"https:\/\/www.gamelab.ch\/?p=6188\">Weiterlesen <span class=\"meta-nav\">&rarr;<\/span><\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[1],"tags":[],"class_list":["post-6188","post","type-post","status-publish","format-standard","hentry","category-uncategorized"],"_links":{"self":[{"href":"https:\/\/www.gamelab.ch\/index.php?rest_route=\/wp\/v2\/posts\/6188","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.gamelab.ch\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.gamelab.ch\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.gamelab.ch\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.gamelab.ch\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=6188"}],"version-history":[{"count":1,"href":"https:\/\/www.gamelab.ch\/index.php?rest_route=\/wp\/v2\/posts\/6188\/revisions"}],"predecessor-version":[{"id":12285,"href":"https:\/\/www.gamelab.ch\/index.php?rest_route=\/wp\/v2\/posts\/6188\/revisions\/12285"}],"wp:attachment":[{"href":"https:\/\/www.gamelab.ch\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=6188"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.gamelab.ch\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=6188"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.gamelab.ch\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=6188"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}