{"id":127,"date":"2012-07-08T21:46:44","date_gmt":"2012-07-08T21:46:44","guid":{"rendered":"http:\/\/retroramblings.net\/?p=127"},"modified":"2012-07-08T23:14:44","modified_gmt":"2012-07-08T23:14:44","slug":"baby-steps-towards-aga-support","status":"publish","type":"post","link":"http:\/\/retroramblings.net\/?p=127","title":{"rendered":"Baby steps towards AGA support"},"content":{"rendered":"<p>The current publicly available sources for the Minimig project only support the ECS chipset, there&#8217;s not yet any support for AGA.\u00a0 (The Minimig core used by the <a href=\"http:\/\/www.fpgaarcade.com\/index.htm\">FPGA Replay board<\/a> *does*, apparently, have robust AGA support, but the sources haven&#8217;t yet been released to the wider world.)<\/p>\n<p>So I decided to have a go at adding a little AGA functionality myself.<\/p>\n<p>Compared with the ECS chipset, the AGA chipset doesn&#8217;t actually add that much complexity.\u00a0 The extra features are basically:<\/p>\n<ul>\n<li>Colourtable extended from 32 entries to 256.\u00a0 There are still only 32 colourtable registers, and they&#8217;re accessed in banks, which are selected in another register.<\/li>\n<li>Colourtable entries are now 24-bit deep rather than just 12.\u00a0 A select bit in another register determines whether colourtable writes go to the most- or least-significant 12 bits.<\/li>\n<li>There are now 8 bitplanes instead of 6<\/li>\n<li>Bitplane data can be exclusive-ored with a mask value.\u00a0 This enables some neat tricks with &#8220;copper chunky&#8221; modes, among other things.<\/li>\n<li>Sprites can be high-res<\/li>\n<li>Data can now be fetched 32-bits at a time, double-pumped or both, giving an effective 64-bit datapath.<\/li>\n<\/ul>\n<p>The easiest place to start is the colourtables, which in the present Minimig design are stored in registers.\u00a0 Since the colourtable was about to balloon from 32 12-bit entries to 256 24-bit entries, I migrated the colourtable to a pair of M4Ks &#8211; one to take the upper 12-bits of each colour, the other to take the lower 12-bits.<\/p>\n<p>I also implemented enough of the BPLCON3 and BPLCON4 registers to support colourtable bank selection and masking.<\/p>\n<p>I&#8217;ve also created a small Copperlist demo in ADF format for testing, <a href=\"http:\/\/retroramblings.net\/downloads\/CopperTest.adf\">which can be found here.<\/a><\/p>\n<p>This demo simply uses lower-bit entries and palette masking as a test &#8211; the following screenshot shows how it looks under ECS and under AGA.<\/p>\n<p><a href=\"http:\/\/retroramblings.net\/wp-content\/uploads\/2012\/07\/Copper.jpg\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-128\" title=\"Copper\" src=\"http:\/\/retroramblings.net\/wp-content\/uploads\/2012\/07\/Copper.jpg\" alt=\"\" width=\"500\" height=\"813\" srcset=\"http:\/\/retroramblings.net\/wp-content\/uploads\/2012\/07\/Copper.jpg 500w, http:\/\/retroramblings.net\/wp-content\/uploads\/2012\/07\/Copper-184x300.jpg 184w\" sizes=\"auto, (max-width: 500px) 100vw, 500px\" \/><\/a><\/p>\n<p>(Note that while the colourtable entries store 24-bits, they&#8217;re still only displayed as 12-bit, because that&#8217;s all the DE1 Board&#8217;s VGA output can handle without extra dithering, which will come later.)<\/p>\n<p>A <a href=\"https:\/\/github.com\/robinsonb5\/minimig-de1\/tree\/colortable\">git repo containing the current code is here<\/a>, while a binary <a href=\"http:\/\/retroramblings.net\/downloads\/DE1_BabyStep1.zip\">can be found here.<\/a><\/p>\n<p>Please note that this is highly experimental &#8211; there are timing inaccuracies compared with the real chipset, extra-half-brite mode is currently broken. (and the normal Minimig boot text is missing as a result of another experiment to reduce the size of the boot ROM!)<\/p>\n","protected":false},"excerpt":{"rendered":"<p>The current publicly available sources for the Minimig project only support the ECS chipset, there&#8217;s not yet any support for AGA.\u00a0 (The Minimig core used by the FPGA Replay board *does*, apparently, have robust AGA support, but the sources haven&#8217;t &hellip; <a href=\"http:\/\/retroramblings.net\/?p=127\">Continue reading <span class=\"meta-nav\">&rarr;<\/span><\/a><\/p>\n","protected":false},"author":2,"featured_media":0,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[3,4],"tags":[],"class_list":["post-127","post","type-post","status-publish","format-standard","hentry","category-amiga","category-fpga"],"_links":{"self":[{"href":"http:\/\/retroramblings.net\/index.php?rest_route=\/wp\/v2\/posts\/127","targetHints":{"allow":["GET"]}}],"collection":[{"href":"http:\/\/retroramblings.net\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"http:\/\/retroramblings.net\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"http:\/\/retroramblings.net\/index.php?rest_route=\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"http:\/\/retroramblings.net\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=127"}],"version-history":[{"count":5,"href":"http:\/\/retroramblings.net\/index.php?rest_route=\/wp\/v2\/posts\/127\/revisions"}],"predecessor-version":[{"id":135,"href":"http:\/\/retroramblings.net\/index.php?rest_route=\/wp\/v2\/posts\/127\/revisions\/135"}],"wp:attachment":[{"href":"http:\/\/retroramblings.net\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=127"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/retroramblings.net\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=127"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/retroramblings.net\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=127"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}